Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Shell urdhëron ubuntu. Si të automatizoni kopjet rezervë të planifikuar

Shell urdhëron ubuntu. Si të automatizoni kopjet rezervë të planifikuar

Sapo bëhet fjalë për pajisje Linux dhe punë pak a shumë profesionale me këtë OS, në shembujt vija e komandës lind menjëherë dhe fillon të dominojë. Nga e cila është e lehtë të konkludohet se kjo është ndërfaqja kryesore (dhe standarde) e menaxhimit të sistemit në Linux. I njëjti lexues i zgjuar me siguri do të bëjë pyetjen - kush po i ekzekuton komandat e futura linja e komandës? Përgjigja "sistem" rezulton të jetë e gabuar: nuk ka asnjë objekt të veçantë në Linux të quajtur "sistemi". Një sistem është një sistem që përbëhet nga shumë komponentë që ndërveprojnë me njëri-tjetrin.

Përgjigja e saktë, si zakonisht, rezulton të jetë më e ndërlikuar. Nevojitet një sistem operativ, veçanërisht, në mënyrë që programet të mund të shkruhen pa menduar për detajet e pajisjes kompjuterike dhe detajet e tij, duke filluar nga procesori dhe hard disku (të themi, në nivelin "skedari i hapur" dhe jo sekuenca e komandave për të lëvizur kokën Hard disk). Sistemi operativ kontrollon vetë harduerin dhe programet pajisen me një "gjuhë" të një niveli mjaft të lartë abstraksioni, duke mbuluar të gjitha nevojat e tyre, të ashtuquajturat. API... Por një gjuhë e tillë nuk është e përshtatshme për komandat e përdoruesit, pasi është ende shumë e nivelit të ulët (për të zgjidhur edhe detyrën më të thjeshtë të përdoruesit, duhet të kryeni disa operacione të tilla), dhe mund ta përdorni vetëm duke shkruar një program (më shpesh në C). Bëhet e nevojshme të shpikni një gjuhë kontrolli të sistemit të ndryshëm, të nivelit më të lartë dhe më të përshtatshëm për përdoruesin. Të gjitha komandat që mund të futni në vijën e komandës janë formuluar në këtë gjuhë.

Nga e cila është e lehtë për lexuesin e mprehtë të arrijë në përfundimin se të procesojmë këto komanda, duke i përkthyer në gjuhën e sistemit operativ, duhet të jenë gjithashtu disa program të veçantë, dhe është me të që përdoruesi zhvillon një dialog, duke punuar me vijën e komandës. Kështu është: ky program quhet interpretuesi i linjës së komandës ose guaska komanduese("Guaskë"). Quhet "guaskë" pikërisht sepse i gjithë kontrolli i sistemit është sikur "nga brenda" tij: përdoruesi komunikon me të në një gjuhë të përshtatshme për të (duke përdorur një linjë komandimi teksti), dhe ai komunikon me pjesë të tjera të sistemit në një i përshtatshëm ato gjuha (duke thirrur funksionet e programuara).

Sigurisht, ka disa predha në Linux. Më e thjeshta prej tyre, e cila u shfaq në versionet e hershme të UNIX, u quajt sh, ose "Bourne Shell", sipas autorit, Stephen Bourne. Me kalimin e kohës, ai u zëvendësua - kudo që ishte e mundur - me një bash më të fuqishëm, "Bourne Again Shell" (2) bash e tejkalon sh në gjithçka, veçanërisht në aftësi redaktimi linja e komandës. Përveç sh dhe bash, "The Z Shell", zsh, shumica një përkthyes i fuqishëm komanda sot (vetëm një shaka, 22 mijë rreshta dokumentacioni), ose tcsh, një version i përditësuar dhe gjithashtu shumë i fuqishëm i "C Shell"-it të vjetër, sintaksa e komandës së të cilit është e ngjashme me gjuhën e programimit C.

Sintaksa e linjës së komandës

Pra, çfarë saktësisht është kjo gjuhë më miqësore për përdoruesit? Mbi të gjitha, komunikimi në këtë gjuhë i ngjan një dialogu të shkruar me sistemin - një shkëmbim alternativ tekstesh. Deklarata e përdoruesit në këtë gjuhë është një komandë, çdo komandë është një rresht i veçantë. Ende nuk është shtypur hyjnë, rreshti mund të redaktohet, pastaj kalohet në shell. Guaskë analizon komanda e marrë - e përkthen atë në gjuhën e objekteve dhe funksioneve të sistemit, dhe më pas e dërgon në sistem për ekzekutim.

Rezultati i ekzekutimit të shumë komandave është gjithashtu teksti që shfaqet si "përgjigje" ndaj përdoruesit. Edhe pse nuk kërkohet, ekipi mund ta bëjë punën e tij plotësisht në heshtje. Për më tepër, nëse ndodh ndonjë rrethanë e veçantë (për shembull, një gabim) gjatë ekzekutimit të komandës, guaska do të përfshijë në përgjigjen ndaj përdoruesit mesazhe diagnostikuese.

Komanda dhe parametrat

Komanda më e thjeshtë përbëhet nga një "fjalë", për shembull, komanda cal, e cila shfaq kalendarin për muajin aktual.

$ cal
qershor 2008
Die Hënë E Mër E Enj E Premte Sht
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

$

Shembulli 1... Komanda Cal


Dhe nëse duhet të shikoni kalendarin për muajin e ardhshëm? Vërtetë, nuk duhet të shpikni një komandë të veçantë për këtë, cal do ta përballojë këtë detyrë mjaft mirë, vetëm sjellja e saj duhet të modifikohet pak:

7 dollarë 2008
korrik 2008
Die Hënë E Mër E Enj E Premte Sht
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Shembulli 2... Komanda Cal me parametra


Rezulton se komanda cal 7 2008 përbëhet nga të paktën dy pjesë - vetë komanda cal dhe "çdo gjë tjetër". Kjo pushim që pason komandën quhet parametrave(ose argumentet), dhe ato futen për të ndryshuar sjelljen e komandës. Shumicën e kohës kur analizoni vijën e komandës së pari fjala konsiderohet emri i komandës, dhe pjesa tjetër janë parametrat e saj.

Fjalët

Kur analizon linjën e komandës, guaska përdor konceptin kufizues(kufizues). Një ndarës është një personazh që ndan fjalët; pra vija e komandës është sekuenca fjalët(që kanë rëndësi) dhe kufizues(që nuk kanë rëndësi). Për shell, kufizuesit janë karakteri i hapësirës, ​​karakteri i skedës dhe karakteri i furnizimit të linjës. Numri i ndarësve midis dy fjalëve ngjitur nuk ka rëndësi.

Që ndarësi të godasë brenda fjalët (dhe vargu i kufizuar që rezulton u kalua si një parametri), i gjithë nënvargu i kërkuar duhet të rrethohet me thonjëza të vetme ose të dyfishta: $ jehonë Një Dy Tre
Një dy tre
$ echo Një "Dy Tre"
Një dy tre
$ jehonë "Një
>
> Oh. Pra, çfarë është më pas?
> Oh, i harrova thonjëzat! "

Shembulli 3... Citimi në vijën e komandës


Të gjitha sa më sipër do të thotë se komanda ka aq parametra sa fjalët nga pikëpamja e guaskës, ajo e ndjek atë në vijën e komandës. Fjala e parë në treshe i kalohet komandës si parametër i parë, e dyta si e dyta, e kështu me radhë. Në rastin e parë, komanda echo kaloi tre parametrat - "Një", "Dy" dhe "Tre". Ajo i nxori jashtë duke i ndarë me një hapësirë. Në rastin e dytë, parametrat ishin dy: "Një" dhe "Dy Tre". Si rezultat, këto dy parametrat u nxorën gjithashtu të ndara nga një hapësirë. Në rastin e tretë, parametri ishte vetëm një- nga apostrofi i hapjes "" Një "deri në mbyllje" ... harrova!" “. Gjatë gjithë kohës që bash shkruante, detyronte të nxiste ">" - si shenjë se linja e komandës është ende duke shtypur, por në mënyrën e futjes së përmbajtjes së thonjëzave.

Çelësat

Për të zgjidhur probleme të ndryshme, të njëjtat veprime duhet të kryhen paksa ndryshe. Për shembull, për të sinkronizuar punët në pika të ndryshme në botë, është më mirë të përdorni të njëjtën kohë për të gjithë (Greenwich Mean Time), dhe të organizoni ditën tuaj të punës - orën lokale (duke marrë parasysh zhvendosjen e zonës kohore dhe ndryshimin midis kohës së dimrit dhe verës). Të dyja kohët tregohen nga komanda data, vetëm për të punuar në kohën mesatare të Greenwich-it i duhet një parametër shtesë “-u” (aka “--universal”).


Hënë 16 qershor 06:03:44 MSD 2008
$ datë -u
Hënë Qershor 16 14:03:46 UTC 2008

Shembulli 4... Komanda e datës me çelës


Këto lloj parametrash quhen modifikuesit e ekzekutimit ose çelësat(opsione). Çelësi i përket kësaj komande të veçantë dhe në vetvete nuk ka kuptim se si ndryshon nga parametrat e tjerë (për shembull, emrat e skedarëve, numrat) që kanë vet që do të thotë që nuk varet nga asnjë urdhër. Çdo komandë mund të njohë një grup të caktuar çelësash dhe të ndryshojë sjelljen e saj në përputhje me rrethanat. Si rezultat, çelësi "i njëjti", për shembull "-s", mund të nënkuptojë gjëra krejtësisht të ndryshme për komanda të ndryshme.

Nuk ka standarde të forta për formatin kyç, por ka marrëveshje që nuk janë më të përshtatshme për t'u prishur këto ditë. Së pari, nëse parametri fillon me "-", është - çelës me një shkronjë... "-" zakonisht pasohet nga një karakter, më shpesh një shkronjë që tregon një veprim ose veti që ky çelës i jep një komande. Kjo e bën më të lehtë dallimin e çelësave nga parametrat e tjerë - si për përdoruesin kur shkruan rreshtin e komandës, ashtu edhe për programuesin, autorin e komandës.

Së dyti, është e dëshirueshme që emri kyç të jetë kuptimplotë- si rregull, kjo është shkronja e parë e emrit të veprimit ose pronës së treguar nga çelësi. Për shembull, çelësi -a tek njeriu dhe që vjen nga fjala A ll ”(të gjitha), dhe ndryshon mënyrën se si funksionojnë këto komanda në mënyrë që ato të fillojnë të tregojnë informacione që zakonisht nuk mbulohen. Dhe në cal dhe kush komandon, kuptimi i çelësit "-m" është i ndryshëm:

$ kush -m
metody tty1 shtator 20 13:56 (localhost)
$ cal -m
qershor 2008
E Hënë E Mërkur E Enje e Premte Sat Die
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

Shembulli 5... Përdorimi i çelësit "-m" në komanda të ndryshme


Për kë, çelësi "-m" do të thotë " M e ", domethënë," unë ", dhe si rezultat kush punon ngjashëm me whoami. Dhe për cal, tasti "-m" është një komandë për të shfaqur kalendarin, duke marrë parasysh ditën e parë e hënëM sot "), siç është zakon në Rusi.

Vetia e një çelësi të jetë, nga njëra anë, jashtëzakonisht e shkurtër, dhe nga ana tjetër - informative, quhet shkurtesat... Jo vetëm çelësat, por edhe emrat e komandave më të zakonshme Linux e kanë këtë veti.

Së treti, ndonjëherë një ndërprerës ndryshon sjelljen e një komande në atë mënyrë që interpretimi i parametrit që ndjek këtë ndërprerës në vijën e komandës gjithashtu ndryshon. Duket si një çelës veten time merr një parametër, kështu që thirren çelësat e këtij lloji parametrike... Si rregull, parametrat e tyre janë emrat e skedarëve për aplikacione të ndryshme, karakteristika numerike dhe të tjera. kuptimi që duhet t'i kalojnë ekipit. - ora 00:00
data: data nuk mund të caktohet: Funksionimi nuk lejohet
Hënë 16 qershor 00:00:00 MSK 2008
datë $
Hënë 16 qershor 06:30:53 pasdite MSK 2008

Shembulli 6... Përdorimi i datës -s


Ndërprerësi -s i komandës data ju lejon të vendosni Koha e sistemit në vlerën që është specifikuar si parametër i këtij çelësi. Megjithatë, në ky shembull ky operacion dështoi, siç dëshmohet nga rezultati mesazh gabimi... Privilegjet e nevojshme për të ndryshuar orën e sistemit administratori i sistemit, dhe në shembullin tonë, kjo komandë u ekzekutua si një përdorues i rregullt. Megjithatë, data shfaqte ende kohën që duhej caktuar, megjithëse ora e sistemit mbeti e pandryshuar.

Çelësat janë të vështira për t'u shkurtuar kur ekipi i ka ato shume shumë. Disa letra Alfabeti latin(për shembull, "s" ose "o") përdoren shumë shpesh dhe mund të shërbejnë si një shkurtim për disa komanda në të njëjtën kohë, dhe disa (për shembull, "z") janë të rralla dhe është e vështirë të arrihet një emër kuptimplotë nën to. Në një rast të tillë, ekziston një tjetër, gjatësi e plotë formati: kyçi fillon me dy një shenjë “-” e ndjekur nga i plotë emri i subjektit që cakton. Ky është, për shembull, çelësi "--help" (analog me "-h"): $ kokë --ndihmë
Përdorimi: kreu [KEY] ... [FILE] ...
Printon 10 rreshtat e parë të çdo FILE në dalje standarde.
Nëse jepen shumë SKEDA, fillimisht printohet një kokë me emrin e skedarit.
Nëse FILE nuk është specifikuar ose specifikohet si -, lexon hyrjen standarde.

Argumentet e kërkuara për çelësat e gjatë kërkohen edhe për çelësat e shkurtër.
-c, --bytes = [-] N printoni N bajtet e para të çdo skedari;
bajtët e fundit të çdo skedari
-n, --lines = [-] N printoni N rreshtat e parë të çdo skedari, jo 10;
nëse N paraprihet nga `-”, shtypni gjithçka përveç N
rreshtat e fundit të çdo skedari
-q, --quiet, --silent mos i printoni titujt me emra skedarësh
-v, --verbose printoni gjithmonë titujt me emra skedarësh
--ndihmoni të tregoni këtë ndihmë dhe dilni
--versioni tregoni informacionin e versionit dhe dilni

N mund të ketë një prapashtesë shumëzuese: b 512, k 1024, m 1024 * 1024.

Ju lutemi raportoni defektet tek .

Shembulli 7... Çelësi - ndihmë


Ju mund të shihni se disa çelësa të kokës kanë format me një shkronjë dhe me fjalë të plota, dhe disa vetëm me fjalë të plota. Ky është zakonisht rasti: çelësat e përdorur shpesh janë të shkurtuara, por ato të rralla jo. vlerat parametrike gjatësi e plotëËshtë e zakonshme të kaloni çelësat jo si parametri tjetër i linjës së komandës, por duke përdorur "= kuptimi“Menjëherë pas çelësit.

Së katërti, ka disa marrëveshje më pak të rrepta, por të njohura kuptimiçelësat. Tasti "-h" (" H elp ") zakonisht (por, mjerisht, jo gjithmonë) detyron të lëshojë komanda referencë e shpejtë... Së fundi, ndonjëherë është e nevojshme t'i transmetohet ekipit parametri, jo çelësi duke filluar me "-". Për ta bërë këtë, duhet të përdorni tastin "-": $ kokë -1 -emri i skedarit-me-
kokë: opsion i pavlefshëm - f
Provoni 'head --help' për më shumë pershkrim i detajuar.
kokë $ -1 - -emri i skedarit-me-
Rreshti i parë i skedarit -filename-with-

Shembulli 8... Parametri nuk është një çelës që fillon me "-"


Ndërprerësi "-" (i pari "-" është një shenjë e çelësit, i dyti është vetë çelësi) zakonisht parandalon komandën të interpretojë të gjithë parametrat vijues të linjës së komandës si ndërprerës, pavarësisht nëse ato fillojnë me "-" apo jo. . Vetëm pas "-" kreu u pajtua që -filename-with- është emri i skedarit.

Përmbledhje

Nga të gjitha sa më sipër, është e qartë se çdo komandë ka gjuhën e saj të vogël - ajo përbëhet nga çelësat dhe parametrat e kërkuar dhe opsionalë që komanda pranon dhe interpreton. Për të marrë një paraqitje të shkurtër të aftësive të komandës, ofron dokumente të ndryshme Linux përmbledhje- një listë koncize e të gjithë parametrave të mundshëm të komandës. Duket kështu:

Cal [-smjy13] [vit]

Shembulli 9... Përmbledhje për komandën cal


Përmbledhja jep të zyrtarizuar një përshkrim se si të përdoret objekti (me në këtë rast- si dhe me çfarë parametrash të ekzekutohet komanda cal). Parametrat renditen në të njëjtin rend në të cilin duhet të futen në vijën e komandës, parametrat opsionalë zakonisht jepen në kllapa katrore, ato të detyrueshme pa kllapa fare, dhe çelësat për kompaktësinë mblidhen në një parametër, në të cilin çdo shkronjë është një çelës i veçantë ... Shembulli i mësipërm lexohet kështu: komanda cal jo parametrat e kërkuar, ka çelësa (opsionale) (-s, -m, etj.), dhe një vit parametri opsional, i paraprirë nga një muaj opsional (por muaji pa vit nuk mund të specifikohet).

Nga vijnë komandat

Pas leximit të seksionit të mëparshëm, lexuesi i zgjuar duhet të kishte menduar diçka të tillë: po, mirë, ne e kuptuam pak me komandat dhe parametrat (d.m.th., me gramatikën e linjës së komandës), tani na armatoni me një listë të të gjitha Linux komandat (me fjalë të tjera, një fjalor), dhe le të fillojmë punën. Pse nuk shtypet askund një listë e tillë? Më saktësisht, ka shumë lista të ndryshme skuadrash dhe të gjitha janë dukshëm të paplota dhe nuk bien dakord për gjithçka. Përgjigja për këtë pyetje ka dy pjesë.

Pjesa 1: komandat dhe shërbimet

Shell, interpretuesi i komandave, është një "guaskë" jo vetëm për përdoruesin, por edhe për komandat: ai vetë pothuajse nuk ekzekuton asnjë komandë, ai kalon sistemin. Detyra e tij është të analizojë vijën e komandës, të nxjerrë komandën dhe parametrat prej saj dhe më pas të ekzekutojë dobia- një program emri i të cilit është i njëjtë me emrin e komandës.

Nëse shikoni "nga brenda" të përkthyesit të komandës, atëherë puna me vijën e komandës është diçka e tillë: përdoruesi hyn në një rresht (komandë), guaska e lexon atë, ndonjëherë - konvertohet në rregulla të caktuara, vargu që rezulton ndahet në një komandë dhe parametra, dhe më pas ekzekuton programin, duke ia kaluar këto parametra. Shërbimi, nga ana tjetër, analizon parametrat, zgjedh çelësat midis tyre dhe bën atë që kërkohet, gjatë rrugës duke shfaqur të dhëna për përdoruesin dhe më pas përfundon. Kur programi përfundon, interpretuesi i komandës, i cili është kthyer në sfond, rifillon, ai lexon përsëri vijën e komandës, e analizon atë, thërret komandën ... Kjo vazhdon derisa përdoruesi të komandojë shell fund vetë (duke përdorur komandën e daljes ose karakterin e kontrollit Ctrl + D).

Megjithatë, shell ende ekzekuton disa nga komandat (më të vogla) më vete, pa thirrur asnjë shërbim. Disa komanda - më të dobishmet - janë ndërtuar në bash, edhe pse ato janë të disponueshme si shërbime (siç është echo). Komanda e integruar funksionon në të njëjtën mënyrë, por duke qenë se kërkon shumë më pak kohë për ta ekzekutuar, guaska do ta zgjedhë atë, nëse është e mundur. Në bash, lloji i komandës mund të përcaktohet duke përdorur komandën type. Komandat amtare bash quhen të ndërtuara(komandë e ndërtuar), dhe për shërbimet komunale ajo printon rrugë që përmban emrin e drejtorisë që përmban skedarin me programin përkatës dhe emrin e këtij programi. Tasti "-a" (" a ll ", sigurisht) shkakton printimin e tipit të gjitha opsionet e mundshme për interpretimin e komandës dhe çelësi "-t" - shtypni llojin e komandës në vend të shtegut.

$ tip data
informacioni është / koshi / data
jehonë e tipit $
jehona është një guaskë e ndërtuar
$ tip -a jehonë
jehona është një guaskë e ndërtuar
jehona është / bin / jehonë
$ tip -a -t jehonë
të ndërtuara
dosje

Shembulli 10... Përcaktimi i llojit të komandës


Ka pak komanda amtare në guaskë. Në thelb, këta janë operatorët e gjuhës së programimit dhe mjeteve të tjera të kontrollit të vetë interpretuesit. Të gjitha komandat që kryejnë punë domethënëse për përdoruesin përfaqësohen në Linux si shërbime të veçanta komunale... Këtu është pjesa e parë e përgjigjes për pyetjen për të gjitha Komandat Linux: ka po aq sa ka programe (utilitete) të shkruara për Linux. Lista e tyre është një listë e shërbimeve të instaluara në sistem dhe në sisteme të ndryshme do të jetë ndryshe.

Pjesa 2: udhëzuesi juaj për gjithçka

Çdo objekt në sistem: të gjitha shërbimet komunale, të gjitha demonët Linux, të gjitha funksionet bërthamat dhe bibliotekat, struktura e shumicës skedarët e konfigurimit së fundi, shumë koncepte spekulative, por të rëndësishme - duhet të shoqërohen domosdoshmërisht me dokumentacion që përshkruan qëllimin dhe metodat e përdorimit të tyre. Prandaj, përdoruesit e sistemit nuk i kërkohet memorizoj të gjitha opsionet e mundshme për të bashkëvepruar me të. Mjaft kuptojnë parimet bazë të strukturës së tij dhe të jetë në gjendje të gjejë informacion referencë. Ajnshtajni e shprehu në këtë mënyrë: "Pse të mësosh përmendësh atë që mund të shohësh gjithmonë në një libër referimi?"

Shumica të ndryshme informacione të dobishme përmbahen në faqe manuale (faqet e menaxhimit). Çdo faqe e manualit (për hir të shkurtësisë, vetëm një "manual") i dedikohet një objekti të vetëm në sistem. Për të parë faqen manuale, duhet të lëshoni komandën man nje objekt : $ njeri cal
CAL (1) Manuali i Komandave të Përgjithshme të BSD CAL (1)

EMRI
cal - shfaq një kalendar

PËRMBLEDHJE
cal [-smjy13] [vit]

PËRSHKRIM
Cal shfaq një kalendar të thjeshtë. Nëse argumentet nuk janë specifikuar,
shfaqet muaji aktual. Opsionet janë si më poshtë:
. . .

Shembulli 11... Shikoni faqen e njeriut


"Faqja e njeriut" zakonisht është më shumë se një faqe ekran... Për ta bërë më të lehtë leximin, njeriu e drejton më pak programin faqe për faqe. Të operosh më pak është e thjeshtë: faqet kthehen me një hapësirë ​​dhe kur të lodhesh duke lexuar, duhet të shtypësh "q" (Quit). Ju mund t'i ktheni faqet duke përdorur çelësat Faqja me larte / Faqe poshtë, për të zhvendosur një mund të aplikohet linja përpara hyjnë ose shigjeta poshtë, dhe një rresht prapa - shigjeta lart. Kërcimi në fillim dhe në fund të tekstit kryhet me komandat "g" dhe "G", përkatësisht (Shko). Lista e plotë ajo që mund të bëni me tekst në më pak shfaqet me komandën “H” (Help).

Faqja e njeriut përbëhet nga fusha- seksione standarde që përshkruajnë objektin nga anë të ndryshme. Kur të lexoni për herë të parë tutorialin, duhet të filloni me fushat EMRI (përshkrim i shkurtër i objektit) dhe PËRSHKRIMI (përshkrim i detajuar i objektit, mjaftueshëm për ta përdorur). Një nga fushat më të rëndësishme të manualit është në fund të tekstit. Nëse, gjatë procesit të leximit të EMRI ose PËRSHKRIMI, përdoruesi kupton se nuk e gjeti atë që kërkonte në manual, ai mund të dëshirojë të shohë nëse ka tjera manuale ose burime të tjera informacioni në të njëjtën temë... Lista e burimeve të tilla gjendet në fushën SHIH GJITHASHTU:

$ burrë burrë
. . .
SHIKO GJITHASHTU
apropos (1), whatis (1), më pak (1), groff (1), man.conf (5).
. . .

Shembulli 12... SHIH GJITHASHTU Manualin në terren


Në fushën SEE ALSO, lidhjet me manualet për më pak, groff (formatuesi manual i faqeve), struktura skedari i konfigurimit për njeriun, si dhe dy komandat shoqëruese whatis dhe apropos për t'ju ndihmuar të gjeni manualin që kërkoni. Të dyja punojnë me një bazë të dhënash të fushave EMRI nga të gjitha faqet manuale në sistem. Dallimi midis tyre është se whatis kërkon vetëm midis emrave të objekteve (në majtas pjesë të fushave EMRI), dhe apropos - në të gjithë bazën e të dhënave. Si rezultat, whatis merr një listë përshkrime të shkurtra objekte me emrat që përfshijnë fjalën e kërkimit, ndërsa apropos ka një listë në të cilën është kjo fjalë përmendur.

Në sistem mund të gjenden disa objekte te ndryshme tip, por me të njëjtin emër. Shpesh emrat e njëjtë thirrjet e sistemit(funksione bërthamat) dhe shërbimet që ju lejojnë të përdorni këto funksione nga linja e komandës. Kur i referohemi manualit për një objekt të sistemit, është zakon që numri i seksionit në kllapa të vendoset në kllapa menjëherë pas emrit të objektit, i cili përmban manualin për këtë objekt: njeri (1), më pak (1), passwd (5). Ky format e bën të lehtë të tregosh se çfarë është udhëzuesi.

Sistemi manual Linux ka nëntë seksione, secila përmban faqe manuale për objektet të një lloji të caktuar... Të gjitha seksionet përmbajnë një manual të quajtur "intro", në të cilin në pamje e përgjithshme dhe shembujt tregojnë se me çfarë lloj objektesh lidhen këtë seksion... Lista e seksioneve me tituj mund të merret me komandën whatis intro.

Si parazgjedhje, njeriu shikon të gjitha seksionet dhe tregon i parë i gjetur udhëheqja me emrin e dhënë... Për të parë manualin për një objekt nga një seksion specifik, duhet të specifikoni numrin e seksionit si parametrin e parë të komandës man, për shembull, man 8 passwd.

Një burim tjetër informacioni rreth Linux-it dhe programeve përbërëse të tij është nënsistemi i ndihmës së informacionit. Faqja manual, megjithë bollëkun e lidhjeve të llojeve të ndryshme, mbetet tekst "linear", i strukturuar vetëm logjikisht. Dokumenti info është një hipertekst i vërtetë, me shumë faqe të vogla të kombinuara në një pemë. Në çdo seksion të dokumentit të informacionit ka gjithmonë një tabelë të përmbajtjes, nga e cila mund të shkoni direkt në nënseksionin e dëshiruar, nga ku mund të ktheheni gjithmonë prapa. Përveç kësaj, dokumenti i informacionit mund të lexohet si e vazhdueshme tekst, kështu që çdo nënseksion ka lidhje me nënseksionet e mëparshme dhe të mëvonshme. Mund ta merrni me mend manual i detajuar se si të lundroni midis faqeve në informacion mund të merret nga komanda info info. Komanda info, e futur pa parametra, i paraqet përdoruesit një listë të të gjitha dokumenteve info të instaluara në sistem.

Nëse disa objekte të sistemit nuk janë të dokumentuara as në formatin man ose në formatin info, kjo nuk është mirë. Në këtë rast, mund të shpresohet se me të ka Dokumentacioni mbështetës, e cila, mjerisht, nuk ka një format standard, aq më pak lidhje me manuale për objekte të tjera të sistemit. Një dokumentacion i tillë (si dhe shembuj të përdorimit të objektit) zakonisht vendoset në drejtorinë / usr / share / doc /. emri_objekti .

Shumica e dokumentacionit është shkruar në anglisht të thjeshtë. Nëse anglishtja nuk është gjuha amtare për autorin e dokumentacionit, do të jetë më e lehtë. Tradita e të shkruarit në anglisht vjen nga një kontribut i rëndësishëm i SHBA-së në zhvillim Shkenca Kompjuterike në përgjithësi dhe Linux në veçanti. Përveç kësaj, anglishtja po bëhet gjuhë e komunikimit ndërkombëtar në të gjitha fushat, jo vetëm në kompjuter. Nevoja për të shkruar në një gjuhë që pak a shumë do të kuptohet nga shumica e përdoruesve është për shkak të zhvillimit të vazhdueshëm të Linux. Nuk është se faqja manuale nuk mund të përkthehet, por se do të duhet të përkthehet. gjithmon kur objekti që përshkruan ndryshon! Për shembull, lëshimi i një versioni të ri të një produkti softuer shoqërohet me një ndryshim në aftësitë dhe veçoritë e tij të punës, dhe, rrjedhimisht, një version të ri të dokumentacionit. Pastaj përkthimi ky dokumentacion kthehet në një “shënjestër lëvizëse”, vepër sizife.

Megjithatë, disa nga udhëzuesit më të përditësuar ekzistojnë në përkthimin rusisht. Versionet më të fundit të përkthimeve të tilla në Rusisht janë mbledhur në paketën man-pages-ru - thjesht instaloni këtë paketë, dhe ato manuale për të cilat ka një përkthim, njeriu do t'i shfaqë në Rusisht si parazgjedhje.

Variablat e mjedisit

Përveç parametrave të kaluar në vijën e komandës, në Linux ekziston një mënyrë tjetër për të modifikuar sjelljen e programit - për këtë ata përdorin variablat e mjedisit... Për të shpjeguar se si funksionojnë variablat e mjedisit, duhet një digresion i vogël në mënyrën se si proceset ndërveprojnë në Linux.

Programi i ekzekutimit quhet në Linux procesi... Çdo proces i nisur furnizohet nga sistemi me një hapësirë ​​të caktuar informacioni, të cilën ky proces ka të drejtë ta ndryshojë sipas dëshirës - kjo është mjedisi(në mjedisin anglez). Rregullat për përdorimin e kësaj hapësire janë të thjeshta: ju mund të përcaktoni dyqane të dhënash me emër ( variablat e mjedisit), në të cilën duhet të shkruani çdo informacion që dëshironi (caktoi vlerën një ndryshoreje mjedisore), dhe më pas lexoni këtë informacion (zëvendësoni vlerën e ndryshores).

Proceset janë aktorët kryesorë në sistem. Kur përdoruesi lëshon komanda në linjën e komandës, proceset e reja për ekzekutimin e këtyre komandave (shërbimet e jashtme, etj.) lansohen nga një proces tjetër - e njëjta guaskë që komunikon me përdoruesin dhe merr komanda prej tij.

Krijimi i një procesi nga një tjetër quhet produkt i procesit dhe ndodh në dy faza: së pari, krijohet kopje e saktë origjinale, prind procesoni (thirrjen e sistemit fork ()), dhe më pas një kopje e procesit zëvendësohet me një të re, filial(exec () thirrje sistemi). Është e rëndësishme për ne tani që ky zëvendësim të ruajë të gjitha vetitë e procesit origjinal dhe, në veçanti, mjedisin.

Le të kthehemi te puna e interpretuesit të komandës: kur ekzekuton një komandë, ai lëshon mjetin e nevojshëm si një proces fëmijë, pret përfundimin e tij (duke përdorur një thirrje tjetër sistemi, prisni ()), analizon rezultatin dhe vazhdon punën e tij. Shërbimi i nisur merr informacione të dy llojeve nga procesi prind (përkthyesi i komandës): parametrat e linjës së komandës(jo në formën në të cilën përdoruesi i futi ato, por pas përpunimit sipas rregullave të interpretuesit të komandës, në formën e një liste vijuese) dhe mjedisi, pra të gjitha variablat dhe vlerat e tyre që u përcaktuan në mjedisin e procesit prind.

I njëjti mjet mund të përdoret e njëjta mënyrë, por në një mjedis të ndryshuar - dhe prodhojnë rezultate të ndryshme. Përdoruesi mund të ndryshojë në mënyrë eksplicite mjedisin për procesin që fillon duke i caktuar një vlerë variablit të mjedisit në vijën e komandës para emri i komandës. Predha, duke parë "=" brenda fjalës së parë të vijës së komandës, arrin në përfundimin se ky është një operacion caktimi, jo një emër komande, dhe kujton se si të ndryshojë mjedisin e komandës që vijon.

datë $
Hënë 16 qershor 18:28:30 MSK 2008
$ LC_TIME = datë C
Hënë Qershor 16 18:28:51 MSK 2008

Shembulli 13... Shërbimi data përdor variablin e mjedisit LC_TIME


Variabli i mjedisit LC_TIME udhëzon që të përdoret një gjuhë specifike kur shfaq datën dhe orën, dhe vlera "C" korrespondon me gjuhën e "sistemit standard" (më shpesh anglisht).

Variablat që shell bash përcakton pas lëshimet nuk i përkasin mjedisit dhe për këtë arsye nuk trashëgohen nga proceset e fëmijëve. Kështu që ndryshorja bash u rrethua, është e nevojshme eksporti me komandën e eksportit: $ LC_TIME = C
datë $
Hënë Qershor 16 18:29:17 MSK 2008
$ eksport LC_TIME = C
datë $
Hënë Qershor 16 18:29:38 MSK 2008

Shembulli 14... Eksportimi i variablave të guaskës në mjedis


Gjatë një sesioni të përdoruesit, guaska merr një mjedis mjaft të pasur, të cilit i shton cilësimet e veta. Shumica e variablave të paracaktuar përdoren ose nga vetë shell ose nga shërbimet e sistemit, kështu që ndryshimi i tyre bën që shell ose utilities të sillen paksa ndryshe. Shiko mjedisin në bash ju mund të përdorni vendos komandat.

Vlera e çdo variabli në bash mund të arrihet me emër: në vend të $ emri_ndryshore shell do të zëvendësojë vlerën për këtë variabël. Për shembull, për të parë vlerën e një ndryshoreje, përdoruesi mund të fusë komandën echo $ emri_ndryshore .

Jehon $ SHTEG
/ home / metody / bin: / bin: / usr / bin: / usr / lokal / bin: / usr / X11R6 / bin: / usr / lojëra

Shembulli 15... Prodhimi i vlerës së ndryshueshme


Variabli i mjedisit PATH është mjaft i jashtëzakonshëm. Ai përmban një listë drejtorish, hyrjet e të cilave janë të ndara me dy pika. Nëse komanda në vijën e komandës nuk është komandë e vetë një shell (si cd) dhe nuk përfaqësohet si rruga në skedarin e ekzekutueshëm (si / bin / ls ose. / script), atëherë guaska do të kërkojë këtë komandë midis emrave të skedarëve të ekzekutueshëm në të gjitha drejtoritë PATH, dhe vetëm në to. Për këtë arsye, skedarët e ekzekutueshëm nuk mund të hapen thjesht me emër nëse janë në drejtorinë aktuale dhe drejtoria aktuale nuk është në PATH. Në raste të tilla, mund të përdorni shtegun më të shkurtër të mundshëm, “./” (për shembull, duke thirrur skriptin. / Script).

Variablat e mjedisit që ndikojnë në funksionimin të ndryshme ka mjaft shërbime. Për shembull, variablat e familjes LC_ (një listë e plotë e tyre lëshohet nga komanda lokale) që përcaktojnë gjuhën në të cilën shfaqen mesazhet diagnostikuese, standardet për formatin e datave, njësitë e monedhës, numrat, metodat e konvertimit të vargjeve, etj. Nëse ndonjë program kërkon redaktimin e një skedari, ky skedar i kalohet programit, shtegu i të cilit ruhet në variablin EDITOR (zakonisht / usr / bin / vi), dhe nëse keni nevojë të hapni skedarin html, shumë shërbime do të thirrni programin e specifikuar në variablin BROWSER për këtë. Së fundi, disa variabla si UID, USER ose PWD thjesht përmbajnë informacione të dobishme që mund të merren në mënyra të tjera.

Një grup opsionesh jo standarde: kush jam i bën njësoj si who -m.

  • Tutorial

Pse dhe për kë është artikulli?

Fillimisht ishte menduar si një udhëzues për studentët që fillojnë me sisteme të ngjashme me unix. Me fjalë të tjera, artikulli është menduar për ata që nuk kanë përvojë të mëparshme të punës në linjën e komandës unix, por për një arsye ose një tjetër duan ose duhet të mësojnë se si të ndërveprojnë në mënyrë efektive me të.

Nuk do të ketë ritregim të njerëzve (dokumentacion), dhe artikulli në asnjë mënyrë nuk anulon ose zëvendëson leximin e tyre. Në vend të kësaj, unë do të flas për gjërat kryesore (komandat, teknikat dhe parimet) që duhen kuptuar që në fillimet e punës në guaskë unix në mënyrë që puna të jetë efikase dhe e këndshme.

Artikulli trajton mjedise të plota të ngjashme me unix, me një guaskë plotësisht funksionale (mundësisht zsh ose bash) dhe një gamë mjaft të gjerë programesh standarde.

Çfarë është guaska

Shell (shell, i njohur si "vija e komandës", aka CLI, aka "console", aka "terminal", aka "dritare e zezë me shkronja të bardha") është një ndërfaqe teksti për komunikimin me sistemin operativ (epo, në mënyrë rigoroze, është program, e cila ofron një ndërfaqe të tillë, por tani ky dallim nuk është i rëndësishëm).

Në përgjithësi, puna përmes guaskës duket kështu: përdoruesi (d.m.th., ju) fut një komandë nga tastiera, shtyp Enter, sistemi ekzekuton komandën, shkruan rezultatin e ekzekutimit në ekran dhe përsëri pret komandën tjetër. për t'u futur.

Pamje tipike guaskë:

Shell është mënyra kryesore për të bashkëvepruar me të gjitha sistemet e serverëve të ngjashëm me Unix.

Ku ndodhin sistemet e linjës së komandës?

Aty ku mund t'ju presë një guaskë unix, opsione të njohura:
  • MacOS (bash);
  • qasje në distancë në server për punë ose për një projekt personal në internet;
  • server skedari në shtëpi me akses në distancë;
  • Ubuntu, PC-BSD në laptop / desktop - sisteme të ngjashme me unix sot janë të lehta për t'u instaluar dhe përdorur.

Cilat detyra është e arsyeshme të zgjidhen me një guaskë?

Detyrat natyrore për të cilat guaska është e përshtatshme, e dobishme dhe e pazëvendësueshme:
  • punë interaktive në terminal:
    • kryerja e kompilimit, ekzekutimi i detyrave përmes make;
    • krahasimi i skedarëve të tekstit;
    • analiza e shpejtë e të dhënave ad-hoc (numri i IP-ve unike në regjistër, shpërndarja e të dhënave sipas orës / minutave, etj.);
    • veprime me shumicë një herë (vrasni shumë procese; nëse punoni me një sistem kontrolli versioni, ktheni ose ktheni një grup skedarësh);
    • diagnostifikimi i asaj që po ndodh në sistem (semaforë, bravë, procese, përshkrues, hapësirë ​​në disk, etj.);
  • shkrimi:
    • skriptet e instalimit, për ekzekutimin e të cilave nuk mund të mbështeteni në praninë e interpretuesve të tjerë - kjo nuk është për fillestarët;
    • funksionet për personalizimin e guaskës interaktive (duke ndikuar në kërkesën, ndryshimi i drejtorisë, vendosja e variablave të mjedisit) - gjithashtu jo plotësisht për fillestarët;
    • skriptet e njëhershme të tilla si transkodimi i skedarëve me shumicë;
    • makefiles.

Hapat e parë absolut

Fillimi: Hyni dhe dilni

Sigurohuni që e dini saktësisht se si të filloni guaskën dhe si të dilni prej saj.

Nëse jeni në një makinë me Ubuntu të instaluar, duhet të nisni programin Terminal. Kur të përfundoni, thjesht mund të mbyllni dritaren.

Në MacOS, hapni gjithashtu Terminal.

Për të hyrë në një server në distancë, përdorni ssh (nëse keni MacOS, Ubuntu ose një sistem tjetër të ngjashëm me unix në vend) ose stuko (nëse keni Windows).

Kush jam unë, ku jam?

Ekzekutoni komandat e mëposhtme:
  • emri i hostit - shfaq emrin e makinës (serverit) në të cilin jeni aktualisht;
  • whoami - shfaq hyrjen tuaj (emri juaj në sistem);
  • pemë -d / | më pak - imazh pseudografik i pemës së drejtorisë në makinë; dalje nga lëvizja - q;
  • pwd - shfaq direktoriumin ku ndodheni aktualisht; në vijën e komandës, nuk mund të jesh "ashtu si ai", me siguri do të jesh në ndonjë direktori (= drejtoria aktuale, drejtoria e punës). Drejtoria juaj aktuale e punës ndoshta shfaqet në kërkesën tuaj.
  • ls - lista e skedarëve në drejtorinë aktuale; ls / home - lista e skedarëve në drejtorinë e specifikuar;

Historia e komandave (historia)

Një pronë e rëndësishme e një linje komande të plotë është historia e komandës.

Ekzekutoni disa komanda: hostname, ls, pwd, whoami. Tani shtypni tastin lart. Komanda e mëparshme u shfaq në rreshtin e hyrjes. Përdorni tastet "lart" dhe "poshtë" për të ecur përpara dhe prapa përgjatë historisë. Kur lëvizni poshtë te emri i hostit, shtypni Enter - komanda do të ekzekutohet përsëri.

Komandat nga historia jo vetëm që mund të përsëriten, por edhe të modifikohen. Kërkoni historinë në komandën ls, shtoni çelësin -l në të (doli ls -l, ka një hapësirë ​​para minusit, por jo pas). Shtypni Enter - komanda e modifikuar do të ekzekutohet.

Lëvizja nëpër histori, redaktimi dhe riekzekutimi i komandave janë veprimet më të zakonshme kur punoni në vijën e komandës, mësohuni me të.

Copy-paste

Linja e komandës është shumë e përqendruar te teksti: komandat janë tekst, të dhënat hyrëse për shumicën e programeve standarde janë tekst, dhe rezultati i punës më së shpeshti është gjithashtu tekst.

Gjëja e bukur për tekstin është se ai mund të kopjohet dhe ngjitet, dhe kjo është gjithashtu e vërtetë për vijën e komandës.

Provoni datën e komandës + "% y-% m-% d,% A"
E keni futur tërësisht me dorë apo e keni kopjuar nga artikulli? Sigurohuni që mund ta kopjoni, ngjiteni në terminal dhe ekzekutoni.

Pasi të mësoni se si të përdorni njeriun, sigurohuni që mund të kopjoni dhe ekzekutoni komandat shembull nga ndihma. Për të testuar, kërkoni seksionin SHEMBUJ në programin e datës, kopjoni dhe ekzekutoni shembullin e parë të treguar (vetëm në rast: shenja e dollarit është nuk është pjesë e komandës , ky është një imazh i kushtëzuar i promptit).

Si ta kopjoni saktësisht tekstin nga terminali dhe ta ngjisni atë në terminal varet nga sistemi juaj dhe cilësimet e tij, kështu që, për fat të keq, nuk do të funksionojë për të dhënë udhëzime universale. Në Ubuntu provoni këtë: kopjimi është vetëm një përzgjedhje me miun, ngjitja është butoni i mesit të miut. Nëse nuk funksionon, ose nëse keni një sistem tjetër, kërkoni në internet ose pyesni të njohurit më me përvojë.

Çelësat dhe opsionet

Kur shqyrtoni historinë e komandave, tashmë keni hasur në faktin se komanda ls ka një të paktën dy opsione. Nëse e quani ashtu, ai nxjerr një listë të thjeshtë:

[email i mbrojtur]: ~ / shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
Nëse shtoni çelësin -l, informacioni i detajuar shfaqet për çdo skedar:

[email i mbrojtur]: ~ / shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira 198 shkurt 13 11:48 Makefile -rw-rw-r-- 1 akira 15107 shkurt 14 22:26ll -first-steps.md -rw-rw-r-- 1 Akira 146226 Shkurt 13 11:49 shell-first-steps.pdf -rw-rw-r-- 1 Akira 16626 Shkurt 13 11:45 shell-mbijetesa -quide.md -rw-rw-r-- 1 akira 146203 13 shkurt 11:35 shell-survival-quide.pdf
Kjo është një situatë shumë tipike: nëse shtoni modifikues të veçantë (çelësat, opsionet, parametrat) në një thirrje komandimi, sjellja e komandës ndryshon. Krahaso: pema / dhe pema -d /, emri i hostit dhe emri i pritës -f.

Për më tepër, komandat mund të marrin si parametra emrat e skedarëve, drejtorive ose thjesht vargje teksti. Provoni:

Ls -ld / shtëpi ls -l / rrënjë grep në shtëpi / etj / passwd

njeri

man është një referencë për komandat dhe programet e disponueshme në kompjuterin tuaj, si dhe thirrjet e sistemit dhe bibliotekën standarde C.

Provoni: burrë grep, burrë atoi, burrë çdir, burrë burrë.

Lëvizja përpara dhe prapa bëhet me butonat "lart", "poshtë", "PageUp", "PageDown", dalja nga pamja e ndihmës - me butonin q. Kërkoni për tekst specifik në një artikull ndihme: Shtypni / (përpara), futni tekstin për të kërkuar, shtypni Enter. Kaloni te dukuritë e radhës - tasti n.

Të gjithë artikujt e ndihmës janë të kategorizuar. Më e rëndësishmja:

  • 1 - programe të ekzekutueshme dhe komandat shell (wc, ls, pwd, etj.);
  • 2 - thirrjet e sistemit (fork, dup2, etj.)
  • 3 - funksionet e bibliotekës (printf, scanf, cos, exec).
Është e nevojshme të tregohet se nga cila kategori duhet të tregohet ndihma në rastet e rastësisë së emrit. Për shembull, njeriu 3 printf përshkruan një funksion nga biblioteka standarde C dhe njeriu 1 printf përshkruan një program konsole me të njëjtin emër.

Ju mund të shikoni një listë të të gjitha faqeve man të disponueshme në makinë duke përdorur komandën man -k. (pikë është gjithashtu pjesë e ekipit).

më pak

Kur në një dritare të vogël terminali ju duhet të shikoni shumë tekst i gjatë(përmbajtja e një skedari, një njeri i gjatë, etj.), Përdorni programe speciale "pager" (nga fjala faqe / faqe, domethënë shikuesit faqe për faqe). Shikuesi më i popullarizuar i faqeve është më pak, dhe është ai që ju ofron rrokullisje kur lexoni faqet kryesore.

Provoni dhe krahasoni sjelljen:

Macja /etc/bash.bashrc cat /etc/bash.bashrc | më pak

Ju mund ta transferoni skedarin në shfletues direkt në parametrat:

Më pak /etc/bash.bashrc

Lëvizja lart e poshtë - lart, poshtë, butonat PageUp, PageDown, butoni dalje - q. Kërkoni për tekst specifik: shtypni / (përpara), futni tekstin për të kërkuar, shtypni Enter. Kaloni te dukuritë vijuese - tasti n. (A e njihni një manual për njeriun? Nuk është çudi, më pak përdoret gjithashtu për të shfaqur ndihmën.)

Të drejtat

Një grup "të drejtash" shoqërohet me çdo skedar ose drejtori: e drejta për të lexuar skedarin, e drejta për të shkruar në skedar, e drejta për të ekzekutuar skedarin. Të gjithë përdoruesit ndahen në tre kategori: pronari i skedarit, grupi i pronarëve të skedarëve, të gjithë përdoruesit e tjerë.

Ju mund të shikoni lejet e skedarit duke përdorur ls -l. Për shembull:

> ls -l Makefile -rw-r - r-- 1 akira studentë 198 shkurt 13 11:48 Makefile
Ky dalje do të thotë që pronari (akira) mund të lexojë dhe shkruajë skedarin, grupi (studentët) mund të lexojë vetëm dhe të gjithë të tjerët në përdorues mund të lexojnë vetëm.

Nëse merrni një mesazh të refuzuar për leje gjatë punës, kjo do të thotë se nuk keni leje të mjaftueshme për objektin me të cilin dëshironi të punoni.

Lexoni man chmod për detaje.

STDIN, STDOUT, transportues (tuba)

Çdo program në ekzekutim ka 3 të lidhura rrjedhje standarde të dhënat: transmetimi i të dhënave hyrëse STDIN, transmetimi i të dhënave dalëse STDOUT, transmetimi për nxjerrjen e gabimeve STDERR.

Drejtoni programin wc, shkruani tekstin Mirëdita sot, shtypni Enter, shkruani tekstin ditë e mirë, shtypni Enter, shtypni Ctrl + d. Programi wc do të tregojë statistika për numrin e shkronjave, fjalëve dhe rreshtave në tekstin tuaj dhe daljen:

> wc dite e mire sot dita e mire 2 5 24
Në këtë rast, ju keni dhënë një tekst me dy rreshta në STDIN të programit dhe tre numra në STDOUT.

Tani ekzekutoni kokën e komandës -n3 / etc / passwd, duhet të duket diçka si kjo:

> head -n3 / etc / passwd root: x: 0: 0: root: / root: / bin / bash daemon: x: 1: 1: daemon: / usr / sbin: / usr / sbin / nologin bin: x: 2: 2: bin: / bin: / usr / sbin / nologin
Në këtë rast, kreu nuk lexoi asgjë nga STDIN, por shkroi tre rreshta në STDOUT.

Mendoni për këtë në këtë mënyrë: një program është një tub në të cilin STDIN derdhet dhe STDOUT rrjedh jashtë.

Vetia më e rëndësishme e linjës së komandës Unix është se programet e tubave mund të ndërlidhen: dalja (STDOUT) e një programi mund të kalojë si të dhëna hyrëse (STDIN) në një program tjetër.

Një ndërtim i tillë i programeve të lidhura quhet në anglisht tub (tub), në rusisht - një transportues ose tub.

Kombinimi i programeve në një tubacion bëhet me simbolin | (shirit vertikal)

Ekzekutoni komandën head -n3 / etc / passwd | wc, ju merrni diçka si kjo:

> head -n3 / etc / passwd | wc 3 3 117
Ja çfarë ndodhi: programi kryesor lëshoi ​​tre rreshta teksti në STDOUT, i cili shkoi menjëherë në hyrjen e programit wc, i cili nga ana e tij numëronte numrin e karaktereve, fjalëve dhe rreshtave në tekstin që rezulton.

Ju mund të kombinoni sa më shumë programe që dëshironi në një tubacion. Për shembull, mund të shtoni një program tjetër wc në tubacionin e mëparshëm që numëron sa fjalë dhe shkronja ishin në daljen e wc-së së parë:

> head -n3 / etc / passwd | wc | wc 1 3 24

Kompozimi i tubacioneve (tubave) është një gjë shumë e zakonshme kur punoni në vijën e komandës. Për një shembull se si bëhet kjo në praktikë, shihni Ndërtimi i një tubacioni me një linjë.

Ridrejtimi I/O

Dalja (STDOUT) e një programi jo vetëm që mund të dërgohet në një program tjetër, por edhe thjesht të shkruhet në një skedar. Ky ridrejtim bëhet me> (më e madhe se shenjë):

Data> /tmp/today.txt
Si rezultat i ekzekutimit të kësaj komande, skedari /tmp/today.txt do të shfaqet në disk. Shikoni përmbajtjen e tij me cat /tmp/today.txt

Nëse një skedar me të njëjtin emër ekziston tashmë, përmbajtja e tij e vjetër do të shkatërrohet. Nëse skedari nuk ekziston, ai do të krijohet. Drejtoria në të cilën është krijuar skedari duhet të ekzistojë përpara se komanda të ekzekutohet.

Nëse nuk dëshironi të mbishkruani skedarin, por të shtoni rezultatin në fund të tij, përdorni >>:

Data >> /tmp/today.txt
Kontrolloni se çfarë është shkruar tani në skedar.

Përveç kësaj, çdo skedar mund të kalojë në program në vend të STDIN. Provoni:

Tualet

Çfarë duhet bërë kur diçka nuk është e qartë

Nëse hasni sjellje të sistemit që nuk e kuptoni, ose dëshironi të arrini një rezultat të caktuar, por nuk e dini se si saktësisht, ju këshilloj të vazhdoni në rendin e mëposhtëm (nga rruga, kjo vlen jo vetëm për predha):
  • formuloni pyetjen ose detyrën sa më qartë që të jetë e mundur - nuk ka asgjë më të vështirë sesa zgjidhja e "Unë nuk e di çfarë";
  • mbani mend nëse keni hasur tashmë të njëjtin ose një problem të ngjashëm - në këtë rast ia vlen të provoni zgjidhjen që funksionoi herën e fundit;
  • lexoni njeriun e duhur (nëse e dini se cilët njerëz janë të përshtatshëm në rastin tuaj) - ndoshta do të gjeni shembuj të përshtatshëm të përdorimit të komandave, opsionet e nevojshme ose lidhjet me komandat e tjera;
  • mendoni: a është e mundur të ndryshoni pak detyrën? - ndoshta duke ndryshuar pak kushtet, do të merrni një problem që tashmë dini si ta zgjidhni;
  • bëni pyetjen tuaj të formuluar qartë në një motor kërkimi - ndoshta përgjigja mund të gjendet në Stack Overflow ose në faqe të tjera;
Nëse asnjë nga sa më sipër nuk ju ndihmon, kërkoni këshilla nga një mësues, koleg ose mik me përvojë. Dhe mos kini frikë të bëni pyetje "budallaqe" - nuk është turp të mos dini, është turp të mos pyesni.

Nëse keni gjetur një problem të vështirë (vetëm, me ndihmën e internetit ose njerëzve të tjerë) - shkruani zgjidhjen tuaj në rast se ju ose shokët tuaj keni përsëri të njëjtin problem. Ju mund të shkruani në një të thjeshtë skedar teksti, në Evernote, postoni në mediat sociale.

Metodat e punës

Kopjo dhe ngjit- nga man-s, nga artikujt në StackOverflow, etj. Linja e komandës përbëhet nga tekst, përdorni këtë: kopjoni dhe përdorni komandat shembull, shkruani gjetjet e suksesshme si suvenir, publikojini ato në Twitter dhe blogje.

Tërhiqeni komandën e mëparshme nga historia, shtoni një komandë tjetër në tubacion, ekzekutoni, përsërisni.Cm. Shihni gjithashtu Kompozimi i një tubacioni me një linjë.

Komandat bazë

  • kalimi në një drejtori tjetër: cd;
  • shikimi i përmbajtjes së skedarëve: mace, më pak, kokë, bisht;
  • manipulimi i skedarëve: cp, mv, rm;
  • shikimi i përmbajtjes së drejtorive: ls, ls -l, ls -lS;
  • Struktura e drejtorisë: pemë, pemë -d (mund të kalosh një drejtori si parametër);
  • kërko për skedarë: gjej. -emri ...;

Analiza

  • wc, wc -l;
  • sort -k - renditja sipas fushës së specifikuar;
  • sort -n - renditje numerike;
  • diff - krahasoni skedarët;
  • grep, grep -v, grep -w, grep "\ ", grep -E - kërko tekst;
  • uniq, uniq -c - unike e linjës;
  • awk - në variantin awk "(print $ 1)" për të mbajtur vetëm fushën e parë të çdo rreshti, $ 1 mund të ndryshohet në $ 2, $ 3, etj.;

Diagnostifikimi i sistemit

  • ps axuww - informacion në lidhje me proceset (programet në ekzekutim) që funksionojnë në makinë;
  • top - pamje interaktive e proceseve më intensive të burimeve;
  • df - hapësirë ​​e përdorur dhe e lirë në disk;
  • du është madhësia totale e skedarëve në drejtori (në mënyrë rekursive me nëndrejtori);
  • strace, ktrace - atë që sistemi e quan procesi kryen;
  • lsof - çfarë skedarësh po përdor procesi;
  • netstat -na, netstat -nap - cilat porte dhe priza janë të hapura në sistem.

Mund të mos keni disa programe, ato duhet të instalohen shtesë. Përveç kësaj, disa opsione të këtyre programeve janë të disponueshme vetëm për përdoruesit e privilegjuar (rrënja "y).

Ekzekutimi masiv dhe gjysmë automatik

Në fillim, kaloni këtë seksion, do t'ju nevojiten këto komanda dhe konstruksione kur të arrini në skriptimin e thjeshtë të guaskës.
  • test - kontrollimi i kushteve;
  • ndërsa lexoni - kaloni nëpër linja STDIN;
  • xargs - zëvendësimi i vargjeve nga STDIN në parametrat e programit të specifikuar;
  • seq - gjenerimi i sekuencave të numrave natyrorë;
  • () - kombinoni daljen e disa komandave;
  • ; - plotësoni një nga një;
  • && - ekzekutohet me kusht të përfundimit me sukses të komandës së parë;
  • || - të ekzekutojë me kusht të përfundimit të pasuksesshëm të komandës së parë;
  • tee - dublikojeni daljen e programit në STDOUT dhe në një skedar në disk.

të ndryshme

  • data - data aktuale;
  • curl - shkarkon dokumentin në url-në e specifikuar dhe e shkruan rezultatin në STDOUT;
  • prek - përditësoni datën e modifikimit të skedarit;
  • vrasin - dërgoni një sinjal në proces;
  • e vërtetë - nuk bën asgjë, kthehet e vërtetë, e dobishme për organizimin e sytheve të përjetshme;
  • sudo - ekzekutoni komandën si rrënjë "a.

Përbërja e një tubacioni me një linjë

Le të shohim një shembull të një detyre të botës reale: ju duhet të vrisni të gjitha proceset e serverit task-6 që ekzekutohen në emër të përdoruesit aktual.

Hapi 1.
Kuptoni se cili program prodhon afërsisht të dhënat e kërkuara, edhe nëse jo në formën e tij të pastër. Për detyrën tonë, ia vlen të merrni një listë të të gjitha proceseve në sistem: ps axuww. Vraponi.

Hapi 2.
Shikoni të dhënat e marra me sytë tuaj, dilni me një filtër që do të hedhë disa nga të dhënat e panevojshme. Shpesh kjo është grep ose grep -v. Përdorni tastin "Up" për të hequr komandën e mëparshme nga historia, caktoni filtrin që keni shpikur dhe ekzekutoni atë.

Ps axuww | grep `whoami`
- vetëm proceset e përdoruesit aktual.

Hapi 3.
Përsëriteni hapin 2 derisa të merrni të dhënat e pastra që dëshironi.

"
- të gjitha proceset me emrin e dëshiruar (plus, ndoshta, ato të panevojshme si vim task-6-server.c, etj.),

Ps axuww | grep `whoami` | grep "\ "| grep -v vim ps axuww | grep` whoami` | grep "\ "| grep -v vim | grep -v më pak
- vetëm proceset me emrin e kërkuar

Ps axuww | grep `whoami` | grep "\ "| grep -v vim | grep -v më pak | awk" (print $2) "

Pids e kërkuara të procesit, hapi 3 i përfunduar

Hapi 4.
Aplikoni një mbajtës përfundimtar të përshtatshëm. Duke përdorur tastin "Up", tërhiqni komandën e mëparshme nga historia dhe shtoni përpunimin që do të përfundojë zgjidhjen e problemit:

  • | wc -l për të numëruar numrin e proceseve;
  • > pids për të shkruar pids në një skedar;
  • | xargs vrasin -9 procese vrasin.

Detyrat e trajnimit

Dëshironi të praktikoni aftësi të reja? Provoni detyrat e mëposhtme:
  • merrni një listë të të gjithë skedarëve dhe drejtorive në direktorinë tuaj kryesore;
  • merrni një listë të të gjithë artikujve nga kategoria 2 (thirrjet e sistemit);
  • numëro sa herë del fjala grep në grep man-e;
  • numëroni sa procese po ekzekutohen aktualisht si përdorues rrënjë;
  • gjeni cila komandë shfaqet në numrin maksimal të kategorive të ndihmës (njeri);
  • numëroni sa herë shfaqet fjala var në faqen ya.ru.
Këshillë: ju duhet find, grep -o, awk "(print $ 1)", shprehje të rregullta në grep, curl -s.

Çfarë të studiojmë më pas?

Nëse filloni të pëlqeni rreshtin e komandës, mos u ndalni, vazhdoni të përmirësoni aftësitë tuaja.

Këtu janë disa programe që patjetër do t'ju vijnë në ndihmë nëse jetoni në vijën e komandës:

  • gjeni me opsione komplekse
  • në vend të kësaj
  • lokalizoj
  • telnet
  • netcat
  • tcpdump
  • rsync
  • ekran
  • zgrep, zless
  • visudo
  • crontab -e
  • Dërgo postë
Përveç kësaj, me kalimin e kohës ia vlen të mësoni një gjuhë skriptimi si perl ose python, ose edhe të dyja.

Kush ka nevojë për të?

A ia vlen të mësoni linjën e komandës dhe skriptimin e guaskës sot? Patjetër që ia vlen. Këtu janë vetëm disa shembuj të kërkesave të Facebook për kandidatët që duan të aplikojnë për një punë në FB.

=====================================================

PUNË LABORATORIKE Nr. 1 (koha e ekzekutimit - 3 orë)

Tema: “Hyrje nëguaskë

1. Hyrje në guaskë

Shell është një përkthyes komande (procesor komanda) që ofron funksione ndërfaqeje midis përdoruesit dhe kernelit Unix. Solaris ofron tre procesorë kryesorë komandues:

    Predha e paracaktuar e Bourne është / sbin / sh

    C shell - / bin / csh

    Guaska korn - ./bin/ksh

Përveç këtyre, Solaris ofron predha shtesë:

    J shell - / sbin / jsh

    Korn i kufizuar l - / usr / bin / rsh

    T shell - / usr / bin / tcsh

    GNU Bourne Again - / usr / bin / bash

    Z shell - usr / bin / zsh

Zgjedhja e guaskës është një çështje e preferencës personale.

2. Ekzekutimi i komandave

Çdo komandë në Unix përbëhet nga emri i programit (komandë) që do të ekzekutohet, opsionet (çelsat) dhe argumentet që i kalohen programit. Ndarësi i linjës së komandës është hapësira ose skeda.

Shembull

$ / bin / ping –t 10 192.168.2.13

argument

prompt i guaskës

Nëse shtegu i skedarit të ekzekutueshëm nuk është specifikuar gjatë nisjes së programit, OS skanon në mënyrë sekuenciale drejtoritë e specifikuara në variablin PATH. Nëse ekziston një program me këtë emër në drejtorinë që po shikohet, atëherë ai niset për ekzekutim. Drejtoria aktuale e punës nuk shikohet kur kërkoni për programe nëse nuk specifikohet në variablin PATH.

! Për arsye sigurie, administratori nuk rekomandohet të shtojë drejtorinë aktuale të përdoruesit dhe direktoritë e shtëpisë (personale) në variablin PATH.

Shembuj të

Ekzekutimi i programit me shtegun e plotë

$ / usr/ lokal/ kosh/ imja_ program

Nisja e një programi nga një direktori prind (prind).

$ ../ lokal/ kosh/ imja_ program

Ekzekutimi i një programi nga direktoria aktuale

$ ./ imja_ program

3. Personazhe speciale në guaskë

Disa karaktere guaskë kanë kuptime të veçanta.

3.1. Modelet e gjenerimit të emrave të skedarit

? (pikëpyetje) përputhet me çdo karakter përveç pikës së parë;

(kllapa katrore) përcaktimi i një grupi karakteresh (një karakter zgjidhet nga grupi);

- (shenja minus") përcakton gamën e karaktereve të vlefshme;

! (pikëçuditëse) refuzon grupin tjetër të personazheve;

* (simboli me yll) përputhet me çdo numër karakteresh përveç pikës së parë.

3.2. Karakteret e ridrejtimit I/O

< - ridrejtimi i hyrjes;

>, >> - ridrejtimi i daljes;

2>, 2>> - ridrejtimi i mesazheve të gabimit;

| - transportues.

3.3. Simbolet e zëvendësimit

$ variable_nameq - zëvendësimi i variablave;

$ (komandë) ose "komandë" - zëvendësimi i komandës;

~ është një zëvendësim i tildës.

4. Kërko

Për të gjetur shpejt skedarët dhe drejtoritë, përdorni komandën Whereis, për një më të thellë, përdorni komandën find (kërkoni skedarë që plotësojnë kërkesat e specifikuara;).

5. Redaktori i tekstit vi

Redaktori i tekstit vi është një redaktues i gjithanshëm që gjendet në çdo Unix. Përveç redaktimit të skedarëve të tekstit, vi mund të përdoret për redaktimin e linjës së komandës.

Redaktori vi ka 3 mënyra funksionimi (shih figurën).

Hyrja në redaktorin vi

Dalja vi

Simboli ”~” (tilda) në pozicionin e parë shënon linja boshe (joekzistente) të skedarit.

Modaliteti kryesor është modaliteti i komandës, në të cilin komandat futen duke shtypur një sekuencë çelësash (ato nuk shfaqen në asnjë mënyrë në ekran).

Lëvizja nëpër tekst në modalitetin e komandës kryhet duke përdorur shigjetat dhe tastet (në të majtë), (poshtë), (lart), (në të djathtë).

Disa komanda vi janë renditur në tabelë.

Fshi linjën aktuale

Kopjoni linjën aktuale në kujtesën e fragmenteve

Lëvizja Y e kursorit

Bufer karakteret e shënuara me kursor

Vendosni një vijë të re në fund

Vendosni një vijë të re në krye

Shtimi pas kursorit

Shtimi pas rreshtit aktual

Fut para kursorit

Futni përpara vijës aktuale

Zëvendësoni një karakter me një karakter të tastierës

Ngjitja e tekstit nga kujtesa e fragmenteve

. (pika)

Përsëritni komandën e fundit të ekzekutuar

Zhbër komandën e fundit

Zhbëni të gjitha ndryshimet në linjën aktuale

Fshirja e një karakteri mbi kursorin

Në modalitetin e hyrjes, të gjitha karakteret e shtypura në tastierë futen në tekst.

Në modalitetin e rreshtit të fundit, komanda që futni shfaqet në rreshtin e fundit të ekranit.

6. Ndihmë

Unix ka një manual elektronik që përmban një përshkrim të qëllimit të komandave, sintaksës së tyre, shembujve të përdorimit, etj. Manuali thirret me komandën man:

7. Komandat bazë të guaskës

Kush- shfaqja e informacionit për përdoruesit aktivë;

jehonë- daljen e mesazheve në terminal;

banderolë- nxjerrja e mesazheve në terminal me shkronja të mëdha;

njeri- thirrja e sistemit të ndihmës online;

datë - shfaqja e datës aktuale;

shkruaj- dërgimi i mesazheve në terminalin e një përdoruesi tjetër;

mesg- lejimi / ndalimi i shfaqjes së mesazheve nga përdoruesit e tjerë;

postë- dërgimi/marrja e postës;

Lajme- njohja me të rejat e sistemit;

pwd- prodhimi i emrit absolut të rrugës së drejtorisë aktuale të punës;

cd- ndryshimi i drejtorisë së punës;

ls- shfaqja e informacionit për përmbajtjen e drejtorisë;

mkdir- krijimi i një drejtorie;

rmdir- fshirja e një drejtorie;

prekje- përditësimi i vulës kohore të skedarit;

cp- kopjimi i skedarëve;

Mace- bashkimi dhe shfaqja e përmbajtjes së skedarëve;

më shumë- Pamja faqe pas faqe e përmbajtjes së skedarit.

mv - zhvendosja ose riemërimi i një skedari;

rm- fshirja e një skedari;

pseudonimi- krijimi i një pseudonimi;

tr- shndërrimi i karaktereve;

dalje- përfundimi i rrymës guaskë-a;

tee- përgjimi i rezultateve të transportuesit;

prerje - përzgjedhja e fushave nga një rresht;

grep- kërkim sipas modelit;

pr- daljen e skedarit në dalje standarde në një format të caktuar;

rendit- renditja;

kokë- daljen e rreshtave të parë të skedarit;

bisht- daljen e rreshtave të fundit të skedarit;

tualet- numërimin e numrit të karaktereve, fjalëve dhe rreshtave;

lexoni, jehonë - leximi dhe shfaqja e vlerave të variablave;

provë- vlerësimi i vlerës së një shprehjeje;

ekspr, le- njehsimi i shprehjeve aritmetike;

8. Guaskë-programet

Shell ju lejon të ruani një sekuencë komandash në një skedar dhe më pas ta ekzekutoni atë. Për të ekzekutuar një skedar me një program shell për ekzekutim, duhet të shtoni të drejtën e ekzekutimit në të drejtat e aksesit:

$ chmod + x program_file_name

Degëzimi në programet shell organizohet duke përdorur operatorët:

nëse-atëherë-ndryshe

Operatorët e ciklit:

USHTRIMET

1. Cila nga komandat e mëposhtme do të shfaqë një mesazh mirëseardhjeje në ekran? Çfarë nuk janë? Pse?

$ jehonë përshëndetje

$ Jehonë përshëndetje

$ jehonë PËRSHËNDETJE, BOTË

$ banderolë Përshëndetje

$ BANNER PËRSHËNDETJE, BOTË

2. Nxjerr një mesazh nga disa rreshta duke përdorur komandat jehonë dhe banderolë.

3. Vendosni datën në dy rreshta: në të parën dita, muaji, viti, në të dytënora aktuale, duke i dhënë rezultatit një koment.

4. Përdorimi i komandës shkruaj, dërgoni një mesazh në tastierë. Dërgoni mesazhe në terminale të shumta në të njëjtën kohë.

5. Përdorimi i komandës mesg, përcaktoni nëse mesazhet lejohen në terminalin tuaj. Refuzoni mesazhet. Si do të reagojë sistemi nëse dikush përpiqet t'ju dërgojë një mesazh?

6. Identifikoni emrin tuaj SHTËPI-drejtori.

7. Shfletoni nënpemën e drejtorisë, duke filluar me direktoriumin / export / home duke përdorur komandat cd, ls dhe pwd.

8 .. Krijoni në tuajën SHTËPI-nëndirektoritë e formës:

fruta lule

mollë dardhë rrush trëndafili luleradhiqe vjollce

jeshile të errët

9. Duke qenë në tuajën SHTËPI-directory, krijoni nëndrejtoritë e mëposhtme duke përdorur një linjë të vetme komande:

A/B/C/D

10. Duke qenë në tuajën SHTËPI-directory, fshini të gjitha nëndrejtoritë e drejtorisë A.

11. Të jesh brenda SHTËPI-drejtori, krijoni një skedar macintosh në drejtorinë ekzistuese mollë dhe skedarë të shumtë në drejtori errët dhe jeshile... Shkruani drejtorinë ful... Duke qenë në drejtori ful, kopjoni të gjitha nëndrejtoritë frrënojat së bashku me skedarët në to në një drejtori të krijuar posaçërisht shporta.

12. Duke qenë në katalog ful, hiqni drejtorinë frrënojat.

13. Lexoni skedarin .profili duke përdorur komandat Mace dhe më shumë.

14. Krijo në SHTËPI-skedar teksti i drejtorisë skedari im linja të shumta duke përdorur komandën Mace. Krijo një skedar teksti MyFile, duke i shkruar të njëjtat rreshta. Sa skedarë keni marrë? Pse?

15. Shikoni përmbajtjen e skedarit të krijuar në detyrën 2.2 skedari im... Kopjo skedarin skedari im për të paraqitur mikopje. Shikoni përmbajtjen e të dy skedarëve.

16. Zhvendosni skedarin mikopje për të kataloguar lulet.

17. Të jesh brenda SHTËPI-drejtori, krijoni një lidhje mylidhje për dosje mikopje ndodhet në drejtori lulet... Shikoni skedarin e lidhjes.

18. Shtoni një rresht në skedar imjalidhje. Cilin prej dosjeve imjalidhje, imjakopje, imjadosje kanë ndryshuar? Pse?

19. Duke përdorur cilën komandë mund të përcaktoni numrin e lidhjeve? Përcaktoni numrin e lidhjeve për skedarët imjalidhje, imjakopje, imjadosje.

Fshi skedarin mikopje... Çfarë ndodhi me skedarin e lidhjes? Përcaktoni numrin e lidhjeve për skedarët imjalidhje, imjadosje.

20. Krijo një pseudonim dir që printon përmbajtjen e drejtorisë aktuale në format të zgjeruar.

21. Përfundoni seancën tuaj dhe riregjistrohuni. A funksionon pseudonimi dir? Çfarë duhet bërë për të parandaluar "humbjen" e pseudonimit ndërmjet seancave?

22. Krijo një pseudonim pikë, i cili printon një listë skedarësh në drejtorinë e punës që fillojnë me një pikë.

23. Përdorimi i komandës prekje, krijoni skedarë në një drejtori të re me emra të tillë që në të njëjtën kohë:

shabllon a* përputhen 5 skedarë;

shabllon * a korrespondonte me 4 dosje;

shabllon ??.? korrespondonte me 3 dosje;

shabllon * aa* korrespondonte me 2 dosje;

shabllon ??? përputhet 1 skedar.

24. Çfarë komande duhet të futet për të bërë sa vijon:

a) printoni emrat e të gjithë skedarëve duke filluar me një pikë;

b) printoni emrat e të gjithë skedarëve që mbarojnë me ".Tekst";

c) shfaqni emrat e të gjithë skedarëve që përmbajnë fjalën "e imja";

25. Zëvendësoni të gjitha shkronjat e vogla në një skedar të caktuar me shkronja të mëdha, në tjetrën - të gjitha shkronjat e mëdha me ato të vogla. Përjashtoni çdo hapësirë ​​të kopjuar nga skedari.

26. Krijoni një skedar me emrin * ... Fshije vetëm këtë skedar. Kini kujdes kur përdorni karaktere për të gjeneruar emra skedarësh!

27. Krijoni një skedar që ka një hapësirë ​​në emrin e tij. Si mund ta fshij një skedar të tillë?

28.Përdorimi i komandës Mace dyfishoni përmbajtjen e skedarit duke shtuar përmbajtjen origjinale në fund të të njëjtit skedar. Shkoni te drejtoria lulet... Shto në skedar spisok lista e përmbajtjes së drejtorisë lulet. Shikoni përmbajtjen e skedarit

29. Mundohuni të lexoni me urdhër Mace skedar inekzistent. Cili është reagimi i sistemit? Bëni të njëjtën gjë duke ridrejtuar mesazhet e gabimit në një skedar gabimi im... Çfarë shihni në ekran? Shikoni skedarin gabimi im.

30. Krijoni një tubacion për të renditur vetëm emrat dhe lejet e skedarëve që janë aktualisht në drejtorinë tuaj të punës.

31. Modifikoni tubacionin e ndërtuar në mënyrë që lista të ruhet në një skedar spisok E juaja e tij SHTËPI-directory, dhe u shfaq vetëm numri i skedarëve në listë.

32. Shfaqni përmbajtjen e skedarit / etc / passwd renditur sipas fushës së emrit të përdoruesit.

33. Krijo një pseudonim të regjistruara, i cili do të shfaqë një listë alfabetike të emrave të përdoruesve të kyçur në sistem.

33. Prodhimi data aktuale në ekran me shkronja të mëdha duke përdorur komandat datë dhe banderolë.

34. Cakto për ndryshoren UNË JAM Emri juaj i regjistrimit. Drejtoni një tjetër guaskë... A e shihni këtë variabël? Çfarë duhet bërë për ta parë atë në të lindur guaskë? Ndryshoni vlerën e ndryshores UNË JAM në të lindur guaskë... Dil nga e lindura guaskë. Shikoni vlerën e kësaj ndryshore në origjinal guaskë... Shpjegoni rezultatin.

35. Shkruaj guaskë- program informacion i cili do t'i kërkojë përdoruesit të fusë një emër, adresë, datë, muaj dhe vit të lindjes dhe të shfaqë këtë informacion në rend të kundërt

36. Shkruaj guaskë-programi që do të shfaqë një kërkesë për të futur një numër, ruani numrin e futur në një variabël Y, dhe printoni një mesazh "Y është më i madh se 7", nëse vlera Y më shumë se 7, dhe “Y ështëjo më i madh se sa 7” ndryshe.

37. Shkruani një program shell që printon statistikat e mëposhtme në ekran:

a) emrin tuaj;

b) numrin e argumenteve me të cilat është hedhur;

c) printon secilin nga argumentet e tij dhe gjatësinë e argumentit me karaktere;

38. Shkruaj guaskë- një program që përcakton numrin e argumenteve në vijën e komandës dhe lëshon një mesazh gabimi nëse numri i argumenteve nuk është tre, ose vetë argumentet, nëse numri i tyre është tre.

39. Shkruaj guaskë- një program që do të lëshojë një ftesë për të futur një ID të përdoruesit, për të kontrolluar ID-në për përputhje me ato të përdorura në sistem dhe për të shfaqur emri i plotëSHTËPI-drejtori ose, në rastin e një identifikuesi të pavlefshëm, lëshoni një mesazh gabimi.

40. Shkruani një program shell Përshëndetje, i cili jep përgjigjen e mëposhtme për argumentet e linjës së komandës:

Argumenti "-D"- programi do të ekzekutojë komandën datë;

Argumenti "-L"- programi do të shfaqë përmbajtjen e drejtorisë aktuale;

    nëse nuk ka argumente ose argumente të pasakta në vijën e komandës, programi do të shfaqë ndihmë për opsionet e tij.

41. Shkruani një program fjalët e cila do ta shtyjë përdoruesin të fusë një fjalë në një kohë derisa të fusë një fjalë fund... Mësoni përmendësh të gjitha fjalët që keni futur. Pasi të keni shtypur një fjalë fund shfaq të gjitha fjalët e futura.

42. Ndryshoni kërkesën e sistemit që të përmbajë emrin e rrugës plotësisht të kualifikuar të drejtorisë aktuale të punës .

43. Shkruani një program virus e cila krijon kopjen e saj të ekzekutueshme me një emër tjetër dhe më pas fshihet vetë.

44. Shkruani një program virus2 , e cila kërkon direktorinë aktuale për programet e gjuhës së komandës dhe shton një komandë për të shfaqur fjalët I infektuar!”.

45. Shkruani një program virus3 , e cila shton kodin e vet për të infektuar programe të tjera në programet e gjuhës së komandës që gjen.

46. ​​Shkruani një program virus4 duke modifikuar virusin tuaj në mënyrë që pas infektimit, kodi infektues të hiqet nga programi infektues.

47. Shkruani një program antivirus që do të gjenin të gjitha programet shell të infektuar me virusin tuaj.

48. Modifikoni programin e zhvilluar në mënyrë që ai jo vetëm të gjejë programe të infektuara në drejtorinë e specifikuar, por edhe t'i "shëron" ato duke ruajtur versionin e infektuar në një skedar të ri me mbarimin . vir, dhe heqjen e atributit të ekzekutimit nga një skedar i tillë.

49. Shkruani një program virus5 e cila do të:

a) do të infektonte programet e guaskës në direktorinë aktuale dhe nëndirektoritë e saj me një virus vetëm nëse përdoruesi fut komandën ls;

b) do të sillej si një ekip ls, pa dhënë asgjë në terminalin e punës së tij.

50. Shkruani një program virus6 bazuar në programe virus2 -virus5 kodi infektues i të cilit nuk mund të ishte zbuluar nga programi që keni zhvilluar antivirus, dhe infeksioni do të ndodhte në çdo vlerë të ndryshores RRUGË.

51. Shkruani një program supervirus, nisja e të cilit infekton skedarët tuaj me virusin e zhvilluar në detyrën e mëparshme dhe sa herë që hyni në sistem, tentohet të infektohen skedarët e shokëve tuaj. Programi supervirus fshihet pas ekzekutimit të parë.

52. Shkruani një program superantivirus, i cili zbulon dhe "shëron" plotësisht (nëse është specifikuar opsioni përkatës) të gjithë skedarët në drejtorinë e specifikuar dhe nëndrejtoritë e tij nga të gjithë viruset e zhvilluara.

Predha e gjuhës së komandës (në përkthim - shell, shell) është në fakt një gjuhë programimi shumë e nivelit të lartë. Në këtë gjuhë, përdoruesi kontrollon kompjuterin. Zakonisht, pasi të regjistroheni, filloni të ndërveproni me guaskën. Një tregues që guaska është gati për të marrë komanda është pyetësi që lëshon në ekran. Në rastin më të thjeshtë, ky është një dollar ("$"). Shell nuk është e nevojshme dhe gjuha e vetme e komandës (megjithëse është ai që është standardizuar brenda kornizës së POSIX - standardi për sistemet celulare). Për shembull, gjuha cshell është mjaft e njohur, ka edhe kshell, basell dhe të tjera. Për më tepër, çdo përdorues mund të krijojë gjuhën e tij komanduese. Mund të funksionojë njëkohësisht në një kopje të sistemit operativ me gjuhë të ndryshme komandimi. shell është një nga shumë komandat UNIX. Kjo do të thotë, grupi i komandave "shell" përfshin komandën "sh" - duke thirrur interpretuesin "shell". "Shell" i parë thirret automatikisht kur identifikoheni dhe shfaq një sugjerues. Pas kësaj, mund të telefononi çdo komandë për ekzekutim, duke përfshirë përsëri vetë "guaskën", e cila do të krijojë një guaskë të re për ju brenda asaj të vjetër. Kështu për shembull, nëse përgatitni skedarin "file_1" në redaktues:

Echo Përshëndetje!

atëherë do të jetë një skedar teksti i thjeshtë që përmban komandën "echo", e cila, kur ekzekutohet, shfaq gjithçka që është shkruar në të djathtë të tij në ekran. Ju mund ta bëni skedarin "file_1" të ekzekutueshëm me komandën "chmod 755 file_1". Por mund të ekzekutohet duke thirrur në mënyrë eksplicite komandën "sh" ("shell"):

Sh file_1

Sh< file1

Skedari mund të ekzekutohet gjithashtu në instancën aktuale "shell". Për këtë ekziston një komandë specifike "." (pika), d.m.th.

Skedari_1

Meqenëse UNIX është një sistem me shumë përdorues, madje mund të punoni në një kompjuter personal paralelisht, të themi, në 12 ekrane (duke kaluar nga ekrani në ekran ALT / tasti i funksionit), duke pasur në çdo ekran një përdorues të ri (ose të njëjtin) me guaska e tij komanduese. Ju gjithashtu mund të hapni një numër të madh dritaresh në modalitetin grafik X-Window dhe secila dritare mund të ketë përdoruesin e vet me guaskën e vet të komandës ... Elementi kryesor i gjuhës së guaskës është komanda.

Strukturat e komandës:

Komandat e Shell zakonisht marrin formatin e mëposhtëm:

<имя команды> <флаги> <аргумент(ы)>

Për shembull:

Ls -ls / usr / bin

Ku ls është emri i komandës për të shfaqur përmbajtjen e një drejtorie, -ls janë flamuj ("-" është një shenjë flamuri, l është një format i gjatë, s ka të bëjë me "skedarët në blloqe), / usr / bin është një direktoriumi për të cilin është ekzekutuar komanda.Kjo komandë do të shfaqë në ekran përmbajtjen e direktoriumit /usr/bin në format të gjatë, ndërkohë që shton informacion për madhësinë e çdo skedari në blloqe.Për fat të keq, kjo strukturë komanduese nuk ruhet gjithmonë. Jo gjithmonë vihet një minus para flamujve, jo gjithmonë flamujt janë me një fjalë. Shumëllojshmëria në paraqitjen e argumenteve. Ndër komandat që kanë formate ekzotike janë komanda të tilla "popullore" si cc - thirrja e përpiluesit C, tar - puna me arkivat , dd - kopjimi i një skedari me transformim, gjetja - kërkimi i skedarëve dhe një sërë të tjerash Si rregull, fjala e parë interpretohet nga guaska si komandë.

fjala e parë do të deshifrohet nga shell si një komandë (lidhje), e cila do të shfaqë një skedar me emrin "cat" (fjala e dytë) në direktorinë aktuale. Komandat e ridrejtimit Hyrja (hyrja) standarde - "stdin" në UNIX OS bëhet nga tastiera e terminalit, dhe dalja standarde (dalja) - "stdout" drejtohet në ekranin e terminalit. Ka edhe skedar standard mesazhet diagnostike - "stderr", të cilat do të diskutohen pak më vonë. Komanda që mund të funksionojë me hyrje dhe dalje standarde quhet FILTER. Përdoruesi ka mjete të përshtatshme për të ridrejtuar hyrjen dhe daljen në skedarë (pajisje) të tjera. Simbolet ">" dhe ">>" tregojnë ridrejtimin e daljes. ls> file_1 komanda "ls" do të gjenerojë një listë skedarësh në drejtorinë aktuale dhe do ta vendosë atë në skedarin "file_1" (në vend që të printohet në ekran). Nëse skedari "file_1" ka ekzistuar më parë, ai do të mbishkruhet me një të ri.

Pwd >> file_1

komanda pwd do të gjenerojë emrin e plotë të drejtorisë aktuale dhe do ta vendosë në fund të skedarit "file_1", d.m.th. ">>" i shtohet skedarit nëse nuk është bosh. simbolet "<" и "<<" обозначают перенаправление ввода.

Wc -l

do të numërojë dhe shfaq numrin e rreshtave në file_1.

Ed file_2<

do të krijojë skedarin "file_2" duke përdorur redaktorin, direkt nga terminali. Fundi i hyrjes përcaktohet nga karakteri në të djathtë "<<" (т. е. "!"). То есть ввод будет закончен, когда первым в очередной строке будет "!". Можно сочетать перенаправления. Так

Wc -l skedar_4

Wc -l> file_4

kryhen në të njëjtën mënyrë: numërohet numri i rreshtave në skedarin "file_3" dhe rezultati vendoset në skedarin "file_4". Mjeti që kombinon daljen standarde të një komande me hyrjen standarde të një tjetre quhet CONVEYOR dhe tregohet me shiritin vertikal "|".

Ls | wc -l

lista e skedarëve në drejtorinë aktuale do të dërgohet në hyrjen e komandës "wc", e cila do të printojë numrin e linjave të direktorisë në ekran. Më shumë se dy komanda mund të kombinohen me një tubacion, kur të gjitha, ndoshta përveç të parës dhe të fundit, janë filtra:

Dosja Cat_1 | grep -h rezultat | renditi | cat -b> file_2

Ky tubacion nga skedari "file_1" ("cat") do të zgjedhë të gjitha rreshtat që përmbajnë fjalën "rezultat" ("grep"), do të renditë ("renditojë") linjat që rezultojnë dhe më pas numrin ("cat -b") dhe nxirrni rezultatin në skedarin "file_2". Meqenëse pajisjet UNIX përfaqësohen nga skedarë të veçantë, ato mund të përdoren në ridrejtime. Skedarët specialë ndodhen në drejtorinë "/ dev". Për shembull, "lp" është printimi; "console" - konsol; "ttyi" është terminali i-të; "null" është një skedar (pajisje) dummy (bosh). Pastaj, për shembull,

Ls> / dev / lp

do të printojë përmbajtjen e drejtorisë aktuale dhe file_1< /dev/null обнулит файл "file_1".

Rendit skedarin_1 | tee / dev / lp | bisht -20

Në këtë rast, skedari "file_1" do të renditet dhe dërgohet për t'u printuar dhe 20 rreshtat e fundit do të shfaqen gjithashtu në ekran. Le të kthehemi te ridrejtimi i daljes. Skedarët standard janë të numëruar:

0 - stdin, 1 - stdout 2 - stderr. Nëse nuk dëshironi të keni një mesazh gabimi në ekran, mund ta ridrejtoni atë nga ekrani në skedarin që keni specifikuar (ose edhe "ta hidhni larg" duke e ridrejtuar te skedari "pajisja bosh" - / dev / null) . Për shembull, gjatë ekzekutimit të komandës

Cat file_1 file_2

e cila duhet të shfaqë në mënyrë sekuenciale përmbajtjen e skedarëve "file_1" dhe "file_2", do t'ju japë, për shembull, sa vijon

111111 222222 cat: f2: Nuk ka skedar apo drejtori të tillë

ku 111111 222222 është përmbajtja e skedarit "file_1", dhe skedari "file_2" mungon, për të cilin komanda "cat" printoi një mesazh në skedarin standard diagnostikues, si parazgjedhje, ashtu si dalja standarde e paraqitur nga ekrani. . Nëse nuk dëshironi një mesazh të tillë në ekran, mund ta ridrejtoni atë në skedarin që keni specifikuar:

Cat file_1 file_2 2> f-err

mesazhet e gabimit do të dërgohen (siç tregohet nga ridrejtimi "2>") në skedarin "f-err". Nga rruga, ju mund t'i dërgoni të gjitha informacionet në një skedar "ff", duke përdorur në këtë rast ndërtimin

Cat file_1 file_2 >> ff 2> ff

Ju mund të specifikoni jo vetëm cilin nga skedarët standardë të ridrejtoni, por edhe në cilin skedar standard të ridrejtoni.

Cat file_1 file_2 2 >> ff 1> & 2

Këtu, së pari "stderr" ridrejtohet (në modalitetin e shtojcës) në skedarin "ff", dhe më pas dalja standarde ridrejtohet në "stderr", e cila në këtë pikë është skedari "ff". Kjo do të thotë, rezultati do të jetë i ngjashëm me atë të mëparshëm. Konstruksioni "1> & 2" - do të thotë që përveç numrit të skedarit standard që do të ridrejtohet, duhet të vendosni "&" përpara; i gjithë ndërtimi është i shkruar pa hapësira.<- закрывает стандартный ввод. >- mbyll daljen standarde. Skedarët e komandës. Ka disa mundësi që një skedar teksti të përdoret si komandë. Lëreni redaktuesin të krijojë një skedar të quajtur "cmd" që përmban një rresht të formës së mëposhtme:

Data; pwd; ls

Ju mund ta thirrni shell-in si një komandë të shënuar me "sh" dhe t'ia kaloni skedarin "cmd" si argument ose si një hyrje të ridrejtuar, d.m.th.

$ sh cmd

$ sh

Si rezultat i ekzekutimit të ndonjërës prej këtyre komandave, do të shfaqet data, më pas emri i drejtorisë aktuale dhe më pas përmbajtja e drejtorisë. Një mënyrë më interesante dhe më e përshtatshme për të punuar me një skedar batch është ta ktheni atë në një skedar të ekzekutueshëm, d.m.th. thjesht bëjeni një komandë, e cila arrihet duke ndryshuar kodin e sigurisë. Për ta bërë këtë, duhet të lejoni ekzekutimin e këtij skedari. Për shembull,

Chmod 711 cmd

do të bëjë kodin e sigurisë "rwx__x__x". Pastaj një telefonatë e thjeshtë

do të ekzekutojë të njëjtat tre komanda. Rezultati do të jetë i njëjtë nëse skedari me përmbajtjen

Data; pwd; ls

paraqitet në formën: data pwd ls pasi kalimi në një rresht tjetër është gjithashtu një ndarës në sekuencën komanduese. Kështu, skedarët e ekzekutueshëm mund të jenë jo vetëm skedarë të marrë si rezultat i përpilimit dhe montimit, por edhe skedarë të shkruar në gjuhën e guaskës. Ato ekzekutohen në modalitetin e interpretimit duke përdorur interpretuesin e guaskës.

Korrigjimi i skedarëve të grupit

SHELL përdor dy mekanizma për korrigjimin e skedarëve të grupit. E para është: set -v printon rreshtat e skedarit të grupit ndërsa i lexon ato. Kjo mënyrë përdoret kur kërkoni për gabime sintaksore. Për ta përdorur atë, nuk keni nevojë të modifikoni skedarin e grupit, për shembull: sh -v proc ... këtu proc është emri i skedarit të grupit. Ndërprerësi -v mund të përdoret së bashku me çelësin -n, i cili pengon ekzekutimin e komandave të mëvonshme (komanda set -n bllokon terminalin derisa të futet karakteri i fundit i skedarit EOF). Komanda set -x shfaq komandat ndërsa ekzekutohen dhe linjat e programit shtypen në terminal dhe vlerat e tyre zëvendësohen në vend të variablave. Për të anuluar çelsat -x dhe -v, mund të përdorni komandën set - dhe për ta vendosur atë, caktoni vlerën përkatëse variablit makro. SHELL I MJEDISIT (VARIABLA DHE PARAMETRA) Në gjuhën e guaskës, mund të shkruani skedarë komandash dhe të përdorni komandën "chmod" për t'i bërë ato të ekzekutueshme. Pas kësaj, ato nuk ndryshojnë nga komandat e tjera të UNIX.

Variablat e guaskës

Emri i variablit të guaskës është një sekuencë e numrave dhe e nënvizave që nisin shkronjat. Vlera e ndryshores shell është një varg karakteresh. Fakti që ka vetëm dy lloje të dhënash në guaskë: një varg karakteresh dhe një skedar teksti, nga njëra anë, e bën të lehtë përfshirjen e përdoruesve fundorë që nuk kanë programuar kurrë më parë, dhe nga ana tjetër, shkakton disa protesta të brendshme. nga shumë programues të cilët janë mësuar me më shumë larmi dhe më shumë fleksibilitet të mjeteve gjuhësore. Sidoqoftë, është interesante të vërehet sesi programuesit e klasit të lartë, pasi janë njohur me "rregullat e lojës" të guaskës, shkruajnë programe në të shumë herë më shpejt se në C, por, ajo që është veçanërisht interesante, në disa raste këto programet funksionojnë edhe më shpejt se ato të zbatuara në C. Emri i ndryshores është i ngjashëm me konceptin tradicional të një identifikuesi, d.m.th. emri mund të jetë një sekuencë shkronjash, numrash dhe nënvizash, duke filluar me një shkronjë ose nënvizim. Operatori i caktimit "=" mund të përdoret për t'u caktuar vlerat variablave.

Var_1 = 13 - "13" nuk është një numër, por një varg dyshifror. var_2 = "UNIX OS" - këtu kërkohen thonjëza të dyfishta ("") sepse ka një hapësirë ​​në varg.

Mënyra të tjera të caktimit të vlerave për variablat e guaskës janë gjithashtu të mundshme. Kështu për shembull një rekord,

DAT = `datë`

bën që komanda "data" të ekzekutohet së pari (të pasmet tregojnë se komanda e mbyllur duhet të ekzekutohet së pari), dhe rezultati i ekzekutimit të saj, në vend që ta lëshojë atë në dalje standarde, caktohet si vlera e ndryshores, në këtë rast "DAT". Ju gjithashtu mund t'i caktoni një vlerë një ndryshoreje duke përdorur komandën "lexo", e cila lexon vlerën e ndryshores nga ekrani (tastiera) në modalitetin e dialogut. Zakonisht komanda "lexo" në skedarin e komandës paraprihet nga komanda "echo", e cila ju lejon të shfaqni paraprakisht një lloj mesazhi në ekran. Për shembull:

Echo -n "Fut një numër treshifror:" lexo x

Gjatë ekzekutimit të këtij fragmenti të skedarit të grupit, pas shfaqjes së mesazhit

Fut një numër treshifror:

përkthyesi do të ndalojë dhe do të presë që një vlerë të futet nga tastiera. Nëse futni, le të themi, "753", kjo do të bëhet vlera e ndryshores "x". Një komandë "lexo" mund të lexojë (caktojë) vlera për disa variabla në të njëjtën kohë. Nëse ka më shumë variabla në "lexim" sesa janë futur (të ndara me hapësira), pjesës tjetër i caktohet një varg bosh. Nëse ka më shumë vlera të kaluara se variabla në komandën "lexo", atëherë ato shtesë injorohen. Kur i referoheni një variabli shell, duhet të vendosni simbolin "$" përpara emrit. Kështu do të shfaqen komandat echo $ var_2 echo var_2

UNIX OS var_2 Arratisje

Le të hedhim një vështrim më të afërt në teknikat e arratisjes të përdorura në guaskë. Thonjëzat e dyfishta (""), thonjëzat teke ("") dhe kthesa e prapme (\) përdoren si ikje. Veprimi i tyre është i dukshëm nga shembujt: Mund të shkruani disa detyra në një rresht.

X = 22 y = 33 z = $ x A = "$ x" B = "$ x" C = \ $ x D = "$ x + $ y + $ z" E = "$ x + $ y + $ z "F = $ x \ + \ $ y \ + \ $ z

(caktimi G = $ x + $ y do të dështonte për shkak të hapësirave) Pastaj

Jehona A = $ A B = $ B C = $ C jehonë D = $ D E = $ E F = $ F eko evale e vlerësuar A = $ Një jehonë vlere e vlerësuar B = $ B e vlerësuar jehonën e vlerësuar C = $ C

Do të shfaqet në ekran

A = 22 B = $ x C = $ x D = 22 + 33 + 22 E = $ x + $ y + $ z F = 22 + 33 + 22 të vlerësuara A = 22 të vlerësuara B = 22 të vlerësuara C = 22

Këtu janë disa shembuj të tjerë që lidhen me ikjen e furnizimeve të linjës. Lëreni variablit "string" t'i caktohet vlera e "array" 2x3: abc def Vini re se për të shmangur caktimin e hapësirave shtesë, rreshti i dytë i grupit fillon në pozicionin e parë të rreshtit tjetër: string = "abc def" Pastaj ka tre opsione për të shkruar variablin në komandën "echo" echo $ string echo "$ string" echo "$ string" do të japë përkatësisht tre rezultate të ndryshme: abc def $ string abc def dhe sekuenca e komandave echo "str_1 str_2" > file_1 jehonë "str_1 str_2"> file_2 cat file_1 file_2 do të japë skedarë identikë në mënyrë sekuenciale file_1 dhe file_2: str_1 str_2 str_1 str_2 Vini re gjithashtu se një vijë e prapme (\) jo vetëm që i shmanget karakterit të mëposhtëm, gjë që lejon Simbole të veçanta ashtu si personazhet që përfaqësojnë veten e tyre (ai mund t'i ikë vetes - \\), por në një skedar grupi, një vijë e prapme ju lejon të "kombinoni linjat në një (shpëtoni nga fundi i një rreshti). Për shembull, shembulli i linjës së komandës të dhënë më parë:

Dosja Cat_1 | grep -h rezultat | renditi | cat -b> file_2

mund të shkruhet në një skedar batch, të themi si

Dosja Cat_1 | grep -h \ rezultat | renditi | cat -b> file_2

Nga rruga, simboli i tubit siguron gjithashtu një efekt të vazhdimit të linjës së komandës. Në këtë rast, mund të japë një rezultat më të bukur, për shembull:

Dosja Cat_1 | grep -h rezultat | renditi | cat -b> file_2

Manipulimi me variablat shell Pavarësisht se variablat shell në rast i përgjithshëm perceptohen si vargje, domethënë "35" nuk është një numër, por një varg me dy karaktere "3" dhe "5", në disa raste ato mund të interpretohen ndryshe, për shembull, si numra të plotë. Komanda "expr" ka një sërë opsionesh. Le të ilustrojmë disa me shembuj: Ekzekutimi i një skedari grumbull:

X = 7 y = 2 a = `expr $ x + $ y`; jehonë a = $ a a = `expr $ a + 1`; jehonë a = $ a b = `expr $ y - $ x`; jehonë b = $ b c = `expr $ x” * “$ y`; jehonë c = $ c d = `expr $ x / $ y`; jehona d = $ d e = `expr $ x% $ y`; jehonë e = $ e

do të shfaqet

A = 9 a = 10 b = -5 c = 14 d = 3 e = 1

Operacioni i shumëzimit ("*") duhet të shmanget, sepse në guaskë kjo ikonë perceptohet si një karakter i veçantë, që do të thotë se çdo sekuencë karakteresh mund të zëvendësohet në këtë vend. Me komandën "expr" janë të mundshme jo vetëm operacionet aritmetike (me numër të plotë), por edhe ato të vargut:

A = `expr" koktej ":" kari "`; echo $ A B = "expr" koktej ":" tail "`; echo $ B C = "expr" koktej ":" gatuaj "`; echo $ C D = `expr" cock ":" koktej "`; jehonë $ D

Numrat do të shfaqen duke treguar numrin e karaktereve që përputhen në vargje (që nga fillimi). E dyta e rreshtave nuk mund të jetë më e gjatë se e para:

4 0 0 0

Eksportimi i variablave Në UNIX OS, ekziston një koncept i një procesi. Procesi lind kur ndonjë komandë niset për ekzekutim. Për shembull, kur shkruani "p "procesi" p "gjenerohet. Nga ana tjetër," p "mund të krijojë procese të tjera. Supozoni se" p "thirr" p1 "dhe" p2 ", të cilat në mënyrë sekuenciale krijojnë proceset përkatëse. Secili proces ka mjedisin e tij - shumë variabla i disponueshëm për të Për shembull, përpara se të ekzekutohej "p", ekzistonte tashmë një mjedis në të cilin disa variabla ishin përcaktuar tashmë. Ekzekutimi i "p" krijon një mjedis të ri; "p1" dhe "p2" do të shfaqen tashmë në të. Variablat janë lokale brenda procesit në të cilin janë deklaruar, pra ku u janë caktuar vlerat.Për t'i vënë ato të disponueshme për proceset e tjera të krijuara, duhet t'i kaloni ato në mënyrë eksplicite duke përdorur komandën e integruar "export".

Parametrat

Parametrat mund të kalohen në skedarin e grupit. Predha përdor parametrat e pozicionit (d.m.th., rendi në të cilin ato shfaqen është thelbësor). Në skedarin e komandës, variablat që korrespondojnë me parametrat (të ngjashëm me variablat e guaskës) fillojnë me karakterin "$" dhe më pas vijon një nga shifrat nga 0 në 9: Le të thirret "examp-1" me "karin". " dhe "bisht" parametrat. Këto parametra hyjnë në mjedisin e ri me emrat standardë "1" dhe "2". Një variabël (standarde) me emrin "0" do të mbajë emrin e llogaritjes së thirrur. Kur aksesoni parametrat, simboli i dollarit "$" vendoset para shifrës (si kur qaseni në variablat): $ 0 korrespondon me emrin e këtij skedari komandues; 1 $ është parametri i parë në rend; Parametri prej 2 dollarësh të dytë, etj. Meqenëse numri i variablave në të cilat mund të kalohen parametrat është i kufizuar në një shifër, d.m.th. 9 ("0", siç u përmend tashmë, ka një kuptim të veçantë), pastaj për transmetim më shumë parametrave, përdoret komanda speciale "shift". Një qasje unike ndaj parametrave jepet nga komanda "set". Për shembull, fragmenti

Vendosni një b me jehonën e parë = 1 $ sekondë = 2 $ e treta = 3 $

do të shfaqet

E para = një e dytë = b e treta = c

ato. komanda "set" vendos vlerat e parametrave. Kjo mund të jetë shumë e përshtatshme. Për shembull, komanda "data" tregon datën aktuale, thoni "Mon 01 maj 12:15:10 2000", e përbërë nga pesë fjalë, pastaj

Cakto jehonën e 'datës' $ 1 $ 3 $ 5

do të shfaqet

Hënë 01 2000

Komanda "set" gjithashtu ju lejon të kontrolloni ekzekutimin e programit, për shembull: set -v shfaq linjat e lexuara nga shell në terminal. set + v anulon modalitetin e mëparshëm. set -x printon komanda në terminal përpara ekzekutimit. set + x anulon modalitetin e mëparshëm. Komanda "set" pa parametra nxjerr gjendjen e mjedisit të softuerit në terminal.

Zëvendësimet e guaskës

Përpara interpretimit dhe ekzekutimit të drejtpërdrejtë të komandave të përfshira në skedarët e komandës, shell ekzekuton lloje te ndryshme zëvendësimet: 1. ZËVENDËSIMI I REZULTATEVE. Të gjitha komandat e mbyllura në thonjëzat e pasme ekzekutohen dhe rezultati zëvendësohet në vendin e tyre. 2. ZËVENDËSIMI I VLERAVE TË PARAMETRAVE DHE VARIABLAVE. Kjo do të thotë, fjalët që fillojnë me "$" zëvendësohen me vlerat përkatëse të variablave dhe parametrave. 3. INTERPRETIMI I HAPËSIRAVE. Hapësirat e arratisura injorohen. 4. GJENERIMI I EMRAVE TË FILEVE. Fjalët kontrollohen për praninë e karaktereve speciale ("*", "?", "") Dhe kryhen gjeneratat përkatëse. Mjedisi i softuerit Çdo proces ka një mjedis në të cilin funksionon. Shell përdor një numër variablash mjedisi. Nëse shtypni komandën "set" pa parametra, ekrani do të shfaqë informacione për një numër variablash standarde të krijuara në hyrje (dhe kalohen në të gjitha proceset tuaja të reja "me trashëgimi"), si dhe variablat e krijuar dhe eksportuar nga proceset tuaja. . Lloji dhe përmbajtja specifike e informacionit të dhënë në një masë të madhe varet nga ajo Versioni UNIX përdoret dhe si është instaluar sistemi.

Rezultati i ekzekutimit të komandës së setit pa parametra (jo i plotë):

HOME = / Rruga e rrënjës = / usr / lokale / kosh: / usr / bin: / bin:.: / Usr / kosh / X11: IFS = LOGNAME = sae MAIL = / var / bobinë / postë / sae PWD = / shtëpi / sae / STUDY / SHELL PS1 = $ (PWD): "" PS2 => SHELL = / bin / bash

Le të komentojmë vlerat e variablave. HOME = / root është emri i drejtorisë kryesore në të cilën përdoruesi gjen veten pas hyrjes. Kjo do të thotë, pasi të keni shtypur saktë emrin e përdoruesit dhe fjalëkalimin, do ta gjej veten në drejtorinë "/ root". PATH = / bin: / usr / bin:.: / Usr / local / bin: / usr / bin / X11 - kjo variabël specifikon sekuencën e skedarëve që "guaska" kërkon në kërkim të një komande. Emrat e skedarëve ndahen këtu me dy pika. Sekuenca e skanimeve korrespondon me rendin e emrave në shteg. Por fillimisht kërkimi ndodh midis të ashtuquajturave komanda të integruara. Komandat e integruara përfshijnë komandat më të përdorura si "echo", "cd", "pwd", "date". Pas kësaj, sistemi shikon në direktorinë "/ bin", e cila mund të përmbajë komandat "sh", "cp", "mv", "ls", etj. Pastaj drejtoria "/ usr / bin" me komandat "cat", "cc", "expr", "nroff", "man" dhe shumë të tjera. Më tej, kërkimi bëhet në direktoriumin aktual (."", Ose një emërtim tjetër për "bosh", dmth ""), ku me shumë mundësi ndodhen komandat që keni shkruar. Pasi të keni shtypur vijën e komandës dhe të shtypni "Shell" (pasi bën zëvendësimet e nevojshme) njeh emrin që përputhet me komandën dhe e kërkon atë në drejtoritë e listuara në PATH. Nëse komanda vendoset jashtë këtyre drejtorive, ajo nuk do të gjendet. Nëse ka komanda të shumta me të njëjtin emër, atëherë do të thirret ai që ndodhet në drejtorinë e parë të parë. PATH, si variablat e tjerë, mund të ndryshohet lehtësisht duke shtuar, riorganizuar ose përjashtuar drejtoritë. IFS = (Internal Field Separator) liston karakteret që përdoren për të ndarë fjalët (fushat). Këto janë "hapësirë", "tabelim" dhe "linjëfeed", kështu që nuk ka asgjë të dukshme në të majtë të detyrës dhe dy rreshta janë të zënë. LOGNAME = rrënjë - emri i hyrjes (përdoruesi "emri"). MAIL = / var / spool / mail / root është emri i skedarit në të cilin është marrë posta (email). PWD = / rrënjë - emri i drejtorisë aktuale PS1 = $ (PWD): "" - lloji i promter-it. Në këtë rast, prompter do të shfaqë emrin e drejtorisë aktuale, një dy pika dhe një hapësirë. Kjo do të thotë, do të ketë "/ rrënjë:". PS2 => - ky promter (këtu ">") përdoret si një ftesë për të vazhduar futjen (në rreshtin tjetër) të një komande të papërfunduar. Për shembull, shkruani kllapat e hapura "(" dhe pasi të shtypni v rreshti tjetër do ta shihni këtë shtytës. Nëse nuk dini çfarë të bëni më pas, shkruani kllapat mbyllëse ")" dhe ajo do të zhduket. SHELL = / bin / sh - Kjo variabël specifikon guaskën që përdoruesi po përdor. Në këtë rast, përdoret guaska standarde ("sh"). Mjedisi burimor instalohet automatikisht në hyrje duke përdorur skedarë si "/ etc / rc" dhe "/etc/.profile". Një nga mënyrat për të ndryshuar thjesht mjedisin (për shembull, shtegu i kërkimit të komandës, lloji i promterit, lloji i guaskës, ngjyra e ekranit, etj.) është duke e vendosur këtë informacion në drejtorinë tuaj kryesore në një skedar të specializuar ".profile" ($ (HOME ) /. profil) duke caktuar vlerat e dëshiruara variablat e mjedisit. Kjo do të thotë, thirreni këtë skedar në redaktues dhe shkruani çfarë të doni). Më pas, sa herë që identifikoheni, ky skedar do të ekzekutojë dhe instalojë automatikisht një mjedis të ri. Ky skedar DUHET të jetë i vendosur në tuaj drejtoritë HOME(drejtoritë e hyrjes). Vini re se emrat e skedarëve që fillojnë me një pikë në përgjithësi kanë një status të veçantë. Pra, ato nuk shfaqen në ekran me një komandë të thjeshtë "ls" - duhet ta thërrisni këtë komandë me flamurin "-a". Meqë ra fjala, ato nuk shkatërrohen pa dallim me komandën "rm *". Vetë guaska cakton automatikisht vlera për variablat (parametrat) e mëposhtëm:? vlera e kthyer nga komanda e fundit; $ numri i procesit; ! numri i procesit të sfondit;

  1. numri i parametrave të pozicionit të kaluar në guaskë;
  • lista e parametrave si një rresht;

@ një listë parametrash, si një koleksion fjalësh; - flamujt kaluan në guaskë. Kur përdorni këto variabla (d.m.th., kur i përdorni ato në një skedar komandimi - një program shell), paraprini "$". Një rol të rëndësishëm në krijimin e skedarëve unikë luan ndryshorja speciale "$$", vlera e së cilës korrespondon me numrin e procesit që kryen këtë llogaritje. Çdo llogaritje e re e kryer nga kompjuteri fillon një ose më shumë procese që numërohen automatikisht në sekuencë. Prandaj, duke përdorur numrin e procesit si emër skedari, mund të jeni të sigurt se secili skedar i ri do të ketë një emër të ri (nuk do të mbishkruajë atë ekzistues). Avantazhi është edhe disavantazhi kryesor i kësaj mënyre të emërtimit të skedarëve. Nuk dihet se çfarë emrash do t'u caktohen dosjeve. Dhe, nëse brenda kornizës së këtij procesi është e mundur të gjesh një skedar "pa kërkuar", domethënë duke e aksesuar atë duke përdorur $$, atëherë skedarët e tillë mund të humbasin lehtësisht. Kjo krijon probleme shtesë gjatë korrigjimit të programeve. Thirrja e përkthyesit Pas regjistrimit të përdoruesit në sistem (duke përdorur komandën e hyrjes), thirret përkthyesi i gjuhës SHELL. Nëse manuali i regjistrimit të përdoruesit përmban një skedar .profile, atëherë përpara se të merret të paktën një komandë nga terminali, interpretuesi e ekzekuton këtë skedar (supozohet se skedari .profile përmban komanda). Kur thirret, mund të specifikohen çelësat e mëposhtëm: -c string Komandat lexohen nga vargu i specifikuar. Komandat -s lexohen nga skedari hyrës standard. Mesazhet e përkthyesit shkruhen në skedarin standard diagnostik. -i Mënyra ndërvepruese e funksionimit. Nëse karakteri i parë i parametrit "0" është a -, atëherë komandat lexohen nga skedari .profile.

STRUKTURAT Softuerike ===

Si në çdo gjuhë programimi, teksti i guaskës mund të përmbajë komente. Për këtë përdoret simboli "#". Çdo gjë që është në rresht (në skedarin e komandës) në të majtë të këtij simboli interpretohet nga interpretuesi si koment. Për shembull,

# Ky është një koment.

Si në të gjithë gjuha procedurale programimi shell ka operatorë. Një numër operatorësh ju lejojnë të kontrolloni sekuencën e ekzekutimit të komandës. Në operatorë të tillë, shpesh është e nevojshme të kontrollohet gjendja, e cila përcakton drejtimin e vazhdimit të llogaritjeve.

Komanda e testimit ("").

Komanda e testimit verifikon përmbushjen e një kushti të caktuar. Kjo komandë (e integruar) përdoret për të formuar deklaratat e përzgjedhjes së guaskës dhe të ciklit. Dy formate të mundshme komandash:

Gjendja e provës

[gjendja]

do të përdorim opsionin e dytë, d.m.th. në vend që të shkruajmë fjalën "test" përpara kushtit, do ta vendosim kushtin në kllapa, i cili është më i njohur për programuesit. Në fakt, guaska do ta njohë këtë komandë nga kllapa e hapur "[" si fjalë që korrespondon me komandën "test". Duhet të ketë hapësira midis kllapave dhe gjendjes që ato përmbajnë. Duhet të ketë hapësira midis vlerave dhe një karakteri krahasimi ose operacioni. Predha përdor kushte të "llojeve" të ndryshme. KUSHTET PËR KONTROLLIMIN E SKEDAVE: -f skedari i skedarit "file" është një skedar i rregullt; -d file file "skedar" - direktori; -c skedari i skedarit "file" është një skedar i veçantë; Skedari -r ka leje leximi në skedarin "file"; -skedari w ka leje të shkruajë në skedar "file"; Skedari i skedarit -s "file" nuk është bosh.

KUSHTET E KONTROLLIT TË LINJËS: str1 = str2 vargjet "str1" dhe "str2" përputhen; str1 = str2 vargjet "str1" dhe "str2" nuk përputhen; -n str1 vargu "str1" ekziston (jo bosh); -z str1 vargu "str1" nuk ekziston (bosh). Shembuj.

X = "kush është kush"; eksporti x; ["kush është kush" = "$ x"]; jehonë $? 0 x = abc; eksporti x; [abc = "$ x"]; jehonë $? 0 x = abc; eksporti x; [-n "$ x"]; jehonë $? 0 x = ""; eksporti x; [-n "$ x"]; jehonë $? një

Përveç kësaj, ekzistojnë dy vlera standarde të kushtit që mund të përdoren në vend të një kushti (nuk kërkohen kllapa). KUSHTET PËR KRAHASIMIN E NUMRAVE TË PLOTË: x -eq y "x" është e barabartë me "y", x -ne y "x" nuk është e barabartë me "y", x -gt y "x" është më e madhe se "y", x -ge y "x" është më i madh ose është i barabartë me "y", x -lt y "x" është më i vogël se "y", x -le y "x" është më i vogël ose i barabartë me "y". KUSHTET KOMPLEKSE: Zbatohet duke përdorur operacione tipike logjike:! (jo) përmbys vlerën e kodit të daljes. -o (ose) përputhet OSE logjike. -a (dhe) përputhet me DHE logjike.

Deklarata e kushtëzuar "nëse"

Në përgjithësi, deklarata "nëse" ka strukturën

Nëse kushti, atëherë listoni

Këtu "elif" është një shkurtim për "else if" mund të përdoret së bashku me atë të plotë, d.m.th. foleja e çdo numri deklaratash "nëse" (si dhe deklarata të tjera) lejohet. Natyrisht, “lista” në çdo rast duhet të jetë kuptimplotë dhe e vlefshme në kontekstin e dhënë. Struktura më e cunguar e këtij operatori

Nëse kushti atëherë listoni fi

nëse plotësohet kushti (si rregull, ky është një com, merret kodi i plotësimit "0", atëherë ekzekutohet "lista", përndryshe anashkalohet. Shembuj. Le të shkruhet "if-1"

Nëse [$1 -gt $2]

pastaj pwd tjetër jehonë $ 0: Përshëndetje!

Pastaj thirrja në if-1 12 11 do të japë / shtëpi / sae / STUDY / SHELL dhe nëse-1 12 13 do të japë if-1: Përshëndetje!

Telefononi operatorin ("rast")

Deklarata e përzgjedhjes "rast" ka strukturën:

Vargu i kasës në

model) lista e komandave ;; model) lista e komandave ;; ... model) lista e komandave ;;

Këtu "rast", "në" dhe "esac" janë fjalë funksioni. "String" (mund të jetë një karakter i vetëm) përputhet me "modelin". Pastaj ekzekutohet "lista e komandës" e linjës së zgjedhur. Ato duken të pazakonta në fund të rreshtave të përzgjedhjes ";;", por shkruani këtu ";" do të ishte një gabim. Për secilën alternativë mund të ekzekutohen disa komanda. Nëse këto komanda shkruhen në një rresht, atëherë ";" do të përdoret si ndarës komandash. Zakonisht rreshti i fundit i përzgjedhjes ka modelin "*", që në strukturën "rast" do të thotë "çdo vlerë". Ky varg zgjidhet nëse vlera e ndryshores (këtu $ z) nuk përputhet me asnjë nga modelet e shkruara më parë, të kufizuar nga kllapa ")". Vlerat shikohen sipas radhës në të cilën janë shkruar.

Operatori i ciklit të numëruar ("për")

Operatori i ciklit "for" ka strukturën:

Për emrin

do lista e komandave të kryera ku "for" është një fjalë funksioni që përcakton llojin e ciklit, "do" dhe "e kryer" janë fjalë funksioni që nxjerrin në pah trupin e lakut. Lëreni komandën "lsort" të përfaqësohet nga një skedar grumbull

Për i në file_1 file_2 file_3 bëj proc_sort $ i bërë

Në këtë shembull, emri "i" luan rolin e një parametri loop. Ky emër mund të konsiderohet si një variabël shell, së cilës i caktohen vlerat e listuara (i = file_1, i = file_2, i = file_3), dhe komanda "proc_sort" ekzekutohet në një lak. Shpesh përdoret forma "për i në *", që do të thotë "për të gjithë skedarët në drejtorinë aktuale". Lëreni "proc_sort" nga ana e tij të përfaqësohet nga një skedar grumbull

Macja 1 $ | renditi | tee / dev / lp> $ (1) _ sortuar

ato. skedarët e specifikuar renditen në mënyrë sekuenciale, rezultatet e renditjes shtypen ("/ dev / lp") dhe dërgohen te skedarët file_1_sorted file_2_sorted and file_3_sorted

Operatori i ciklit me kusht të vërtetë ("ndërsa")

Struktura "ndërsa", e cila gjithashtu ofron llogaritjet, preferohet kur lista e saktë e vlerave të parametrave nuk dihet paraprakisht ose kjo listë duhet të merret si rezultat i llogaritjeve në një lak. Operatori i ciklit "while" ka strukturën:

Ndërsa gjendja

bëni listën e komandave të kryera ku "while" është një fjalë funksioni që përcakton llojin e ciklit me një kusht të vërtetë. Lista e komandave në trupin e ciklit (midis "bëj" dhe "bërë") përsëritet derisa kushti të mbetet i vërtetë (d.m.th., kodi i përfundimit të komandës së fundit në trupin e ciklit është "0") ose cikli nuk ndërpritet nga brenda me komanda speciale ("break", "vazhdim" ose "dalje"). Kur hyni në lak për herë të parë, kushti duhet të plotësohet. Komanda "break [n]" ju lejon të dilni nga cikli. Nëse "n" mungon, është ekuivalente me "break 1". "n" tregon numrin e sytheve të mbivendosur nga të cilat duhet të dilni, për shembull, "break 3" - dalje nga tre sythe të mbivendosur. Ndryshe nga komanda "break", komanda "vazhdoni [n]" përfundon vetëm ekzekutimin e ciklit aktual dhe kthehet në FILLIM të ciklit. Mund të jetë edhe me një parametër. Për shembull, "vazhdoni 2" do të thotë dalje në fillim të lakut të dytë (nëse numërohet nga thellësia). Komanda "exit [n]" ju lejon të dilni nga procedura së bashku me kodin e kthimit "0" ose "n" (nëse është specifikuar parametri "n"). Kjo komandë mund të përdoret jo vetëm në sythe. Edhe në një sekuencë lineare komandash, mund të jetë e dobishme në korrigjimin e gabimeve për të ndaluar ekzekutimin e llogaritjes (aktuale) në një pikë të caktuar.

Operatori i ciklit me kusht false ("deri")

Operatori i ciklit "deri" ka strukturën:

Deri në gjendje

bëni listën e komandave të kryera ku "deri" është një fjalë funksioni që përcakton llojin e ciklit me një kusht false. Lista e komandave në trupin e ciklit (midis "bëj" dhe "bëhet") përsëritet derisa gjendja të mbetet false ose cikli të ndërpritet nga brenda me komanda të veçanta ("break", "vazhdim" ose "dalje" ). Kur hyni në lak për herë të parë, kushti nuk duhet të plotësohet. Dallimi nga operatori "while" është se gjendja e lakut kontrollohet për falsitet (për një kod përfundimi jozero të komandës së fundit të trupit të ciklit) kontrollohet PAS çdo ekzekutimi (përfshirë të parën!) të komandave të trupit të ciklit. Shembull.

Derisa të bëjë false

lexoni x nëse [$ x = 5] atëherë jehonë mjaftueshëm; thyej tjetër jehonë edhe pak fi

Këtu është një program me lak i pafund pret që fjalët të futen (duke përsëritur "disa më shumë" në ekran) derisa të futet "5". Pas kësaj, lëshohet "mjaft" dhe komanda "break" përfundon ekzekutimin e lakut.

Operatori bosh

Një deklaratë boshe ka formatin

:

Duke bërë asgjë. Kthen vlerën "0". ".

Funksionet e guaskës

Ky funksion ju lejon të përgatisni një listë të komandave të guaskës për ekzekutim të mëvonshëm. Përshkrimi i funksionit duket si:

Emri () (lista e komandave)

pas së cilës funksioni thirret me emër. Kur funksioni ekzekutohet, nuk krijohet asnjë proces i ri. Ai funksionon në mjedisin e procesit përkatës. Argumentet e një funksioni bëhen parametrat e pozicionit të tij; emri i funksionit është parametri i tij null. Ekzekutimi i funksionit mund të ndërpritet me operatorin "return [n]", ku (opsionale) "n" është kodi i kthimit.

Trajtimi i ndërprerjeve ("kurth")

Ndonjëherë është e nevojshme të mbrohet ekzekutimi i një programi nga ndërprerja. Më shpesh, ju duhet të takoni ndërprerjet e mëposhtme, që korrespondojnë me sinjalet: 0 dalje nga përkthyesi, 1 mbyllje telefonike (shkëputni pajtimtarin në distancë), 2 ndërprerje nga , 9 shkatërrim (jo i përgjuar), 15 fundi i ekzekutimit. Për t'u mbrojtur nga ndërprerjet, ekziston një komandë "trap" në formatin:

Mbledhja e sinjaleve të "listës së komandës".

Nëse sistemi ndeshet me ndërprerje, sinjalet e të cilave renditen përmes një hapësire në "sinjalet", atëherë do të ekzekutohet "lista e komandave", pas së cilës (nëse komanda "dalje" nuk është ekzekutuar në listën e komandave) kontrolli do të kthehet në pikën e ndërprerjes dhe vazhdoni ekzekutimin e skedarit të komandës. Për shembull, nëse ju duhet të fshini skedarët në "/ tmp" përpara se të ndërprisni ekzekutimin e një skedari grumbull, kjo mund të bëhet me komandën "trap":

Kurthi "rm / tmp / *; dalja 1" 1 2 15

e cila u paraprin komandave të tjera në skedar. Këtu, pas fshirjes së skedarëve, do të kryhet "dalja" nga skedari i grupit.

  • Tutorial

Pse dhe për kë është artikulli?

Fillimisht ishte menduar si një udhëzues për studentët që fillojnë me sisteme të ngjashme me unix. Me fjalë të tjera, artikulli është menduar për ata që nuk kanë përvojë të mëparshme të punës në linjën e komandës unix, por për një arsye ose një tjetër duan ose duhet të mësojnë se si të ndërveprojnë në mënyrë efektive me të.

Nuk do të ketë ritregim të njerëzve (dokumentacion), dhe artikulli në asnjë mënyrë nuk anulon ose zëvendëson leximin e tyre. Në vend të kësaj, unë do t'ju tregoj për gjërat kryesore (komandat, teknikat dhe parimet) që duhet të kuptoni që në fillim të punës në guaskën unix në mënyrë që puna të jetë efikase dhe e këndshme.

Artikulli trajton mjedise të plota të ngjashme me unix, me një guaskë plotësisht funksionale (mundësisht zsh ose bash) dhe një gamë mjaft të gjerë programesh standarde.

Çfarë është guaska

Shell (shell, i njohur si "vija e komandës", aka CLI, aka "console", aka "terminal", aka "dritare e zezë me shkronja të bardha") është një ndërfaqe teksti për komunikimin me sistemin operativ (epo, në mënyrë rigoroze, është program, e cila ofron një ndërfaqe të tillë, por tani ky dallim nuk është i rëndësishëm).

Në përgjithësi, puna përmes guaskës duket kështu: përdoruesi (d.m.th., ju) fut një komandë nga tastiera, shtyp Enter, sistemi ekzekuton komandën, shkruan rezultatin e ekzekutimit në ekran dhe përsëri pret komandën tjetër. për t'u futur.

Lloji tipik i guaskës:

Shell është mënyra kryesore për të bashkëvepruar me të gjitha sistemet e serverëve të ngjashëm me Unix.

Ku ndodhin sistemet e linjës së komandës?

Aty ku mund t'ju presë një guaskë unix, opsione të njohura:
  • MacOS (bash);
  • qasje në distancë në server për punë ose për një projekt personal në internet;
  • server skedari në shtëpi me akses në distancë;
  • Ubuntu, PC-BSD në laptop / desktop - sistemet si unix sot janë të lehta për t'u instaluar dhe përdorur.

Cilat detyra është e arsyeshme të zgjidhen me një guaskë?

Detyrat natyrore për të cilat guaska është e përshtatshme, e dobishme dhe e pazëvendësueshme:
  • punë interaktive në terminal:
    • kryerja e kompilimit, ekzekutimi i detyrave përmes make;
    • krahasimi i skedarëve të tekstit;
    • analiza e shpejtë e të dhënave ad-hoc (numri i IP-ve unike në regjistër, shpërndarja e të dhënave sipas orës / minutave, etj.);
    • veprime me shumicë një herë (vrasni shumë procese; nëse punoni me një sistem kontrolli versioni, ktheni ose ktheni një grup skedarësh);
    • diagnostifikimi i asaj që po ndodh në sistem (semaforë, bravë, procese, përshkrues, hapësirë ​​në disk, etj.);
  • shkrimi:
    • skriptet e instalimit, për ekzekutimin e të cilave nuk mund të mbështeteni në praninë e interpretuesve të tjerë - kjo nuk është për fillestarët;
    • funksionet për personalizimin e guaskës interaktive (duke ndikuar në kërkesën, ndryshimi i drejtorisë, vendosja e variablave të mjedisit) - gjithashtu jo plotësisht për fillestarët;
    • skriptet e njëhershme të tilla si transkodimi i skedarëve me shumicë;
    • makefiles.

Hapat e parë absolut

Fillimi: Hyni dhe dilni

Sigurohuni që e dini saktësisht se si të filloni guaskën dhe si të dilni prej saj.

Nëse jeni në një makinë me Ubuntu të instaluar, duhet të nisni programin Terminal. Kur të përfundoni, thjesht mund të mbyllni dritaren.

Në MacOS, hapni gjithashtu Terminal.

Për të hyrë në një server në distancë, përdorni ssh (nëse keni MacOS, Ubuntu ose një sistem tjetër të ngjashëm me unix në vend) ose stuko (nëse keni Windows).

Kush jam unë, ku jam?

Ekzekutoni komandat e mëposhtme:
  • emri i hostit - shfaq emrin e makinës (serverit) në të cilin jeni aktualisht;
  • whoami - shfaq hyrjen tuaj (emri juaj në sistem);
  • pemë -d / | më pak - imazh pseudografik i pemës së drejtorisë në makinë; dalje nga lëvizja - q;
  • pwd - shfaq direktoriumin ku ndodheni aktualisht; në vijën e komandës, nuk mund të jesh "ashtu si ai", me siguri do të jesh në ndonjë direktori (= drejtoria aktuale, drejtoria e punës). Drejtoria juaj aktuale e punës ndoshta shfaqet në kërkesën tuaj.
  • ls - lista e skedarëve në drejtorinë aktuale; ls / home - lista e skedarëve në drejtorinë e specifikuar;

Historia e komandave (historia)

Një pronë e rëndësishme e një linje komande të plotë është historia e komandës.

Ekzekutoni disa komanda: hostname, ls, pwd, whoami. Tani shtypni tastin lart. Komanda e mëparshme u shfaq në rreshtin e hyrjes. Përdorni tastet "lart" dhe "poshtë" për të ecur përpara dhe prapa përgjatë historisë. Kur lëvizni poshtë te emri i hostit, shtypni Enter - komanda do të ekzekutohet përsëri.

Komandat nga historia jo vetëm që mund të përsëriten, por edhe të modifikohen. Kërkoni historinë në komandën ls, shtoni çelësin -l në të (doli ls -l, ka një hapësirë ​​para minusit, por jo pas). Shtypni Enter - komanda e modifikuar do të ekzekutohet.

Lëvizja nëpër histori, redaktimi dhe riekzekutimi i komandave janë veprimet më të zakonshme kur punoni në vijën e komandës, mësohuni me të.

Copy-paste

Linja e komandës është shumë e përqendruar te teksti: komandat janë tekst, të dhënat hyrëse për shumicën e programeve standarde janë tekst, dhe rezultati i punës më së shpeshti është gjithashtu tekst.

Gjëja e bukur për tekstin është se ai mund të kopjohet dhe ngjitet, dhe kjo është gjithashtu e vërtetë për vijën e komandës.

Provoni datën e komandës + "% y-% m-% d,% A"
E keni futur tërësisht me dorë apo e keni kopjuar nga artikulli? Sigurohuni që mund ta kopjoni, ngjiteni në terminal dhe ekzekutoni.

Pasi të mësoni se si të përdorni njeriun, sigurohuni që mund të kopjoni dhe ekzekutoni komandat shembull nga ndihma. Për të testuar, kërkoni seksionin SHEMBUJ në programin e datës, kopjoni dhe ekzekutoni shembullin e parë të treguar (vetëm në rast: shenja e dollarit është nuk është pjesë e komandës , ky është një imazh i kushtëzuar i promptit).

Si ta kopjoni saktësisht tekstin nga terminali dhe ta ngjisni atë në terminal varet nga sistemi juaj dhe cilësimet e tij, kështu që, për fat të keq, nuk do të funksionojë për të dhënë udhëzime universale. Në Ubuntu provoni këtë: kopjimi është vetëm një përzgjedhje me miun, ngjitja është butoni i mesit të miut. Nëse nuk funksionon, ose nëse keni një sistem tjetër, kërkoni në internet ose pyesni të njohurit më me përvojë.

Çelësat dhe opsionet

Kur shikoni historinë e komandave, tashmë keni hasur në faktin se komanda ls ka të paktën dy opsione. Nëse e quani ashtu, ai nxjerr një listë të thjeshtë:

[email i mbrojtur]: ~ / shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
Nëse shtoni çelësin -l, informacioni i detajuar shfaqet për çdo skedar:

[email i mbrojtur]: ~ / shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira 198 shkurt 13 11:48 Makefile -rw-rw-r-- 1 akira 15107 shkurt 14 22:26ll -first-steps.md -rw-rw-r-- 1 Akira 146226 Shkurt 13 11:49 shell-first-steps.pdf -rw-rw-r-- 1 Akira 16626 Shkurt 13 11:45 shell-mbijetesa -quide.md -rw-rw-r-- 1 akira 146203 13 shkurt 11:35 shell-survival-quide.pdf
Kjo është një situatë shumë tipike: nëse shtoni modifikues të veçantë (çelësat, opsionet, parametrat) në një thirrje komandimi, sjellja e komandës ndryshon. Krahaso: pema / dhe pema -d /, emri i hostit dhe emri i pritës -f.

Për më tepër, komandat mund të marrin si parametra emrat e skedarëve, drejtorive ose thjesht vargje teksti. Provoni:

Ls -ld / shtëpi ls -l / rrënjë grep në shtëpi / etj / passwd

njeri

man është një referencë për komandat dhe programet e disponueshme në kompjuterin tuaj, si dhe thirrjet e sistemit dhe bibliotekën standarde C.

Provoni: burrë grep, burrë atoi, burrë çdir, burrë burrë.

Lëvizja përpara dhe prapa bëhet me butonat "lart", "poshtë", "PageUp", "PageDown", dalja nga pamja e ndihmës - me butonin q. Kërkoni për tekst specifik në një artikull ndihme: Shtypni / (përpara), futni tekstin për të kërkuar, shtypni Enter. Kaloni te dukuritë e radhës - tasti n.

Të gjithë artikujt e ndihmës janë të kategorizuar. Më e rëndësishmja:

  • 1 - programe të ekzekutueshme dhe komanda shell (wc, ls, pwd, etj.);
  • 2 - thirrjet e sistemit (fork, dup2, etj.)
  • 3 - funksionet e bibliotekës (printf, scanf, cos, exec).
Është e nevojshme të tregohet se nga cila kategori duhet të tregohet ndihma në rastet e rastësisë së emrit. Për shembull, njeriu 3 printf përshkruan një funksion nga biblioteka standarde C dhe njeriu 1 printf përshkruan një program konsole me të njëjtin emër.

Ju mund të shikoni një listë të të gjitha faqeve man të disponueshme në makinë duke përdorur komandën man -k. (pikë është gjithashtu pjesë e ekipit).

më pak

Kur duhet të shikoni një tekst shumë të gjatë në një dritare të vogël terminali (përmbajtja e një skedari, një njeri i gjatë, etj.), Përdoren programe speciale "pager" (nga fjala faqe / faqe, domethënë fletëpalosjet e faqeve) . Shikuesi më i popullarizuar i faqeve është më pak, dhe është ai që ju ofron rrokullisje kur lexoni faqet kryesore.

Provoni dhe krahasoni sjelljen:

Macja /etc/bash.bashrc cat /etc/bash.bashrc | më pak

Ju mund ta transferoni skedarin në shfletues direkt në parametrat:

Më pak /etc/bash.bashrc

Lëvizja lart e poshtë - lart, poshtë, butonat PageUp, PageDown, butoni dalje - q. Kërkoni për tekst specifik: shtypni / (përpara), futni tekstin për të kërkuar, shtypni Enter. Kaloni te dukuritë vijuese - tasti n. (A e njihni një manual për njeriun? Nuk është çudi, më pak përdoret gjithashtu për të shfaqur ndihmën.)

Të drejtat

Një grup "të drejtash" shoqërohet me çdo skedar ose drejtori: e drejta për të lexuar skedarin, e drejta për të shkruar në skedar, e drejta për të ekzekutuar skedarin. Të gjithë përdoruesit ndahen në tre kategori: pronari i skedarit, grupi i pronarëve të skedarëve, të gjithë përdoruesit e tjerë.

Ju mund të shikoni lejet e skedarit duke përdorur ls -l. Për shembull:

> ls -l Makefile -rw-r - r-- 1 akira studentë 198 shkurt 13 11:48 Makefile
Ky dalje do të thotë që pronari (akira) mund të lexojë dhe shkruajë skedarin, grupi (studentët) mund të lexojë vetëm dhe të gjithë të tjerët në përdorues mund të lexojnë vetëm.

Nëse merrni një mesazh të refuzuar për leje gjatë punës, kjo do të thotë se nuk keni leje të mjaftueshme për objektin me të cilin dëshironi të punoni.

Lexoni man chmod për detaje.

STDIN, STDOUT, transportues (tuba)

Ekzistojnë 3 rrjedha standarde të të dhënave të lidhura me secilin program ekzekutiv: rrjedha e të dhënave hyrëse STDIN, rrjedha e të dhënave dalëse STDOUT dhe rrjedha dalëse e gabimit STDERR.

Drejtoni programin wc, shkruani tekstin Mirëdita sot, shtypni Enter, shkruani tekstin ditë e mirë, shtypni Enter, shtypni Ctrl + d. Programi wc do të tregojë statistika për numrin e shkronjave, fjalëve dhe rreshtave në tekstin tuaj dhe daljen:

> wc dite e mire sot dita e mire 2 5 24
Në këtë rast, ju keni dhënë një tekst me dy rreshta në STDIN të programit dhe tre numra në STDOUT.

Tani ekzekutoni kokën e komandës -n3 / etc / passwd, duhet të duket diçka si kjo:

> head -n3 / etc / passwd root: x: 0: 0: root: / root: / bin / bash daemon: x: 1: 1: daemon: / usr / sbin: / usr / sbin / nologin bin: x: 2: 2: bin: / bin: / usr / sbin / nologin
Në këtë rast, kreu nuk lexoi asgjë nga STDIN, por shkroi tre rreshta në STDOUT.

Mendoni për këtë në këtë mënyrë: një program është një tub në të cilin STDIN derdhet dhe STDOUT rrjedh jashtë.

Vetia më e rëndësishme e linjës së komandës Unix është se programet e tubave mund të ndërlidhen: dalja (STDOUT) e një programi mund të kalojë si të dhëna hyrëse (STDIN) në një program tjetër.

Një ndërtim i tillë i programeve të lidhura quhet në anglisht tub (tub), në rusisht - një transportues ose tub.

Kombinimi i programeve në një tubacion bëhet me simbolin | (shirit vertikal)

Ekzekutoni komandën head -n3 / etc / passwd | wc, ju merrni diçka si kjo:

> head -n3 / etc / passwd | wc 3 3 117
Ja çfarë ndodhi: programi kryesor lëshoi ​​tre rreshta teksti në STDOUT, i cili shkoi menjëherë në hyrjen e programit wc, i cili nga ana e tij numëronte numrin e karaktereve, fjalëve dhe rreshtave në tekstin që rezulton.

Ju mund të kombinoni sa më shumë programe që dëshironi në një tubacion. Për shembull, mund të shtoni një program tjetër wc në tubacionin e mëparshëm që numëron sa fjalë dhe shkronja ishin në daljen e wc-së së parë:

> head -n3 / etc / passwd | wc | wc 1 3 24

Kompozimi i tubacioneve (tubave) është një gjë shumë e zakonshme kur punoni në vijën e komandës. Për një shembull se si bëhet kjo në praktikë, shihni Ndërtimi i një tubacioni me një linjë.

Ridrejtimi I/O

Dalja (STDOUT) e një programi jo vetëm që mund të dërgohet në një program tjetër, por edhe thjesht të shkruhet në një skedar. Ky ridrejtim bëhet me> (më e madhe se shenjë):

Data> /tmp/today.txt
Si rezultat i ekzekutimit të kësaj komande, skedari /tmp/today.txt do të shfaqet në disk. Shikoni përmbajtjen e tij me cat /tmp/today.txt

Nëse një skedar me të njëjtin emër ekziston tashmë, përmbajtja e tij e vjetër do të shkatërrohet. Nëse skedari nuk ekziston, ai do të krijohet. Drejtoria në të cilën është krijuar skedari duhet të ekzistojë përpara se komanda të ekzekutohet.

Nëse nuk dëshironi të mbishkruani skedarin, por të shtoni rezultatin në fund të tij, përdorni >>:

Data >> /tmp/today.txt
Kontrolloni se çfarë është shkruar tani në skedar.

Përveç kësaj, çdo skedar mund të kalojë në program në vend të STDIN. Provoni:

Tualet

Çfarë duhet bërë kur diçka nuk është e qartë

Nëse hasni sjellje të sistemit që nuk e kuptoni, ose dëshironi të arrini një rezultat të caktuar, por nuk e dini se si saktësisht, ju këshilloj të vazhdoni në rendin e mëposhtëm (nga rruga, kjo vlen jo vetëm për predha):
  • formuloni pyetjen ose detyrën sa më qartë që të jetë e mundur - nuk ka asgjë më të vështirë sesa zgjidhja e "Unë nuk e di çfarë";
  • mbani mend nëse keni hasur tashmë të njëjtin ose një problem të ngjashëm - në këtë rast ia vlen të provoni zgjidhjen që funksionoi herën e fundit;
  • lexoni njeriun e duhur (nëse e dini se cilët njerëz janë të përshtatshëm në rastin tuaj) - ndoshta do të gjeni shembuj të përshtatshëm të përdorimit të komandave, opsionet e nevojshme ose lidhjet me komandat e tjera;
  • mendoni: a është e mundur të ndryshoni pak detyrën? - ndoshta duke ndryshuar pak kushtet, do të merrni një problem që tashmë dini si ta zgjidhni;
  • bëni pyetjen tuaj të formuluar qartë në një motor kërkimi - ndoshta përgjigja mund të gjendet në Stack Overflow ose në faqe të tjera;
Nëse asnjë nga sa më sipër nuk ju ndihmon, kërkoni këshilla nga një mësues, koleg ose mik me përvojë. Dhe mos kini frikë të bëni pyetje "budallaqe" - nuk është turp të mos dini, është turp të mos pyesni.

Nëse keni gjetur një problem të vështirë (vetëm, me ndihmën e internetit ose njerëzve të tjerë) - shkruani zgjidhjen tuaj në rast se ju ose shokët tuaj keni përsëri të njëjtin problem. Mund të regjistroni në një skedar teksti të thjeshtë, në Evernote, të publikoni në rrjetet sociale.

Metodat e punës

Kopjo dhe ngjit- nga man-s, nga artikujt në StackOverflow, etj. Linja e komandës përbëhet nga tekst, përdorni këtë: kopjoni dhe përdorni komandat shembull, shkruani gjetjet e suksesshme si suvenir, publikojini ato në Twitter dhe blogje.

Tërhiqeni komandën e mëparshme nga historia, shtoni një komandë tjetër në tubacion, ekzekutoni, përsërisni.Cm. Shihni gjithashtu Kompozimi i një tubacioni me një linjë.

Komandat bazë

  • kalimi në një drejtori tjetër: cd;
  • shikimi i përmbajtjes së skedarëve: mace, më pak, kokë, bisht;
  • manipulimi i skedarëve: cp, mv, rm;
  • shikimi i përmbajtjes së drejtorive: ls, ls -l, ls -lS;
  • Struktura e drejtorisë: pemë, pemë -d (mund të kalosh një drejtori si parametër);
  • kërko për skedarë: gjej. -emri ...;

Analiza

  • wc, wc -l;
  • sort -k - renditja sipas fushës së specifikuar;
  • sort -n - renditje numerike;
  • diff - krahasoni skedarët;
  • grep, grep -v, grep -w, grep "\ ", grep -E - kërko tekst;
  • uniq, uniq -c - unike e linjës;
  • awk - në variantin awk "(print $ 1)" për të mbajtur vetëm fushën e parë të çdo rreshti, $ 1 mund të ndryshohet në $ 2, $ 3, etj.;

Diagnostifikimi i sistemit

  • ps axuww - informacion në lidhje me proceset (programet në ekzekutim) që funksionojnë në makinë;
  • top - pamje interaktive e proceseve më intensive të burimeve;
  • df - hapësirë ​​e përdorur dhe e lirë në disk;
  • du është madhësia totale e skedarëve në drejtori (në mënyrë rekursive me nëndrejtori);
  • strace, ktrace - atë që sistemi e quan procesi kryen;
  • lsof - çfarë skedarësh po përdor procesi;
  • netstat -na, netstat -nap - cilat porte dhe priza janë të hapura në sistem.

Mund të mos keni disa programe, ato duhet të instalohen shtesë. Përveç kësaj, disa opsione të këtyre programeve janë të disponueshme vetëm për përdoruesit e privilegjuar (rrënja "y).

Ekzekutimi masiv dhe gjysmë automatik

Në fillim, kaloni këtë seksion, do t'ju nevojiten këto komanda dhe konstruksione kur të arrini në skriptimin e thjeshtë të guaskës.
  • test - kontrollimi i kushteve;
  • ndërsa lexoni - kaloni nëpër linja STDIN;
  • xargs - zëvendësimi i vargjeve nga STDIN në parametrat e programit të specifikuar;
  • seq - gjenerimi i sekuencave të numrave natyrorë;
  • () - kombinoni daljen e disa komandave;
  • ; - plotësoni një nga një;
  • && - ekzekutohet me kusht të përfundimit me sukses të komandës së parë;
  • || - të ekzekutojë me kusht të përfundimit të pasuksesshëm të komandës së parë;
  • tee - dublikojeni daljen e programit në STDOUT dhe në një skedar në disk.

të ndryshme

  • data - data aktuale;
  • curl - shkarkon dokumentin në url-në e specifikuar dhe e shkruan rezultatin në STDOUT;
  • prek - përditësoni datën e modifikimit të skedarit;
  • vrasin - dërgoni një sinjal në proces;
  • e vërtetë - nuk bën asgjë, kthehet e vërtetë, e dobishme për organizimin e sytheve të përjetshme;
  • sudo - ekzekutoni komandën si rrënjë "a.

Përbërja e një tubacioni me një linjë

Le të shohim një shembull të një detyre të botës reale: ju duhet të vrisni të gjitha proceset e serverit task-6 që ekzekutohen në emër të përdoruesit aktual.

Hapi 1.
Kuptoni se cili program prodhon afërsisht të dhënat e kërkuara, edhe nëse jo në formën e tij të pastër. Për detyrën tonë, ia vlen të merrni një listë të të gjitha proceseve në sistem: ps axuww. Vraponi.

Hapi 2.
Shikoni të dhënat e marra me sytë tuaj, dilni me një filtër që do të hedhë disa nga të dhënat e panevojshme. Shpesh kjo është grep ose grep -v. Përdorni tastin "Up" për të hequr komandën e mëparshme nga historia, caktoni filtrin që keni shpikur dhe ekzekutoni atë.

Ps axuww | grep `whoami`
- vetëm proceset e përdoruesit aktual.

Hapi 3.
Përsëriteni hapin 2 derisa të merrni të dhënat e pastra që dëshironi.

"
- të gjitha proceset me emrin e dëshiruar (plus, ndoshta, ato të panevojshme si vim task-6-server.c, etj.),

Ps axuww | grep `whoami` | grep "\ "| grep -v vim ps axuww | grep` whoami` | grep "\ "| grep -v vim | grep -v më pak
- vetëm proceset me emrin e kërkuar

Ps axuww | grep `whoami` | grep "\ "| grep -v vim | grep -v më pak | awk" (print $2) "

Pids e kërkuara të procesit, hapi 3 i përfunduar

Hapi 4.
Aplikoni një mbajtës përfundimtar të përshtatshëm. Duke përdorur tastin "Up", tërhiqni komandën e mëparshme nga historia dhe shtoni përpunimin që do të përfundojë zgjidhjen e problemit:

  • | wc -l për të numëruar numrin e proceseve;
  • > pids për të shkruar pids në një skedar;
  • | xargs vrasin -9 procese vrasin.

Detyrat e trajnimit

Dëshironi të praktikoni aftësi të reja? Provoni detyrat e mëposhtme:
  • merrni një listë të të gjithë skedarëve dhe drejtorive në direktorinë tuaj kryesore;
  • merrni një listë të të gjithë artikujve nga kategoria 2 (thirrjet e sistemit);
  • numëro sa herë del fjala grep në grep man-e;
  • numëroni sa procese po ekzekutohen aktualisht si përdorues rrënjë;
  • gjeni cila komandë shfaqet në numrin maksimal të kategorive të ndihmës (njeri);
  • numëroni sa herë shfaqet fjala var në faqen ya.ru.
Këshillë: ju duhet find, grep -o, awk "(print $ 1)", shprehje të rregullta në grep, curl -s.

Çfarë të studiojmë më pas?

Nëse filloni të pëlqeni rreshtin e komandës, mos u ndalni, vazhdoni të përmirësoni aftësitë tuaja.

Këtu janë disa programe që patjetër do t'ju vijnë në ndihmë nëse jetoni në vijën e komandës:

  • gjeni me opsione komplekse
  • në vend të kësaj
  • lokalizoj
  • telnet
  • netcat
  • tcpdump
  • rsync
  • ekran
  • zgrep, zless
  • visudo
  • crontab -e
  • Dërgo postë
Përveç kësaj, me kalimin e kohës ia vlen të mësoni një gjuhë skriptimi si perl ose python, ose edhe të dyja.

Kush ka nevojë për të?

A ia vlen të mësoni linjën e komandës dhe skriptimin e guaskës sot? Patjetër që ia vlen. Këtu janë vetëm disa shembuj të kërkesave të Facebook për kandidatët që duan të aplikojnë për një punë në FB.

Artikujt kryesorë të lidhur