If-Koubou

Vodič za početnike Shell Scripting 3: Više osnovnih naredbi i lanaca

Vodič za početnike Shell Scripting 3: Više osnovnih naredbi i lanaca (Kako da)

Naučili ste kako stvoriti skripte, upotrijebiti argumente i izgraditi petlje. Sada pogledajte neke osnovne naredbe, manipulaciju tekstualnim datotekama i preusmjeravanje ulaza i izlaza datotekama i drugim naredbama.

Neke osnovne korisne naredbe

Već smo vam dali osnovnu podjelu skripti ljuske i shemu obrasca za petlje, ali svakako provjerite te članke ako ste propustili naš vodič za skriptiranje ljuske do sada.

Komandna linija je izuzetno čudna zbog mnogih razloga, a preusmjeravanje je jedan od najistaknutijih. Ako ste morali zabilježiti i reproducirati izlaz svake naredbe kako bi poduzeli daljnje akcije ili upotrijebili to za nešto drugo, onda bismo svi davno bili poludjeli. Preusmjeravanje nam omogućuje da upotrijebimo taj izlaz i spremimo ga ili ga odmah upotrijebimo kao ulaz za drugu naredbu. Također možemo koristiti datoteke kao ulaze za druge naredbe.

Prije nego što krenemo dalje, pokrijmo neke osnovne naredbe koje mogu biti korisne na mnogim mjestima.

jeka - Ova naredba jednostavno ispisuje (prikazuje) cjelinu svog argumenta na naredbenoj liniji kao izlaz

jeka argument s razmakom

Kao što možete vidjeti, posebni znakovi moraju biti "pobjegli" kako bi se oni normalno liječili. To se vrši pomoću obrnute crte (\) ispred znaka. Bolja je ideja koristiti citate. Naredba eho također funkcionira s varijablama.

Kao što možete vidjeti, jednokratne i dvostruke citate ponašaju se drugačije. Dodatne informacije potražite u kolika je razlika između jednokratnih i dvostrukih citata u Bash Shellu?

mačka - Ova naredba prikazuje sadržaj tekstualnih datoteka kao izlaz.

mačka file_to_be_read

Recimo da stvaramo tu tekstnu datoteku u nano:

Kada koristimo mačka naredbu na datoteci, možemo vidjeti da je to izlaz.

grep - Ovo je jedna od najmoćnijih i najkorisnijih naredbi dostupnih u Linuxu. Riječ je za Global / Regular Expression Print. Izgleda kroz datoteku i ispisuje bilo koju liniju koja odgovara određenom uzorku. Budući da se ovaj obrazac temelji na "regularnom izrazu", koncizna linija može dati mnoštvo uzoraka koje treba podudarati. Međutim, ne možete unijeti špageti za pretraživanje.

grep pattern file

Uvjeravam vas, grep može učiniti više, ali za sada se držimo lakših stvari.

Preusmjeravanje izlaza

Za preusmjeravanje izlaza naredbe u datoteku upotrijebimo posebni znak, veći od simbol (>).

Promijenimo naš popis, zar ne? Unesite sljedeću naredbu:

echo pepperoni> popis

Možete vidjeti da eho više ne prikazuje liniju, a kad pogledamo sadržaj datoteke "popisa", vidjet ćemo ono što smo odjekivali.

Također imajte na umu da su prethodni sadržaji "popisa" uklonjeni. Pokušaj ponovno:

To može biti korisno kada želite ponovno upotrijebiti datoteku, ali često samo želimo dodati postojeću datoteku. Za to koristimo dva uzastopna veća simbola:

jeka žuta paprika >> popis

Lako! Koristimo ovu naredbu da napravimo veći popis, zar ne?

Idemo tamo. Mislim da možete vidjeti zašto toliko geek koriste zapovjednu liniju kako bi napravili popise obveza i slično, ali je čak i bolje.

Uzmimo izlaz naredbe i stavimo ga u datoteku:

ls -al /> ~ / rootlist

Izrada popisa datoteka, njihovo uređivanje, a zatim pokretanje naredbi na onima koje želite nikada nije bilo jednostavnije. I, dok radimo ove osnovne funkcije u naredbenom retku, one dobro funkcioniraju iu skriptama.

Cijevi ili lanac

Cjevovod je tako nazvan jer upotrebljava cijev, (|; dijeli se s \ ključom na većini tipkovnica). U osnovi, potrebno je izlaz jedne naredbe i izravno ga hrani drugom. Možete stvoriti dugačke lance naredbi kako biste dobili vrlo specifičan željeni izlaz na ovaj način, a vrlo je pogodan za naredbe poput grepa.

Djeluje puno kao ">", osim što može biti povezano više puta i njegov učinak je općenitije jer ne mora proći tekstualnu datoteku.

Kao što možete vidjeti, grep razlikuje velika i mala slova. Možete upotrijebiti "-i" zastavicu kako biste ga zanemarili.

Preusmjeravanje ulaza

Također možete preuzeti ulaze iz datoteka za naredbe pomoću znaka manjeg od simbola (<).

mačka <popis

"To se ne razlikuje od korištenja argumenata!", Mogli biste reći. Pa, ti bi bio ispravan u ovom slučaju. Tamo gdje je preusmjeravanje ulaza uistinu korisno, u lancu naredbi zajedno.

Recimo da želimo filtrirati bilo koju riječ koja je "pep" u njemu iz naše trenutne "popisa" datoteke u novu datoteku pod nazivom "revizije".

grep Pep revizija

Ponovimo ovu naredbu i dodamo neke sortiranje.

grep Pep revizija

Ovo će upotrijebiti "pep" kao pojam za pretraživanje iz popisa "ulaznih datoteka", poredati abecednim redom (sve gornje pojmove koji slijede sve niže uvjete), a zatim ga izdati u datoteku "revizija".

Da bismo ilustrirali naredbu sortiranja, pogledajmo sljedeći primjer:

Kao što možete vidjeti, dodavanje oznake "-f" u naredbu sortiranja omogućuje vam zanemarivanje slučaja. To nam olakšava redoslijed abecednih redaka u tekstualnim datotekama i zanemarimo kapitalizaciju kad to nije važno.

Jednostavna skripta

Izradimo skriptu koja ima sljedeći obrazac:

script searchterm listfile

To će potrajati pojam i koristiti grep za traženje kroz popis datoteka, sortiranje rezultata, a zatim ih izlaziti na drugu datoteku.

Ovo je direktorij koji ćemo testirati skriptu u:

I možemo izraditi popis onoga što je ovdje, a zatim pokrenuti skriptu.

Izvoli! Što više naučite pravila regularnih izraza, točnije možete sastaviti naredbu za pretraživanje. I, sve što vrijedi u navodima može biti zamijenjeno za vaš prvi argument!

Što se tiče razvrstavanja, možete učiniti više nego samo sortirati abecednim redom. Pogledajte stranicu čovjeka za neke od sljedećih naredbi:

  • tsort - naprednija topološka funkcija sortiranja
  • tr - omogućuje vam da mapirate određene znakove na druge znakove i prijeđete ih između njih.
  • uniq - uklanja bilo koji ne-jedinstven (čitaj: duplikat)
  • awk - stvarno napredni jezik za obradu teksta / funkcija koja se može koristiti za razdvajanje polja u nazivu datoteka
  • izrezati, zalijepiti / pridružiti - naredbe korisne za izoliranje polja iz tekstualnih datoteka i dodavanje novih podataka u stupce
  • izgled - pretraživanja poput grep, ali koristi rječnik datoteku (koja može biti određena korisnik) za pretraživanje
  • wc - omogućuje vam prebrojavanje riječi, broj linija, broj znakova i još mnogo toga

Pogledali smo još neke osnove koje danas mogu biti korisne na naredbenom retku kao iu skriptama. Tekstualni podaci često su u srcu stvari koje svakodnevno upotrebljavamo, tako da je ključna stvar za rad s njim, pretraživanje i manipuliranje.

Koje su neke od svojih omiljenih skripti? Imate li posebne skripte za tekstualne datoteke? Podijelite ono što znate u komentarima!