Gramatica Shell
Comenzi simpleO comanda este o secventa de atribuiri (optionale) urmate de cuvinte separate de spatii si redirectari, terminate cu un operator de control (||, &, &&, ; , ;; , ( , ) , | , <newline>). Primul cuvant reprezinta comanda ce va fi executata, celelalte sunt interpretate ca argumente ale comenzii. Valoarea intoarsa de o comanda este exit status, sau 128+n daca respectiva comanda se incheie cu semnalul n. Conducte (pipelines)O secventa pipeline este aceea in care una sau mai multe comenzi sunt separate de simbolul |. Formatul general al unei secvente pipeline este: [!] comanda1 [| comanda2 ...] Iesirea standard a comenzii 1 este conectata la intrarea standard a comenzii 2. Daca apare caracterul de negare !, exit status-ul pipeline-ului este valoarea negata a exit status-ului ultimei comenzi. Shell-ul asteapta terminarea tuturor comenzilor din pipeline inainte de a intoarce un rezultat. Fiecare comanda dintr-o secventa pipeline este executata ca un proces separat (intr-un subshell). RedirectareRedirectarea fisierelor standard de intrare si de iesire catre alte dispozitive periferice sau fisiere se face folosind operatorii > , >> , < , << . $ls -al > f1 - aceasta comanda redirecteaza afisarea comenzii ls in fisierul f1 in loc de afisarea pe ecran. $ls -al >> f1 - aceasta comanda redirecteaza afisarea comenzii ls in fisierul f1 prin adaugare la sfirsitul lui f1. $mail i97aaa < mesaj - aceasta comanda realizeaza trimiterea unui mesaj prin mail utilizatorului i97aaa preluat din fisierul mesaj. ListeO lista este o secventa de una sau mai multe pipelines separate de unul sau mai multi operatori ; , & , && sau || si terminata cu ; , & sau <newline>. Daca o comanda se termina cu operatorul de control &, shell-ul executa comanda in background intr-un subshell. Shell-ul nu asteapta terminarea comenzii si intoarce valoarea zero. Comenzile separate de ; sunt executate secvential, shell-ul asteapta terminarea fiecareia dintre comenzi, iar valoarea intoarsa este exit status-ul ultimei comenzi executate. Operatorul && se foloseste sub forma: comanda1 && comanda2 si in acest caz comanda2 este executata ddaca comanda1 intoarce un exit status zero. Operatorul || se foloseste astfel: comanda1 || comanda2 , comanda2 executindu-se ddaca comanda1 returneaza un exit status diferit de zero. Exit status-ul returnat este acela al ultimei comenzi executate. Comenzi compuseExista doua modalitati de grupare a mai multor comenzi: prin folosirea parantezelor rotunde () si prin folosirea acoladelor {}. Astfel, constructia urmatoare: (lista_de_comenzi) face ca modificarile aduse mediului de comenzile respective sa nu aiba efect dupa terminarea comenzii (se ruleaza intr-un subshell). Constructia {lista_de_comenzi;} face ca modificarile sa aiba efect asupra mediului existent deoarece lista de comenzi este executata in mediul shell existent. Comentarii intr-un shell scriptComentariile intr-un shell script se introduc folosindu-se caracterul #, care face sa se ignore caracterele existente dupa # si pina la sfarsitul liniei respective. Caracterul escapeCaracterul escape (\) are o semnificatie speciala in shell, fiind folosit de regula pentru a se ignora semnificatia speciala a unor caractere. Spre exemplu, folosit la sfirsitul unui rind si urmat de caracterul <newline>, \ este considerat ca si continuator de linie, astfel incit comanda se poate continua pe linia urmatoare. Se poate folosi aceasta facilitate atunci cind avem de-a face cu comenzi foarte lungi pe care le putem scrie mai convenabil pe mai doua sau chiar mai multe linii. Caracterul backslash isi pastreaza semnificatia speciala daca este urmat de $ , ` , " , \ sau <newline>. VariabileO variabila este o entitate ce memoreaza valori intr-un mod asemanator unei variabile intr-un limbaj de programare conventional. O variabila este setata atunci cind i se atribuie o valoare (variabila=valoare), putind fi dezactivata folosind comanda unset. Variabilele shell pot fi modificate in mod dinamic de catre interpretor sau atribuite la intrarea in sesiune. Dintre variabilele modificate dinamic enumeram:
Dintre variabilele atribuite la intrarea in sesiune enumeram:
|
|