27Jun

Shell-skriptimise algaja juhend 3: põhilised käsud ja rakendusedKetid

Oled õppinud, kuidas luua skripte, kasutada argumente ja ehitada silmuseid. Nüüd vaatame mõningaid lihtsamaid käske, tekstifailide manipuleerimist ja failide ja muude käskude sisend-väljundi suunamist.

Mõned põhilised kasulikud käsud

Oleme juba andnud teile shellipõhiste skriptide ja näidetel põhinevate skriptide ülevaate, kuid kindlasti tutvuge nende artiklitega, kui olete siiani kasutanud meie shelli skriptijuhist.

Käsurea on suurepärane mitmel põhjusel ja ümbersuunamine on üks silmapaistvamaid. Kui teil oleks pidanud iga käsu väljundit märkama ja paljundama, et võtta täiendavaid meetmeid või kasutada seda midagi muud, siis oleksime kõik juba varem hulluks läinud. Redirection võimaldab meil seda väljundit kasutada ja salvestada või kohe kasutada seda teise käsu sisendina. Samuti võime kasutada faile sisenditeks muude käskude jaoks.

Enne kui me läheme edasi, laseme katta mõned põhilised käsklused, mis võivad olla kasutatavad paljudes erinevates kohtades.

echo - See käsk lihtsalt käsureale kogu selle argumendi( kuvab) kui väljund

echo argument koos tühikutega

Nagu näete, peavad erimärgid olema "põgenenud", nii et neid käsitletakse normaalselt. Seda tehakse tähemärgi ees asuva tagasitäigu( \) abil. See on parem mõte kasutada hinnapakkumisi. Echo käsk toimib ka muutujatega.

Nagu näete, käivad üksikud ja topeltjutumärgid erinevalt. Lisateabe saamiseks vaadake, milline on Bashi korpusest ühe ja kahekordse tsitaadi erinevus?

kass - see käsk näitab tekstifailide sisu väljundina.

cat file_to_be_read

Oletame, et me loome selle tekstifaili nano-s:

Kui kasutame faili käsku kass, näeme, et see on väljund.

grep - See on üks kõige võimsamaid ja kasulikke käske, mis on teile Linuxis saadaval. See tähistab Global / Regular Expression Print. See vaatab läbi faili ja prindib kõik jooned, mis sobivad konkreetse mustriga. Kuna see muster põhineb "regulaaravaldisel", võib lühike joon tuua kaasa hulgaliselt mustreid. Sest mitte, aga võite sisestada otsinguterminali.

grep mustritefail

Kinnitan, et grep saab teha rohkem, kuid nüüd jääme lihtsamate asjade juurde.

ümbersuunamine väljundid

Selleks, et suunata käsu väljundit failile, kasutame erimärki, sümbolit suurema kui( >).

Muutame oma nimekirja üles, kas me peame? Sisestage järgmine käsk:

echo pepperoni & gt;nimekiri

Näete, et kaja ei näita enam liini, ja kui vaatame faili "nimekiri" sisu, näeme, mida me siin kajastasime.

Samuti võta arvesse, et eelmise nimekirja sisu on eemaldatud. Proovige uuesti:

See võib olla kasulik, kui soovite faili uuesti kasutada, kuid tihti soovime lihtsalt olemasolevale failile lisada. Selleks kasutame kahte järjestikust suuremat sümbolit:

echo-yellow pepper>nimekiri

Lihtne! Kasutame seda käsku suurema loendi loomiseks, kas me peame?

Siin me läheme. Ma arvan, et saate aru, miks nii paljud geeksid kasutavad käsku, et teha ülesannete nimekirju jms, kuid see muutub veelgi paremaks.

Võtame käsu väljundi ja pane see failiks:

ls -al />~ / rootlist

Failide loendite koostamine, nende redigeerimine ja soovitud käskude käitamine pole kunagi olnud lihtsam. Ja kui me teeme neid põhifunktsioone käsureal, siis toimivad need ka skriptidena hästi.

torujuhtme või ahelate

torud on nimega, sest see kasutab toru( |; jagatud enamiku klaviatuuride võtmega \).Sisuliselt võtab see ühe käsu väljund ja annab selle otse teisele. Saate luua pikkade käskude ahelaid, et sellisel viisil väga spetsiifilist soovitud väljundit saada, ja see on väga kasulik selliste käskude jaoks nagu grep.

See toimib palju nagu "& gt;", välja arvatud see, et seda saab aheldada mitu korda ja selle mõju on üldisem, kuna see ei pea läbima tekstifaili.

Nagu näete, on grep tõstutundlik. Võite kasutada "-i" lippu, et ignoreerida seda.

Ümbersuunavad sisendid

Võite sisestada ka failidest käsud, kasutades vähem kui sümbolit( & lt;).

kass

"See ei erine argumendi kasutamisest!" Võite öelda. Noh, see oleks korrektne. Kui sisendi ümbersuunamine tõepoolest on kasulik, on see aheldamise käsud koos.

Oletame, et tahame filtreerida kõik meie praeguse "loendi" faili "pep" sõnad uude faili nimega "versioonid".

grep pep & lt;nimekiri & gt;muudatused

Lähtume sellest käsklusest ja lisame sorteerimise.

grep pep & lt;nimekiri |sort & gt;versioonid

Kasutab sisendfaili "loendina" otsingutermina "pep", sorteerige see tähestikulises järjekorras( kõik suurtähtede terminid, millele järgneb kõik väikseimad terminid), seejärel edastage see faili "parandused".

Selle sortimendi käskluse illustreerimiseks vaatame järgmist näidet:

Nagu näete, sorteerimiskäsu tähise "-f" lisamine võimaldab ignoreerida juhtumit. See muudab tekstifailide ridade tähestikku lihtsaks ja ignoreerib suurtähtede kasutamist, kui see ei ole oluline.

Lihtne skript

Loome skripti, millel on järgmine vorm:

skript otsingterm listfile

Sellega võtab sõna ja kasutab grep, et otsida loendi faili, sortida tulemusi ja seejärel väljastada need teisele failile.

Siin on kataloog, mida me skripti katsetame:

Ja me saame luua nimekirja siit, seejärel käivitage skript.

Siin sa lähed! Mida rohkem tunnete regulaaravaldiste reegleid, seda täpsemalt saate otsingukäsu kokku panna. Ja kõik, mis kehtib jutumärkides, võib asendada teie esimese argumendi!

Sorteerimise osas saate teha rohkem kui lihtsalt tähestikulises järjekorras. Vaadake manuaalilehte järgmiste käskude jaoks:

  • tsort - täpsem topoloogiline sorteerimisfunktsioon
  • tr - saate kaardistada kindlaid märke teistele tähemärkidele ja nende vahel transkribeerida.
  • uniq - eemaldab mitte-ainulaadsed( loe: dublikaadid)
  • awk - tõesti täiustatud tekstitöötluse keel / funktsioon, mida saab kasutada väljade eraldamiseks failinimedes
  • lõigatud, kleepuvad / liituvad - käskud, mis on kasulikud väljade eraldamiseks tekstifailidest ja lisadesuued andmed veergudesse
  • look - otsingud nagu grep ei, kuid kasutab sõnastikupõhist faili( mida saab täpsustada kasutaja poolt) otsinguks
  • wc - võimaldab teil saada sõnaarvu, reanimede arvu, märkide arvu ja palju muud

täna veel mõned põhitõed, mis võivad olla nii käsitsi kui ka skriptidel kasulikud. Tekstipõhised andmed on tihti kesksel kohal asjades, mida me igapäevaselt kasutame, et saaksime sellega töötada, otsida ja manipuleerida, on oluline.

Millised on teie lemmik skriptid? Kas teil on tekstipõhiste failide jaoks eriotstarbelised skriptid? Jagage kommentaare, mida te teate!