Ghidul începătorului pentru Shell Scripting 3: Mai multe comenzi și lanțuri de bază

Cuprins:

Video: Ghidul începătorului pentru Shell Scripting 3: Mai multe comenzi și lanțuri de bază

Video: Ghidul începătorului pentru Shell Scripting 3: Mai multe comenzi și lanțuri de bază
Video: Windows 8 - How to create a shutdown shortcut for your Windows 8 PC 2024, Martie
Ghidul începătorului pentru Shell Scripting 3: Mai multe comenzi și lanțuri de bază
Ghidul începătorului pentru Shell Scripting 3: Mai multe comenzi și lanțuri de bază
Anonim
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 mai multor comenzi de bază, manipularea fișierelor text și redirecționarea intrărilor și ieșirilor către fișiere și alte comenzi.
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 mai multor comenzi de bază, 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 de for loop-uri, dar asigurați-vă că verificați acele 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 lua măsuri suplimentare sau pentru a folosi ceva pentru altceva, atunci am fi fost toți nebuni de mult timp în urmă. Redirecționarea ne permite să folosim acea ieșire și să o salvăm sau să o folosim imediat ca o intrare pentru o altă comandă. De asemenea, putem folosi fișierele 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 with spaces

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 variabilele.
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 variabilele.
După cum puteți vedea, citatele unice și duble se comportă diferit. Pentru mai multe informații, verificați care este diferența dintre cotații unice și cele duble în Bash Shell?
După cum puteți vedea, citatele unice și duble se comportă diferit. Pentru mai multe informații, verificați care este diferența dintre cotații unice și cele duble în Bash Shell?

pisică - Această comandă afișează conținutul fișierelor text ca ieșire.

cat file_to_be_read

Să presupunem că vom crea acest fișier text în nano:

Când folosim comanda pisică pe fișier, vedem că este ieșită.
Când folosim comanda pisică pe fișier, vedem că este ieșită.
grep - Aceasta este una dintre cele mai puternice și utile comenzi disponibile în Linux. Este vorba de imprimare globală / regulată a expresiei. 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 genera o multitudine de modele care să fie potrivite. Pentru că nu, puteți să introduceți un țarc pentru a căuta.
grep - Aceasta este una dintre cele mai puternice și utile comenzi disponibile în Linux. Este vorba de imprimare globală / regulată a expresiei. 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 genera o multitudine de modele care să fie potrivite. Pentru că nu, puteți să introduceți un țarc pentru a căuta.

grep pattern file

Vă asigur că grep poate face mai mult, dar acum să rămânem la lucrurile mai ușoare.
Vă asigur că grep poate face mai mult, dar acum 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, cel mai mare decât simbolul (>).

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.
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:
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 yellow peppers >> list

Uşor! Să folosim această comandă pentru a crea o listă mai mare, nu?
Uşor! Să folosim această comandă pentru a crea o listă mai mare, nu?
Vom merge acolo. 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 asemenea, dar devine și mai bună.
Vom merge acolo. 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 asemenea, dar devine și mai bună.

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 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ă, funcționează bine și în scripturi.
Efectuarea listelor de fișiere, editarea acestora și 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ă, funcționează bine și în scripturi.

Țevi, sau Chaining

Conducta este numită așa, deoarece folosește țeavă, (|; partajată cu tasta pe majoritatea tastaturilor). În esență, este nevoie de ieșirea unei singure comenzi și o alimentează direct în 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ă 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 are nevoie să treacă printr-un fișier text.
Acționează 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 are nevoie să treacă printr-un fișier text.

După cum puteți vedea, grepul este sensibil la minuscule. Puteți folosi steagul "-i" pentru a ignora cazul.

Image
Image

Redirecționarea intrărilor

De asemenea, puteți lua intrări din fișiere pentru comenzi utilizând simbolul mai puțin decât (<).

cat < 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ă.
"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 fișierul nostru actual "list" într-un nou fișier numit "revizii".

grep pep < list > revisions

Să reluăm această comandă și să adăugăm o sortare.
Să reluăm această comandă și să adăugăm o sortare.

grep pep < list | sort > revisions

Aceasta va folosi termenul de căutare ca termen de căutare din "lista" fișierului de intrare, va sorta ordinea în ordine alfabetică (toți termenii de mai sus vor fi urmăriți de toți termenii de mai mică mărime), apoi îl veți înscrie în fișierul "revizii".
Aceasta va folosi termenul de căutare ca termen de căutare din "lista" fișierului de intrare, va sorta ordinea în ordine alfabetică (toți termenii de mai sus vor fi urmăriți de toți termenii de mai mică mărime), apoi îl veți înscrie în fișierul "revizii".

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ă.
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 utiliza 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:
Iată directorul pe care îl vom testa scriptul în:
Și putem crea o listă a ceea ce este aici, apoi rulați scenariul.
Ș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 de primul tău argument!
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 de 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 utilizată pentru a separa câmpurile în nume 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ă - căutare ca 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 astăzi câteva elemente de bază 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 comentariile dvs.!

Recomandat: