Ghidul începătorului pentru Shell Scripting 3 Mai multe comenzi și lanțuri de bază
Ați învățat cum să creați scripturi, să folosiți argumente și să construiți pentru bucle. Acum, să aruncăm o privire asupra unor comenzi mai importante, manipularea fișierelor text și redirecționarea intrărilor și ieșirilor către fișiere și alte comenzi.
Unele comenzi utile de bază
V-am oferit deja o defalcare de bază a script-urilor shell și a unui contur bazat pe exemple pentru buclele, dar asigurați-vă că ați verificat aceste articole dacă ați pierdut până acum ghidul de scripting pentru shell.
Linia de comandă este minunată din mai multe motive, iar redirecționarea este una dintre cele mai proeminente. Dacă ar fi trebuit să remarcați și să reproduceți rezultatul fiecărei comenzi pentru a continua acțiunea sau pentru a folosi ceva pentru altceva, atunci am fi fost toți nebuni cu mult timp în urmă. Redirecționarea ne permite să folosim această ieșire și să o salvăm sau să o folosim imediat ca o intrare pentru o altă comandă. De asemenea, putem folosi fișiere ca intrări pentru alte comenzi.
Înainte de a continua, să acoperim câteva comenzi de bază care pot fi folosite în multe locuri diferite.
ecou - Această comandă imprimă (afișează) întregul argument pe linia de comandă ca ieșire
echo argument cu spații
După cum puteți vedea, personajele speciale trebuie să fie "scăpate", astfel încât acestea să fie tratate în mod normal. Acest lucru se face prin utilizarea unei loviri înapoi (\) în fața caracterului. Este o idee mai bună de a utiliza citate. Comanda ecou funcționează și cu variabile.
După cum puteți vedea, ghilimele simple și duble se comportă diferit. Pentru mai multe informații, verificați care este diferența dintre cotația unică și cea dublă din Bash Shell?
pisică - Această comandă afișează conținutul fișierelor text ca ieșire.
pisica file_to_be_read
Să presupunem că vom crea acest fișier text în nano:
Când folosim comanda pisică pe fișier, putem vedea că este ieșită.
grep - Aceasta este una dintre cele mai puternice și utile comenzi disponibile în Linux. Este vorba de Print / Expression Regular Expression. Se uită printr-un fișier și tipărește orice linie care se potrivește cu un anumit tipar. Deoarece acest model se bazează pe "expresia regulată", o linie concisă poate oferi o multitudine de modele care să fie potrivite. Pentru că nu, totuși, poți să intri într-o țarc pentru a căuta.
grep file pattern
Te asigur, grep poate face mai mult, dar pentru moment să rămânem la lucrurile mai ușoare.
Redirecționarea ieșirilor
Pentru a redirecționa ieșirea unei comenzi într-un fișier, folosim un caracter special, simbolul mai mare decât (>).
Să ne schimbăm lista, nu? Introduceți următoarea comandă:
echo pepperoni> listă
Puteți vedea că ecoul nu mai afișează linia și când privim conținutul fișierului "list", vedem ce am reluat acolo.
De asemenea, rețineți că conținutul anterior al "listei" a fost eliminat. Incearca din nou:
Acest lucru poate fi util atunci când doriți să reutilizați un fișier, dar de multe ori pur și simplu dorim să adăugăm la un fișier existent. Pentru aceasta, folosim două simboluri mai mari decât cele consecutive:
echo ardei galbeni >>
Uşor! Să folosim această comandă pentru a crea o listă mai mare, nu-i așa??
Acolo mergem. Cred că puteți vedea de ce atât de mulți geeks folosesc linia de comandă pentru a face liste de lucru și altele asemănătoare, dar devine și mai bine.
Să luăm rezultatul unei comenzi și să o punem într-un fișier:
ls -al /> ~ / rootlist
Efectuarea listelor de fișiere, editarea acestora și apoi rularea comenzilor pe cele dorite nu a fost niciodată mai simplă. Și, în timp ce facem aceste funcții de bază în linia de comandă, acestea funcționează bine și în scenarii.
Țevi, sau Chaining
Conducta este denumită astfel deoarece folosește țeavă, (|; partajată cu tasta \ pe majoritatea tastaturilor). În esență, este nevoie de ieșirea unei singure comenzi și o alimentează direct cu alta. Puteți crea lanțuri lungi de comenzi pentru a obține o ieșire foarte specifică dorită în acest fel și este foarte convenabil pentru comenzi precum grep.
Acționează foarte mult ca ">", cu excepția faptului că poate fi înlănțuită de mai multe ori, iar efectul său este mai general, deoarece nu trebuie să treacă printr-un fișier text.
După cum puteți vedea, grepul este sensibil la minuscule. Puteți utiliza pavilionul "-i" pentru a ignora cazul.
Redirecționarea intrărilor
De asemenea, puteți prelua intrări din fișiere pentru comenzi utilizând simbolul mai puțin decât (<).
pisică < list
"Nu este altceva decât să folosiți un argument!", Ați putea spune. Ei bine, ai fi corect în acest caz. În cazul în care redirecționarea de intrare într-adevăr vine la îndemână este în lanț comenzi împreună.
Să presupunem că vrem să filtram orice cuvânt care are "pep" în el din actualul "list" de fișier într-un nou fișier numit "revizii".
grep pep revisions
Să reluăm această comandă și să adăugăm o sortare.
grep pep revisions
Aceasta va folosi "pep" ca termen de căutare din "lista" fișierului de intrare, sortează-l în ordine alfabetică (toți termenii de mai sus urmat de toți termenii de mai mică mărime), apoi îl scoate în fișierul "revisions".
Pentru a ilustra comanda de sortare, să examinăm următorul exemplu:
După cum puteți vedea, adăugarea semnalului "-f" comenzii de sortare vă permite să ignorați cazul. Acest lucru ne face ușor să alfabetizăm liniile din fișierele text și să ignorăm scrierea cu majuscule atunci când nu contează.
Un script simplu
Să creăm un script care are următoarea formă:
script searchterm listfile
Acesta va dura termenul și va folosi grep pentru a căuta printr-un fișier listă, sortați rezultatele și apoi le exportați într-un alt fișier.
Iată directorul pe care îl vom testa scriptul în:
Și putem crea o listă a ceea ce este aici, apoi rulați scenariul.
Acolo te duci! Cu cat invata mai mult regulile expresiilor regulate, cu atat mai bine poti pune o comanda de cautare. Și orice lucru valabil în citate poate fi înlocuit cu primul tău argument!
În ceea ce privește sortarea, puteți face mai mult decât să sortați în ordine alfabetică. Uitați-vă la pagina man pentru câteva din următoarele comenzi:
- tsort - o funcție de sortare topologică mai avansată
- tr - vă permite să cartografiați caractere specifice altor caractere și să transcrieți între ele.
- uniq - elimină orice non-unic (citește: duplicat)
- awk - un limbaj / funcție de procesare foarte avansată a textului care poate fi folosit pentru a separa câmpurile din numele de fișiere
- cut, paste / join - comenzi utile pentru izolarea câmpurilor din fișierele text și adăugarea de noi date în coloane
- caută - caută grep, dar folosește un fișier dicționar (care poate fi specificat de utilizator) pentru căutare
- wc - vă permite să obțineți numărul de cuvinte, numărul de linii, numărul de caractere și multe altele
Am analizat câteva aspecte de bază de astăzi, care pot fi la fel de utile pe linia de comandă ca și în scenariile. Datele bazate pe text sunt adesea în centrul lucrurilor pe care le folosim zilnic, astfel încât să putem lucra cu acestea, să le căutăm și să le manipulăm este esențială.
Care sunt câteva dintre scenariile dvs. preferate? Au script-uri de utilizare specială pentru fișierele bazate pe text? Distribuiți ceea ce știți în comentarii!