27Jun

Ghidul începătorului pentru Shell Scripting 3: Mai multe comenzi de bază &Lanţuri

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

V-am oferit deja o descriere de bază a script-urilor shell și o schiță bazată pe exemple de for loops, dar asigurați-vă că ați verificat acele articole dacă ați pierdut ghidul de scripting pentru shell-uri până acum.

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 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ș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.

echo - Această comandă imprimă pur și simplu( afișează) întregul argument al său pe linia de comandă ca ieșire

argument echo cu spații

După cum puteți vedea, caractere speciale trebuie să fie "scăpat", 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, ghilimele simple ș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?

cat - 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 vom folosi comanda cat pe fișier, vom putea vedea ieșirea.

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.

fișier model grep

Vă asigur, grep poate face mai mult, dar deocamdată să rămânem la lucrurile mai ușor.

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( & gt;).

Să ne schimbăm lista, nu? Introduceți următoarea comandă:

echo pepperoni & gt;lista

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.Încercați 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 simbolurile:

echo ardeii galbeni & gt;listă

Ușor! Să folosim această comandă pentru a crea o listă mai mare, nu?

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 asemenea, dar devine și mai bună.

Să luăm ieșirea unei comenzi și să o plasăm într-un fișier:

ls -al />~ / rootlist

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

Piping sau Chaining

Piping este numit astfel deoarece folosește conducta,( |; 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ă foarte mult ca "& gt;", 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.

Redirecționarea intrărilor

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

catlistă

"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 fișier nou numit "revizii".

grep pep

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

grep pep

Aceasta va folosi "pep" ca termen de căutare din "lista" fișierului de intrare, sortați-l în ordine alfabetică( toți termenii de mai sus urmat de toți termenii de mai mică mărime), apoi ieșiți în fișierul "revisions".

Pentru a ilustra comanda de sortare, să aruncăm o privire la 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ă creați 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 executați scriptul.

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 dintre 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 a textului foarte avansată care poate fi utilizată pentru a separa câmpurile din nume de fișiere
  • tăiat, lipire / îmbinare - comenzi utile pentru izolarea câmpurilor din fișierele text și adăugareadate noi în coloane
  • look - căutări precum grep, dar utilizează 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 aruncat o privirela unele mai multe elemente 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 comentariile dvs.!