Scripturi - este doar

Orice nou administrator de sistem Linux, confruntat mai devreme sau mai târziu, cu un astfel de lucru ca un „scenariu“, fie că este vorba unul din scripturile de pornire, cum ar fi /etc/rc.d/rc sau scrise de către dezvoltatorul configurației software-ului de script-ul de configurare. In acest articol voi încerca să arate că, în scrierea script de shell nu este ceva deosebit și destul de capabil să chiar și un novice în lumea Linux.







Pentru a începe cu, că uite la ceea ce se află în spatele termeni în limba engleză și script de shell. Shell. sau coajă, ca acest termen este tradus uneori - un interpret de comandă, interfața dintre utilizator și sistemul de operare și nucleul său. Dar, în afară de asta, este de asemenea un puternic limbaj de programare și de scripting. Acesta conține structurile sale oficiale de vorbire și de control, și vă permite să scrie programe pe ea. Un astfel de program într-un limbaj de scripting numit script. poate combina apelurile de sistem și comenzi ale sistemului de operare, precum și instrumente externe, crearea unui instrument puternic pentru administrarea sistemului.

Punctul de pornire

Deci, în primul rând, trebuie să înțelegem structura scenariului. Nu este o afacere mare. Prin și script-ul mare, simplu - pur și simplu transfera comenzi ale sistemului. De exemplu:

Aceste comenzi sunt combinate într-un singur fișier. Dar shell-ul trebuie să știe că el ar trebui să se ocupe de acest dosar, și nu doar pentru a citi conținutul său. Pentru aceasta este designul special: #!

Ne vom concentra pe Bash, Bourne-Again Shell. Acest shell este instalat în mod implicit în aproape toate sistemele Linux-și / bin / sh se referă la el. Sfârșitul script-ul spune oficial de ieșire cuvânt.

Deținând aceste informații, putem scrie primul nostru script:







Salvați acest fișier ca tutor1.sh. Rulați comanda pentru a face script-ul executabil.

script-ul rezultat de executare va fi:

Ne întoarcem la mai grave.

Acum, că am învățat să scrie scripturi simple, este timpul pentru a trece la probleme serioase: script scris pentru backup.

În primul rând lucrurile în primul rând, aveți nevoie pentru a determina - o copie de rezervă a ceea ce vom face. Prin urmare, script-ul nostru ar trebui să fie capabil să lucreze cu linia de comandă. argumente în linia de comandă sunt date după numele scriptului prin spațiul liber: somescript arg1 arg2 Arg3. Script-ul acceptă argumentele de numere ale călătoriei, astfel încât vom folosi tipul de construcție # 36; nomer_argumenta, adică # 36; 1, 36 # 2, # 36; 3. # 36; - este un joker, pe care vom avea nevoie atunci când se lucrează cu variabile. Variabilele din scenariu sunt stabilite în formă de variabilă name = valoare. Vom folosi variabile MAXPARAMS pentru a determina numărul maxim de opțiuni de linie de comandă, BackupFile pentru a seta numele arhivei, BackupDir pentru backup dosarul pe care îl vom face, și directorul ARCHIVEDIR, unde vom pune fișierul. Cea mai importantă parte a script-ul va căuta echipe și de rezervă toate fișierele și folderele găsite în această:

Să vedem ce fac aceste comenzi. găsi căutări directorul curent (după cum reiese din primul argument este „“) toate fișierele și oferă calea completă la ea (-print0). Aceste căi sunt redirecționate către comanda tar, care colectează toate fișierele într-o singură. Apoi, comanda gzip am arhiva rezultat tar-fișier. Comandă> / dev / null este util dacă arhivați un număr mare de fișiere. În acest caz, numele și calea completă către acesta nu este afișat pe consola.

Următorul pas este de a oferi indicii pentru utilizator cum să utilizeze script-ul dacă nu permite greșeli.

De exemplu, acest design

spune ca utilizatorul să aibă un număr insuficient de argumente în linia de comandă. Dacă [condiție]. fi definește constructul condiționată. # 36; # -Este „# 36; MAXPARAMS“ Permisiunea verifică numărul de parametri, iar în cazul în care acest număr este mai mic decât MAXPARAMS, utilizatorul va vedea un mesaj despre o valoare nevalidă. Exit 0 va provoca script-ul pentru a opri de lucru, fără a da un cod de eroare. În mod similar verificat care depășește numărul admisibil de parametri, dar în schimb ls (mai puțin - mai puțin) trebuie să specifice gt (mai mare, apoi - înainte). Acum, că principalele puncte ale script-ul a explicat, puteți trece la versiunea completă a acesteia:

P.S. Multe mulțumiri mar pentru comentarii și sfaturi sale.