27Jun

Begynnerveiledningen til Shell Scripting 3: Flere enkle kommandoer &kjeder

click fraud protection

Du har lært hvordan du lager skript, bruker argumenter og bygger for sløyfer. Nå, la oss se på noen flere grunnleggende kommandoer, tekstfilmanipulering og omdirigere inngang og utdata til filer og andre kommandoer.

Enkelte grunnleggende nyttige kommandoer

Vi har allerede gitt deg en grunnleggende sammenstilling av shell-skript og en eksempelbasert oversikt over for looper, men sørg for å sjekke ut disse artiklene hvis du har savnet vår shell scripting guide så langt.

Kommandolinjen er fantastisk av mange grunner, og omdirigering er en av de mest fremtredende. Hvis du måtte legge merke til og reprodusere produksjonen av hver kommando for å ta ytterligere tiltak eller bruke det til noe annet, så ville vi alle blitt galne lenge siden. Omdirigering lar oss bruke den utdataen og lagre den eller bruke den umiddelbart som en inngang for en annen kommando. Vi kan også bruke filer som innganger for andre kommandoer.

Før vi fortsetter, la oss dekke noen grunnleggende kommandoer som kan brukes på mange forskjellige steder.

instagram viewer

echo - Denne kommandoen skriver ut hele sin argumentasjon på kommandolinjen som utdata

ekko-argument med mellomrom

Som du kan se, må spesialtegn være "rømt" slik at de blir behandlet normalt. Dette gjøres ved å bruke et tilbakeslag( \) foran tegnet. Det er en bedre ide å bruke sitater. Ekkokommandoen fungerer også med variabler.

Som du ser, oppfører enkelt og dobbelt anførselstegn annerledes. For mer informasjon, sjekk ut Hva er forskjellen mellom enkle og doble tilbud i Bash Shell?

cat - Denne kommandoen viser innholdet i tekstfiler som utgang.

cat file_to_be_read

La oss si at vi lager denne tekstfilen i nano:

Når vi bruker kattkommandoen på filen, kan vi se det er utgang.

grep - Dette er en av de mest kraftige og nyttige kommandoene som er tilgjengelige for deg i Linux. Den står for Global / Regular Expression Print. Det ser gjennom en fil og skriver ut en linje som samsvarer med et bestemt mønster. Fordi dette mønsteret er basert på "vanlig uttrykk", kan en kort linje gi en rekke mønstre som skal matches. For ikke, skjønt, kan du legge inn en tern for søking.

grep pattern file

Jeg forsikrer deg, grep kan gjøre mer, men for nå la oss holde oss til de enklere ting.

Omdirigere utdata

Hvis du vil omdirigere utdataene fra en kommando til en fil, benytter vi et spesialtegn, større enn symbolet( >).

La oss forandre listen vår, skal vi? Skriv inn følgende kommando:

echo pepperoni & gt;liste

Du kan se at ekkoet ikke viser linjen lenger, og når vi ser på innholdet i "list" -filen, ser vi hva vi ekko der inne.

Vær også oppmerksom på at det forrige innholdet i "listen" ble fjernet. Prøv det igjen:

Dette kan være nyttig når du vil gjenbruke en fil, men ofte vil vi bare legge til en eksisterende fil. For dette bruker vi to påfølgende større enn symboler:

echo yellow peppers & gt; & gt;liste

enkelt! La oss bruke denne kommandoen til å lage en større liste, skal vi?

Der går vi. Jeg tror du kan se hvorfor så mange geeks bruker kommandolinjen til å lage gjøremålslister og lignende, men det blir enda bedre.

La oss ta utgangen av en kommando og sette den inn i en fil:

ls -al / & gt;~ / rotteliste

Å lage lister over filer, redigere dem ned, og deretter kjører kommandoer på de du vil ha, har aldri vært enklere. Og mens vi gjør disse grunnleggende funksjonene i kommandolinjen, fungerer disse godt i skript også.

Rørledning eller kjetting

Rørledning er så oppkalt fordi den bruker røret,( |; delt med \ -tasten på de fleste tastaturer).I hovedsak tar det utdata fra en kommando og direkte mater den til en annen. Du kan lage lange kjeder med kommandoer for å få en svært bestemt ønsket utgang på denne måten, og det er veldig praktisk for kommandoer som grep.

Det virker mye som "& gt;" bortsett fra at det kan kjedes flere ganger, og effekten er mer generell fordi den ikke trenger å gå gjennom en tekstfil.

Som du kan se, er grep saksfølsom. Du kan bruke "-i" -flagget for å gjøre det ignorert.

Omdirigering av innganger

Du kan også ta inn data fra filer for kommandoer ved å bruke symbolet mindre enn( & lt;).

cat & lt;liste

"Det er ikke noe annet enn å bruke et argument!" Kan du si. Vel, du ville være riktig i dette tilfellet. Hvor omdirigering av inngang virkelig kommer til nytte, er i kjedekommandoer sammen.

La oss si at vi vil filtrere et hvilket som helst ord som har "pep" i det fra vår nåværende "list" -fil til en ny fil kalt "revisions".

grep pep & lt;liste & gt;revisjoner

La oss gjøre om denne kommandoen, og legg til noen sortering.

grep pep & lt;liste |sortere & gt;revisjoner

Dette vil bruke "pep" som søkeord fra inntastingsfilen "liste", sorter den i alfabetisk rekkefølge( alle overordnede termer etterfulgt av alle små bokstaver), og send det deretter inn i "revisions" -filen.

For å illustrere sorteringskommandoen, la oss se på følgende eksempel:

Som du kan se, kan du ignorere tilfelle ved å legge til "-f" -flagget i sorteringskommandoen. Dette gjør det enkelt for oss å alfabetisere linjer i tekstfiler og ignorere kapitalisering når det ikke er noe som helst.

Et enkelt skript

La oss lage et skript som har følgende skjema:

script searchterm listfile

Det tar begrepet og bruker grep til å søke gjennom en listefil, sortere resultatene og deretter sende dem til en annen fil.

Her er katalogen som vi skal teste skriptet på:

Og vi kan lage en liste over hva her inne, og kjør deretter skriptet.

Der går du! Jo mer du lærer reglene for vanlige uttrykk, jo mer nøyaktig kan du sette sammen en søkekommando. Og alt som er gyldig i anførselstegn, kan erstatte ditt første argument!

Så langt som sortering går, kan du gjøre mer enn bare sortere alfabetisk. Ta en titt på man siden for noen av følgende kommandoer:

  • tsort - en mer avansert topologisk sorteringsfunksjon
  • tr - lar deg kartlegge bestemte tegn til andre tegn og transkribere mellom dem.
  • uniq - fjerner ikke-unikt( les: duplikat)
  • awk - et veldig avansert tekstbehandlingsspråk / -funksjon som kan brukes til å skille felt i filnavn
  • klipp, lim inn / delta - kommandoer som er nyttige for å isolere felt fra tekstfiler og legge tilnye data i kolonner
  • look - søk som grep gjør, men bruker en ordlistefil( som kan være brukerdefinert) for oppslaget
  • wc - lar deg få ordtelling, linjetelling, karaktertelling og mer

Vi tok en tittpå noen mer grunnleggende i dag som kan være like nyttig på kommandolinjen som i skript. Tekstbasert data er ofte hjertet av ting vi bruker daglig, så å kunne jobbe med det, søke det, og manipulere det er nøkkelen.

Hva er noen av dine favorittskript? Har du spesielle bruksskript for tekstbaserte filer? Del det du vet i kommentarene!