Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Iron
  • shell komandni jezik. Osnove shell programiranja

shell komandni jezik. Osnove shell programiranja

U ovom članku ćemo pokušati prikupiti najčešće korištene naredbe u SSH ili linux shell-u. Lista nije konačna, opis komandi naravno nije potpun, kompletan opis komandi možete dobiti u linux shell# man komandi.



Kombinacije vrućih tipki i Linux naredbe:

PAŽNJA: ZAPAMTITE DA SU LINUX NAREDBE osjetljive na velika i mala slova. Na primjer: Naredbe Netscape, NETSCAPE i nEtscape su tri različite komande, baš kao što su my_filE, my_file i my_FILE tri različite datoteke.

1. Prirodne prečice na tastaturi i notacije
Prelazak na prvi terminal konzole
Prebacite se na #. terminal konzole (#=1..6)
Prebacivanje na grafički terminal (ako je pokrenut)
Dopunjavanje trenutnog niza znakova upisanih u konzolu izvršnom komandom. Ova funkcija znatno olakšava život prilikom kucanja komandi! Ovo radi i kada dižete računar preko LILO-a!
Pregledajte i uredite bafer historije komandi. Pritisnite da izvršite naredbu.
Pregledavanje teksta prikazanog na terminalu konzole i izvan ekrana. Kreni gore.
Isto kao gore. Kreni dole.
[+] (u X-windows) Promjena rezolucije. Prebacite se na sljedeću konfiguraciju.
[-] (Na X-windows) Promjena rezolucije. Vratite se na prethodnu konfiguraciju.
(u X-windows) Ubijte trenutni X-windows server (izađite iz grafičke ljuske, ubijte sve procese). Ubijte trenutni proces.
d Izađite iz trenutnog terminala (obično radi).
d Slanje [End-of-file] (end-of-file) signala trenutnom procesu.
s Zaustavite izlaz na terminal.
q Nastavak izlaza na terminal. Isprobajte ovu kombinaciju tipki ako je vaš terminal prestao reagirati bez razloga.
z Pošaljite trenutni proces u pozadinu.
resetovati Vraćanje zadanih vrijednosti za "pokvareni" terminal (terminal pokazuje čudne znakove i neadekvatno reagira na pritiske tipki). Koristite ovu naredbu ako pokušavate prikazati binarnu datoteku. Verovatno nećete moći da vidite ovu naredbu dok je kucate.
~ Moj kućni imenik. Na primjer cd ~/my_subdirectory.
. (tačka) trenutni imenik.
.. (dvije tačke) Roditeljski direktorij za trenutni direktorij.

2. Standardne komande i komande koje daju informacije o sistemu
pwd Navedite trenutni direktorij.
ime hosta Prikažite ili promijenite naziv mreže uređaja.
ko sam ja Unesite ime pod kojim sam registrovan.
datum Prikažite ili promijenite datum i vrijeme. Na primjer, da postavite datum i vrijeme na 2000-12-31 23:57, pokrenuli biste naredbu: date 123123572000
vrijeme Dobijte informacije o vremenu koje je potrebno za završetak procesa + neke druge informacije. Nemojte brkati ovu naredbu sa datumom. Na primjer: mogu odrediti koliko je vremena potrebno za popis datoteka u direktoriju upisivanjem: time ls
SZO Odredite koji korisnik radi na mašini.
rwho-a Identifikujte sve korisnike koji su povezani na vašu mrežu. Ova naredba zahtijeva da se pokrene proces rwho. Ako ne, pokrenite "setup" kao superkorisnik.
prst [korisničko ime] Sistemske informacije o registrovanom korisniku. Pokušajte: korijen prsta
vrijeme rada Količina vremena koja je protekla od posljednjeg ponovnog pokretanja.
ps a Lista trenutnih procesa.
top Interaktivna lista trenutnih procesa sortirana prema upotrebi procesora.
uname Prikaz informacija o sistemu.
besplatno Preuzmi informacije iz memorije.
df-h(=prostor na disku) Prikaz informacija o slobodnom i korištenom prostoru na disku (u čitljivom obliku).
du/-bh | više(= ko je koliko uzeo) Prikaz detaljnih informacija o veličini fajlova po direktorijumima počevši od korena (u čitljivom obliku).
mačka /proc/cpuinfo Informacije o sistemu procesora. Imajte na umu da datoteke u /proc direktoriju nisu stvarne datoteke. Koriste se za dobijanje informacija poznatih sistemu.
cat /proc/interrupts Korišteni prekidi.
cat /proc/version Verzija Linux kernela i druge informacije
cat /proc/filesystems Prikaz trenutno korištenih tipova sistema datoteka.
mačka /etc/printcap Prikaži postavke štampača.
lsmod(kao root) Prikaz informacija o trenutno učitanim modulima kernela.
postavi|više Prikažite trenutne vrijednosti varijabli okruženja.
echo $PATH Ispis vrijednosti varijable okruženja "PATH" Ova naredba se može koristiti za ispis vrijednosti drugih varijabli okruženja. Koristite naredbu set za kompletnu listu.

3. Umrežavanje
netconf(kao root) Vrlo dobar program za podešavanje mreže koji koristi tekstualni meni za interaktivno korisničko iskustvo.
ping [ime hosta]"Provjera vaški". Bez obzira da li postoji kontakt sa drugom mašinom (možete proslediti mrežno ime mašine ili IP adresu kao parametar komandi), pritisnite -C kada primite sve potrebne informacije.
ruta-n Prikažite tabelu rutiranja.
ipfwadm -F -p m Postavite zaštitni zid.
ifconfig(kao root) Štampajte informacije o trenutnim mrežnim interfejsima (ethernet, ppp, itd.) Vaša prva eternet kartica će biti prikazana kao eth0, druga kao eth1, prvi ppp modem kao ppp0 i tako dalje. "lo" - znači "samo povratna petlja" mrežni interfejs, koji mora biti trajno aktiviran. Koristite odgovarajuće opcije (pogledajte izlaz ifconfig --help) da konfigurišete mrežna sučelja.
ifup [ime_mrežnog_interfejsa](/sbin/ifup kada se pokreće kao običan korisnik) Aktivirajte odgovarajući mrežni interfejs. Na primjer: ifup eth0 ifup ppp0. Korisnik može omogućiti i onemogućiti ppp mrežni interfejs samo kada su postavljene odgovarajuće dozvole (dozvole se mogu postaviti tokom ppp konfiguracije preko "netconf")
ifdown [interface_name](/sbin/ifdown kada se pokreće kao običan korisnik). Deaktivacija odgovarajućeg mrežnog interfejsa.

4. Najjednostavnije akcije
ls Lista datoteka u trenutnom direktoriju. Komanda dir izvršava naredbu ls.
cd [direktorij] Promijenite imenik.
cp [šta kopirati][gdje kopirati] Kopiraj fajlove.
mcopy [šta kopirati][gdje kopirati] Kopirajte datoteke kada radite sa dos sistemom datoteka (nije potrebno montirati dos disk). Na primjer: mcopy a:\autoexec.bat ~/junk . Za više informacija o sličnim naredbama (mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....) pogledajte man mtools.
mv [šta preseliti][kamo se preseliti] Premjestite ili preimenujte datoteku.
ln -s [veza na] [naziv veze] Kreirajte simboličku vezu.
rm [fajlovi] Izbrišite fajlove.
mkdir [direktorij] Kreirajte novi direktorij.
rmdir [direktorij] Izbrišite prazan direktorij.
rm -r [datoteke i/ili direktoriji](rekurzivno brisanje) Brisanje datoteka, direktorija i njihovih poddirektorija. OPREZNO s ovom komandom ako imate prava superkorisnika! Linux za sada nema sistem za potpuno obnavljanje izbrisanih datoteka (osim ako koristite posebne programe za stavljanje izbrisanih datoteka u poseban direktorij - a la korpa pod W95).
mačka [naziv datoteke] | više Pregledajte sadržaj tekstualne datoteke jednu po jednu stranicu.
manje [naziv datoteke] Pregledajte sadržaj tekstualne datoteke s mogućnošću povratka na prethodne stranice. Pritisnite q kada želite da izađete iz programa. "Manje" je analogno DOS komandi "više", iako je vrlo često "manje" pogodnije od "više".
pico [naziv fajla] Uredite tekstualni fajl.
ris Pregledanje html datoteke ili WWW linka koristeći Lynx tekstualni pretraživač.
tar -zxvf [fajlovi] Raspakujte tgz ili tar.gz arhivu koju ste izvukli sa neta.
pronađi / -name "ime datoteke" Pronađite datoteku pod nazivom "ime datoteke". Pretraživanje počinje iz direktorija / . "filename" može sadržavati masku za pretraživanje.
bor Dobar tekstualno orijentisan čitač e-pošte. Drugi sličan program se zove "brest". Netscape čita vaše e-poruke sa vaše internet adrese, a pine vam omogućava da vidite "lokalnu" poštu - to jest poštu koju vam šalje sin ili cron proces.
mc Pokrenite program za upravljanje datotekama "Midnight Commander" (izgleda kao "Norton Commander", ali je bliži daleko ili dn po svojim mogućnostima).
telnet [server] Telnet na drugu mašinu. Koristite naziv mašine ili njegovu IP adresu. Prijavite se sa svojom lozinkom (morate biti prijavljeni na ovu udaljenu mašinu). Ovo će vam omogućiti da se prijavite na drugu mašinu i radite na njoj kao da sjedite za njenom tastaturom (skoro da nema razlike).
ftp [server] Komunicirajte putem ftp-a sa udaljenim računarom. Ova vrsta veze je dobra za kopiranje datoteka sa/na udaljenu mašinu.

5. Komande osnovne administracije
alat za štampanje(kao root u X terminalu) Konfigurišite svoj štampač.
postaviti(kao root) Konfigurišite miš, zvučnu karticu, tastaturu, X-windows GUI i sistemske usluge. Veoma jednostavan za korištenje program.
alias ls="ls -Fskb --color" Kreirajte pseudonim - alias tako da jedna naredba može pokrenuti složeniju kombinaciju naredbi. Postavite kreiranje aliasa u /etc/bashrc ako želite da ovi pseudonimi budu dostupni svim korisnicima na vašem sistemu.
adduser [korisničko ime] Registrujte novog korisnika (morate imati prava superkorisnika). Na primjer: adduser ivanov . Ne zaboravite sljedeće postaviti korisničku lozinku. Korisnički direktorij se nalazi u direktoriju /home/username.
useradd [korisničko ime] Isto kao adduser.
userdel [korisničko ime] Uklonite korisnika sa sistema (morate biti prijavljeni kao root). Korisnički imenik i nepročitane poruke udaljenog korisnika moraju se rješavati odvojeno.
groupadd [naziv grupe] Kreirajte novu korisničku grupu na vašem sistemu. Nije potrebno kreirati grupu direktno na glavnoj mašini.
passwd Promijeni lozinku. Ako ste superkorisnik, tada možete promijeniti lozinku bilo kog registrovanog korisnika upisivanjem naredbe: passwd korisničko ime
chmod [dozvole][fajl](=promjena moda) Promijenite dozvole datoteka koje posjedujete (ako ste root, u tom slučaju možete promijeniti dozvole bilo kojeg fajla). Postoje tri načina za pristup datoteci: čitanje - čitanje (r), pisanje - pisanje (w), izvršavanje - izvršavanje (x) i tri tipa korisnika: vlasnik datoteke - vlasnik (u), članovi iste grupe kao i vlasnik fajla (g) i svi ostali (o). Trenutna prava pristupa možete provjeriti na sljedeći način: ls -l ime datoteke. Ako je datoteka dostupna na sve načine svim korisnicima, sljedeća kombinacija slova će biti nasuprot naziva datoteke: rwxrwxrwx. Prva tri slova su dozvole za vlasnika/vlasnika datoteke, druga trojka su dozvole za njegovu/njenu grupu, sljedeća tri su dozvole za ostale. Nedostatak dozvole se prikazuje kao "-".; Na primjer: Ova naredba će vam omogućiti da postavite dozvole za čitanje datoteke "junk" svima (svi=korisnici+grupa+ostali):
chmod a+r junk
Ova komanda će oduzeti pravo na izvršavanje fajla svima osim korisnika i grupe:
chmod o-x smeće
Za više informacija upišite chmod --help ili man chmod ili pročitajte bilo koji priručnik za Linux.
Možete postaviti zadane dozvole za datoteke koje kreirate pomoću naredbe "umask" (ukucajte man umask).
chown [new_master][files]
chgrp [nova grupa][fajlovi] Promijenite vlasnika i grupu za fajl.
Ove dvije komande možete koristiti nakon što napravite kopiju datoteke za nekog drugog. su(=super korisnik) Prijavite se kao superkorisnik (od vas će se tražiti vaša lozinka). Upisivanjem "exit" vratit ćete se na vašu prethodnu korisničku ljusku. Root korisnik postoji da administrira sistem, a naredba su vam daje brz pristup mogućnostima superkorisnika kada su vam potrebne. Nikada se ne prijavljujete kao root, u tu svrhu koristite naredbu su.

6. Kontrola procesa
ps(=štampanje statusa) Štampajte listu trenutnih procesa sa njihovim ID-ovima (PID-ovima). Koristite ps axu da navedete sve procese koji se pokreću na vašem sistemu koji vas imaju kao vlasnika (ovo također uključuje procese koji su odvojeni od terminala).
fg Vratite pozadinski ili suspendovani proces u interaktivno (visoki prioritet) stanje;
bg Napravite pozadinu procesa. Inverzna funkcija iz fg. Može slijediti kombinaciju z.
ubiti"Ubiti" proces. Prvo odredite PID "ubijenog" procesa koristeći ps.
killall [naziv programa]"Ubiti" sve procese po imenu programa.
lpc(kao root) Provjerite red za štampanje.
lpq Navedite red zadataka za štampanje.
lprm [Broj posla] Uklonite zadatak iz reda čekanja za štampanje.
lijepo [ime programa] Započnite proces postavljanjem njegovog prioriteta.
renice Promijenite prioritet procesa.

Obratite pažnju na kombinacije tastera: c, z, s i q. Oni su opisani ranije u odjeljku Prirodne prečice na tipkovnici i notacije.

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

LABORATORIJSKI RAD br. 1 (vrijeme za izvođenje - 3 sata)

Predmet: „Uvod uškoljka

1. Uvod u ljusku

Shell je interpreter komandi (komandni procesor) koji djeluje kao sučelje između korisnika i Unix kernela. Solaris nudi tri glavne ljuske:

    Podrazumevana Bourneova ljuska je /sbin/sh

    C ljuska -- /bin/csh

    Korn komandni procesor-- ./bin/ksh

Pored navedenih, Solaris nudi dodatne školjke:

    J shell -- /sbin/jsh

    Ograničeno Korn l -- / usr/ bin/rsh

    T-ljuska -- /usr/bin/tcsh

    GNU Bourne Opet -- /usr/bin/bash

    Z shell - usr/bin/zsh

Izbor školjke je stvar ličnih preferencija.

2. Pokrenite komande

Svaka naredba u Unixu sastoji se od imena programa koji se pokreće (komanda), opcija (prekidača) i argumenata koji se prosljeđuju programu. Razdjelnici komandne linije su razmaci ili tabulatori.

Primjer

$ /bin/ping –t 10 192.168.2.13

argument

shell prompt

Ako putanja do izvršne datoteke nije navedena pri pokretanju programa, tada OS sekvencijalno pregledava direktorije navedene u varijabli PATH. Ako u pregledanom direktoriju postoji program sa istim imenom, tada se pokreće za izvršenje. Trenutni radni direktorij se ne traži prilikom traženja programa osim ako nije postavljen u varijablu PATH.

! Iz sigurnosnih razloga, administratoru se savjetuje da ne dodaje trenutni korisnički imenik i kućni (lični) direktorij u PATH varijablu.

Primjeri

Pokretanje programa sa punom putanjom

$ / usr/ lokalni/ bin/ moj_ program

Pokretanje programa iz višeg (roditeljskog) direktorija

$ ../ lokalni/ bin/ moj_ program

Pokretanje programa iz trenutnog direktorija

$ ./ moj_ program

3. Posebni znakovi u ljusci

Neki znakovi u ljusci imaju posebna značenja.

3.1. Obrasci generiranja imena datoteka

? (upitnik) odgovara bilo kojem pojedinačnom znaku osim prve tačke;

(uglate zagrade) definirati grupu simbola (odabira se jedan simbol iz grupe);

- (znak minus") definira raspon važećih znakova;

! (uzvičnik) odbacuje grupu znakova koji slijede;

* (simbol zvijezde) odgovara bilo kojem broju znakova osim prve tačke.

3.2. Simboli za I/O preusmjeravanje

< - preusmjeravanje unosa;

>, >> - preusmjeravanje izlaza;

2>, 2>> - preusmjeravanje poruka o greškama;

| - konvejer.

3.3. Zamjenski simboli

$varijable_nameq - varijabilna supstitucija;

$(naredba) ili `naredba` - zamjena komandi;

~ - zamjena tilde.

4. Pretraga

Za brzu pretragu fajlova i direktorijuma koristi se komanda whereis, a za dublju komandu find (traži fajlove koji ispunjavaju navedene uslove;).

5. vi uređivač teksta

Vi uređivač teksta je univerzalni uređivač teksta koji se nalazi na bilo kojem Unixu. Pored uređivanja tekstualnih datoteka, vi editor se može koristiti za uređivanje komandne linije.

Vi editor ima 3 načina rada (vidi sliku).

Ulazak u vi editor

Izlaz iz vi

Znak ”~” (tilda) na prvoj poziciji označava prazne (nepostojeće) redove datoteke.

Glavni način rada je naredba, u kojoj se komande unose pritiskom na određeni niz tipki (ni na koji način se ne prikazuju na ekranu).

Kretanje kroz tekst u komandnom režimu se vrši pomoću strelica i tastera (lijevo) (dolje), (gore), (nadesno).

Neke vi komande su navedene u tabeli.

Izbrišite trenutnu liniju

Kopiraj trenutni red u međuspremnik

Pokret kursora

Stavljanje znakova označenih kursorom u bafer

Umetnite novi red na dnu

Umetnite novu liniju na vrhu

Dodaj nakon kursora

Dodati nakon trenutnog reda

Zalijepi prije kursora

Umetni ispred trenutnog reda

Zamjena znaka znakom unesenim s tastature

Zalijepite tekst iz međuspremnika

. (tačka)

Ponovite posljednju izvršenu naredbu

Otkaži posljednju komandu

Poništite sve promjene u trenutnoj liniji

Izbrišite znak iznad kursora

U načinu unosa, svi znakovi upisani na tastaturi se ubacuju u tekst.

U modu zadnjeg reda, komanda koju unesete se prikazuje u posljednjem redu ekrana.

6. Pomoć

Unix ima elektronski priručnik koji sadrži opis svrhe naredbi, njihovu sintaksu, primjere upotrebe itd. Priručnik se poziva naredbom man:

7. Osnovne naredbe ljuske

SZO– prikaz informacija o aktivnim korisnicima;

echo– izlazne poruke terminalu;

banner– izlazne poruke terminalu velikim slovima;

covece– pozivanje online sistema pomoći;

datum – izlaz tekućeg datuma;

pisati– prijenos poruka na terminal drugog korisnika;

mesg– dozvola/zabrana prikazivanja poruka od drugih korisnika;

mail– slanje/prijem pošte;

vijesti- upoznavanje sa novostima sistema;

pwd– prikazati naziv apsolutne putanje trenutnog radnog direktorija;

cd– promjena radnog imenika;

ls– prikaz informacija o sadržaju imenika;

mkdir- kreiranje imenika;

rmdir– brisanje imenika;

dodir– ažuriranje vremenske oznake datoteke;

k.č– kopiranje fajlova;

mačka- spajanje i prikaz sadržaja fajlova;

više– paginacija sadržaja datoteke.

mv – premještanje ili preimenovanje datoteke;

rm– brisanje fajla;

alias– stvaranje pseudonima;

tr– transformacija karaktera;

Izlaz- završetak tekućeg školjka-ali;

tee– presretanje rezultata cevovoda;

cut – izbor polja iz niza;

grep– pretraživanje po uzorku;

pr– izlaz datoteke u standardni izlaz u navedenom formatu;

sortiraj- sortiranje;

glava– izlaz prvih redova datoteke;

rep- izlaz zadnje linije datoteke;

toalet- brojanje znakova, riječi i redova;

čitaj, echo - čitanje i prikazivanje varijabilnih vrijednosti;

test- evaluacija vrijednosti izraza;

ekspr, neka- izračunavanje aritmetičkih izraza;

8. Shell-programi

Shell vam omogućava da sačuvate niz naredbi u datoteci i zatim je izvršite. Da biste pokrenuli datoteku sa shell programom za izvršenje, trebate dodati pravo izvršenja pravima pristupa:

$ chmod +x program_file_name

Grananje u shell programima je organizirano pomoću operatora:

ako-onda-drugo

Izjave petlje:

VJEŽBE

1. Koja od sljedećih naredbi će rezultirati porukom dobrodošlice koja se prikazuje na ekranu? Šta nisu? Zašto?

$ echo zdravo

$ echo zdravo

$ echo ZDRAVO, SVIJETE

$ banner zdravo

$ BANNER ZDRAVO, SVIJET

2. Odštampajte poruku iz više redova koristeći komande echo I banner.

3. Ispišite datum u dva reda: u prvom redu - dan, mjesec, godina, u drugom redu - trenutno vrijeme, dajući izlaz sa komentarom.

4. Korištenje komande pisati, pošaljite poruku na konzolu. Šaljite poruke na više terminala u isto vrijeme.

5. Korištenje komande mesg, odredite da li su poruke dozvoljene na vašem terminalu. Onemogući poruke. Kakva će biti reakcija sistema ako vam neko pokuša poslati poruku?

6. Imenujte svoje DOM-katalog.

7. Pregledajte podstablo direktorija počevši od /export/home direktorija koristeći naredbe cd, ls I pwd.

8.. Kreirajte u svom DOM-poddirektorijumi imenika u obliku:

voćno cveće

jabuka kruška grožđe ruža ljubičica maslačak

tamno zelena

9. Biti u svom DOM-directory, kreirajte sljedeće poddirektorije koristeći jednu komandnu liniju:

A B C D

10. Biti u svom DOM-direktorij, obrišite sve poddirektorije direktorija A.

11. Biti u DOM-direktorij, kreirajte datoteku Macintosh u postojećem katalogu jabuka i nekoliko fajlova u direktorijumima mračno I zeleno. Uđite u katalog fspušta. Biti u imeniku fspušta, kopirajte sve poddirektorije fruits zajedno sa datotekama koje sadrže u posebno kreirani direktorij korpa.

12. Biti u katalogu fspušta, uklonite direktorij fruits.

13. Pročitajte datoteku .profil koristeći komande mačka I više.

14. Kreirajte u DOM- tekstualna datoteka direktorija myfile iz više redova sa naredbom mačka. Kreirajte tekstualni fajl MyFile, upisivanjem istih redova u njega. Koliko ste fajlova dobili? Zašto?

15. Pregledajte sadržaj datoteke kreirane u zadatku 2.2 myfile. Kopirajte datoteku myfile da fajl mycopy. Pogledajte sadržaj oba fajla.

16. Premjestite datoteku mycopy u katalog cveće.

17. Biti u DOM-direktorij, kreirajte link myveza po fajlu mycopy nalazi se u imeniku cveće. Pogledajte fajl linka.

18. Dodajte red u datoteku mojveza. Koji od fajlova mojveza, mojkopija, mojfajl promijenio? Zašto?

19. Koja se naredba može koristiti za određivanje broja veza? Odredite broj veza za datoteke mojveza, mojkopija, mojfajl.

Izbriši fajl mycopy. Šta se dogodilo sa link fajlom? Odredite broj veza za datoteke mojveza, mojfajl.

20. Kreirajte pseudonim dir An koji ispisuje sadržaj trenutnog direktorija u proširenom formatu.

21. Odjavite se i ponovo se prijavite. Radi li pseudonim? dir? Šta treba učiniti da se alias ne bi "izgubio" između sesija?

22. Kreirajte pseudonim tačka, koji ispisuje listu datoteka u radnom direktoriju čija imena počinju tačkom.

23. Korišćenje komande dodir, kreirajte datoteke u novom direktoriju s takvim imenima da u isto vrijeme:

Predložak a* podudarno 5 fajlova;

Predložak * a podudaraju se 4 fajla;

Predložak ??.? podudarna 3 fajla;

Predložak * aa* podudaraju se 2 fajla;

Šablon??? odgovara 1 fajlu.

24. Koju komandu treba uneti da bi se uradilo sledeće:

a) prikazati imena svih fajlova koji počinju sa tačkom;

b) prikazati imena svih datoteka koje se završavaju na ".poruka";

c) ispisati nazive svih datoteka koje sadrže tu riječ "moj";

25. Promijenite sva mala slova u velika u jednoj datoj datoteci, sva velika slova u mala u drugoj. Uklonite sve duple razmake iz datoteke.

26. Kreirajte datoteku pod nazivom * . Izbrišite samo ovaj fajl. Budite oprezni kada koristite znakove za generiranje imena datoteke!

27. Kreirajte datoteku sa znakom razmaka u imenu. Kako izbrisati takav fajl?

28. Korišćenje komande mačka udvostručite sadržaj datoteke dodavanjem originalnog sadržaja na kraj iste datoteke. Idi na imenik cveće. Dodaj u fajl lista lista sadržaja direktorija cveće. Pogledajte sadržaj datoteke

29. Pokušajte čitati pomoću naredbe mačka nepostojeći fajl. Kakva je reakcija sistema? Uradite isto tako što ćete preusmjeriti poruke o grešci u datoteku myerror. Šta vidite na ekranu? View File myerror.

30. Kreirajte cjevovod da ispišete samo imena i dozvole datoteka koje se trenutno nalaze u vašem radnom direktoriju.

31. Promijenite izgrađeni cjevovod tako da lista bude pohranjena u datoteci lista Tvoja je njegova DOM-direktorijum, a prikazan je samo broj fajlova na listi.

32. Prikažite sadržaj datoteke /etc/passwd, sortirano prema polju korisničkog imena.

33. Kreirajte pseudonim loggedon, koji će prikazati abecedno poređanu listu imena korisnika koji su trenutno prijavljeni na sistem.

33. Prikažite trenutni datum velikim slovima koristeći komande datum I banner.

34. Dodijelite varijablu JA SAM Vaše registracijsko ime. Pokreni još jednu školjka. Vidite li ovu varijablu? Šta treba učiniti da se to vidi u generisanom školjka? Promijenite vrijednost varijable JA SAM u generiranoj školjka. Izlaz se pojavio školjka. Pogledajte vrijednost ove varijable u originalu školjka. Objasnite rezultat.

35. Pišite školjka-program info, koji će od korisnika tražiti da unese ime, adresu, dan, mjesec i godinu rođenja i prikaže ove informacije obrnutim redoslijedom

36. Pišite školjka- program koji će prikazati poziv za unos broja, pohraniti uneseni broj u varijablu Y i odštampajte poruku “Y je veći od 7”, ako vrijednost Y veće od 7, i “Y jene veći nego 7” inače.

37. Napišite shell program koji prikazuje sljedeće statistike:

a) vaše ime;

b) broj argumenata sa kojima se pokreće;

c) ispisuje svaki od svojih argumenata i dužinu argumenta u znakovima;

38. Pišite školjka-program koji određuje broj argumenata na komandnoj liniji i izdaje poruku o grešci ako broj argumenata nije jednak tri, ili samih argumenata ako je njihov broj jednak tri.

39. Pišite školjka- program koji će izdati upit za unošenje korisničkog ID-a, provjeriti usklađenost ID-a sa onima koji se koriste u sistemu i prikazati puno ime DOM-direktorij ili, u slučaju nevažećeg identifikatora, izdati poruku o grešci.

40. Napišite shell program zdravo, pružajući sljedeći odgovor na argumente komandne linije:

Argument “-d”- program će izvršiti naredbu datum;

Argument “-l”- program će prikazati sadržaj trenutnog direktorija;

    ako nema argumenata ili nevažećih argumenata na komandnoj liniji, program će prikazati pomoć o svojim opcijama.

41. Napišite program riječi, što će od korisnika tražiti da unese jednu po jednu riječ dok ne unese riječ kraj. Zapamtite sve unesene riječi. Nakon unosa riječi kraj prikazati sve unete reči na ekranu.

42. Promijenite sistemski prompt da uključuje punu stazu trenutnog radnog direktorija .

43. Napišite program virus, koji kreira izvršnu kopiju sebe s drugim imenom, a zatim se briše.

44. Napišite program virus2 , koji pretražuje trenutni direktorij za programe na komandnom jeziku i dodaje njihovom tekstu naredbu za prikaz riječi inficiran!”.

45. Napišite program virus3 , koji dodaje sopstveni kod programima na komandnom jeziku koje pronađe da zarazi druge programe.

46. ​​Napišite program virus4 modifikacijom vašeg virusa tako da se zarazni kod uklanja iz programa zaraze, kada se zarazi.

47. Napišite program antivirus, koji bi pronašao sve shell programe zaražene vašim virusom.

48. Izmijeniti razvijeni program tako da ne samo da pronalazi zaražene programe u direktoriju koji je odredio, već ih i "liječi", spremajući zaraženu verziju u novu datoteku, na čije ime je kraj . vir, i uklanjanje atributa izvršavanja iz takve datoteke.

49. Napišite program virus5 , što bi:

a) bi zarazio shell programe u trenutnom direktoriju i njegovim poddirektorijumima virusom samo ako je korisnik unio naredbu ls;

b) ponašati se kao tim ls, bez davanja ništa na terminalu svog rada.

50. Napišite virus6 program na osnovu programa virus2 -virus5 , čiji zarazni kod nije mogao biti otkriven programom koji ste vi razvili antivirus, a infekcija bi se dogodila pri bilo kojoj vrijednosti varijable PUT.

51. Napišite program supervirus, čije pokretanje inficira vaše fajlove virusom razvijenim u prethodnom zadatku, a svaki put kada se prijavite na sistem, pokušava se zaraziti fajlove vaših drugova. Program supervirus briše se nakon prvog pokretanja.

52. Napišite program superantivirus, koji otkriva i potpuno "liječi" (ako je navedena odgovarajuća opcija) sve datoteke u navedenom direktoriju i njegovim poddirektorijumima od svih razvijenih virusa.

Ovaj odjeljak pruža dokumentaciju koja pomaže programeru u jezicima ljuske (sh, bash, ksh i drugi)

c-shell interpreter komandi

0. Uvod

Interpretator komandi u UNIX okruženju obavlja dvije glavne funkcije:

predstavlja interaktivni interfejs sa korisnikom, tj. izdaje pozivnicu i obrađuje komande koje je korisnik unio;
obrađuje i izvršava tekstualne datoteke koje sadrže komande interpretatora (batch datoteke);

U drugom slučaju, operativni sistem dozvoljava da se batch fajlovi tretiraju kao neka vrsta izvršne datoteke. Shodno tome, razlikuju se dva načina rada interpretatora: interaktivni i komandni.

U UNIX okruženju (za razliku od, recimo, DOS-a), dostupno je nekoliko različitih ljuski. Navodimo najpopularnije:

/bin/sh - Bourne školjka. Istorijski gledano, ovo je prva komandna ljuska razvijena za prvu verziju UNIX operativnog sistema. Ova ljuska je trenutno glavna ljuska u verzijama UNIX System V.
/bin/csh - C-ljuska. Shell čija je sintaksa komandnog jezika bliska jeziku C. To je glavna ljuska za Berkeley varijantu UNIX operativnog sistema.
/bin/ksh - k-ljuska.
/bin/rsh - Ograničena školjka. To je sh s ograničenim mogućnostima (prvenstveno da zaštiti OS od neovlaštenih radnji korisnika).

ConvexOS operativni sistem je 4.3 BSD UNIX()BSD - Berkeley Series Distribution varijanta i stoga je osnovna ljuska csh.

1. Glavne karakteristike

Rad sa komandnom linijom

Interpretator percipira string koji je ukucao korisnik kao naredbu (ili nekoliko naredbi). Sintaksa ljuske vam omogućava da kucate

više naredbi u jednom redu odvojenih tačkom i zarezom. Na primjer

je ekvivalentno dvije uzastopne naredbe:

Naprotiv, ako želi, korisnik može

nastavite kucati dugu naredbu u sljedećem redu, završavajući trenutni red sa \\. Primit ćete ``sekundarni prompt''> umjesto glavnog prompt-a (%) dok se naredba ne završi. Na primjer,

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

ekvivalentno

% tar tv Makefile star.o \

> star.c star.dat \

I/O tokovima se upravlja na sličan način kao DOS (Tačnije, DOS je usvojio sintaksu preusmjeravanja tokova iz UNIX-a) pomoću simbola > , > > ,

Koristan poseban slučaj korištenja mehanizma za preusmjeravanje toka je preusmjeravanje na /dev/null, što vam omogućava da se riješite nepotrebnih poruka na ekranu. Koristeći isti mehanizam, možete kreirati prazne datoteke:

će kreirati praznu datoteku myfile u trenutnom direktoriju.

Dodatno, C-shell vam omogućava da grupišete komande koristeći zagrade. U ovom slučaju, čitavu strukturu unutar zagrada interpretator tretira kao jednu naredbu. Ovo je korisno, na primjer, u takvim konstrukcijama:

%(komanda1|komanda2)

Ako izostavite zagrade, ljuska neće moći odrediti koju od naredbi želite da unesete u datoteku myfile.

Sljedeće ``pogodnosti'' postoje u ovoj implementaciji C-ljuske:

Ne možete otkucati dugu naredbu do kraja, ali pokušajte nakon djelomične komande (ili naziva datoteke) pritisnuti tipku tab. C-shell će sam pokušati upotpuniti znakove koji nedostaju ili će odgovoriti škripom ako je izbor dvosmislen.
Ako ste otkucali komandu, ali ste zaboravili njene opcije, otkucajte sekvencu H. C-ljuska će vam dati kratku pomoć. Na primjer,

Kada kucate puno ime datoteke, koristite kombinaciju tastera ^D. Možete dobiti popis direktorija koji se upisuje u formatu naredbe lf.
Bafer komandi pamti poslednjih 20 komandi. Umjesto da kucate naredbu, možete je pozvati iz bafera pomoću tastature sa strelicama (naravno, samo ako je ova naredba u baferu).

Parsing komandne linije

Interpretator, nakon što je primio komandnu liniju, vrši niz transformacija na njoj, i to:

Proširuje pseudonime (alias)
Proširuje metakaraktere (*, ?, [, ], ~, (, ))
Zamjenjuje varijable ljuske
Izvršava naredbu ako je ugrađena naredba interpretatora, ili pokreće proces ako je naredba vanjska.

Razložimo ove korake korak po korak.

Alijasi (alias). Ugrađena naredba alias vam omogućava da definirate pseudonime komande. primjer:

% alias mycat "mačka | više"

definira mycat kao pseudonim za string cat | više. Stoga, tada možete koristiti naredbu mycat, koju će tumač proširiti gdje god da je koristite. Ovo je način definiranja kratkih imena za duge složene naredbe.

Ugrađena naredba unalias mycat uklanja prethodno uneseni mycat alias.

Metakarakteri. Metaznakovi vam omogućavaju da sažeto napišete čitave liste riječi (uglavnom imena datoteka). Shell tretira riječ koja sadrži metaznakove kao predložak za navođenje imena datoteka:

* u uzorku zamjenjuje bilo koji niz znakova. Na primjer, m* će se proširiti na listu svih datoteka koje počinju slovom m. Postoji mali izuzetak od ovog pravila: jednostavno * izostavlja one datoteke na listi čija imena počinju tačkom.
? zamjenjuje jedan znak. Na primjer m? proširuje se na listu svih imena datoteka koja počinju slovom m i koja se sastoji od tačno dva slova.
[.-.] vam omogućava da odredite razmak za zamijenjeni znak. Na primjer, m bi se proširio na ma mb mc me.
(...,...) vam omogućava da navedete riječi za zamjenu. Tako će, na primjer, m(crvena, plava, zelena) biti proširena na mred mblue mgreen.

Konačno, tilda vam omogućava da odredite korisnikov početni direktorij:

~name/ je ekvivalentno određivanju pune putanje do početnog direktorija korisničkog imena (Recite /usr1/name/)
~/ je ekvivalentno davanju pune putanje do vašeg vlastitog matičnog direktorija.

shell varijable. Riječi koje počinju simbolom $ shell tumači kao imena varijabli. Varijable se dijele na varijable okruženja (one će biti poznate svim programima pozvanim iz ove ljuske i globalne su u tom smislu) i jednostavne varijable.

Ugrađena naredba set name=value vam omogućava da definirate jednostavnu varijablu pod nazivom ime i date joj vrijednost vrijednosti. Nakon što se susreće sa izrazom $name u komandnoj liniji, tumač će ga zamijeniti vrijednošću. Na primjer,

% postavljena boja=plava

će ispisati niz plave boje na terminal. ALI

% postavljena boja=plava

% echo new$color

će dati newblue. Konačno, ulaskom

% postavljena boja=plava

% echo $(boja)novo

dobijamo novu boju. Posljednji primjer pokazuje kako koristiti vitičaste zagrade za izdvajanje imena varijable iz riječi (interpretator bi odgovorio na echo $colornew da varijabla colornew nije definirana.

Naredba unset uništava prethodno definirane varijable.

Da biste definirali varijablu kao niz od više riječi, stavite je u jednostruke navodnike. Primjer

% set color="plava ili crvena ili zelena"

Jednostavne varijable mogu biti nizovi riječi (što se mora razlikovati od slučaja koji je upravo razmatran, kada varijabla sadrži niz od nekoliko riječi. Za deklariranje niza se moraju koristiti zagrade:

% postavljenih boja=(plavo crveno zeleno)

Sada će naredba echo $colors proizvesti niz od tri boje (probajte!). Međutim, možete raditi i na pojedinačnim elementima niza (elementi su numerirani od nule), na sljedeći način:

(pozeleni). Broj elemenata u nizu sadržan je u varijabli $#colors.

će terminalu dati broj 3.

Moguće su prilično složene kombinacije pomoću uzoraka, na primjer:

% set fajlova=(m*)

će vratiti broj datoteka u trenutnom direktoriju koji počinje slovom m.

Varijable okruženja se pozivaju na potpuno isti način kao i jednostavne varijable. Razlika je u načinu na koji su definisani:

Naredba % setenv name value postavlja varijablu okruženja pod nazivom name. Obratite pažnju na dosadnu razliku u sintaksi: ne morate koristiti znak = kada definirate varijablu okruženja.

Lista svih varijabli okruženja može se dobiti pomoću ugrađene printenv komande.

Možete dedefinirati varijablu okruženja sa unsetenv.

Konačno, zagrade se NE koriste za definiranje niza varijabli okruženja, ali se dvotočke koriste kao separatori niza:

% setenv MANPATH /usr/man/:/usr/local/man:/usr/man/X11:~/man

Ugrađene komande i varijable

Lista najvažnijih ugrađenih naredbi C-ljuske sa kratkim objašnjenjima:

alias definira pseudonim

bg stavlja zadatak u pozadinski način izvršavanja

chdir path naredba za promjenu u putanju direktorija.

echo ispisuje sve svoje argumente u standardni izlaz

exec filename pokreće proces iz naziva datoteke umjesto (tj. na vrhu) trenutne ljuske. Povratak u školjku nije moguć.

exit izlazi iz ljuske.

fg čini pozadinski proces sinhronim.

ime datoteke daje informacije o tome šta operativni sistem misli o ovoj datoteci.

goto label bezuslovno skače na red u batch fajlu označenom oznakom. Ne koristi se u interaktivnom načinu rada.

kill pid šalje signal za prekid procesu pid-u, što obično rezultira uništenjem procesa.

izvorno ime datoteke čita i izvršava naredbe iz datoteke ime datoteke.

set, setenv set internih varijabli i varijabli okruženja.

shift var pomiče elemente niza var ulijevo. U ovom slučaju, veličina niza se smanjuje za jedan, a nulti element niza se gubi. Varijabla var mora biti niz.

time komanda izvršava naredbu naredbe i prikazuje vrijeme potrebno da se izvrši na terminalu.

unset uništava varijablu ljuske.

unalias uklanja prethodno definisani alias komande.

@name=expr stavlja rezultat aritmetičkog izraza expr u promenljivu name.

Lista najvažnijih ugrađenih varijabli C-ljuske sa kratkim objašnjenjima:

argv niz opcija komandne linije (koristi se u komandnom režimu)

cdpath je direktorij u koji se ljuska mijenja kada dobije naredbu chdir bez argumenta.

veličina bafera istorije za pamćenje komandi.

kućni imenik korisnika

mail je lokacija u sistemu datoteka poštanskog sandučeta korisnika.

put traženje putanje za eksterne komande.

prompt je glavni prompt ljuske.

prompt1 sekundarni prompt.

ljuska puna putanja tekuće izvršne ljuske (/bin/csh)

Kontrolni iskazi i naredbe petlje

Sa liste ugrađenih naredbi shell-a, namjerno smo isključili uslovne izraze i izraze petlje, o čemu će ovdje biti riječi.

Uslovno izvršenje

Sintaksa uslovnog if iskaza u C-ljusci je sljedeća

if (expr) naredba

izraz može biti ili aritmetički izraz ili provjera atributa datoteke. primjer:

if (-f /etc/hosts) cat /etc/hosts

Razmotrimo posljednji slučaj detaljnije. Moguće su sljedeće provjere atributa datoteke:

R je čitljiv

W je upisiv

X dostupan za izvršenje

E provjerite postojanje datoteke

O provjerite da li ste vlasnik ove datoteke

Z datoteka ima nultu veličinu

F datoteka je normalna datoteka

P datoteka je imenovani programski kanal

D datoteka je direktorij

while petlja

Petlja se izvršava sve dok je uslov istinit. primjer:

dok ($#files > 0)

foreach petlja

Ovo je izuzetno koristan operator koji vam omogućava da prođete kroz elemente niza riječi.

foreach varname(list)

Tijelo petlje se izvršava onoliko puta koliko ima elemenata u nizu liste. U ovom slučaju, varijabla varname sadrži sljedeću vrijednost elementa niza. Primjer

boja prednjeg dijela (plavo crveno zeleno)

echo Boja je $color

foreach fajl (*.for)

echo Preimenovanje $file

mv $file `basename $file .for`.f

Ovo koristi standardnu ​​naredbu basename, koja ``odsiječe"" od riječi date u prvom argumentu sufiks danog u drugom argumentu i ispisuje rezultirajuću riječ na standardni izlaz. Korištenje pozadinskih oznaka u jeziku C-ljuske će biti razmotreno kasnije.

Multivarijantni uslovni operator

Sintaksa uvjetnog iskaza switch u C-ljusci je sljedeća

case pattern1: ... breaksw case (\it pattern2) :

Operator dozvoljava prijenos kontrole ovisno o tome da li niz niza zadovoljava bilo koji obrazac iz postavljenog uzorka1, uzorka2, ... (u ovom slučaju, kontrola se prenosi na blok ograničen velikim slovima ... breaksw) ili ne (u ovom slučaju , kontrola se prenosi na granu default:... endsw Generalno, naredba switch je vrlo slična analognom operatoru jezika C.

2. Rad ljuske u komandnom modu

Već je napomenuto da se csh može pokrenuti u komandnom modu. Štaviše, uslovni i naredbe petlje se češće koriste u batch datotekama. Ovdje ćemo razmotriti karakteristike takvog ``timskog'' rada.

Identifikacija tumača

Najlakši način da pokrenete ljusku u načinu izvršavanja neke datoteke mycommand je da ovoj datoteci date izvršni atribut naredbom chmod:

% chmod +x moja naredba

Sada je dovoljno da sa tastature unesete komandu mycommand i OS će automatski pokrenuti ljusku u komandnom režimu za izvršavanje ove datoteke. Postoji jedna zamka na ovom putu: postoji mnogo interpretatora komandi u sistemu i njihova sintaksa komandi je drugačija. Kako OS određuje šta vam treba? Odgovor je ne. Morate eksplicitno reći OS-u koji interpretator želite pokrenuti da izvrši ovu batch datoteku. Da biste to učinili, prvi red vašeg fajla bi trebao imati sljedeći standardni obrazac:

što će omogućiti OS-u da uradi pravu stvar. Ako ne date ove informacije, tada će OS (iz istorijskih razloga) pretpostaviti da je datoteka napisana u jeziku Bourne školjke i vjerovatno ćete dobiti mnogo poruka o sintaksičkim greškama.

Obratite pažnju na još jedno korisno svojstvo ljuske u komandnom režimu: svi redovi koji počinju sa znakom # biće zanemareni. Ovo vam omogućava da dodate komentare u tekst batch datoteke.

Sljedeća činjenica vam omogućava da radite sa komandnom linijom koristeći csh: kada pokrenete batch datoteku mycommand, interna varijabla pod nazivom argv se automatski definira, što predstavlja niz opcija komandne linije. Na primjer, sljedeća batch datoteka jednostavno ispisuje sve svoje argumente i njihov broj na terminal:

# Ova datoteka jednostavno ispisuje svoje argumente

# i ukupan broj argumenata

echo Argumenti: $argv

echo Broj argumenata: $#argv

Eksplicitni početak

Možete koristiti direktniji, ali manje prikladan način za pokretanje batch datoteke pozivanjem ljuske sa opcijom -c filename. primjer:

% /bin/csh -c moja naredba arg1 arg2 arg3...

pri čemu ključ mora biti odmah praćen imenom datoteke koja se izvršava. Obavezni argumenti su navedeni nakon. Imajte na umu da ovim načinom pokretanja datoteka možda neće imati izvršni atribut.

Citati

Navodnici igraju važnu ulogu u sintaksi ljuske. Postoje tri vrste navodnika: jednostruki ("), dvostruki (") i pozadi (`).

Pojedinačni navodnici se koriste za označavanje teksta koji bi školjka trebala shvatiti doslovno. Drugim riječima, tekst unutar jednostavnih navodnika ne podliježe otkrivanju i tumačenju. primjer:

echo "Dolar je dobar"

dobijamo doslovno dolar je $dobar, iako je znak za dolar metaznak ljuske.

Dvostruki navodnici izbjegavaju niz znakova koje će shell tretirati kao jednu riječ. primjer:

set colors="zeleno plavo crveno"; echo $#colors

će vratiti broj 1, što znači da je varijabla boja jednostavna, a ne niz. Sve unutar dvostrukih navodnika podložno je tumačenju ljuske.

Povratak vam omogućava da predstavite niz koji se sastoji od rezultata naredbe. Dakle, izraz sa povratnim navodnicima se tretira kao naredba koju ljuska izvršava, a ono što ta naredba ispisuje na standardni izlaz se zamjenjuje kao string na mjestu gdje se nalaze zadnji navodnici. primjer:

će postaviti varijablu mytty na niz koji proizvodi tty naredba (naime, ime i broj trenutnog terminala).

Školjke su se pojavile na samom početku razvoja Unixa, bile su neophodne jer je to bio jedini način interakcije sa sistemom. Tokom ovog vremena, prošli su veoma dug put razvoja i dobili mnoge nove karakteristike. Nije lako cijeniti evoluciju Linux ljuski. O tome se može pisati jako dugo i jedan članak definitivno nije dovoljan. Pokušat ćemo pokriti samo ono najosnovnije bez zarona previše duboko. Pogledajmo prvo šta je Linux komandna ljuska i koje školjke postoje.

Šta je Linux/Unix komandna ljuska?

Unix ljuska je interpreter komandne linije koji izvršava komande koje daje korisnik. Unesemo naredbu, ona se interpretira, izvrši i onda dobijemo rezultat njenog izvršenja. Shell pruža tradicionalni Unix interfejs za unos komandi na koji smo navikli. Ovo je obično crni ekran i bijeli tekst. Komande unosimo u običnom tekstu, a možemo kreirati i skripte od jedne ili više komandi.

Shell je vaš interfejs za interakciju sa sistemom. Nakon što se prijavite na Unix sistem, nalazite se u programu koji se zove shell.

Thompson Shell

Prema istoriji i mnogim onlajn izvorima, prva školjka je bila Thompson Shell, koju je napisao Ken Thomson iz Bell Labsa. Bilo je ukupno 6 verzija i distribuiran je od 1971. do 1975. godine. Podržane karakteristike kao što su: preusmjeravanje ulaza/izlaza i jednostavne kontrolne strukture - if, goto. Ove funkcije podržavaju sve moderne komandne ljuske u Linuxu.

PWB Shell

PWB školjka je modifikacija Thomsonove ljuske koju je razvio John Masheu. Napisano je da poveća praktičnost Shell programiranja. Pojavile su se zanimljive strukture kao što su if-then-else-endif, switch i while petlje.

Bourne Shell

Unix je započeo svoj uspon sa Bourne školjkom. Napisao ju je Stefan Born u Bell Labs-u i korištena je kao zadana ljuska u Unix verziji 7 iz 1979. godine. Veliki broj mogućnosti dostupnih u modernim ljuskama je već implementiran ovdje - dovršavanje naziva datoteke, dovršavanje naredbi, standardne varijable okruženja i ugrađene kontrolne strukture. Bourne Shell se zvao sh i nalazio se na Unix sistemu datoteka na /bin/sh.

Na mnogim sistemima, Bourne shell program (sh) je simbolična ili čvrsta veza s jednom od njegovih alternativa:

  • Almquist školjka (pepeo)
  • Bourne-Again shell (bash)
  • korn školjka (ksh)
  • Z školjka (zsh)

Primjer skripte za Bourne Shell:

!/bin/sh
echo "Hello World 1!"
echo "Hello World 2!"

Almquist školjka (pepeo)

Almquist školjka, također poznata kao A Shell. To je lagana Unix školjka koju je originalno napisao Kenneth Almqvist. Razvijen je kasnih 1980-ih. To je modifikacija Bourne ljuske i zamijenila je original u BSD Unixu objavljenom 1990. godine. Sada se može koristiti na distribucijama kao što su Debian i Ubuntu kao verzija asha koja se zove dash (Debian Almquist shell). Također je popularna na ugrađenim Unix distribucijama.

To je brza, kompaktna i POSTIX-kompatibilna Unix školjka, što je možda razlog zašto se često koristi na ugrađenim uređajima. Ali pepeo ne podržava komandne istorije. Iako je u modernim verzijama ova funkcija već dodana.

Bourne-Again Shell (Bash)

Napisao Brian Fox kao dio GNU projekta kao besplatna i otvorena zamjena za Bourneovu školjku. Bash je najpopularnija i najšire korištena od svih školjki. Sve Linux distribucije se podrazumevano isporučuju sa ovom ljuskom. Proširuje skup funkcija Bourne Shell-a. Na većini Unix/Linux sistema, ova ljuska se može naći u sistemu datoteka na /bin/bash. Objavljena je 1989. godine.

Zbog ove popularnosti, portiran je na Windows i distribuiran sa Cygwin i MinGW kompajlerskim paketom. Bash se također koristi u Androidu, a za pristup mu možete koristiti razne emulatore terminala.

Podržava automatsko dovršavanje, I/O preusmjeravanje, dovršavanje naredbi, varijable i kontrolne strukture za donošenje odluka (if-then-elese if) i petlje (petlja).

Bash skripte počinju ovim redom:

Ova linux komandna ljuska također podržava čitanje naredbi iz datoteke i preusmjeravanje izlaza u datoteku ili drugu naredbu.

Primjer Bash koda:

!/bin/sh
ako [ $days -gt 365 ]
onda
echo Ovo je više od godinu dana.
fi

korn školjka (ksh)

Napisao David Kron i baziran na izvorima Bourneove školjke. KornShell (ksh) je školjka razvijena u Bell Labs-u još 1980. godine. Kompatibilna je unatrag s Bourne Shell-om i također uključuje mnoge karakteristike C shell-a.

Postoje sljedeće verzije i modifikacije:

  • Dtksh
  • MKS Korn školjka

Primjer skripte:

!/bin/ksh
print Korišćenje prostora na disku
du-k
izlaz 0

Z školjka (zsh)

Paul Falstad napisao je prvu verziju sa zsh shell komandom 1990. godine. To je Linux komandna ljuska koja se može koristiti kao interaktivna ljuska za prijavu, vrlo moćan tumač komandi. Zapravo Zsh je proširena Bourneova ljuska s mnogim poboljšanjima koja uključuje neke karakteristike iz Bash, KSH i Tcsh.

Ime Zsh dolazi od profesora sa Yalea Zhong Shaoa, pošto je Paul bio student na Univerzitetu Princeton.

Podržane su sljedeće zanimljive karakteristike:

  • Završetak linije
  • Dijeljena istorija komandi u svim sesijama ljuske
  • Poboljšan rad sa varijablama i nizovima
  • Uređivanje više redova u jednom baferu
  • Ispravka pravopisa i još mnogo toga.

C školjka

C ljuska je također poznata kao Csh. Razvio ga je Bill Joy dok je bio student na Kalifornijskom univerzitetu. Ova ljuska je vrlo česta na BSD Linux sistemima. Ovdje postoje mnoge zanimljive karakteristike, uključujući kontrolne strukture i gramatičke izraze. Ova ljuska je također po prvi put uvela mnogo zanimljivih karakteristika, kao što su historija i mehanizmi za uređivanje, aliasi, CDPATH, upravljanje zadacima i heširanje, preusmjeravanje izlaza, pričvršćivanje, zamjena varijabli, izvršavanje u pozadini, itd.

Kao i druge Linux ljuske, podržava datoteke skripta, preusmjeravanja i kontrolne strukture. Csh se sada koristi u obliku tcsh na mnogim sistemima, kao što su MacOS X i Red Hat Linux. Na Debianu se mogu koristiti i CSH i Tcsh.

Primjer koda u C Shell-u:

!/bin/csh
if ($dana > 365) onda
echo Ovo je više od godinu dana.
endif

riba

Fish or Friendly Interactive Shell je nova generacija Linux komandne ljuske. Dizajniran je da korisniku olakša izvršavanje komandi, ima isticanje sintakse, isticanje tačnih adresa fajlova, brzu pretragu istorije, web konfigurator, kao i posebnu sintaksu skripte.

Ovo je nova komandna ljuska u Linuxu i njena sintaksa je drugačija od bilo koje moderne komandne ljuske, već više od programskog jezika Python.

Primjer kreiranja funkcije na ribi:

!/usr/bin/fish
finansirao su
funkcija su
/bin/su --shell=/usr/bin/fish $argv
kraj
funcsave su

Detaljnije poređenje komandnih ljuski u Linuxu možete vidjeti na linku.

To je sve za danas. Nadam se da ste bili zainteresovani.

  • tutorial

Zašto i za koga je članak?

U početku je ovo bio podsjetnik za studente koji počinju raditi sa sistemima sličnim unixu. Drugim riječima, članak je namijenjen onima koji nemaju prethodnog iskustva u unix komandnoj liniji, ali iz ovog ili onog razloga žele ili trebaju naučiti kako da s njom efikasno komuniciraju.

Prepričavanja mana (dokumentacije) neće biti, a članak ni na koji način ne poništava niti zamjenjuje njihovo čitanje. Umjesto toga, govorit ću o glavnim stvarima (komandama, trikovima i principima) koje morate razumjeti od samog početka rada u unix shell-u da biste radili efikasno i ugodno.

Članak se bavi punopravnim okruženjima sličnim unix-u, sa ljuskom sa punim mogućnostima (po mogućnosti zsh ili bash) i prilično širokim spektrom standardnih programa.

Šta je školjka?

Shell (ljuska, aka “komandna linija”, aka CLI, aka “konzola”, aka “terminal”, aka “crni prozor sa bijelim slovima”) je tekstualni interfejs za komunikaciju sa operativnim sistemom (dobro, strogo rečeno program, koji pruža takav interfejs, ali sada ta razlika nije značajna).

Općenito, rad kroz shell izgleda ovako: korisnik (tj. Vi) unese komandu sa tastature, pritisne Enter, sistem izvrši komandu, upiše rezultat izvršenja na ekran i ponovo čeka sljedeću komandu da se unese.

Tipičan izgled školjke:

Ljuska je glavni način interakcije sa svim serverskim sistemima sličnim Unixu.

Gdje se nalaze sistemi komandne linije?

Gdje vas može čekati unix ljuska, popularne opcije:
  • macOS (bash);
  • daljinski pristup serveru za rad ili za lični web projekat;
  • kućni fajl server sa daljinskim pristupom;
  • Ubuntu, PC-BSD na laptopu/desktopu - Sistemi slični Unixu danas se lako instaliraju i koriste.

Koje je zadatke razumno rješavati s školjkom?

Prirodni zadaci za koje je školjka prikladna, korisna i neophodna:
  • interaktivni rad u terminalu:
    • kompajliranje, izvođenje poslova kroz make;
    • poređenje tekstualnih datoteka;
    • brza ad-hoc analiza podataka (broj jedinstvenih ips-ova u logu, distribucija zapisa po satima/minutama, itd.);
    • jednokratne masovne akcije (ubiti mnoge procese; ako radite sa sistemom kontrole verzija, poništite ili razriješite gomilu datoteka);
    • dijagnostika onoga što se dešava u sistemu (semafori, brave, procesi, deskriptori, prostor na disku, itd.);
  • skriptiranje:
    • setup skripte za koje se ne možete osloniti na druge tumače - nije za početnike;
    • funkcije za prilagođavanje interaktivne ljuske (utjecaj na prompt, promjena direktorija, postavljanje varijabli okruženja) - također nije baš za početnike;
    • jednokratne skripte kao što je masovno transkodiranje datoteka;
    • makefiles.

Apsolutno prvi koraci

Početak: Prijava i odjava

Uvjerite se da znate tačno kako pokrenuti shell i kako izaći iz nje.

Ako ste na mašini na kojoj je instaliran Ubuntu, moraćete da pokrenete program Terminal. Na kraju rada možete jednostavno zatvoriti prozor.

Na MacOS-u također pokrenite Terminal.

Da biste pristupili udaljenom serveru, koristite ssh (ako imate MacOS, Ubuntu ili drugi sistem sličan unix-u lokalno) ili putty (ako imate Windows).

Ko sam ja, gde sam?

Pokrenite sljedeće naredbe:
  • ime hosta - prikazuje ime mašine (servera) na kojoj se trenutno nalazite;
  • whoami - prikazuje vašu prijavu (vaše ime u sistemu);
  • drvo -d / |manje - pseudografska slika stabla direktorija na mašini; izlaz iz skrolovanja - q ;
  • pwd - prikazuje direktorij u kojem se trenutno nalazite; na komandnoj liniji ne možete biti "tek takvi", nužno ste u nekom direktoriju (=trenutni direktorij, radni direktorij). Vjerovatno je trenutni radni direktorij prikazan u vašem promptu (promptu).
  • ls - lista datoteka u trenutnom direktoriju; ls /home - lista datoteka u navedenom direktoriju;

Historija komandi (istorija)

Važno svojstvo punopravne komandne linije je istorija komandi.

Pokrenite nekoliko naredbi: ime hosta, ls, pwd, whoami. Sada pritisnite tipku za gore. Prethodna komanda se pojavila u liniji za unos. Tasteri gore i dolje se mogu koristiti za kretanje naprijed i nazad kroz istoriju. Kada skrolujete do imena hosta, pritisnite Enter - komanda će se ponovo izvršiti.

Komande iz istorije ne samo da se mogu ponovo izvršiti, već i uređivati. Skrolujte kroz istoriju do komande ls, dodajte joj ključ -l (ispostavilo se da je ls -l , postoji razmak ispred minusa, ali ne i iza). Pritisnite Enter - modifikovana komanda će biti izvršena.

Skrolovanje kroz istoriju, uređivanje i ponovno izvršavanje komandi su najtipičnije radnje kada radite u komandnoj liniji, naviknite se na to.

kopiraj zalijepi

Komandna linija je vrlo tekstualna: komande su tekst, ulazni podaci za većinu standardnih programa je tekst, rezultat rada je najčešće i tekst.

Lijepa stvar kod teksta je to što se može kopirati i zalijepiti, a to vrijedi i za komandnu liniju.

Pokušajte pokrenuti datum +"%y-%m-%d, %A"
Jeste li ga u cijelosti unijeli rukom ili kopirali iz članka? Provjerite možete li ga kopirati, zalijepiti u terminal i pokrenuti.

Nakon što naučite kako koristiti man ", uvjerite se da možete kopirati i pokrenuti primjer naredbi iz pomoći. Da biste provjerili, potražite u pomoći za program datuma za odjeljak PRIMJERI, kopirajte i pokrenite prvi dati primjer (za svaki slučaj : znak dolara nije dio naredbe, ovo je uvjetna slika prompta za unos).

Kako tačno kopirati tekst sa terminala i zalijepiti ga u terminal ovisi o vašem sistemu i njegovim postavkama, tako da, nažalost, neće uspjeti dati univerzalnu instrukciju. Na Ubuntu pokušajte ovo: kopiranje je samo odabir miša, lijepljenje je srednji gumb miša. Ako ne radi, ili ako imate drugačiji sistem - potražite na internetu ili pitajte iskusnije prijatelje.

Tasteri i opcije

Istražujući istoriju komandi, već ste se susreli sa činjenicom da komanda ls ima najmanje dve opcije. Ako ga nazovete samo tako, ispisuje jednostavnu listu:

[email protected]: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
Ako dodate prekidač -l, detaljne informacije se prikazuju za svaki fajl:

[email protected]: ~/shell-survival-quide> ls -l ukupno 332 -rw-rw-r-- 1 akira akira 198 13. veljače 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 14. veljače 22:26 shell -first-steps.md -rw-rw-r-- 1 akira akira 146226 13. veljače 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 13. veljače 11:45 shell-survival -quide.md -rw-rw-r-- 1 akira akira 146203 13. veljače 11:35 shell-survival-quide.pdf
Ovo je vrlo tipična situacija: ako se pozivu komande dodaju posebni modifikatori (prekidači, opcije, parametri), ponašanje naredbe se mijenja. Uporedite: stablo / i stablo -d / , ime hosta i ime hosta -f .

Osim toga, komande mogu uzeti nazive datoteka, direktorije ili samo tekstualne nizove kao parametre. Pokušajte:

ls -ld /home ls -l /home grep root /etc/passwd

covece

man - Pomoć o komandama i programima dostupnim na vašoj mašini, kao i sistemskim pozivima i C standardnoj biblioteci.

Pokušajte: man grep , man atoi , man chdir , man man .

Pomeranje unapred i unazad se vrši pomoću dugmadi “gore”, “dole”, “PageUp”, “PageDown”, a izlazak iz prikaza pomoći se vrši pomoću dugmeta q. Traženje određenog teksta u članku pomoći: pritisnite / (kosa crta naprijed), unesite tekst za pretragu, pritisnite Enter. Prelazak na sljedeća pojavljivanja - tipka n.

Svi članci pomoći podijeljeni su u kategorije. Najvažnije:

  • 1 - izvršni programi i komande ljuske (wc, ls, pwd, itd.);
  • 2 - sistemski pozivi (fork, dup2 itd.)
  • 3 - funkcije biblioteke (printf, scanf, cos, exec).
Potrebno je naznačiti iz koje kategorije treba pokazati pomoć u slučajevima podudarnosti imena. Na primjer, man 3 printf opisuje funkciju iz standardne biblioteke C, a man 1 printf opisuje konzolni program istog imena.

Možete pogledati listu svih dostupnih članaka pomoći na mašini pomoću naredbe man -k. (tačka je također dio tima).

manje

Kada u malom terminalskom prozoru treba da pogledate veoma dugačak tekst (sadržaj fajla, dugog čoveka, itd.), koriste se posebni programi „pejdžer“ (od reči stranica/stranica, odnosno stranica). Najpopularniji skroler je manji, i to je ono što vam omogućava skrolovanje kada čitate mans.

Pokušajte i uporedite ponašanje:

cat /etc/bash.bashrc cat /etc/bash.bashrc |less

Možete odmah prenijeti datoteku na scroller u parametrima:

Manje /etc/bash.bashrc

Pomeranje gore i dole - dugmad "gore", "dole", "PageUp", "PageDown", izlaz - dugme q. Tražite određeni tekst: pritisnite / (kosa crta), unesite traženi tekst, pritisnite Enter. Prelazak na sljedeća pojavljivanja - tipka n. (Prepoznajete li upute o čovjeku? Nije ni čudo, manje se također koristi za prikaz pomoći.)

Prava

Skup "prava" je povezan sa bilo kojom datotekom ili direktorijumom: pravo čitanja datoteke, pravo pisanja u datoteku, pravo izvršavanja datoteke. Svi korisnici su podijeljeni u tri kategorije: vlasnik fajla, grupa vlasnika fajla, svi ostali korisnici.

Dozvole za fajlove možete pogledati pomoću ls -l. Na primjer:

> ls -l Makefile -rw-r--r-- 1 akira student 198 Feb 13 11:48 Makefile
Ovaj izlaz znači da vlasnik (akira) može čitati i pisati datoteku, grupa (učenici) može samo čitati, a svi ostali u korisniku također mogu samo čitati.

Ako dobijete poruku odbijene dozvole dok radite, to znači da nemate dovoljno dozvola za objekt s kojim želite raditi.

Pročitajte više u man chmod .

STDIN, STDOUT, cjevovodi (cijevi)

Svaki izvršni program ima 3 standardna toka podataka povezana s njim: ulazni tok STDIN, izlazni tok STDOUT, tok grešaka STDERR.

Pokrenite WC program, upišite Dobar dan danas, pritisnite Enter, upišite dobar dan, pritisnite Enter, pritisnite Ctrl+d. Wc program će prikazati statistiku o broju slova, riječi i redova u vašem tekstu i izaći:

> wc dobar dan danas dobar dan 2 5 24
U ovom slučaju, dali ste programu STDIN tekst u dva reda, a primili ste tri broja u STDOUT.

Sada pokrenite komandnu glavu -n3 /etc/passwd, trebalo bi izgledati otprilike ovako:

> 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
U ovom slučaju, glavni program nije pročitao ništa iz STDIN-a, već je napisao tri reda u STDOUT.

Razmislite o tome ovako: program je cijev u koju ulazi STDIN, a izlazi STDOUT.

Najvažnije svojstvo komandne linije Unix-a je to da se programi “pipe” mogu međusobno povezati: izlaz (STDOUT) jednog programa može biti proslijeđen kao ulaz (STDIN) drugom programu.

Takva konstrukcija povezanih programa na engleskom se zove pipe (pipe), na ruskom - conveyor ili pipe.

Kombinovanje programa u cjevovod vrši se simbolom | (vertikalna traka)

Pokrenite komandnu glavu -n3 /etc/passwd |wc, dobićete nešto ovako:

> glava -n3 /etc/passwd |wc 3 3 117
Evo šta se dogodilo: glavni program je izbacio tri reda teksta u STDOUT, koji je odmah ušao u ulaz wc programa, koji je zauzvrat brojao broj znakova, riječi i redova u primljenom tekstu.

Možete kombinovati onoliko programa koliko želite u cjevovod. Na primjer, možete dodati još jedan wc program u prethodni cjevovod, koji će brojati koliko je riječi i slova bilo u izlazu prvog wc-a:

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

Kompajliranje cjevovoda (pipe-ova) je vrlo uobičajena stvar kada se radi na komandnoj liniji. Za primjer kako se to radi u praksi, pogledajte odjeljak Sastavljanje jednolinijskog cjevovoda.

I/O preusmjeravanje

Izlaz (STDOUT) programa ne samo da se može proslijediti drugom programu, već jednostavno upisati u datoteku. Ovo preusmjeravanje se vrši sa > (znakom veće od):

Datum > /tmp/today.txt
Kao rezultat izvršavanja ove naredbe, datoteka /tmp/today.txt će se pojaviti na disku. Pogledajte njegov sadržaj pomoću cat /tmp/today.txt

Ako je datoteka s istim imenom već postojala, njen stari sadržaj će biti uništen. Ako datoteka nije postojala, bit će kreirana. Direktorij u kojem se kreira datoteka mora postojati prije nego što se naredba izvrši.

Ako ne želite da prepišete datoteku, ali dodate izlaz na njen kraj, koristite >> :

Datum >> /tmp/today.txt
Provjerite šta je sada zapisano u fajlu.

Osim toga, programu možete proslijediti bilo koju datoteku umjesto STDIN-a. Pokušajte:

toalet

Šta učiniti kada nešto nije jasno

Ako naiđete na ponašanje sistema koje ne razumijete, ili želite postići određeni rezultat, ali ne znate kako, savjetujem vam da postupite sljedećim redoslijedom (usput, ovo se ne odnosi samo na ljuske):
  • što jasnije formulirajte pitanje ili zadatak - nema ništa teže od rješavanja "ne znam šta";
  • zapamtite ako ste se već susreli sa istim ili sličnim problemom - u ovom slučaju vrijedi isprobati rješenje koje je uspjelo prošli put;
  • pročitajte odgovarajuće man-ove (ako razumijete koji su man-ovi prikladni za vaš slučaj) - možete pronaći odgovarajuće primjere korištenja naredbi, potrebnih opcija ili linkova na druge komande;
  • razmislite o tome: da li je moguće malo promijeniti zadatak? - možda ćete malom promenom uslova dobiti problem koji već znate kako da rešite;
  • postavite svoje dobro definirano pitanje u tražilici - možda se odgovor može naći na Stack Overflow-u ili drugim stranicama;
Ako ništa od navedenog nije pomoglo - potražite savjet učitelja, iskusnog kolege ili prijatelja. I nemojte se plašiti postavljati "glupa" pitanja - nije sramota ne znati, šteta je ne pitati.

Ako ste riješili neki težak problem (sami, koristeći internet ili druge ljude) - zapišite svoje rješenje u slučaju da vi ili vaši drugovi ponovo imate isti problem. Možete snimati u jednostavnom tekstualnom fajlu, u Evernoteu, objavljivati ​​na društvenim mrežama.

Metode rada

Copy-and-paste- od man-ova, iz članaka na StackOverflow-u, itd. Komandna linija se sastoji od teksta, koristite ga: kopirajte i koristite primjere naredbi, zapišite uspješne nalaze za memoriju, objavite ih na twitteru i blogovima.

Povucite prethodnu komandu iz istorije, dodajte drugu komandu u cevovod, pokrenite, ponovite.Cm. Pogledajte također odjeljak "Kompajliranje jednolinijskog cjevovoda".

Osnovne komande

  • promjena direktorija: cd ;
  • pregled sadržaja fajlova: mačka, manje, glava, rep;
  • manipulacija datotekama: cp , mv , rm ;
  • popis direktorija: ls , ls -l , ls -lS ;
  • struktura direktorija: stablo, stablo -d (možete prenijeti direktorij kao parametar);
  • pretraga fajla: pronađi . -ime ... ;

Analitika

  • wc , wc -l ;
  • sort -k - sortiraj po navedenom polju;
  • sort -n - numeričko sortiranje;
  • diff - uporedi fajlove;
  • grep , grep -v , grep -w , grep "\ " , grep -E - traženje teksta;
  • uniq , uniq -c - jedinstveni nizovi;
  • awk - u varijanti awk "(print $1)", da bi se ostavilo samo prvo polje svake linije, $1 se može promijeniti u $2, $3, itd.;

System Diagnostics

  • ps axuww - informacije o procesima (pokrenutim programima) koji rade na mašini;
  • vrh - interaktivni pogled na procese koji zahtijevaju najviše resursa;
  • df - iskorišteni i slobodni prostor na disku;
  • du - ukupna veličina fajlova u direktorijumu (rekurzivno sa poddirektorijumima);
  • strace , ktrace - koji sistem zove proces koji pravi;
  • lsof - koje datoteke proces koristi;
  • netstat -na , netstat -nap - koji su portovi i utičnice otvoreni na sistemu.

Možda nemate neke programe, moraju se dodatno instalirati. Osim toga, neke opcije ovih programa dostupne su samo privilegiranim korisnicima (root "y").

Masovna i poluautomatska izvedba

Prvo preskočite ovaj odjeljak, trebat će vam ove komande i konstrukcije kada dođete do jednostavnih shell skriptova.
  • test - provera uslova;
  • dok čitanje - ciklus kroz redove STDIN;
  • xargs - zamjena stringova iz STDIN-a u parametre navedenog programa;
  • seq - generiranje nizova prirodnih brojeva;
  • () - kombinuje izlaz nekoliko naredbi;
  • ; - rade jedno za drugim;
  • && - izvršiti ako se prva naredba uspješno završi;
  • || - izvršiti ako prva komanda ne uspije;
  • tee - dupli izlaz programa u STDOUT i u datoteku na disku.

Razno

  • datum - trenutni datum;
  • curl - preuzima dokument na navedenom URL-u i upisuje rezultat u STDOUT;
  • dodir - ažuriranje datuma izmjene datoteke;
  • ubiti - poslati signal procesu;
  • true - ne radi ništa, vraća true, korisno za organiziranje vječnih petlji;
  • sudo - izvrši naredbu kao root "a.

Sastavljanje jednolinijskog cjevovoda

Pogledajmo primjer pravog zadatka: želimo ubiti sve procese servera zadataka 6 koji se pokreću u ime trenutnog korisnika.

Korak 1.
Shvatite koji program proizvodi približno potrebne podatke, čak i ako ne u čistom obliku. Za naš zadatak vrijedi dobiti listu svih procesa u sistemu: ps axuww. Trči.

Korak 2
Gledajte očima primljene podatke, smislite filter koji će izbaciti neke od nepotrebnih podataka. Često je ovo grep ili grep -v. Koristeći taster "Gore", izvucite prethodnu komandu iz istorije, dodelite joj izmišljeni filter i pokrenite je.

Ps axuww |grep `whoami`
- samo procesi trenutnog korisnika.

Korak 3
Ponovite korak 2 dok ne dobijete čiste podatke koje želite.

"
- svi procesi sa željenim imenom (plus, možda, suvišni poput vim task-6-server.c, itd.),

Ps axuww |grep `whoami` | grep "\ " | grep -v vim ps axuww |grep `whoami` | grep "\ " | grep -v vim | grep -v manje
- samo procesi sa željenim imenom

Ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v manje |awk "(ispis $2)"

Pids potrebnih procesa, korak 3 je završen

Korak 4
Primijenite odgovarajuću završnu obradu. Pomoću tipke "Gore" izvlačimo prethodnu naredbu iz historije i dodajemo obradu koja će dovršiti rješenje problema:

  • |wc -l za brojanje procesa;
  • >pids za pisanje pidova u fajl;
  • |xargs kill -9 kill procesa.

Zadaci za obuku

Želite vježbati nove vještine? Isprobajte sljedeće zadatke:
  • dobiti listu svih datoteka i direktorija u vašem početnom direktoriju;
  • dobiti listu svih man članaka iz kategorije 2 (sistemski pozivi);
  • izbroj koliko puta se riječ grep pojavljuje na stranici za upravljanje grep;
  • izračunajte koliko procesa se trenutno izvodi kao root;
  • pronađite koja se naredba pojavljuje u maksimalnom broju kategorija pomoći (man);
  • izbroj koliko puta se riječ var pojavljuje na stranici ya.ru.
Savjet: trebat će vam find, grep -o, awk "(print $1)", regularni izrazi u grep, curl -s.

Šta dalje studirati?

Ako počnete da volite komandnu liniju, nemojte prestati, nastavite da poboljšavate svoje veštine.

Evo nekih programa koji će vam svakako dobro doći ako živite na komandnoj liniji:

  • pronađite sa složenim opcijama
  • apropos
  • locirati
  • telnet
  • netcat
  • tcpdump
  • rsync
  • ekran
  • zgrep , zless
  • visudo
  • crontab -e
  • sendmail
Takođe je vredno naučiti skriptni jezik tokom vremena, kao što je perl ili python, ili čak oboje.

Kome to treba?

Isplati li se danas naučiti komandnu liniju i shell skripte? Definitivno se isplati. Navest ću samo nekoliko primjera zahtjeva Facebooka za kandidate koji žele da se zaposle na FB.

Top Related Articles