Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Gjuha e komandës së guaskës. Bazat e programimit shell

Në këtë artikull, ne do të përpiqemi të mbledhim komandat më të përdorura në SSH ose linux shell. Lista nuk është përfundimtare, përshkrimi i komandave natyrisht nuk është i plotë, ju mund të merrni përshkrimin e plotë të komandave në komandën linux shell # man.



Shkurtoret e tastierës dhe komandat Linux:

KUJDES: KUJTONI SE KOMANDA LINUX JANË TË NDJESHME NDAJ RASTIT NË TË CILIN MARREN. Për shembull: Komandat Netscape, NETSCAPE dhe nEtscape janë tre komanda të ndryshme, ashtu si my_filE, my_file dhe my_FILE janë tre skedarë të ndryshëm.

1. Shkurtoret dhe konventat natyrore të tastierës
Kalimi në terminalin e parë të konsolës
Kalimi në terminalin #-të të konsolës (# = 1..6)
Kalo në një terminal grafik (nëse po funksionon)
Plotësimi i sekuencës aktuale të karaktereve të shtypura në tastierë për komandën që po ekzekutohet. Kjo veçori e bën jetën shumë më të lehtë kur shkruani komanda! Kjo funksionon edhe kur filloni kompjuterin përmes LILO!
Shikoni dhe modifikoni buferin e historisë së komandës. Shtypni për të ekzekutuar komandën.
Shikimi i tekstit të shfaqur në terminalin e konsolës dhe i shkuar përtej rreshtave të ekranit. Lëvizni lart.
Njejte si me siper. Lëvizni poshtë.
[+] (në X-windows) Ndrysho rezolucionin. Kaloni në konfigurimin tjetër.
[-] (Në X-windows) Ndrysho rezolucionin. Kthehuni në konfigurimin e mëparshëm.
(në X-windows) Vrasni serverin aktual të X-windows (dalja nga guaska grafike, duke vrarë të gjitha proceset). Vrasni procesin aktual.
d Dilni nga terminali aktual (zakonisht funksionon).
d Dërgon sinjalin [End-of-file] (end-of-file) në procesin aktual.
s Ndalo daljen në terminal.
q Rifilloni daljen në terminal. Provoni këtë shkurtore të tastierës nëse terminali juaj është i paqartë pse nuk iu përgjigj kërkesave tuaja.
z Dërgo procesin aktual në sfond.
rivendosur Rivendosja e vlerave të paracaktuara për një terminal "të korruptuar" (terminali shfaq karaktere të çuditshme dhe nuk i përgjigjet siç duhet shtypjes së tasteve). Përdoreni këtë komandë nëse jeni përpjekur të shfaqni një skedar binar. Ju ndoshta nuk do të jeni në gjendje ta shihni këtë komandë ndërsa e shkruani.
~ Drejtoria ime e shtëpisë. Për shembull cd ~ / my_subdirectory.
... (pika) Drejtoria aktuale.
.. (dy pika) Drejtoria mëmë për drejtorinë aktuale.

2. Komandat dhe komandat standarde që ofrojnë informacion mbi sistemin
pwd Listoni drejtorinë aktuale.
emri i hostit Shfaqni ose ndryshoni emrin e rrjetit të makinës.
Kush jam unë Shkruani emrin me të cilin jam regjistruar.
datë Shfaqni ose ndryshoni datën dhe orën. Për shembull, për të vendosur datën dhe kohën në 2000-12-31 23:57, ekzekutoni komandën: data 123123572000
koha Merrni informacion për kohën që duhet për të përfunduar procesin + disa informacione të tjera. Mos e ngatërroni këtë komandë me datën. Për shembull: Unë mund të them se sa kohë duhet për të renditur skedarët në një drejtori duke shtypur: time ls
Kush Përcaktoni se cili nga përdoruesit është duke punuar në makinë.
rwho -a Identifikimi i të gjithë përdoruesve të lidhur në rrjetin tuaj. Kjo komandë kërkon që procesi rwho të ekzekutohet. Nëse jo, ekzekutoni "setup" si superpërdorues.
gishti [emri i përdoruesit] Informacioni i sistemit për përdoruesin e regjistruar. Provoni: rrënja e gishtit
koha e funksionimit Sasia e kohës që ka kaluar që nga rindezja e fundit.
ps a Lista e proceseve aktuale.
krye Një listë interaktive e proceseve aktuale të renditura sipas përdorimit të CPU.
unemër Shfaq informacionin e sistemit.
pa pagesë Shfaq informacion nga kujtesa.
df -h(= hapësirë ​​në disk) Printoni informacione për hapësirën e lirë dhe të përdorur në disk (e lexueshme).
du / -bh | më shumë(= kush mori sa) Shfaqja e informacionit të detajuar në lidhje me madhësinë e skedarëve sipas drejtorive duke filluar nga rrënjët (në një formë të lexueshme).
cat / proc / cpuinfo Informacioni i sistemit për procesorin. Vini re se skedarët në drejtorinë / proc nuk janë skedarë realë. Ato përdoren për të marrë informacione të njohura për sistemin.
cat / proc / ndërpret Ndërprerjet e përdorura.
cat / proc / version Versioni i kernel Linux dhe informacione të tjera
cat / proc / sistemet e skedarëve Listoni llojet e sistemit të skedarëve të përdorur aktualisht.
cat / etj / printcap Shfaq cilësimet e printerit.
lsmod(si rrënjë) Printoni informacione rreth moduleve të kernelit të ngarkuara aktualisht.
set | më shumë Printoni vlerat aktuale të variablave të mjedisit.
jehonë $ SHTEG Printoni vlerën e ndryshores së mjedisit "PATH" Kjo komandë mund të përdoret për të printuar vlerat e variablave të tjerë të mjedisit. Përdorni komandën set për një listë të plotë.

3. Rrjetëzimi
netconf(si rrënjë) Një program shumë i mirë i konfigurimit të rrjetit që përdor një menu të bazuar në tekst për përdorim ndërveprues.
ping [emri i hostit]"Kontrollo për morra". Pavarësisht nëse ka apo jo kontakt me një makinë tjetër (si parametër i komandës, mund të kaloni emrin e rrjetit ose adresën IP të pajisjes), shtypni -C kur të merren të gjitha informacionet e kërkuara.
rrugë -n Printoni tabelën e rrugëzimit.
ipfwadm -F -p m Konfiguro murin e zjarrit.
ifconfig(si rrënjë) Printoni informacione rreth ndërfaqeve aktuale të rrjetit (ethernet, ppp, etj.) Tabela juaj e parë e ethernetit do të shfaqet si eth0, e dyta si eth1, modemi i parë ppp si ppp0, e kështu me radhë. "lo" qëndron për ndërfaqen e rrjetit "vetëm për kthimin", e cila duhet të aktivizohet vazhdimisht. Përdorni opsionet e duhura (shihni daljen e ifconfig --help) për të konfiguruar ndërfaqet e rrjetit.
ifup [emri_interface_rrjeti](/ sbin / ifup kur punoni si përdorues i rregullt) Aktivizimi i ndërfaqes përkatëse të rrjetit. Për shembull: ifup eth0 ifup ppp0. Përdoruesi mund të aktivizojë dhe çaktivizojë ndërfaqen e rrjetit ppp vetëm kur janë caktuar të drejtat e duhura të aksesit (të drejtat mund të vendosen gjatë konfigurimit ppp nëpërmjet "netconf")
ifdown [emri_interface_rrjetit](/ sbin / ifdown kur funksionon si përdorues i rregullt). Çaktivizimi i ndërfaqes përkatëse të rrjetit.

4. Veprimet më të thjeshta
ls Lista e skedarëve në drejtorinë aktuale. Komanda dir ekzekuton komandën ls.
cd [direktoria] Ndrysho drejtorinë.
cp [çfarë të kopjoni] [ku të kopjoni] Kopjoni skedarët.
mcopy [çfarë të kopjoni] [ku të kopjoni] Kopjoni skedarët kur punoni me një sistem skedarësh dos (montimi i një disku dos është opsional). Për shembull: mcopy a: \ autoexec.bat ~ / junk. Për më shumë informacion mbi komandat e ngjashme (mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....) shikoni man mtools.
mv [çfarë të lëvizësh] [ku të lëvizësh] Zhvendosni ose riemërtoni skedarin.
ln -s [me çfarë të lidhni] [emri i lidhjes] Krijo një lidhje simbolike.
rm [skedarët] Fshi skedarët.
mkdir [direktoria] Krijo një direktori të re.
rmdir [drejtori] Hiq drejtorinë bosh.
rm -r [skedarët dhe / ose drejtoritë](fshirje rekursive) Fshi skedarët, drejtoritë dhe nëndrejtoritë e tyre. KUJDES me këtë komandë nëse keni të drejta të superpërdoruesit! Linux nuk ka ende një sistem për rikuperimin e plotë të skedarëve të fshirë (përveç nëse përdorni programe speciale për të vendosur skedarët e fshirë në një drejtori të veçantë - a la basket nën W95).
cat [emri i skedarit] | më shumë Shikoni përmbajtjen e një skedari teksti një faqe në një kohë.
më pak [emri i skedarit] Shikimi i përmbajtjes së një skedari teksti me aftësinë për t'u kthyer në faqet e mëparshme. Shtypni q kur dëshironi të dilni nga programi. "Më pak" është analoge me komandën DOS "më shumë", megjithëse shumë shpesh "më pak" është më e përshtatshme se "më shumë".
pico [emri i skedarit] Redaktoni skedarin e tekstit.
rrëqebulli Shikoni skedarin html ose lidhjen WWW duke përdorur shfletuesin e tekstit Lynx.
tar -zxvf [skedarët] Shpaketoni arkivin tgz ose tar.gz që keni nxjerrë nga rrjeti.
gjeni / -emrin "emri i skedarit" Gjeni një skedar me emrin "filename". Kërkimi fillon nga drejtoria /. "Emri i skedarit" mund të përmbajë një maskë kërkimi.
pisha Lexues i mirë i postës elektronike i orientuar drejt tekstit. Një program tjetër i ngjashëm quhet "elm". Netscape lexon postën tuaj nga adresa juaj e internetit dhe pine ju lejon të shikoni postën "lokale" - domethënë postën që ju dërgohet nga procesi son ose cron.
mc Nisni programin e menaxhimit të skedarëve "Midnight Commander" (Duket si "Norton Commander", por më afër ose dn në aftësitë e tij).
telnet [server] Telnet në një makinë tjetër. Përdorni emrin e makinës ose adresën IP. Identifikohu me fjalëkalimin tënd (duhet të jesh i regjistruar në këtë makinë në distancë). Kjo do t'ju lejojë të regjistroheni në një makinë tjetër dhe të punoni me të sikur të jeni ulur në tastierën e saj (pothuajse pa dallim).
ftp [server] Lidhu nëpërmjet ftp me një kompjuter të largët. Ky lloj lidhjeje është i mirë për kopjimin e skedarëve në / nga një makinë në distancë.

5. Komandat Bazë të Administratës
mjet printimi(si rrënjë në terminalin X) Konfiguro printerin tuaj.
konfigurimi(si rrënjë) Konfiguro miun, kartën e zërit, tastierën, shell X-windows dhe shërbimet e sistemit. Një program shumë i lehtë për t'u përdorur.
pseudonimi ls = "ls -Fskb --color" Krijo pseudonim - një pseudonim në mënyrë që një komandë të mund të ekzekutojë një kombinim më kompleks komandash. Vendosni krijimin e pseudonimeve në skedarin / etc / bashrc nëse dëshironi që këto pseudonime të jenë të disponueshme për të gjithë përdoruesit në sistemin tuaj.
adduser [emri i përdoruesit] Regjistroni një përdorues të ri (duhet të keni të drejta të superpërdoruesit). Për shembull: adduser ivanov. Mos harroni të vendosni një fjalëkalim përdoruesi më pas. Drejtoria e përdoruesit ndodhet në drejtorinë / home / username.
shto përdoruesi [emri i përdoruesit] Njëlloj si shtuesi.
userdel [emri i përdoruesit] Hiqni përdoruesin nga sistemi (duhet të jeni të regjistruar si rrënjë). Drejtoria e përdoruesit dhe mesazhet e palexuara nga një përdorues i largët duhet të trajtohen veçmas.
shtoj grup [emri_grupi] Krijoni një grup të ri përdoruesish në sistemin tuaj. Nuk është e nevojshme të krijohet një grup direkt në makinën kryesore.
passwd Ndrysho fjalekalimin. Nëse jeni superpërdorues, mund të ndryshoni fjalëkalimin e çdo përdoruesi të regjistruar duke shtypur komandën: passwd username
chmod [lejet] [skedar](= ndryshimi i modalitetit) Ndryshoni lejet e skedarëve që zotëroni (nëse jeni root, në këtë rast mund të ndryshoni lejet për çdo skedar). Ekzistojnë tre mënyra për të hyrë në një skedar: lexo - lexo (r), shkruaj - shkruaj (w), ekzekutim - ekzekuto (x) dhe tre lloje përdoruesish: pronari i skedarit është pronari (u), anëtarët e i njëjti grup si pronari i skedarit (g) dhe të gjithë të tjerët (o). Ju mund të kontrolloni të drejtat aktuale të aksesit në mënyrën e mëposhtme: ls -l emri i skedarit... Nëse skedari është i disponueshëm me çdo kusht për të gjithë përdoruesit, atëherë kombinimi i mëposhtëm i shkronjave do të shfaqet përballë emrit të skedarit: rwxrwxrwx... Tre shkronjat e para janë lejet për pronarin / zotëruesin e skedarit, treshja e dytë janë lejet për grupin e tij/saj, tre të tjerat janë lejet për pjesën tjetër. Mungesa e të drejtave të aksesit tregohet si "-" .; Për shembull: Kjo komandë do t'ju lejojë të vendosni lejet e leximit për skedarin "junk" për të gjithë (të gjithë = përdorues + grup + të tjerët):
chmod a + r mbeturina
Kjo komandë do të revokojë lejen për të ekzekutuar skedarin nga të gjithë, përveç përdoruesit dhe grupit:
chmod o-x mbeturina
Për më shumë informacion, shkruani chmod --help ose man chmod, ose lexoni ndonjë manual Linux.
Mund të vendosni të drejtat e paracaktuara për skedarët që krijoni me komandën "umask" (shkruani man umask).
chown [new_host] [skedarët]
chgrp [grupi_i ri] [skedarët] Ndryshoni zotëruesin dhe grupin për një skedar.
Ju mund t'i përdorni këto dy komanda pasi të bëni një kopje të skedarit për dikë tjetër. su(= super përdorues) Hyni si superpërdorues (do t'ju kërkohet fjalëkalimi). Shtypja e "daljes" do t'ju kthejë në guaskën tuaj të mëparshme të përdoruesit. Përdoruesi rrënjë ekziston për administrimin e sistemit dhe komanda su ju jep akses të shpejtë në aftësitë e superpërdoruesit kur ju nevojitet. Asnjëherë mos hyni si rrënjë, përdorni komandën su për këtë qëllim.

6. Kontrolli i procesit
ps(= statusi i printimit) Listoni proceset aktuale me identifikuesit e tyre ID (PID). Përdorni ps axu për të renditur të gjitha proceset që ekzekutohen në sistemin tuaj që ju kanë si master (kjo vlen edhe për proceset që janë shkëputur nga terminali).
fg Kthimi i një sfondi ose procesi të pezulluar në një gjendje ndërvepruese (me prioritet të lartë);
bg Bëni procesin në sfond. Funksioni i anasjelltë i fg. Mund të ndjekë z.
vrasin"Vrasni" procesin. Së pari, përcaktoni PID-në e procesit që do të vritet me ps.
killall [emri_programi]"Vrasni" të gjitha proceset sipas emrit të programit.
lpc(si rrënjë) Kontrolloni radhën e printerit.
lpq Listoni radhën e punës së printimit.
lprm [Numri i punës] Hiqeni punën nga radha e printimit.
bukur [program_name] Filloni procesin duke vendosur prioritetin e tij.
renice Ndryshoni prioritetin e procesit.

Vini re kombinimet kryesore: c, z, s dhe q. Këto janë përshkruar më herët në seksionin e shkurtoreve dhe konventave të tastierës natyrore.

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

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ë- Dalja 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 regjistrohuni përsëri. 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. Shfaqni datën 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, do të kontrollojë ID-në për përputhje me ato të përdorura në sistem dhe do të shfaqë emrin e 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 ndaj argumenteve të 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.

Ky seksion ofron dokumentacion për të ndihmuar programuesin në gjuhët e guaskës (sh, bash, ksh dhe të tjera)

Interpretuesi i komandës C-shell

0. Hyrje

Përkthyesi i komandës në një mjedis UNIX ka dy funksione kryesore:

paraqet një ndërfaqe interaktive me përdoruesin, d.m.th. lëshon një prompt dhe përpunon komandat e futura nga përdoruesi;
përpunon dhe ekzekuton skedarët e tekstit që përmbajnë komanda për interpretues (skedarët e komandës);

Në rastin e fundit, sistemi operativ ju lejon të trajtoni skedarët e grupit si një lloj skedari të ekzekutueshëm. Prandaj, dallohen dy mënyra të funksionimit të përkthyesit: ndërveprues dhe komandues.

Në mjedisin UNIX (në krahasim me, le të themi, DOS) ka disa predha të ndryshme. Le të rendisim më të njohurit:

/ bin / sh - guaskë Bourne. Historikisht, ishte guaska e parë komanduese e zhvilluar për versionin e parë të UNIX OS. Kjo guaskë është aktualisht guaska dominuese në versionet e UNIX System V.
/ bin / csh - С-guaskë. Një guaskë, sintaksa e gjuhës komanduese e së cilës është afër gjuhës C. Është guaska kryesore për OS Berkeley UNIX.
/ bin / ksh - k-shell.
/ bin / rsh - Predha e kufizuar. Është sh me aftësi të kufizuara (kryesisht për të mbrojtur OS nga veprimet e paautorizuara të përdoruesit).

Sistemi operativ ConvexOS është një shije e 4.3 BSD UNIX () BSD - Series Berkeley Distribution dhe për këtë arsye guaska bazë është csh.

1. Veçoritë kryesore

Puna me vijën e komandës

Linja e shtypur nga përdoruesi interpretohet nga interpretuesi si një komandë (ose disa komanda). Sintaksa e guaskës ju lejon të shkruani

komanda të shumta në një rresht, të ndara me pikëpresje. për shembull

është e barabartë me dy komanda të futura në mënyrë sekuenciale:

Përkundrazi, nëse dëshiron, përdoruesi mund

vazhdoni të shkruani një komandë të gjatë në rreshtin tjetër, duke e përfunduar rreshtin aktual me \\. Do të merrni një 'prompt dytësor' "> në vend të primarit (%) derisa komanda të përfundojë. Për shembull,

% tar tv Makefile star.o star.c star.dat main.o main.c

ekuivalente me

% tar tv Makefile star.o \

> star.c star.dat \

Rrjedhat I/O kontrollohen si DOS (Më saktë, DOS OS miratoi sintaksën e ridrejtimit të fillit nga UNIX) duke përdorur simbolet>,>>,

Një rast i veçantë i dobishëm i përdorimit të mekanizmit të ridrejtimit të transmetimit është ridrejtimi në / dev / null, i cili ju lejon të heqni qafe mesazhet e panevojshme në ekran. Skedarët bosh mund të krijohen duke përdorur të njëjtin mekanizëm:

do të krijojë një skedar bosh myfile në drejtorinë aktuale.

Për më tepër, C-shell ju lejon të gruponi komanda duke përdorur kllapa. Në këtë rast, i gjithë ndërtimi brenda kllapave konsiderohet nga interpretuesi si një komandë. Kjo është e dobishme, për shembull, në ndërtime të tilla:

% (komandë 1 | komanda 2)

Nëse i hiqni kllapat, guaska nuk do të jetë në gjendje të përcaktojë se cilën nga komandat dëshironi të futni skedarin myfile.

"Komunitetet" e mëposhtme ekzistojnë në një zbatim të caktuar të C-shell:

Mund të shmangni shtypjen e një komande të gjatë deri në fund, por provoni pas shtypjes së pjesshme të komandës (ose emrit të skedarit) të shtypni tastin tab. C-shell do të përpiqet të plotësojë vetë personazhet që mungojnë, ose do të përgjigjet me një kërcitje nëse zgjedhja është e paqartë.
Nëse keni shtypur një komandë por keni harruar opsionet e saj, shkruani H. C-shell do t'ju japë një ndihmë të shkurtër. Për shembull,

Kur shkruani emrin e plotë të skedarit, përdorni kombinimin e tastit ^ D. Ju do të jeni në gjendje të merrni një listë të drejtorisë së shtypur në formatin e komandës lf.
Buferi i komandës kujton 20 komandat e fundit. Në vend që të shtypni një komandë, mund ta thërrisni atë nga buferi duke përdorur tastierën me shigjetë (natyrisht, vetëm nëse komanda është në tampon).

Parimi i vijës së komandës

Përkthyesi, pasi ka marrë vijën e komandës, kryen një numër transformimesh në të, përkatësisht:

Zgjeron pseudonimet
Zgjeron karakteret (*,?, [,], ~, (,))
Zëvendëson variablat e guaskës
Ekzekuton komandën nëse është një komandë e integruar për interpretues, ose fillon një proces nëse komanda është e jashtme.

Le t'i analizojmë këto veprime në faza.

Pseudonimet. Komanda e integruar e pseudonimit ju lejon të përcaktoni pseudonimet e komandave. Shembull:

% pseudonimi mycat "mace | më shumë"

përcakton mycat si një pseudonim për macen e vargut | më shumë. Prandaj, më tej, ju keni të drejtë të përdorni komandën mycat, e cila do të zgjerohet nga përkthyesi kudo që ta përdorni. Kjo është një mënyrë për të përcaktuar emrat e shkurtër për komandat e përbëra të gjata.

Unalias mycat i ndërtuar do të shkatërrojë pseudonimin mycat të futur më parë.

Metakarakteret. Metakarakterët ju lejojnë të shkruani në mënyrë koncize lista të tëra fjalësh (kryesisht emra skedarësh). Shell trajton një fjalë që përmban metakaraktere si një shabllon për hartimin e një liste me emra skedarësh:

* në një model zëvendëson çdo sekuencë karakteresh. Për shembull m * do të zgjerohet në një listë të të gjithë skedarëve që fillojnë me shkronjën m. Ekziston një përjashtim i vogël nga ky rregull: ai thjesht * heq nga lista ato skedarë emrat e të cilëve fillojnë me një pikë.
? zëvendëson një personazh. Për shembull m? do të zgjerohet në një listë të të gjithë emrave të skedarëve që fillojnë me shkronjën m dhe përbëhet nga saktësisht dy shkronja.
[.-.] ju lejon të specifikoni hapësirën për karakterin që do të zëvendësohet. Për shembull m do të zgjerohet në ma mb mc me.
(..., ...) ju lejon të listoni fjalët që do të zëvendësohen. Kështu, për shembull m (e kuqe, blu, jeshile) do të zgjerohet në mred mblue mgreen.

Më në fund, tilda ju lejon të specifikoni direktorinë kryesore të përdoruesit:

~ emri / është ekuivalente me specifikimin e rrugës së plotë drejt emrit të drejtorisë kryesore të përdoruesit (të themi / usr1 / emri /)
~ / është ekuivalente me specifikimin e rrugës së plotë për në direktorinë tuaj të shtëpisë.

Variablat e guaskës Predha interpreton fjalët që fillojnë me simbolin $ si emra variablash. Variablat ndahen në variabla mjedisore (ato do të jenë të njohura për të gjithë programet e thirrura nga kjo guaskë dhe janë globale në këtë kuptim) dhe variabla të thjeshta.

Komanda e vendosur emri = vlera e ndërtuar ju lejon të përcaktoni një variabël të thjeshtë me emër dhe t'i jepni vlerën e vlerës. Me të ndeshur shprehjen e emrit $ në vijën e komandës, përkthyesi do ta zëvendësojë atë me vlerë. Për shembull,

% ngjyra e vendosur = blu

do të printojë linjën blu në terminal. A

% ngjyra e vendosur = blu

% jehonë ngjyra e re $

do të japë newblu. Së fundi, duke prezantuar

% ngjyra e vendosur = blu

% echo $ (ngjyrë) e re

marrim ngjyrë të re. Shembulli i fundit tregon se si të përdoren kllapat kaçurrelë për të ndarë emrin e një ndryshoreje nga një fjalë (për të bërë jehonë $ colornew, interpretuesi do të përgjigjet se ndryshorja colornew nuk është e përcaktuar.

Komanda unset shkatërron variablat e përcaktuara më parë.

Për të përcaktuar që një ndryshore të jetë e barabartë me një varg me shumë fjalë, vendoseni atë në thonjëza të vetme. Shembull

% set ngjyra = "blu ose e kuqe ose jeshile"

Variablat e thjeshta mund të jenë vargje fjalësh (të cilat duhet të dallohen nga rasti i sapo shqyrtuar kur ndryshorja përmban një varg me disa fjalë. Për të deklaruar një grup, duhet të përdorni kllapa:

% grup ngjyrash = (e kuqe blu e gjelbër)

Komanda echo $ Colors tani do të nxjerrë një varg me tre ngjyra (provojeni!). Sidoqoftë, mund të punoni edhe në elementë të veçantë të grupit (elementet numërohen duke filluar nga zero), për shembull:

(ne marrim jeshile). Numri i elementeve në grup gjendet në variablin $ # ngjyra.

do të japë numrin 3 në terminal.

Kombinime mjaft komplekse janë të mundshme duke përdorur shabllone, për shembull:

% skedarë të caktuar = (m *)

do të printojë numrin e skedarëve në drejtorinë aktuale duke filluar me shkronjën m.

Variablat e mjedisit thirren në të njëjtën mënyrë si variablat e thjeshtë. Dallimi qëndron në mënyrën se si ato janë përcaktuar:

Komanda e vlerës së emrit% setenv cakton një variabël mjedisor me emrin emër. Vini re ndryshimin e bezdisshëm në sintaksë: kur përcaktoni një variabël mjedisi, nuk keni nevojë të vendosni një shenjë =.

Të gjitha variablat e mjedisit mund të renditen duke përdorur komandën e integruar printenv.

Mund të çaktivizoni një variabël mjedisi me unsetenv.

Së fundi, kllapat NUK përdoren për të përcaktuar një grup variablash mjedisi, por dy pikat përdoren si ndarës për elementët e grupit:

% setenv MANPATH / usr / burrë /: / usr / lokal / burrë: / usr / burrë / X11: ~ / burrë

Komandat dhe variablat e integruara

Një listë e komandave më të rëndësishme të integruara në C-shell me shpjegime të shkurtra:

alias përcakton një pseudonim

bg vendos detyrën në sfond

Rruga chdir është komanda për të ndryshuar në drejtorinë e rrugës.

echo printon të gjitha argumentet e saj në dalje standarde

Emri i skedarit exec e fillon procesin nga emri i skedarit në vend të (d.m.th., në krye të guaskës aktuale). Nuk ka asnjë mënyrë për t'u kthyer në guaskë.

dalja del nga guaska.

fg e bën procesin e sfondit sinkron.

emri i skedarit jep informacion se çfarë mendon sistemi operativ për këtë skedar.

goto label kryen një kërcim të pakushtëzuar në rreshtin e skedarit të grupit të shënuar me etiketën e etiketës. Nuk përdoret në mënyrë interaktive.

kill pid dërgon një sinjal përplasjeje te procesi pid, i cili zakonisht e vret procesin.

emri i skedarit burim lexon dhe ekzekuton komanda nga emri i skedarit.

set, setenv vendosja e variablave të brendshëm dhe të mjedisit.

shift var zhvendos elementet e vargut var majtas. Në këtë rast, madhësia e grupit zvogëlohet me një, dhe elementi zero i grupit humbet. Var duhet të jetë një grup.

komanda time ekzekuton komandën e komandës dhe printon kohën e kaluar në terminal.

unset shkatërron variablin shell.

unalias heq pseudonimin e komandës së përcaktuar më parë.

@ name = expr ruan rezultatin e shprehjes aritmetike expr në emrin e ndryshores.

Një listë e variablave më të rëndësishëm të integruar C-shell me shpjegime të shkurtra:

grup argv i parametrave të linjës së komandës (përdoret në modalitetin e komandës)

cdpath është direktoria ku shkon shell kur merr chdir pa argument.

historia është madhësia e buferit për memorizimin e komandave.

home është drejtoria kryesore e përdoruesit

vendndodhjen e postës në sistemin e skedarëve të kutisë postare të përdoruesit.

shtegu i rrugës për të kërkuar komanda të jashtme.

prompt është prompti kryesor i guaskës.

prompt1 është një kërkesë dytësore.

shtegu i plotë i guaskës së skedarit të ekzekutueshëm të guaskës aktuale (/ bin / csh)

Deklaratat e kontrollit dhe të ciklit

Ne kemi përjashtuar qëllimisht deklaratat e kushtëzuara dhe të ciklit nga lista e komandave të integruara të guaskës, të cilat do të diskutohen këtu.

Ekzekutimi me kusht

Sintaksa për deklaratën e kushtëzuar if në C-shell është si më poshtë

komanda if (expr).

Expr mund të jetë ose një shprehje aritmetike ose një kontroll i atributit të skedarit. Shembull:

nëse (-f / etj / pret) cat / etj / pret

Le të shqyrtojmë rastin e fundit në më shumë detaje. Kontrollet e mëposhtme të atributeve të skedarit janë të mundshme:

R është i lexueshëm

W është në dispozicion për regjistrim

X është i disponueshëm për ekzekutim

E kontrollon ekzistencën e skedarit

O duke kontrolluar që ju jeni pronari i skedarit të dhënë

Skedari Z ka madhësi zero

Skedari F është një skedar i rregullt

Skedari P është një tub me emër

Skedari D është një direktori

Ndërsa lak

Cikli funksionon për aq kohë sa kushti është i vërtetë. Shembull:

ndërsa ($ # skedarë> 0)

Loop Foreach

Ky është një operator jashtëzakonisht i dobishëm për kërkimin e elementeve të një grupi fjalësh.

për çdo varem (listë)

Trupi i ciklit ekzekutohet aq herë sa ka elementë në grupin e listës. Në këtë rast, variabli varname përmban vlerën tjetër të elementit të grupit. Shembull

ngjyra e përparme (e kuqe blu e gjelbër)

jehonë Ngjyra është $ ngjyra

për çdo skedar (* .për)

echo Riemërtimi i skedarit $

mv $ file `emri bazë $ file .for`.f

Këtu kemi përdorur emrin e bazës së komandës standarde, e cila heq prapashtesën e dhënë në argumentin e dytë nga fjala e dhënë në argumentin e parë dhe printon fjalën që rezulton në daljen standarde. Përdorimi i backticks në gjuhën C-shell do të diskutohet pak më vonë.

Operator i kushtëzuar me shumë variacione

Sintaksa për deklaratën e kushtëzuar switch në C-shell është si më poshtë

modeli i rastit 1: ... thyen kutia (\ it model2):

Operatori ju lejon të transferoni kontrollin në varësi të faktit nëse vargu i vargut përputhet me ndonjë model nga modeli i caktuar1, modeli2, ... (në këtë rast, kontrolli transferohet në bllokun e kufizuar nga rasti ... breaksw) ose jo (në këtë rasti, kontrolli transferohet në degën e paracaktuar: ... endsw Në përgjithësi, deklarata switch është shumë e ngjashme me operatorin analog të gjuhës C. Konstruksione të tilla shpesh përdoren në skedarët e grupit për të analizuar përgjigjen e përdoruesit për një pyetje ().

2. Drejtimi i guaskës në modalitetin e komandës

Tashmë është vërejtur se csh mund të ekzekutohet në modalitetin e komandës. Për më tepër, deklaratat e kushtëzuara dhe të ciklit përdoren shpesh në skedarët e grupit. Këtu do të shikojmë tiparet e një pune të tillë "ekipore".

Identifikimi i përkthyesit

Mënyra më e lehtë është të filloni shell-in në modalitetin e ekzekutimit të disa skedarëve mykomandë duke i dhënë këtij skedari një atribut të ekzekutueshëm me komandën chmod:

% chmod + x mycommand

Tani mjafton të futni komandën mycommand nga tastiera dhe OS do të nisë automatikisht guaskën në modalitetin e ekzekutimit të komandës së këtij skedari. Ekziston një kurth në këtë rrugë: ka shumë interpretues komandash në sistem dhe sintaksa e komandës është e ndryshme për ta. Si do të përcaktojë OS se çfarë ju nevojitet? Përgjigja nuk është asnjë mënyrë. Duhet t'i tregoni në mënyrë eksplicite OS se cilin përkthyes dëshironi të ekzekutoni për të ekzekutuar një skedar të caktuar grupi. Për ta bërë këtë, rreshti i parë i skedarit tuaj duhet të ketë formën e mëposhtme standarde:

e cila do të lejojë OS të bëjë gjënë e duhur. Nëse nuk e jepni këtë informacion, OS do të supozojë (për arsye historike) se skedari është shkruar në guaskën Bourne dhe me shumë mundësi do të merrni shumë mesazhe gabimi sintaksor.

Vini re një veçori tjetër të dobishme të guaskës në modalitetin e komandës: të gjitha linjat që fillojnë me shenjën # do të shpërfillen. Kjo ju lejon të shtoni komente në tekstin e skedarit të grupit.

Fakti i mëposhtëm ju lejon të punoni me vijën e komandës duke përdorur csh: kur ekzekutoni skedarin batch mycommand, një ndryshore e brendshme me emrin argv përcaktohet automatikisht, duke përfaqësuar një sërë parametrash të linjës së komandës. Për shembull, skedari i grupit të mëposhtëm thjesht printon të gjitha argumentet e tij dhe numrin e tyre në terminal:

# Ky skedar thjesht nxjerr argumentet e tij

# dhe numri i përgjithshëm i argumenteve

jehonë Argumentet: $ argv

echo Numri i argumenteve: $ # argv

Nisja e qartë

Ju mund të përdorni një mënyrë më të drejtpërdrejtë, por më pak të përshtatshme për të nisur një skedar grupi - duke thirrur shell me çelësin e emrit të skedarit -c. Shembull:

% / bin / csh -c komanda my arg1 arg2 arg3 ...

ku emri i skedarit të ekzekutueshëm duhet të ndjekë menjëherë çelësin. Argumentet e kërkuara specifikohen më pas. Vini re se me këtë metodë ekzekutimi, skedari mund të mos ketë një atribut të ekzekutueshëm.

Kuotat

Në sintaksën e guaskës, thonjëzat luajnë një rol të rëndësishëm. Ekzistojnë tre lloje thonjëzash: të thjeshta ("), të dyfishta (") dhe të pasme (`).

Thomat e vetme përdoren për të theksuar tekstin që guaska duhet ta marrë fjalë për fjalë. Me fjalë të tjera, teksti brenda thonjëzave të thjeshta nuk i nënshtrohet zbulimit dhe interpretimit. Shembull:

jehonë "Dollari është $ i mirë"

ne marrim fjalë për fjalë Dollari është $ i mirë edhe pse shenja e dollarit është një metakarakter guaskë.

Thomat e dyfishta përvijojnë një varg karakteresh që guaska do ta interpretojë si një fjalë. Shembull:

ngjyrat e vendosura = "e kuqe blu e gjelbër"; jehonë $ # ngjyra

do të kthejë numrin 1, që do të thotë se ndryshorja e ngjyrave është e thjeshtë, jo një grup. Çdo gjë brenda thonjëzave të dyfishta interpretohet nga guaska.

Backticks ju lejojnë të përfaqësoni një varg që përbëhet nga rezultati i një komande. Pra, shprehja në kuotat e pasme trajtohet si një komandë që ekzekuton shell, dhe ajo që ajo komandë printon në dalje standarde zëvendësohet si një varg ku shfaqen kuotat e pasme. Shembull:

do të vendosë variablin mytty në linjën që prodhon komanda tty (domethënë emrin dhe numrin e terminalit aktual).

Predhat u shfaqën herët në zhvillimin e Unix dhe ishin të nevojshme sepse ishin mënyra e vetme për të ndërvepruar me sistemin. Gjatë kësaj kohe, ata kanë bërë një rrugë shumë të gjatë zhvillimi dhe kanë marrë shumë funksione të reja. Nuk është e lehtë të vlerësosh evolucionin e predhave të Linux. Ju mund të shkruani për këtë për një kohë shumë të gjatë dhe një artikull definitivisht nuk mjafton. Ne do të përpiqemi të mbulojmë vetëm më themeloret pa u zhytur shumë thellë. Së pari, le të hedhim një vështrim se çfarë është një guaskë komanda Linux dhe cilat predha ekzistojnë.

Çfarë është guaska e komandës Linux / Unix

Unix shell është një interpretues i linjës së komandës që ekzekuton komandat e futura nga përdoruesi. Fusim një komandë, ajo interpretohet, ekzekutohet dhe më pas marrim rezultatin e ekzekutimit të saj. Predha siguron ndërfaqen tradicionale të hyrjes së komandës Unix me të cilën jemi mësuar. Zakonisht ky është një ekran i zi dhe tekst i bardhë. Ne futim komanda në tekst të thjeshtë dhe gjithashtu mund të krijojmë skripta nga një ose më shumë komanda.

Predha është ndërfaqja juaj për të bashkëvepruar me sistemin. Pas hyrjes në një sistem Unix, ju e gjeni veten në një program të quajtur shell.

Thompson Shell

Sipas historisë dhe shumë burimeve të internetit, guaska e parë ishte Thompson Shell, e shkruar nga Ken Thomson në Bell Labs. Kishte 6 versione gjithsej dhe u shpërnda nga viti 1971 deri në 1975. Funksione të tilla si ridrejtimi I/O dhe konstruksionet e thjeshta të kontrollit - if, goto u mbështetën. Të gjitha predhat moderne Linux i mbështesin këto funksione.

PWB Shell

Predha PWB është një modifikim i guaskës Thomson i zhvilluar nga John Macheu. Është shkruar për të përmirësuar komoditetin e programimit të Shell. Ka struktura interesante si if-pastaj-else-endif, switch dhe unazat while.

Guaska Bourne

Unix filloi ngritjen e tij me guaskën Bourne. Ajo u shkrua nga Stefan Bourne në Bell Labs dhe u përdor si predha e paracaktuar në 1979 Unix 7. Një numër i madh funksionesh të disponueshme në predha moderne tashmë janë zbatuar këtu - plotësimi i emrit të skedarit, plotësimi i komandës, variablat standarde të mjedisit dhe strukturat e integruara të kontrollit. Bourne Shell quhej sh dhe banonte në sistemin e skedarëve Unix në / bin / sh.

Në shumë sisteme, një program Bourne shell (sh) është një lidhje simbolike ose e vështirë për një nga alternativat e tij:

  • Predha Almquist (hiri)
  • Predha Bourne-Again (bash)
  • Guaska korn (ksh)
  • guaska Z (zsh)

Shembull i skenarit për Bourne Shell:

! / bin / sh
jehonë "Përshëndetje Bota 1!"
jehonë "Hello World 2!"

Predha Almquist (hiri)

Predha Almquist, e njohur gjithashtu si A Shell. Është një guaskë e lehtë Unix e shkruar fillimisht nga Kenneth Almquist. Ajo u zhvillua në fund të viteve 1980. Ky është një modifikim i guaskës Bourne dhe zëvendëson origjinalin BSD Unix të lëshuar në 1990. Tani mund të përdoret në shpërndarje të tilla si Debian dhe Ubuntu si një version i hirit i quajtur dash (Debian Almquist shell) Është gjithashtu i popullarizuar në shpërndarjet e integruara Unix.

Është një guaskë Unux e shpejtë, kompakte dhe e përputhshme me POSTIX, prandaj mund të jetë arsyeja pse përdoret shpesh në pajisjet e integruara. Por hiri nuk mbështet historitë e komandës. Edhe pse në versionet moderne kjo veçori tashmë është shtuar.

Bourne-Again Shell (Bash)

Shkruar nga Brian Fox si pjesë e Projektit GNU si një zëvendësim falas dhe me burim të hapur për guaskën Bourne. Bash është më i popullarizuari dhe më i përdoruri nga të gjitha predhat. Të gjitha shpërndarjet Linux vijnë me këtë guaskë si parazgjedhje. Ai zgjeron funksionalitetin e Bourne Shell. Në shumicën e sistemeve Unix / Linux, kjo guaskë mund të gjendet në sistemin e skedarëve në / bin / bash. U lëshua në vitin 1989.

Për shkak të këtij popullariteti, ai u transferua në Windows dhe u shpërnda së bashku me grupet e përpiluesve Cygwin dhe MinGW. Bash përdoret gjithashtu në Android dhe mund të përdorni emulatorë të ndryshëm të terminaleve për të hyrë në të.

Ai mbështet plotësimin automatik, ridrejtimin I/O, kompletimin e komandës, variablat dhe strukturat e kontrollit për vendimmarrje (nëse-pastaj-elese nëse) dhe unazat.

Skriptet Bash fillojnë me një rresht si kjo:

Kjo guaskë linux gjithashtu mbështet leximin e komandave nga një skedar dhe ridrejtimin e daljes në një skedar ose komandë tjetër.

Shembull i kodit Bash:

! / bin / sh
nëse [$ ditë -gt 365]
pastaj
echo Kjo është më shumë se një vit.
fi

Guaska korn (ksh)

Shkruar nga David Kron dhe bazuar në burimet e guaskës Bourne. KornShell (ksh) është një guaskë e zhvilluar nga Bell Labs në vitin 1980. Është e pajtueshme me Bourne Shell dhe gjithashtu përfshin shumë veçori të guaskës C.

Ekzistojnë versionet dhe modifikimet e mëposhtme:

  • Dtksh
  • Predha MKS Korn

Shembull i skenarit:

! / bin / ksh
printimi i përdorimit të hapësirës në disk
du -k
dalja 0

guaska Z (zsh)

Paul Falstad shkroi versionin e parë me komandën zsh shell në 1990. Është një guaskë komanda Linux që mund të përdoret si një guaskë interaktive e hyrjes, një interpretues komandash shumë i fuqishëm. Në fakt Zsh është një guaskë e zgjeruar Bourne me shumë përmirësime që përfshin disa veçori nga Bash, KSH dhe Tcsh.

Emri Zsh vjen nga profesori i Yale Zhong Shao që kur Paul ishte student në Universitetin Princeton.

Funksione të tilla interesante mbështeten:

  • Përfundimi i linjës
  • Historia e përbashkët e komandave për të gjitha seancat e guaskës
  • Puna e përmirësuar me variabla dhe vargje
  • Redaktimi i linjave të shumta në një tampon
  • Korrigjimi drejtshkrimor dhe shumë më tepër.

C guaskë

Predha C njihet gjithashtu si Csh. Ajo u zhvillua nga Bill Joy kur ai ishte student në Universitetin e Kalifornisë. Kjo guaskë është shumë e zakonshme në sistemet BSD Linux. Këtu ka shumë veçori interesante, duke përfshirë strukturat e kontrollit dhe shprehjet gramatikore. Ky mbështjellës prezantoi gjithashtu një numër të madh karakteristikash interesante për herë të parë, si historia dhe mekanizmat e redaktimit, pseudonimet, CDPATH, menaxhimi i detyrave dhe hashimi, ridrejtimi i daljes, bashkëngjitja, zëvendësimi i variablave, ekzekutimi i sfondit, etj.

Ashtu si llojet e tjera të predhave Linux, ai mbështet skedarët e skriptit, ridrejtimin dhe strukturat e kontrollit. Csh tani përdoret si tcsh në shumë sisteme, si MacOS X dhe Red Hat Linux. Të dy CSH dhe Tcsh mund të përdoren në Debian.

Shembull i kodit C Shell:

! / bin / csh
nëse ($ ditë> 365) atëherë
echo Kjo është më shumë se një vit.
endif

Peshku

Fish or Friendly Interactive Shell është guaska e komandës Linux të gjeneratës së ardhshme. Është krijuar për ta bërë më të lehtë ekzekutimin e komandave nga përdoruesi, ka theksim të sintaksës, nënvizim të adresave të sakta të skedarëve, kërkim të shpejtë në histori, një konfigurues në internet, si dhe sintaksë të veçantë të skriptit.

Është një guaskë e re komanduese në Linux dhe sintaksa e saj është ndryshe nga çdo guaskë moderne, por më tepër nga gjuha e programimit Python.

Një shembull i krijimit të një funksioni në peshk:

! / usr / bin / peshk
financuar su
funksioni su
/ bin / su --shell = / usr / bin / peshk $ argv
fund
funcsave su

Këtu mund të shihni një krahasim më të detajuar të predhave në Linux.

Kaq për sot. Shpresoj se keni qenë të interesuar.

  • 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 drejtorinë në të cilën 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 "pagers" (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ë e radhës - 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 çdo program ekzekutues: rrjedha e të dhënave hyrëse STDIN, rrjedha e të dhënave dalëse STDOUT dhe rrjedha e daljes së 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ë kalohet si hyrje (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 teksti, 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