17. Tratarea liniei de comanda.txt

download 17. Tratarea liniei de comanda.txt

If you can't read please download the document

Transcript of 17. Tratarea liniei de comanda.txt

Tratarea de ctre shell a liniei de comandPrelucrarea unei linii: Intai efectueaza parsarea liniei(impartire in cuvinte sau tokeni) considerand ca si separatori caracterele albe(spatiu, tab si linie noua).Apoi verifica daca primul cuvant din linie identifica o comanda interna shell-ului sau un program localizat in sistemul de fisiere. In cazut in care este o com interna aceasta este executata intern de catre shell. Altfel, shell-ul cauta comanda precizata in toate directoarele specificate in variabila de mediu PATH. Daca comanda estegasita, shell-ul creeaza un nou proces care va exec comanda, asteapta terminarea acestui proces si afiseaza daca este cazul eventualele rezultate. Altfel, se va afisaun mesaj de eroare. Etapele parcurse de shell-ul sh si operatiile efectuate pt tratarea liniei de comanda:1. Linia de comanda este despartita in comenzi elementare, luandu-se in considerare separatorii , | && ||2. Fiecare comanda elementara este impartita in cuvinte, separate prin caractere albe(spatii sau -uri).Constructiile "..." si '...' sunt privite ca si un singur cuvant.3. Are loc substituirea variabilelor shell(constructiile de forma ${...}). Operatia are loc si in cazul in care aceasta apare intre ghilimele . Daca insa constructia seafla intre apostroafe,at substitutia nu se mai realizeaza.4. Are loc substituirea fisierelor generice. In locul fiecarei constructii generice specificate se pun numele tuturor fisierelor care se potrivesc cu constructia generica resp5. Are loc substituirea iesirilor unor comenzi(cele scrise intre apostroafe inverse). Daca constructia apare intre ghilimele subst se realizeaza, daca apare intre apostroafe inverse NU!6.Se efectueaza redirectarile < >> >& 7. Se definesc variabilele shell(constructiile de forma nume-valoare)8. Se fixeaza valorile variabilelor $0, $1, $2, ... $-, $#, $* fara a se fixa $?9. Se executa comanda10. Se stabileste valoarea variabilei $?