Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Fier
  • limbaj de comandă shell. Bazele programării Shell

limbaj de comandă shell. Bazele programării Shell

În acest articol, vom încerca să colectăm cele mai frecvent utilizate comenzi în SSH sau linux shell. Lista nu este finală, descrierea comenzilor nu este completă, puteți obține o descriere completă a comenzilor din comanda linux shell# man.



Combinații de taste rapide și comenzi Linux:

ATENŢIE: REȚINEȚI CĂ COMENZIILE LINUX diferențiază majuscule și minuscule. De exemplu: Comenzile Netscape, NETSCAPE și nEtscape sunt trei comenzi diferite, la fel ca fișierul_meu, fișierul_meu și FIȘIERUL_meu sunt trei fișiere diferite.

1. Comenzi rapide și notații naturale de la tastatură
Trecerea la primul terminal de consolă
Comutați la al #-lea terminal de consolă (#=1..6)
Trecerea la un terminal grafic (dacă rulează unul)
Complementarea secvenței curente de caractere tastate în consolă cu o comandă executabilă. Această caracteristică face viața mult mai ușoară când tastați comenzi! Acest lucru funcționează și la pornirea computerului prin LILO!
Vizualizați și editați memoria tampon pentru istoricul comenzilor. Apăsați pentru a executa comanda.
Vizualizarea textului afișat pe terminalul consolei și a trecut dincolo de ecran. Mișcă-te în sus.
La fel ca mai sus. Mută-te în jos.
[+] (în X-windows) Schimbați rezoluția. Treceți la următoarea configurație.
[-] (Pe X-windows) Schimbați rezoluția. Reveniți la configurația anterioară.
(în X-windows) Omorâți serverul actual X-windows (ieșiți din shell-ul grafic, ucigând toate procesele). Omorâți procesul curent.
d Ieșiți din terminalul actual (funcționează de obicei).
d Trimiterea semnalului [End-of-file] (sfârșitul fișierului) către procesul curent.
s Opriți ieșirea către terminal.
q Reluarea ieșirii către terminal. Încercați această combinație de taste dacă terminalul dvs. nu mai răspunde fără niciun motiv.
z Trimiteți procesul curent în fundal.
resetare Restabilirea valorilor implicite pentru un terminal „stricat” (terminalul arată caractere ciudate și reacționează inadecvat la apăsarea tastelor). Utilizați această comandă dacă încercați să afișați un fișier binar. Probabil că nu vei putea vedea această comandă în timp ce o tastezi.
~ Directorul meu de acasă. De exemplu cd ~/subdirectorul meu.
. (punct) directorul curent.
.. (două puncte) Directorul părinte pentru directorul curent.

2. Comenzi standard și comenzi care oferă informații despre sistem
pwd Listați directorul curent.
nume de gazdă Afișați sau modificați numele rețelei aparatului.
cine sunt Introduceți numele sub care sunt înregistrat.
Data Afișați sau modificați data și ora. De exemplu, pentru a seta data și ora la 2000-12-31 23:57, veți rula comanda: data 123123572000
timp Obțineți informații despre timpul necesar pentru finalizarea procesului + alte informații. Nu confundați această comandă cu data. De exemplu: pot determina cât timp durează listarea fișierelor dintr-un director tastând: time ls
care Determinați care utilizator lucrează la mașină.
rho-a Identificați toți utilizatorii conectați la rețeaua dvs. Această comandă necesită ca procesul rwho să ruleze. Dacă nu, rulați „setup” ca superutilizator.
deget [nume utilizator] Informații de sistem despre utilizatorul înregistrat. Încercați: rădăcina degetului
timpul de funcționare Timpul scurs de la ultima repornire.
ps a Lista proceselor curente.
top O listă interactivă a proceselor curente sortate după utilizarea CPU.
uname Afișează informații despre sistem.
gratuit Preluați informații din memorie.
df-h(=spațiu pe disc) Afișează informații despre spațiul liber și folosit pe disc (în formă care poate fi citită).
du/-bh | Mai mult(= cine a luat cât) Afișarea informațiilor detaliate despre dimensiunea fișierelor pe directoare începând de la rădăcină (într-o formă lizibilă).
cat /proc/cpuinfo Informații despre sistemul procesorului. Rețineți că fișierele din directorul /proc nu sunt fișiere reale. Ele sunt folosite pentru a obține informații cunoscute de sistem.
cat /proc/intrerupeÎntreruperi utilizate.
cat /proc/version Versiunea de kernel Linux și alte informații
cat /proc/sisteme de fișiere Afișează tipurile de sisteme de fișiere utilizate în prezent.
cat /etc/printcap Afișează setările imprimantei.
lsmod(ca root) Afișează informații despre modulele kernel încărcate în prezent.
set|mai mult Afișați valorile curente ale variabilelor de mediu.
echo $PATH Tipăriți valoarea variabilei de mediu „PATH” Această comandă poate fi utilizată pentru a imprima valorile altor variabile de mediu. Utilizați comanda set pentru o listă completă.

3. Rețele
netconf(ca root) Un program foarte bun de configurare a rețelei care utilizează un meniu text pentru experiența interactivă a utilizatorului.
ping [nume gazdă]„Verificarea păduchilor”. Indiferent dacă există sau nu contact cu o altă mașină (ca parametru al comenzii, puteți transmite numele rețelei mașinii sau adresa IP), apăsați -C când au fost obținute toate informațiile necesare.
traseul-n Afișați tabelul de rutare.
ipfwadm -F -p m Configurați un firewall.
ifconfig(ca rădăcină) Imprimați informații despre interfețele de rețea curente (ethernet, ppp, etc.) Prima dvs. cartelă ethernet va fi afișată ca eth0, al doilea ca eth1, primul modem ppp ca ppp0 și așa mai departe. „lo” – înseamnă interfața de rețea „numai loopback”, care trebuie activată permanent. Utilizați opțiunile corespunzătoare (vezi rezultatul ifconfig --help) pentru a configura interfețele de rețea.
ifup [nume_interfață_rețea](/sbin/ifup când rulați ca utilizator normal) Activați interfața de rețea corespunzătoare. De exemplu: ifup eth0 ifup ppp0. Utilizatorul poate activa și dezactiva interfața de rețea ppp numai atunci când sunt setate permisiunile corespunzătoare (permisiunile pot fi setate în timpul configurării ppp prin „netconf”)
ifdown [nume_interfață](/sbin/ifdown când rulați ca utilizator normal). Dezactivarea interfeței de rețea corespunzătoare.

4. Cele mai simple acțiuni
ls Lista fișierelor din directorul curent. Comanda dir execută comanda ls.
cd [director] Schimbați directorul.
cp [ce să copiați][unde să copiați] Copiați fișierele.
mcopy [ce să copiați][unde să copiați] Copiați fișierele când lucrați cu sistemul de fișiere dos (nu este necesar să montați unitatea dos). De exemplu: mcopy a:\autoexec.bat ~/junk . Pentru mai multe informații despre comenzi similare (mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....) vezi man mtools.
mv [ce să muți][unde să te muți] Mutați sau redenumiți fișierul.
ln -s [link la] [nume link] Creați o legătură simbolică.
rm [fișiere] Sterge fisierele.
mkdir [director] Creați un director nou.
rmdir [director]Ștergeți directorul gol.
rm -r [fișiere și/sau directoare](Ștergere recursiv) Ștergeți fișierele, directoarele și subdirectoarele acestora. ATENȚIE la această comandă dacă aveți drepturi de superutilizator! Până acum, Linux nu are un sistem pentru recuperarea completă a fișierelor șterse (cu excepția cazului în care utilizați programe speciale pentru a pune fișierele șterse într-un director special - la coșul de sub W95).
pisică [nume fișier] | Mai mult Vizualizați conținutul unui fișier text câte o pagină.
mai puțin [nume fișier] Vizualizați conținutul unui fișier text cu posibilitatea de a reveni la paginile anterioare. Apăsați q când doriți să părăsiți programul. „Mai puțin” este analog cu comanda DOS „mai mult”, deși foarte adesea „mai puțin” este mai convenabil decât „mai mult”.
pico [nume fișier] Editați fișierul text.
râs Vizualizarea unui fișier html sau a unui link WWW utilizând browserul de text Lynx.
tar -zxvf [fișiere] Despachetați arhiva tgz sau tar.gz pe care ați extras-o de pe net.
găsi / -name „nume fișier” Găsiți fișierul numit „nume fișier”. Căutarea începe din directorul / . „nume fișier” poate conține o mască de căutare.
pin Un bun cititor de e-mail orientat spre text. Un alt program similar se numește „ulm”. Netscape vă citește e-mailurile de pe adresa dvs. de Internet, iar pine vă permite să vizualizați e-mailurile „locale” - adică e-mailurile trimise către dvs. de procesul son sau cron.
mc Rulați programul de gestionare a fișierelor „Midnight Commander” (Seamănă cu „Norton Commander”, dar este mai aproape de departe sau dn în capabilitățile sale).
telnet [server] Telnet la o altă mașină. Utilizați numele mașinii sau adresa sa IP. Conectați-vă cu parola dvs. (trebuie să fiți conectat la această mașină la distanță). Acest lucru vă va permite să vă conectați la o altă mașină și să lucrați la ea ca și cum ați fi așezat la tastatură (aproape nicio diferență).
ftp [server] Comunicați prin ftp cu un computer la distanță. Acest tip de link este bun pentru copierea fișierelor de pe/pe o mașină la distanță.

5. Comenzi de administrare de bază
instrument de imprimare(ca root în terminalul X) Configurați imprimanta.
înființat(ca root) Configurați mouse-ul, placa de sunet, tastatura, GUI X-windows și serviciile de sistem. Un program foarte ușor de utilizat.
alias ls="ls -Fskb --color" Creați un alias - un alias astfel încât o comandă să poată rula o combinație mai complexă de comenzi. Plasați o creare de alias în /etc/bashrc dacă doriți ca aceste aliasuri să fie disponibile pentru toți utilizatorii de pe sistemul dumneavoastră.
adduser [nume utilizator]Înregistrați un utilizator nou (trebuie să aveți drepturi de superutilizator). De exemplu: adduser ivanov . Nu uitați să setați parola utilizatorului în continuare. Directorul de utilizator se află în directorul /home/username.
useradd [nume utilizator] La fel ca adduser.
userdel [nume utilizator] Eliminați un utilizator din sistem (trebuie să fiți autentificat ca root). Directorul de utilizatori și mesajele necitite de la un utilizator la distanță trebuie tratate separat.
groupadd [nume grup] Creați un nou grup de utilizatori pe sistemul dvs. Nu este necesar să creați un grup direct pe mașina principală.
passwd Schimbați parola. Dacă sunteți un superutilizator, atunci puteți schimba parola oricărui utilizator înregistrat tastând comanda: passwd username
chmod [permisiuni][fișier](=modul de schimbare) Modificați permisiunile fișierelor deținute de dvs. (dacă sunteți root, caz în care puteți modifica permisiunile oricărui fișier). Există trei moduri de a accesa un fișier: citire - citire (r), scriere - scriere (w), execuție - executare (x) și trei tipuri de utilizatori: proprietar de fișier - proprietar (u), membri ai aceluiași grup ca și proprietarul dosarului ( g) și al tuturor celorlalți (o). Puteți verifica drepturile de acces actuale în felul următor: ls -l nume de fișier. Dacă fișierul este disponibil în toate modurile pentru toți utilizatorii, atunci următoarea combinație de litere va fi vizavi de numele fișierului: rwxrwxrwx. Primele trei litere sunt permisiunile pentru proprietarul/proprietarul fișierului, a doua tripletă sunt permisiunile pentru grupul său, următoarele trei sunt permisiunile pentru celelalte. Lipsa permisiunii este indicată ca „-”.; De exemplu: Această comandă vă va permite să setați permisiuni de citire pentru fișierul „junk” tuturor (toți=utilizator+grup+alții):
chmod a+r junk
Această comandă va elimina dreptul de a executa fișierul tuturor, cu excepția utilizatorului și a grupului:
chmod o-x junk
Pentru mai multe informații, tastați chmod --help sau man chmod sau citiți orice manual Linux.
Puteți seta permisiunile implicite pentru fișierele pe care le creați cu comanda „umask” (tastați man umask).
chown [new_master][fișiere]
chgrp [grup nou][fișiere] Schimbați proprietarul și grupul pentru un fișier.
Puteți folosi aceste două comenzi după ce ați făcut o copie a fișierului pentru altcineva. su(=super utilizator) Conectați-vă ca superutilizator (vi se va cere parola). Tastând „exit” veți reveni la shell-ul de utilizator anterior. Utilizatorul root există pentru a administra sistemul, iar comanda su vă oferă acces rapid la capacitățile superutilizatorului atunci când aveți nevoie de ele. Nu vă conectați niciodată ca root, utilizați comanda su în acest scop.

6. Controlul procesului
ps(=print status) Imprimați o listă a proceselor curente cu ID-urile lor (PID). Utilizați ps axu pentru a lista toate procesele care rulează pe sistemul dvs. și care vă au drept proprietar (aceasta include și procesele care sunt detașate de terminal).
fg Returnează un proces de fundal sau suspendat la o stare interactivă (cu prioritate ridicată);
bg Faceți fundalul procesului. Funcția inversă de la fg. Poate urma combinația z.
ucide„Ucide” procesul. Mai întâi, determinați PID-ul procesului „ucis” folosind ps.
killall [nume program]„Omorâți” toate procesele după numele programului.
lpc(ca root) Verificați coada imprimantei.
lpq Listați coada de lucrări de imprimare.
lprm [Număr job] Eliminați o lucrare din coada de imprimare.
frumos [numele programului]Începeți un proces setându-i prioritatea.
renice Schimbați prioritatea procesului.

Acordați atenție combinațiilor de taste: c, z, s și q. Ele sunt descrise mai devreme în secțiunea Comenzi rapide și notații naturale de la tastatură.

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

LUCRARE DE LABORATOR Nr. 1 (timp de finalizare - 3 ore)

Subiect: „Introducere lacoajă

1. Introducere în coajă

Shell este un interpret de comenzi (procesor de comandă) care acționează ca o interfață între utilizator și nucleul Unix. Solaris oferă trei shell-uri principale:

    Shell-ul Bourne implicit este /sbin/sh

    C shell -- /bin/csh

    Procesor de comandă Korn-- ./bin/ksh

Pe lângă cele enumerate, Solaris oferă shell-uri suplimentare:

    J shell -- /sbin/jsh

    Korn restricționat l -- / usr/ bin/rsh

    T-shell -- /usr/bin/tcsh

    GNU Bourne Again -- /usr/bin/bash

    Z shell - usr/bin/zsh

Alegerea cochiliei este o chestiune de preferință personală.

2. Rulați comenzi

Orice comandă în Unix constă din numele programului care trebuie pornit (comandă), opțiuni (comutatoare) și argumente transmise programului. Separatoarele liniei de comandă sunt spații sau file.

Exemplu

$ /bin/ping –t 10 192.168.2.13

argument

prompt shell

Dacă calea către fișierul executabil nu este specificată la pornirea programului, atunci sistemul de operare caută secvențial prin directoarele specificate în variabila PATH. Dacă există un program cu același nume în directorul răsfoit, atunci acesta este lansat pentru execuție. Directorul de lucru curent nu este căutat atunci când se caută programe decât dacă este setat în variabila PATH.

! Din motive de securitate, un administrator este sfătuit să nu adauge directorul curent și directoarele personale (personale) ale utilizatorului la variabila PATH.

Exemple

Lansarea programului cu calea completă

$ / usr/ local/ cos/ Ale mele_ program

Lansarea unui program dintr-un director superior (părinte).

$ ../ local/ cos/ Ale mele_ program

Lansarea programului din directorul curent

$ ./ Ale mele_ program

3. Caractere speciale în shell

Unele caractere din shell au semnificații speciale.

3.1. Modele de generare a numelor de fișiere

? (semnul întrebării) se potrivește cu orice caracter, cu excepția primului punct;

(paranteza patrata) definiți un grup de simboluri (se selectează un simbol din grup);

- (semnul minus") definește intervalul de caractere valide;

! (Semnul exclamarii) respinge grupul de personaje care îl urmează;

* (simbol stea) se potrivește cu orice număr de caractere, cu excepția primului punct.

3.2. Simboluri de redirecționare I/O

< - redirecționare intrare;

>, >> - redirecţionarea ieşirii;

2>, 2>> - redirecționarea mesajelor de eroare;

| - transportor.

3.3. Simboluri wildcard

$nume_variabilăq - substituție variabilă;

$(comanda) sau `comanda` -înlocuirea comenzii;

~ - substituție tilde.

4. Căutați

Pentru o căutare rapidă a fișierelor și directoarelor se folosește comanda whereis, pentru una mai profundă, comanda find (căutați fișiere care îndeplinesc cerințele specificate;).

5. vi editor de text

Editorul de text vi este un editor de text universal găsit pe orice Unix. Pe lângă editarea fișierelor text, editorul vi poate fi folosit pentru a edita linia de comandă.

Editorul vi are 3 moduri de operare (vezi figura).

Se intră în editorul vi

Ieșire din vi

Semnul ”~” (tilde) în prima poziție marchează linii goale (inexistente) ale fișierului.

Modul principal este comanda, în care comenzile sunt introduse prin apăsarea unei anumite secvențe de taste (nu sunt afișate în niciun fel pe ecran).

Deplasarea textului în modul de comandă se realizează cu ajutorul săgeților și tastelor (stânga) (jos), (sus), (La dreapta).

Unele comenzi vi sunt listate în tabel.

Ștergeți linia curentă

Copiați linia curentă în clipboard

Mișcarea cursorului

Introducerea caracterelor marcate cu cursorul în buffer

Introduceți o nouă linie în partea de jos

Introduceți o nouă linie în partea de sus

Adăugați după cursor

Adăugați după linia curentă

Lipiți înainte de cursor

Introduceți înaintea liniei curente

Înlocuirea unui caracter cu un caracter introdus de la tastatură

Lipiți text din clipboard

. (punct)

Repetați ultima comandă executată

Anulează ultima comandă

Anulați toate modificările de pe linia curentă

Șterge caracterul de deasupra cursorului

În modul de introducere, toate caracterele tastate pe tastatură sunt inserate în text.

În modul ultima linie, comanda pe care o introduceți este afișată pe ultima linie a ecranului.

6. Ajutor

Unix are un manual electronic care conține o descriere a scopului comenzilor, sintaxa acestora, exemple de utilizare etc. Manualul este apelat de comanda man:

7. Comenzi shell de bază

care– afișarea informațiilor despre utilizatorii activi;

ecou– trimite mesaje către terminal;

banner– trimite mesaje către terminal cu majuscule;

om– apelarea sistemului de ajutor online;

Data – ieșirea datei curente;

scrie– transmiterea de mesaje către terminalul altui utilizator;

mesg– permisiunea/interzicerea afisarii mesajelor de la alti utilizatori;

Poștă– trimiterea/primirea corespondenței;

știri- familiarizarea cu noutățile sistemului;

pwd– afișați numele căii absolute a directorului de lucru curent;

CD– schimbarea directorului de lucru;

ls– afișarea informațiilor despre conținutul directorului;

mkdir- crearea unui director;

rmdir– ștergerea unui director;

atingere– actualizarea marcajului de timp al fișierului;

cp- Copiere fișiere;

pisică- îmbinarea și afișarea conținutului fișierelor;

Mai mult– paginarea conținutului fișierului.

mv – mutarea sau redenumirea unui fișier;

rm– ștergerea unui fișier;

alias– crearea unui pseudonim;

tr– transformarea caracterului;

Ieșire- finalizarea curentului coajă-dar;

tricou– interceptarea rezultatelor conductei;

a tăia – selectarea câmpurilor dintr-un șir;

grep– căutare după model;

relatii cu publicul– ieșire fișier la ieșire standard în formatul specificat;

fel- sortare;

cap– ieșirea primelor rânduri ale fișierului;

coadă- scoateți ultimele rânduri ale fișierului;

WC- numărarea numărului de caractere, cuvinte și rânduri;

citit, ecou - citirea și afișarea valorilor variabile;

Test- evaluarea valorii expresiei;

expr, lăsa- calculul expresiilor aritmetice;

8. Coajă-programe

Shell vă permite să salvați o secvență de comenzi într-un fișier și apoi să o executați. Pentru a rula un fișier cu un program shell pentru execuție, trebuie să adăugați dreptul de execuție la drepturile de acces:

$ chmod +x nume_fișier_program

Ramificarea în programele shell este organizată folosind operatori:

dacă-atunci-altfel

Instrucțiuni bucle:

EXERCIȚII

1. Care dintre următoarele comenzi va avea ca rezultat afișarea unui mesaj de bun venit pe ecran? Ce nu sunt? De ce?

$ echo salut

$ echo salut

$ echo SALUT, LUME

$ banner Buna ziua

$ BANNER BUNA ZIUA, LUME

2. Imprimați un mesaj din mai multe linii folosind comenzi ecouȘi banner.

3. Ieșiți data în două rânduri: pe prima linie - zi, lună, an, pe a doua linie - ora curentă, furnizând ieșirii cu un comentariu.

4. Utilizarea comenzii scrie, trimite un mesaj la consolă. Trimiteți mesaje către mai multe terminale în același timp.

5. Utilizarea comenzii mesg, stabiliți dacă mesajele sunt permise pe terminalul dvs. Dezactivați mesajele. Care va fi reacția sistemului dacă cineva va încerca să vă trimită un mesaj?

6. Denumiți-vă ACASĂ-catalog.

7. Parcurgeți subarborele directoarelor pornind de la directorul /export/home folosind comenzile cd, lsȘi pwd.

8.. Creați în dvs ACASĂ-directoare subdirectoare de forma:

flori de fructe

mar pere struguri trandafir violet papadie

verde inchis

9. Fiind în tine ACASĂ-directory, creați următoarele subdirectoare folosind o singură linie de comandă:

A/B/C/D

10. Fiind în tine ACASĂ-directory, ștergeți toate subdirectoarele din director A.

11. Fiind în ACASĂ-director, creați un fișier macintosh în catalogul existent mărși mai multe fișiere în directoare întunericȘi verde. Intră în director fcoboară. Fiind în director fcoboară, copiați toate subdirectoarele frudeleîmpreună cu fișierele pe care le conțin într-un director special creat coş.

12. Fiind în catalog fcoboară, eliminați directorul frudele.

13. Citiți fișierul .profil folosind comenzi pisicăȘi Mai Mult.

14. Creați în ACASĂ- fișier text director Dosarul meu din mai multe linii cu comanda pisică. Creați un fișier text MyFile, scriind aceleași rânduri în el. Câte fișiere ai primit? De ce?

15. Vizualizați conținutul fișierului creat în sarcina 2.2 Dosarul meu. Copiați fișierul Dosarul meu la dosar mycopy. Vizualizați conținutul ambelor fișiere.

16. Mutați fișierul mycopy a cataloga flori.

17. Fiind în ACASĂ-director, creați un link mylegătură pe fișier mycopy situat în director flori. Vizualizați fișierul link.

18. Adăugați o linie la fișier Ale melelegătură. Care dintre dosare Ale melelegătură, Ale melecopie, Ale melefişier schimbat? De ce?

19. Ce comandă poate fi folosită pentru a determina numărul de legături? Determinați numărul de link-uri pentru fișiere Ale melelegătură, Ale melecopie, Ale melefişier.

Sterge fisierul mycopy. Ce sa întâmplat cu fișierul link? Determinați numărul de link-uri pentru fișiere Ale melelegătură, Ale melefişier.

20. Creați un alias dir Un care tipărește conținutul directorului curent în format extins.

21. Deconectați-vă și conectați-vă din nou. Funcționează aliasul? dir? Ce ar trebui făcut pentru ca aliasul să nu se „pierde” între sesiuni?

22. Creați un alias punct, care tipărește o listă de fișiere din directorul de lucru ale căror nume încep cu un punct.

23. Utilizarea comenzii atingere, creați fișiere într-un director nou cu nume astfel încât, în același timp:

Șablon A* potriviți 5 fișiere;

Șablon * A potriviți 4 fișiere;

Șablon ??.? potriviți 3 fișiere;

Șablon * aa* 2 fișiere potrivite;

Șablon??? a corespuns 1 fișier.

24. Ce comandă trebuie introdusă pentru a face următoarele:

a) afișați numele tuturor fișierelor începând cu un punct;

b) afișați numele tuturor fișierelor care se termină în ".txt";

c) tipăriți numele tuturor fișierelor care conțin cuvântul "Ale mele";

25. Schimbați toate literele mici în majuscule într-un fișier dat, toate literele mari în minuscule într-un altul. Eliminați toate spațiile duplicate din fișier.

26. Creați un fișier numit * . Ștergeți numai acest fișier. Aveți grijă când utilizați caractere de generare a numelor de fișiere!

27. Creați un fișier cu un caracter spațiu în numele său. Cum se șterge un astfel de fișier?

28. Utilizarea comenzii pisică dublați conținutul fișierului prin adăugarea conținutului original la sfârșitul aceluiași fișier. Accesați directorul flori. Adăugați la fișier listă listează conținutul directorului flori. Vizualizați conținutul unui fișier

29. Încercați să citiți cu comanda pisică dosar inexistent. Care este reacția sistemului? Faceți același lucru redirecționând mesajele de eroare către un fișier eroarea mea. Ce vezi pe ecran? Vezi fișierul eroarea mea.

30. Creați o conductă pentru a enumera numai numele și permisiunile fișierelor aflate în prezent în directorul dvs. de lucru.

31. Schimbați conducta construită astfel încât lista să fie stocată într-un fișier listă Al tău ACASĂ-director și a fost afișat doar numărul de fișiere din listă.

32. Afișați conținutul unui fișier /etc/passwd, sortate după câmpul nume de utilizator.

33. Creați un alias logatpe, care va afișa o listă ordonată alfabetic cu numele utilizatorilor conectați în prezent în sistem.

33. Afișați data curentă cu majuscule folosind comenzile DataȘi banner.

34. Atribuiți unei variabile EU SUNT Numele dvs. de înregistrare. Rulați altul coajă. Vedeți această variabilă? Ce trebuie făcut pentru a-l vedea în generat coajă? Modificați valoarea unei variabile EU SUNTîn generat coajă. Ieșirea a apărut coajă. Priviți valoarea acestei variabile în original coajă. Explicați rezultatul.

35. Scrie coajă-program info, care va cere utilizatorului să introducă un nume, o adresă, o zi, o lună și un an de naștere și să afișeze aceste informații în ordine inversă

36. Scrie coajă- un program care va afișa o invitație de a introduce un număr, stoca numărul introdus într-o variabilă Yși imprimați un mesaj „Y este mai mare decât 7”, dacă valoare Y mai mare de 7 și „Y estenu mai mare decât 7” in caz contrar.

37. Scrieți un program shell care să afișeze următoarele statistici:

a) numele dvs.;

b) numărul de argumente cu care se lansează;

c) tipărește fiecare dintre argumentele sale și lungimea argumentului în caractere;

38. Scrie coajă-un program care determină numărul de argumente pe linia de comandă și emite un mesaj de eroare dacă numărul de argumente nu este egal cu trei, sau argumentele în sine dacă numărul lor este egal cu trei.

39. Scrie coajă- un program care va emite o solicitare pentru introducerea unui ID de utilizator, verificarea ID-ului pentru conformitate cu cele utilizate în sistem și afișarea numelui complet ACASĂ-director sau, în cazul unui identificator nevalid, emite un mesaj de eroare.

40. Scrieți un program shell Buna ziua, oferind următorul răspuns la argumentele liniei de comandă:

Argument „-d”- programul va executa comanda Data;

Argument „-l”- programul va afișa conținutul directorului curent;

    dacă nu există argumente sau argumente invalide pe linia de comandă, programul va afișa ajutor despre opțiunile sale.

41. Scrieți un program cuvinte, care va solicita utilizatorului să introducă câte un cuvânt până când acesta introduce un cuvânt Sfârșit. Amintiți-vă toate cuvintele introduse. După introducerea cuvântului Sfârșit afișează pe ecran toate cuvintele introduse.

42. Schimbați promptul de sistem pentru a include calea completă a directorului de lucru curent .

43. Scrieți un program virus, care creează o copie executabilă a sa cu un alt nume și apoi se șterge.

44. Scrieți un program virus2 , care caută în directorul curent programe de limbaj de comandă și adaugă la textul lor o comandă pentru a afișa cuvântul infectat!”.

45. Scrie un program virus3 , care adaugă propriul cod la programele în limbajul de comandă pe care le găsește pentru a infecta alte programe.

46. ​​​​Scrieți un program virus4 modificându-vă virusul astfel încât, atunci când este infectat, codul infectant să fie eliminat din programul infectant.

47. Scrie un program antivirus, care ar găsi toate programele shell infectate de virusul dvs.

48. Modificați programul dezvoltat astfel încât nu numai să găsească programe infectate în directorul specificat de acesta, ci și să le „vindece”, salvând versiunea infectată într-un fișier nou, în numele căruia are finalul . vir, și eliminarea atributului execute dintr-un astfel de fișier.

49. Scrieți un program virus5 , care ar:

a) ar infecta programele shell din directorul curent și subdirectoarele acestuia cu un virus numai dacă utilizatorul a introdus comanda ls;

b) se comportă ca o echipă ls, fără să dea nimic pe terminalul muncii lor.

50. Scrie program virus6 bazat pe programe virus2 -virus5 , al cărui cod de infectare nu a putut fi detectat de programul dezvoltat de dumneavoastră antivirus, iar infecția ar avea loc la orice valoare a variabilei CALE.

51. Scrie un program supervirus, a cărui lansare vă infectează fișierele cu virusul dezvoltat în sarcina anterioară și de fiecare dată când vă conectați la sistem, se încearcă infectarea fișierelor camarazilor tăi. Program supervirus se șterge după prima rulare.

52. Scrieți un program superantivirus, care detectează și „vindecă” complet (dacă este specificată opțiunea corespunzătoare) toate fișierele din directorul specificat și subdirectoarele acestuia de toți virușii dezvoltați.

Această secțiune oferă documentație pentru a ajuta programatorul în limbaje shell (sh, bash, ksh și altele)

interpret de comandă c-shell

0. Introducere

Interpretul de comenzi în mediul UNIX îndeplinește două funcții principale:

reprezintă o interfață interactivă cu utilizatorul, adică emite o invitație și procesează comenzile introduse de utilizator;
procesează și execută fișiere text care conțin comenzi de interpret (fișiere batch);

În acest din urmă caz, sistemul de operare permite ca fișierele batch să fie tratate ca un fel de fișier executabil. În consecință, se disting două moduri de funcționare a interpretului: interactiv și comandă.

Într-un mediu UNIX (spre deosebire de, să zicem, DOS), există mai multe shell-uri diferite disponibile. Enumerăm cele mai populare:

/bin/sh - Shell Bourne. Din punct de vedere istoric, acesta este primul shell de comandă dezvoltat pentru prima versiune a sistemului de operare UNIX. Acest shell este în prezent shell-ul principal în versiunile UNIX System V.
/bin/csh - C-shell. Un shell a cărui sintaxă a limbajului de comandă este apropiată de C. Este shell-ul principal pentru varietatea Berkeley a sistemului de operare UNIX.
/bin/ksh - k-shell.
/bin/rsh - Shell restricționat. Este sh cu capabilități limitate (în primul rând pentru a proteja sistemul de operare de acțiunile neautorizate ale utilizatorului).

Sistemul de operare ConvexOS este o variantă 4.3 BSD UNIX()BSD - Berkeley Series Distribution și, prin urmare, shell-ul de bază este csh.

1. Caracteristici principale

Lucrul cu linia de comandă

Interpretul percepe șirul tastat de utilizator ca o comandă (sau mai multe comenzi). Sintaxa shell vă permite să tastați

mai multe comenzi pe o linie separate prin punct și virgulă. De exemplu

este echivalent cu două comenzi consecutive:

Dimpotrivă, dacă dorește, utilizatorul poate

continuați să tastați comanda lungă pe linia următoare, terminând linia curentă cu \\. Veți primi un ``prompt secundar''> în loc de promptul principal (%) până când comanda este terminată. De exemplu,

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

echivalentă cu

% tar tv Makefile star.o \

> star.c star.dat \

Fluxurile I/O sunt gestionate într-un mod similar cu DOS (Mai precis, DOS a adoptat sintaxa de redirecționare a fluxului de la UNIX) folosind simbolurile > , > > ,

Un caz special util de utilizare a mecanismului de redirecționare a fluxului este redirecționarea către /dev/null, care vă permite să scăpați de mesajele inutile de pe ecran. Folosind același mecanism, puteți crea fișiere goale:

va crea un fișier gol myfile în directorul curent.

În plus, C-shell vă permite să grupați comenzi folosind paranteze. În acest caz, întreaga structură din paranteze este tratată de interpret ca o singură comandă. Acest lucru este util, de exemplu, în astfel de construcții:

%(comandă1|comandă2)

Dacă omiteți parantezele, shell-ul nu va putea determina care dintre comenzi doriți să introduceți fișierul myfile.

Următoarele „conveniențe” există în această implementare C-shell:

Nu puteți introduce o comandă lungă până la sfârșit, dar încercați să apăsați tasta Tab după o comandă parțială (sau un nume de fișier). C-shell va încerca să completeze el însuși caracterele lipsă sau va răspunde cu un scârțâit dacă alegerea este ambiguă.
Dacă ați tastat o comandă, dar ați uitat opțiunile acesteia, introduceți secvența H. C-shell vă va oferi un scurt ajutor. De exemplu,

Când tastați numele complet al unui fișier, utilizați combinația de taste ^D. Puteți obține o listă a directorului care este tastat în formatul comenzii lf.
Bufferul de comenzi reține ultimele 20 de comenzi. În loc să tastați o comandă, o puteți apela din buffer folosind tastatura cu săgeți (desigur, doar dacă această comandă este în buffer).

Analiza liniei de comandă

Interpretul, după ce a primit linia de comandă, efectuează o serie de transformări pe aceasta, și anume:

Extinde aliasurile (alias)
Extinde metacaracterele (*, ?, [, ], ~, (, ))
Înlocuiește variabilele shell
Execută comanda dacă este o comandă încorporată a interpretorului sau pornește procesul dacă comanda este externă.

Să dezvăluim acești pași pas cu pas.

Aliasuri (alias). Comanda de alias încorporată vă permite să definiți aliasuri de comandă. Exemplu:

% alias mycat „pisica | mai mult”

definește mycat ca un alias pentru șirul cat | Mai Mult. Prin urmare, puteți utiliza comanda mycat, care va fi extinsă de interpret oriunde o utilizați. Acesta este un mod de a defini nume scurte pentru comenzile compuse lungi.

Comanda încorporată unalias mycat elimină aliasul mycat introdus anterior.

Metacaracterele. Metacaracterele vă permit să scrieți succint liste întregi de cuvinte (în principal nume de fișiere). Shell tratează un cuvânt care conține metacaractere ca un șablon pentru listarea numelor de fișiere:

* într-un model înlocuiește orice succesiune de caractere. De exemplu, m* se va extinde la o listă cu toate fișierele care încep cu litera m. Există o mică excepție de la această regulă: pur și simplu * omite acele fișiere din listă ale căror nume încep cu un punct.
? înlocuiește un caracter. De exemplu m? se extinde la o listă a tuturor numelor de fișiere care încep cu litera m și constând din exact două litere.
[.-.] vă permite să specificați spațierea pentru caracterul înlocuit. De exemplu, m ar fi extins la ma mb mc me.
(...,...) vă permite să enumerați cuvinte pentru înlocuire. Deci, de exemplu, m (roșu, albastru, verde) va fi extins la mred mblue mggreen.

În cele din urmă, tilde vă permite să specificați directorul principal al utilizatorului:

~name/ este echivalent cu specificarea căii complete către directorul principal al numelui de utilizator (Spune /usr1/name/)
~/ este echivalent cu a da calea completă către propriul tău director principal.

variabile shell. Cuvintele care încep cu simbolul $ sunt interpretate de shell ca nume de variabile. Variabilele sunt împărțite în variabile de mediu (vor fi cunoscute de toate programele numite din acest shell și sunt globale în acest sens) și variabile simple.

Comanda încorporată set name=value vă permite să definiți o variabilă simplă numită nume și să îi dați valoarea valorii. După ce a întâlnit expresia $nume pe linia de comandă, interpretul o va înlocui cu valoare. De exemplu,

% set de culoare=albastru

va imprima șirul albastru pe terminal. DAR

% set de culoare=albastru

% echo new$culoare

va da newblue. În cele din urmă, prin intrare

% set de culoare=albastru

% echo $(culoare)nou

primim culoare nouă. Ultimul exemplu demonstrează cum să folosiți acolade pentru a extrage un nume de variabilă dintr-un cuvânt (interpretul ar răspunde la echo $colornew că variabila colornew nu este definită.

Comanda unset distruge variabilele definite anterior.

Pentru a defini o variabilă ca șir cu mai multe cuvinte, includeți-o între ghilimele simple. Exemplu

% set color="albastru sau roșu sau verde"

Variabilele simple pot fi matrice de cuvinte (care trebuie distinse de cazul tocmai luat în considerare, când variabila conține un șir de mai multe cuvinte. Parantezele trebuie folosite pentru a declara o matrice:

% culori setate=(albastru roșu verde)

Acum comanda echo $culori va produce un șir de trei culori (încercați!). Cu toate acestea, puteți lucra și pe elemente de matrice individuale (elementele sunt numerotate de la zero), astfel:

(devine verde). Numărul de elemente din matrice este conținut în variabila $#colors.

va da terminalului numărul 3.

Sunt posibile combinații destul de complexe folosind modele, de exemplu:

% fișiere setate=(m*)

va returna numărul de fișiere din directorul curent începând cu litera m.

Variabilele de mediu sunt numite exact în același mod ca variabilele simple. Diferența constă în modul în care sunt definite:

Comanda % setenv name value setează o variabilă de mediu numită nume. Observați diferența enervantă în sintaxă: nu trebuie să utilizați semnul = atunci când definiți o variabilă de mediu.

O listă cu toate variabilele de mediu poate fi obținută folosind comanda încorporată printenv.

Puteți nedefini o variabilă de mediu cu unsetenv.

În cele din urmă, parantezele NU sunt folosite pentru a defini o matrice de variabile de mediu, dar două puncte sunt folosite ca separatori de matrice:

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

Comenzi și variabile încorporate

Lista celor mai importante comenzi C-shell încorporate cu scurte explicații:

alias definește un alias

bg pune sarcina în modul de execuție în fundal

comanda chdir cale pentru a schimba calea directorului.

echo își imprimă toate argumentele la ieșirea standard

exec filename rulează procesul de la filename în loc de (adică deasupra) shell-ului curent. Revenirea la shell nu este posibilă.

ieșire iese din carcasă.

fg face un proces de fundal sincron.

fișier filename oferă informații despre ceea ce crede sistemul de operare despre acest fișier.

goto label sare necondiționat la linia din fișierul batch etichetat cu eticheta. Nu este utilizat în modul interactiv.

kill pid trimite un semnal de întrerupere către pid-ul procesului, care de obicei duce la oprirea procesului.

nume de fișier sursă citește și execută comenzi din nume de fișier.

set, setenv set variabile interne și de mediu.

shift var mută elementele matricei var spre stânga. În acest caz, dimensiunea matricei este redusă cu unu, iar elementul zero al matricei se pierde. Variabila var trebuie să fie o matrice.

time command execută comanda de comandă și afișează timpul necesar pentru a o executa pe terminal.

unset distruge variabila shell.

unalias elimină un alias de comandă definit anterior.

@name=expr pune rezultatul expresiei aritmetice expr în variabila nume.

Lista celor mai importante variabile C-shell încorporate cu scurte explicații:

matrice argv de opțiuni pentru linia de comandă (utilizată în modul de comandă)

cdpath este directorul în care se schimbă shell-ul atunci când este dată comanda chdir fără argument.

dimensiunea bufferului istoric pentru memorarea comenzilor.

directorul principal al utilizatorului de acasă

mail este locația din sistemul de fișiere a căsuței poștale a utilizatorului.

cale cale de căutare pentru comenzi externe.

promptul este promptul principal al shell-ului.

prompt1 prompt secundar.

Calea completă a shell-ului executabilului shell curent (/bin/csh)

Instrucțiuni de control și instrucțiuni de buclă

Din lista de comenzi shell încorporate, am exclus în mod deliberat instrucțiunile condiționate și bucle, care vor fi discutate aici.

Execuție condiționată

Sintaxa unei instrucțiuni condiționale if în C-shell este următoarea

if (expr) comanda

expr poate fi fie o expresie aritmetică, fie o verificare a atributelor fișierului. Exemplu:

dacă (-f /etc/hosts) cat /etc/hosts

Să luăm în considerare ultimul caz mai detaliat. Sunt posibile următoarele verificări ale atributelor fișierului:

R este lizibil

W este inscriptibil

X disponibil pentru execuție

E verificați existența fișierului

O verificați dacă sunteți proprietarul acestui fișier

Fișierul Z are dimensiune zero

Fișierul F este un fișier normal

Fișierul P este un canal de program numit

Fișierul D este un director

buclă while

Bucla este executată atâta timp cât condiția este adevărată. Exemplu:

while ($#fișiere > 0)

bucla foreach

Acesta este un operator extrem de util care vă permite să parcurgeți elementele unei matrice de cuvinte.

foreach varname(listă)

Corpul buclei este executat de câte ori există elemente în tabloul listă. În acest caz, variabila varname conține următoarea valoare a elementului matrice. Exemplu

pentru fiecare culoare (albastru roșu verde)

echo Culoarea este $culoare

pentru fiecare fișier (*.for)

echo Redenumirea $fișier

mv $fișier `nume de bază $fișier .pentru`.f

Aceasta folosește comanda standard de nume de bază, care „decupează”” din cuvântul dat în primul argument sufixul dat în al doilea argument și imprimă cuvântul rezultat la ieșirea standard. Utilizarea backtick-urilor în limbajul C-shell va fi discutată mai târziu.

Operator condițional multivariat

Sintaxa instrucțiunii condiționale switch în C-shell este următoarea

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

Operatorul permite transferul controlului în funcție de dacă șirul de caractere satisface orice model din set pattern1, pattern2, ... (în acest caz, controlul este transferat într-un bloc delimitat de cazul ... breaksw) sau nu (în acest caz , controlul este transferat la ramura implicită:... endsw În general, instrucțiunea switch este foarte asemănătoare cu operatorul analog al limbajului C.

2. Operarea Shell în modul de comandă

Sa observat deja că csh poate fi rulat în modul de comandă. Mai mult, instrucțiunile condiționale și bucle sunt mai des folosite în fișierele batch. Aici vom lua în considerare caracteristicile unui astfel de lucru în „echipă”.

Identificarea interpretului

Cel mai simplu mod de a porni shell-ul în modul de execuție al unui fișier mycommand este să dai acestui fișier atributul executabil cu comanda chmod:

% chmod +x comanda mea

Acum este suficient să introduceți comanda mycommand de la tastatură și sistemul de operare va lansa automat shell-ul în modul de comandă pentru executarea acestui fișier. Există o capcană în această cale: există mulți interpretori de comenzi în sistem și sintaxa lor de comandă este diferită. Cum stabilește sistemul de operare de ce aveți nevoie? Raspunsul este nu. Trebuie să spuneți în mod explicit sistemului de operare ce interpret doriți să rulați pentru a executa acest fișier batch. Pentru a face acest lucru, prima linie a fișierului dvs. ar trebui să aibă următoarea formă standard:

ceea ce va permite sistemului de operare să facă ceea ce trebuie. Dacă nu furnizați aceste informații, atunci sistemul de operare va presupune (din motive istorice) că fișierul este scris în limbajul Bourne shell și probabil veți primi o mulțime de mesaje de eroare de sintaxă.

Rețineți o altă proprietate utilă a shell-ului în modul de comandă: toate liniile care încep cu semnul # vor fi ignorate. Acest lucru vă permite să adăugați comentarii la textul fișierului batch.

Următorul fapt vă permite să lucrați cu linia de comandă folosind csh: când rulați fișierul batch mycommand, o variabilă internă numită argv este definită automat, reprezentând o serie de opțiuni ale liniei de comandă. De exemplu, următorul fișier batch imprimă pur și simplu toate argumentele sale și numărul lor pe terminal:

# Acest fișier pur și simplu scoate argumentele sale

# și numărul total de argumente

echo Argumente: $argv

echo Număr de argumente: $#argv

Început explicit

Puteți folosi o modalitate mai directă, dar mai puțin convenabilă de a rula un fișier batch, invocând shell-ul cu opțiunea -c filename. Exemplu:

% /bin/csh -c comanda mea arg1 arg2 arg3...

unde cheia trebuie imediat urmată de numele fișierului care se execută. Argumentele necesare sunt specificate după. Rețineți că, cu această metodă de lansare, este posibil ca fișierul să nu aibă atributul executabil.

Citate

Citatele joacă un rol important în sintaxa shell. Există trei tipuri de citate: simple ("), duble (") și backticks (`).

Ghilimele simple sunt folosite pentru a marca textul pe care shell-ul ar trebui să îl ia la propriu. Cu alte cuvinte, textul cuprins între ghilimele simple nu este supus dezvăluirii și interpretării. Exemplu:

ecou „Dolarul este $bun”

obținem literalmente Dollar is $good, chiar dacă semnul dolarului este un metacaracter coajă.

Ghilimele duble scapă dintr-un șir de caractere pe care shell-ul va trata ca un singur cuvânt. Exemplu:

set colors="verde albastru roșu"; ecou $#culori

va returna numărul 1, ceea ce înseamnă că variabila culori este simplă, nu o matrice. Tot ceea ce este în interiorul ghilimelelor duble este supus interpretării de către shell.

Backtick-urile vă permit să reprezentați un șir care constă din rezultatul unei comenzi. Deci, expresia backquoted este tratată ca o comandă pe care o execută shell-ul și ceea ce acea comandă imprimă la ieșirea standard este înlocuită ca șir în locul în care se află ghilimelele. Exemplu:

va seta variabila mytty la șirul pe care îl produce comanda tty (și anume, numele și numărul terminalului curent).

Shell-urile au apărut chiar la începutul dezvoltării Unix, au fost necesare pentru că era singura modalitate de a interacționa cu sistemul. În acest timp, au parcurs un drum foarte lung de dezvoltare și au primit multe funcții noi. Nu este ușor să apreciezi evoluția shell-urilor Linux. Puteți scrie despre asta foarte mult timp și cu siguranță un articol nu este suficient. Vom încerca să acoperim doar cele mai elementare, fără să ne scufundăm prea adânc. Să ne uităm mai întâi la ce este un shell de comandă Linux și ce shell-uri există.

Ce este un shell de comandă Linux/Unix

Un shell Unix este un interpret de linie de comandă care execută comenzile date de utilizator. Introducem o comandă, este interpretată, executată și apoi obținem rezultatul executării ei. Shell-ul oferă interfața tradițională de intrare a comenzilor Unix cu care suntem obișnuiți. Acesta este de obicei un ecran negru și text alb. Introducem comenzi în text simplu și, de asemenea, putem crea scripturi din una sau mai multe comenzi.

Shell-ul este interfața ta pentru a interacționa cu sistemul. După ce vă conectați la un sistem Unix, vă aflați într-un program numit shell.

Shell Thompson

Potrivit istoriei și a multor surse online, primul shell a fost Thompson Shell, scris de Ken Thomson la Bell Labs. Au fost 6 versiuni în total și a fost distribuit din 1971 până în 1975. Funcții acceptate, cum ar fi: redirecționare intrare/ieșire și structuri simple de control - dacă, du-te. Aceste funcții acceptă toate shell-urile de comandă moderne în Linux.

Shell PWB

Carcasa PWB este o modificare a carcasei Thomson dezvoltată de John Masheu. A fost scris pentru a spori confortul programării Shell. Au apărut structuri interesante precum if-then-else-endif, switch și while.

Bourne Shell

Unix și-a început ascensiunea cu shell-ul Bourne. A fost scris de Stefan Born la Bell Labs și a fost folosit ca shell implicit în versiunea Unix 7 din 1979. Un număr mare de caracteristici disponibile în shell-urile moderne au fost deja implementate aici - completarea numelui de fișier, finalizarea comenzii, variabilele de mediu standard și structurile de control încorporate. Bourne Shell se numea sh și se afla pe sistemul de fișiere Unix la /bin/sh.

Pe multe sisteme, programul Bourne shell (sh) este o legătură simbolică sau hard către una dintre alternativele sale:

  • coajă Almquist (cenuşă)
  • Bourne-Again shell (bash)
  • Shell Korn (ksh)
  • Z shell (zsh)

Exemplu de script pentru Bourne Shell:

!/bin/sh
echo "Bună ziua, lume 1!"
echo „Hello World 2!”

coajă Almquist (cenuşă)

Shell Almquist, cunoscut și sub numele de A Shell. Este un shell Unix ușor scris inițial de Kenneth Almqvist. A fost dezvoltat la sfârșitul anilor 1980. Este o modificare a shell-ului Bourne și a înlocuit originalul în BSD Unix lansat în 1990. Acum poate fi folosit pe distribuții precum Debian și Ubuntu ca o versiune de ash numită dash (Debian Almquist shell). Este, de asemenea, popular pe distribuțiile Unix încorporate.

Este un shell Unix rapid, compact și compatibil cu POSTIX, motiv pentru care este adesea folosit pe dispozitive încorporate. Dar Ash nu acceptă istoricul comenzilor. Deși în versiunile moderne această caracteristică a fost deja adăugată.

Bourne-Again Shell (Bash)

Scris de Brian Fox ca parte a Proiectului GNU ca înlocuitor gratuit și deschis pentru shell-ul Bourne. Bash este cel mai popular și utilizat pe scară largă dintre toate shell-urile. Toate distribuțiile Linux sunt livrate implicit cu acest shell. Extinde setul de caracteristici al lui Bourne Shell. Pe majoritatea sistemelor Unix/Linux, acest shell poate fi găsit în sistemul de fișiere la /bin/bash. A fost lansat în 1989.

Datorită acestei popularități, a fost portat pe Windows și distribuit cu suita de compilatoare Cygwin și MinGW. Bash este, de asemenea, folosit în Android și puteți folosi diverse emulatoare de terminale pentru a-l accesa.

Acceptă completarea automată, redirecționarea I/O, completarea comenzilor, variabile și structuri de control pentru decizie (dacă-atunci-elese dacă) și bucle (buclă).

Scripturile Bash încep cu această linie:

Acest shell de comandă Linux acceptă, de asemenea, citirea comenzilor dintr-un fișier și redirecționarea ieșirii către un fișier sau o altă comandă.

Exemplu de cod Bash:

!/bin/sh
dacă [ $zile -gt 365 ]
apoi
echo Acesta este peste un an.
fi

Shell Korn (ksh)

Scris de David Kron și bazat pe sursele shell Bourne. KornShell (ksh) este un shell dezvoltat la Bell Labs încă din 1980. Este compatibil cu Bourne Shell și, de asemenea, încorporează multe caracteristici ale shell-ului C.

Există următoarele versiuni și modificări:

  • Dtksh
  • Carcasă MKS Korn

Exemplu de script:

!/bin/ksh
print Utilizarea spațiului pe disc
du-k
iesirea 0

Z shell (zsh)

Paul Falstad a scris prima versiune cu comanda zsh shell în 1990. Este un shell de comandă Linux care poate fi folosit ca un shell de conectare interactiv, un interpret de comandă foarte puternic. De fapt, Zsh este un shell Bourne extins, cu multe îmbunătățiri, care include unele caracteristici de la Bash, KSH și Tcsh.

Numele Zsh vine de la profesorul Yale Zhong Shao, deoarece Paul era student la Universitatea Princeton.

Sunt acceptate următoarele caracteristici interesante:

  • Finalizarea liniei
  • Istoricul comenzilor partajat în toate sesiunile shell
  • Lucru îmbunătățit cu variabile și matrice
  • Editarea mai multor linii într-un singur buffer
  • Corectarea ortografică și multe altele.

C coajă

Shell-ul C este cunoscut și sub numele de Csh. A fost dezvoltat de Bill Joy când era student la Universitatea din California. Acest shell este foarte comun pe sistemele BSD Linux. Există multe caracteristici interesante aici, inclusiv structuri de control și expresii gramaticale. Acest shell a introdus, de asemenea, o mulțime de caracteristici interesante pentru prima dată, cum ar fi istoric și mecanisme de editare, aliasuri, CDPATH, managementul sarcinilor și hashing, redirecționarea ieșirii, atașarea, înlocuirea variabilelor, execuția în fundal etc.

Ca și alte shell-uri Linux, acceptă fișiere script, redirecționare și structuri de control. Csh este acum folosit sub formă de tcsh pe multe sisteme, cum ar fi MacOS X și Red Hat Linux. Pe Debian, pot fi folosite atât CSH, cât și Tcsh.

Exemplu de cod în C Shell:

!/bin/csh
dacă ($zile > 365) atunci
echo Acesta este peste un an.
endif

peşte

Fish sau Friendly Interactive Shell este un shell de comandă Linux de nouă generație. Este conceput pentru a facilita executarea comenzilor de către utilizator, are evidențierea sintaxelor, evidențierea adreselor corecte de fișiere, o căutare rapidă în istoric, un configurator web, precum și o sintaxă specială de script.

Acesta este un nou shell de comandă în Linux și sintaxa sa este diferită de oricare dintre shell-urile de comandă moderne, ci mai degrabă de limbajul de programare Python.

Un exemplu de creare a unei funcții pe pește:

!/usr/bin/fish
funced su
functia su
/bin/su --shell=/usr/bin/fish $argv
Sfârșit
funcsave su

Puteți vedea o comparație mai detaliată a shell-urilor de comandă din Linux la link.

Asta e tot pentru azi. Sper că te-a interesat.

  • tutorial

De ce și pentru cine este articolul?

Inițial, acesta a fost un memento pentru studenții care încep să lucreze cu sisteme asemănătoare Unix. Cu alte cuvinte, articolul este destinat celor care nu au experiență anterioară în linia de comandă Unix, dar dintr-un motiv sau altul doresc sau trebuie să învețe cum să interacționeze eficient cu aceasta.

Nu va exista repovestire de manas (documentație), iar articolul nu anulează sau înlocuiește citirea lor în niciun fel. În schimb, voi vorbi despre principalele lucruri (comenzi, trucuri și principii) pe care trebuie să le înțelegeți încă de la începutul lucrului în shell-ul Unix pentru a lucra eficient și plăcut.

Articolul tratează medii de tip Unix cu drepturi depline, cu un shell cu funcții complete (de preferință zsh sau bash) și o gamă destul de largă de programe standard.

Ce este coaja

Shell (shell, alias „linia de comandă”, alias CLI, aka „consola”, aka „terminal”, aka „fereastră neagră cu litere albe”) este o interfață text pentru comunicarea cu sistemul de operare (ei bine, spunând-o cu strictețe program, care oferă o astfel de interfață, dar acum această diferență nu este semnificativă).

În general, lucrul prin shell arată astfel: utilizatorul (adică tu) introduce o comandă de la tastatură, apasă Enter, sistemul execută comanda, scrie rezultatul execuției pe ecran și așteaptă din nou următoarea comandă a fi introdus.

Aspect tipic de coajă:

Shell-ul este principala modalitate de a interacționa cu toate sistemele de server asemănătoare Unix.

Unde se găsesc sistemele de linie de comandă?

Acolo unde un shell Unix te poate aștepta, opțiuni populare:
  • macOS (bash);
  • acces de la distanță la server pentru muncă sau pentru un proiect web personal;
  • server de fișiere de acasă cu acces de la distanță;
  • Ubuntu, PC-BSD pe laptop/desktop - Sistemele asemănătoare Unix de astăzi sunt ușor de instalat și utilizat.

Ce sarcini sunt rezonabile de rezolvat cu un shell?

Sarcini naturale pentru care coaja este potrivită, utilă și indispensabilă:
  • lucru interactiv în terminal:
    • compilarea, rularea joburilor prin make;
    • compararea fișierelor text;
    • analiza rapidă ad-hoc a datelor (număr de ip-uri unice în jurnal, distribuția înregistrărilor pe ore/minute etc.);
    • acțiuni în masă unice (omorâți multe procese; dacă lucrați cu un sistem de control al versiunilor, inversați sau rezolvați o grămadă de fișiere);
    • diagnosticarea a ceea ce se întâmplă în sistem (semafore, încuietori, procese, descriptori, spațiu pe disc etc.);
  • scripting:
    • configurați scripturi pe care nu vă puteți baza pe alți interpreți pentru a le rula - nu pentru începători;
    • funcții pentru personalizarea shell-ului interactiv (afectarea promptului, schimbarea directorului, setarea variabilelor de mediu) - nu tocmai pentru începători;
    • scripturi unice, cum ar fi transcodarea în bloc a fișierelor;
    • makefiles.

Absolut primii pași

Noțiuni introductive: Conectare și deconectare

Asigurați-vă că știți exact cum să porniți shell-ul și cum să ieșiți din el.

Dacă vă aflați pe o mașină care are Ubuntu instalat, va trebui să lansați programul Terminal. La sfârșitul lucrării, puteți pur și simplu să închideți fereastra.

Pe MacOS, lansați și Terminal.

Pentru a accesa un server la distanță, utilizați ssh (dacă aveți MacOS, Ubuntu sau un alt sistem asemănător Unix la nivel local) sau putty (dacă aveți Windows).

Cine sunt eu, unde sunt?

Rulați următoarele comenzi:
  • hostname - afișează numele mașinii (serverului) pe care vă aflați în prezent;
  • whoami - afișează datele de conectare (numele tău în sistem);
  • tree -d / |less - imagine pseudografică a arborelui de directoare de pe mașină; ieșire din defilare - q ;
  • pwd - afișează directorul în care vă aflați în prezent; pe linia de comandă nu poți fi „doar așa”, ești neapărat într-un director (=director curent, director de lucru). Probabil, directorul de lucru curent este afișat în promptul dvs. (prompt).
  • ls - lista de fișiere din directorul curent; ls /home - lista de fișiere din directorul specificat;

Istoricul comenzilor (istoric)

O proprietate importantă a unei linii de comandă cu drepturi depline este istoricul comenzilor.

Rulați câteva comenzi: hostname , ls , pwd , whoami . Acum apăsați tasta sus. Comanda anterioară a apărut în linia de intrare. Tastele sus și jos pot fi folosite pentru a deplasa înainte și înapoi prin istorie. Când defilați la numele gazdă, apăsați Enter - comanda va fi executată din nou.

Comenzile din istoric nu pot fi doar re-executate, ci și editate. Derulați istoricul la comanda ls, adăugați tasta -l la ea (s-a dovedit ls -l , există un spațiu înainte de minus, dar nu după). Apăsați Enter - comanda modificată va fi executată.

Derularea istoricului, editarea și re-executarea comenzilor sunt cele mai tipice acțiuni atunci când lucrați în linia de comandă, obișnuiți-vă.

copiaza si lipeste

Linia de comandă este foarte centrată pe text: comenzile sunt text, datele de intrare pentru majoritatea programelor standard sunt text, rezultatul muncii este cel mai adesea și text.

Lucrul frumos despre text este că poate fi copiat și lipit, iar acest lucru este valabil și pentru linia de comandă.

Încercați data de difuzare + „%y-%m-%d, %A”
L-ai introdus integral manual sau copiat din articol? Asigurați-vă că îl puteți copia, îl puteți lipi în terminal și rulați.

După ce înveți cum să folosești man ", asigură-te că poți copia și rula comenzile exemplu din ajutor. Pentru a verifica, caută în ajutorul programului de date pentru secțiunea EXEMPLE, copiază și rulează primul exemplu dat (doar în caz că : semnul dolarului nu face parte din comandă, aceasta este o imagine condiționată a promptului de intrare).

Cum să copiați exact textul de pe terminal și să-l lipiți în terminal depinde de sistemul dvs. și de setările acestuia, așa că, din păcate, nu va funcționa să dați o instrucțiune universală. Pe Ubuntu, încercați asta: copierea este doar selecția mouse-ului, lipirea este butonul din mijloc al mouse-ului. Dacă nu funcționează sau dacă aveți un alt sistem - căutați pe Internet sau întrebați prietenii mai experimentați.

Taste și Opțiuni

În timp ce cercetați istoricul comenzilor, ați întâlnit deja faptul că comanda ls are cel puțin două opțiuni. Dacă îl numești așa, tipărește o listă simplă:

[email protected]: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
Dacă adăugați comutatorul -l, informații detaliate sunt afișate pentru fiecare fișier:

[email protected]: ~/shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira akira 198 13 februarie 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 14 februarie 22:26 shell -first-steps.md -rw-rw-r-- 1 akira akira 146226 Feb 13 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 Feb 13 11:45 shell-survival -quide.md -rw-rw-r-- 1 akira akira 146203 Feb 13 11:35 shell-survival-quide.pdf
Aceasta este o situație foarte tipică: dacă la apelul de comandă se adaugă modificatori speciali (comutatoare, opțiuni, parametri), comportamentul comenzii se modifică. Comparați: arbore / și arbore -d / , nume de gazdă și nume de gazdă -f .

În plus, comenzile pot lua ca parametri nume de fișiere, directoare sau doar șiruri de text. Încerca:

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

om

man - Ajutor pentru comenzile și programele disponibile pe mașina dvs., precum și apelurile de sistem și biblioteca standard C.

Încercați: man grep , man atoi , man chdir , man man .

Derularea înainte și înapoi se face cu butoanele „sus”, „jos”, „PageUp”, „PageDown”, ieșirea din vizualizarea de ajutor se face cu butonul q. Căutarea unui anumit text într-un articol de ajutor: apăsați / (bară oblică), tastați textul de căutare, apăsați Enter. Treceți la următoarele apariții - tasta n.

Toate articolele de ajutor sunt împărțite în categorii. Cel mai important:

  • 1 - programe executabile și comenzi shell (wc , ls , pwd etc.);
  • 2 - apeluri de sistem (fork, dup2 etc.)
  • 3 - funcții de bibliotecă (printf , scanf , cos , exec).
Este necesar să se indice din ce categorie ar trebui să se arate ajutorul în cazurile de coincidență de nume. De exemplu, man 3 printf descrie o funcție din biblioteca standard C, iar man 1 printf descrie un program de consolă cu același nume.

Puteți vizualiza o listă cu toate articolele de ajutor disponibile pe aparat cu comanda man -k. (punctul face și parte din echipă).

Mai puțin

Când trebuie să vizualizați un text foarte lung într-o fereastră de terminal mică (conținutul unui fișier, un om lung etc.), sunt folosite programe speciale „pager” (de la cuvântul pagină / pagină, adică paginare). Cel mai popular scroller este mai puțin și este ceea ce vă oferă defilarea atunci când citiți mans.

Încercați și comparați comportamentul:

cat /etc/bash.bashrc pisica /etc/bash.bashrc |mai putin

Puteți transfera fișierul în scroller imediat în parametrii:

Mai puțin /etc/bash.bashrc

Derulați în sus și în jos - butoanele „sus”, „jos”, „PageUp”, „PageDown”, ieșire - butonul q. Căutați un anumit text: apăsați / (forward slash), introduceți textul de căutare, apăsați Enter. Treceți la următoarele apariții - tasta n. (Recunoașteți instrucțiunile despre om? Nu e de mirare, mai puțin este folosit și pentru a afișa ajutor.)

Drepturile

Un set de „drepturi” este asociat oricărui fișier sau director: dreptul de a citi fișierul, dreptul de a scrie în fișier, dreptul de a executa fișierul. Toți utilizatorii sunt împărțiți în trei categorii: proprietarul fișierului, grupul proprietarului fișierului, toți ceilalți utilizatori.

Puteți vizualiza permisiunile fișierelor cu ls -l . De exemplu:

> ls -l Makefile -rw-r--r-- 1 akira student 198 Feb 13 11:48 Makefile
Această ieșire înseamnă că proprietarul (akira) poate citi și scrie fișierul, grupul (studenții) poate doar să citească și toți ceilalți din utilizator pot, de asemenea, să citească.

Dacă primiți un mesaj de permisiune refuzată în timp ce lucrați, înseamnă că nu aveți suficiente permisiuni pentru obiectul cu care doriți să lucrați.

Citiți mai multe în man chmod .

STDIN, STDOUT, conducte (conducte)

Fiecare program care se execută are asociate 3 fluxuri de date standard: flux de date de intrare STDIN , flux de date de ieșire STDOUT , flux de erori STDERR .

Rulați programul wc, tastați ziua bună astăzi, apăsați Enter, tastați ziua bună, apăsați Enter, apăsați Ctrl+d. Programul wc va afișa statistici cu privire la numărul de litere, cuvinte și linii din text și va ieși:

> Wc ziua bună astăzi ziua bună 2 5 24
În acest caz, ați dat programului STDIN un text de două rânduri și ați primit trei numere în STDOUT.

Acum rulați comanda head -n3 /etc/passwd , ar trebui să arate cam așa:

> 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 acest caz, programul principal nu a citit nimic din STDIN, ci a scris trei rânduri către STDOUT.

Gândiți-vă la asta astfel: un program este o conductă în care STDIN curge și STDOUT iese.

Cea mai importantă proprietate a liniei de comandă Unix este că programele „pipe” pot fi interconectate: ieșirea (STDOUT) a unui program poate fi transmisă ca intrare (STDIN) unui alt program.

O astfel de construcție de programe conectate se numește în engleză pipe (pipe), în rusă - transportor sau pipe.

Combinarea programelor într-o conductă se face cu simbolul | (bară verticală)

Rulați comanda head -n3 /etc/passwd |wc , obțineți ceva de genul acesta:

> head -n3 /etc/passwd |wc 3 3 117
Iată ce s-a întâmplat: programul principal a scos trei linii de text către STDOUT, care a intrat imediat în intrarea programului wc, care, la rândul său, a numărat numărul de caractere, cuvinte și linii din textul primit.

Puteți combina câte programe doriți într-o conductă. De exemplu, puteți adăuga un alt program wc la conducta anterioară, care va număra câte cuvinte și litere au fost în rezultatul primului wc:

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

Compilarea conductelor (pipe) este un lucru foarte comun atunci când lucrați pe linia de comandă. Pentru un exemplu despre cum se realizează acest lucru în practică, consultați secțiunea Compilarea unei conducte cu o linie.

Redirecționare I/O

Ieșirea (STDOUT) a unui program poate fi transmisă nu numai unui alt program, ci pur și simplu scrisă într-un fișier. Această redirecționare se face cu > (mai mare decât semnul):

Data > /tmp/today.txt
Ca urmare a executării acestei comenzi, fișierul /tmp/today.txt va apărea pe disc. Vizualizați conținutul acestuia cu cat /tmp/today.txt

Dacă un fișier cu același nume exista deja, conținutul său vechi va fi distrus. Dacă fișierul nu a existat, acesta va fi creat. Directorul în care este creat fișierul trebuie să existe înainte ca comanda să fie executată.

Dacă nu doriți să suprascrieți fișierul, dar să adăugați ieșire la sfârșitul acestuia, utilizați >> :

Data >> /tmp/today.txt
Verificați ce este acum scris în fișier.

În plus, puteți trece orice fișier în loc de STDIN programului. Încerca:

WC

Ce să faci când ceva nu este clar

Dacă întâmpinați un comportament de sistem pe care nu îl înțelegeți sau doriți să obțineți un anumit rezultat, dar nu știți cum, vă sfătuiesc să procedați în următoarea ordine (apropo, acest lucru se aplică nu numai shell-urilor):
  • formulați întrebarea sau sarcina cât mai clar posibil - nu este nimic mai dificil decât rezolvarea „nu știu ce”;
  • amintiți-vă dacă ați întâmpinat deja aceeași problemă sau o problemă similară - în acest caz, merită să încercați soluția care a funcționat data trecută;
  • citiți man-s-urile adecvate (dacă înțelegeți care man-s sunt potrivite pentru cazul dvs.) - puteți găsi exemple potrivite de utilizare a comenzilor, opțiunile necesare sau link-uri către alte comenzi;
  • gândește-te: este posibil să schimbi puțin sarcina? - poate, modificand putin conditiile, vei ajunge la o problema pe care deja stii sa o rezolvi;
  • pune-ți întrebarea bine definită într-un motor de căutare - poate că răspunsul poate fi găsit pe Stack Overflow sau pe alte site-uri;
Dacă niciuna dintre cele de mai sus nu a ajutat - cereți sfatul unui profesor, un coleg cu experiență sau un prieten. Și nu vă fie teamă să puneți întrebări „prostice” - nu este păcat să nu știți, este păcat să nu întrebați.

Dacă ai rezolvat o problemă dificilă (pe cont propriu, folosind internetul sau alte persoane) - notează-ți soluția în cazul în care tu sau camarazii tăi ai din nou aceeași problemă. Puteți înregistra într-un fișier text simplu, în Evernote, publica în rețelele sociale.

Metode de lucru

Copiaza si lipeste- din man-s, din articole pe StackOverflow, etc. Linia de comandă constă din text, folosește-l: copiază și folosește exemple de comandă, notează descoperirile reușite pentru memorie, publică-le pe twitter și bloguri.

Trageți comanda anterioară din istoric, adăugați o altă comandă la conductă, rulați, repetați.Cm. Consultați și secțiunea „Compilarea unei conducte cu o linie”.

Comenzi de bază

  • schimbarea directorului: cd ;
  • vizualizarea conținutului fișierelor: cat , less , head , tail ;
  • manipulare fisiere: cp , mv , rm ;
  • listare directoare: ls , ls -l , ls -lS ;
  • Structura directoarelor: tree , tree -d (puteți trece un director ca parametru);
  • căutare fișier: găsiți . -Nume ... ;

Analytics

  • wc , wc -l ;
  • sort -k - sortează după câmpul specificat;
  • sort -n - sortare numerică;
  • diff - compara fișiere;
  • grep , grep -v , grep -w , grep "\ " , grep -E - căutare text;
  • uniq , uniq -c - șiruri unice;
  • awk - în varianta awk „(printează $1)”, pentru a lăsa doar primul câmp al fiecărei linii, $1 poate fi schimbat în $2 , $3 , etc.;

Diagnosticarea sistemului

  • ps axuww - informații despre procesele (programe care rulează) care rulează pe mașină;
  • de sus - vedere interactivă a proceselor cu cele mai mari resurse;
  • df - spațiu pe disc folosit și liber;
  • du - dimensiunea totală a fișierelor din director (recursiv cu subdirectoare);
  • strace , ktrace - care sistem apelează procesul pe care îl face;
  • lsof - ce fișiere folosește procesul;
  • netstat -na , netstat -nap - ce porturi și socket-uri sunt deschise pe sistem.

Este posibil să nu aveți unele programe, acestea trebuie instalate suplimentar. În plus, unele opțiuni ale acestor programe sunt disponibile numai pentru utilizatorii privilegiați (rădăcină „y”).

Execuție în vrac și semi-automată

Omiteți mai întâi această secțiune, veți avea nevoie de aceste comenzi și construcții atunci când ajungeți la scripting shell simplu.
  • testare - verificarea conditiilor;
  • în timp ce citire - ciclu prin linii STDIN ;
  • xargs - înlocuirea șirurilor de caractere din STDIN în parametrii programului specificat;
  • seq - generarea de secvențe de numere naturale;
  • () - combina iesirea mai multor comenzi;
  • ; - faceți unul după altul;
  • && - se execută dacă prima comandă se finalizează cu succes;
  • || - executați dacă prima comandă eșuează;
  • tee - ieșirea programului duplicat în STDOUT și într-un fișier de pe disc.

Diverse

  • data - data curenta;
  • curl - descarcă documentul la adresa URL specificată și scrie rezultatul în STDOUT;
  • atingere - actualizați data modificării fișierului;
  • kill - trimite un semnal procesului;
  • adevărat - nu face nimic, returnează adevărat, util pentru organizarea buclelor eterne;
  • sudo - executați o comandă ca root „a.

Compilarea unei conducte cu o singură linie

Să ne uităm la un exemplu de sarcină reală: dorim să omorâm toate procesele task-6-server care rulează în numele utilizatorului curent.

Pasul 1.
Înțelegeți care program produce aproximativ datele necesare, chiar dacă nu în forma sa pură. Pentru sarcina noastră, merită să obțineți o listă a tuturor proceselor din sistem: ps axuww. Alerga.

Pasul 2
Priviți datele primite cu ochii, veniți cu un filtru care va elimina unele dintre datele inutile. Adesea, acesta este grep sau grep -v. Folosind tasta „Sus”, scoateți comanda anterioară din istoric, atribuiți-i un filtru inventat și rulați-l.

Ps axuww |grep `whoami`
- numai procesele utilizatorului actual.

Pasul 3
Repetați pasul 2 până când obțineți datele curate dorite.

"
- toate procesele cu numele dorit (plus, poate, de prisos precum vim task-6-server.c etc.),

Ps axuww |grep `whoami` | grep "\ " | grep -v vim ps axuww |grep `whoami` | grep "\ " | grep -v vim | grep -v mai puțin
- doar procese cu numele dorit

Ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v mai puțin |awk "(printați $2)"

Datele proceselor necesare, pasul 3 finalizat

Pasul 4
Aplicați un manipulator final adecvat. Folosind tasta „Sus”, scoatem comanda anterioară din istoric și adăugăm procesare care va finaliza rezolvarea problemei:

  • |wc -l pentru a număra numărul de procese;
  • >pids pentru a scrie pid-uri într-un fișier;
  • |xargs ucide -9 procese de ucidere.

Sarcini pentru antrenament

Vrei să exersezi noi abilități? Încercați următoarele sarcini:
  • obțineți o listă cu toate fișierele și directoarele din directorul dvs. principal;
  • obțineți o listă cu toate articolele man din categoria 2 (apeluri de sistem);
  • numărați de câte ori apare cuvântul grep în pagina de manual grep;
  • numără câte procese rulează în prezent ca root;
  • găsiți ce comandă apare în numărul maxim de categorii de ajutor (om);
  • numără de câte ori apare cuvântul var pe pagina ya.ru.
Sugestie: veți avea nevoie de find , grep -o , awk "(print $1)" , expresii regulate în grep , curl -s .

Ce să studiezi mai departe?

Dacă începe să-ți placă linia de comandă, nu te opri, continuă să-ți îmbunătățești abilitățile.

Iată câteva programe care vă vor fi cu siguranță utile dacă locuiți pe linia de comandă:

  • găsiți cu opțiuni complexe
  • apropos
  • localiza
  • telnet
  • netcat
  • tcpdump
  • rsync
  • ecran
  • zgrep , zless
  • visudo
  • crontab -e
  • sendmail
De asemenea, merită să înveți un limbaj de scripting în timp, cum ar fi perl sau python, sau chiar ambele.

Cine are nevoie?

Merită să înveți astăzi linia de comandă și scriptul shell? Cu siguranță merită. Voi da doar câteva exemple de cerințele Facebook pentru candidații care doresc să obțină un loc de muncă la FB.

Top articole similare