Begynnerveiledningen til Shell Scripting 3: Flere enkle kommandoer og kjeder

Innholdsfortegnelse:

Begynnerveiledningen til Shell Scripting 3: Flere enkle kommandoer og kjeder
Begynnerveiledningen til Shell Scripting 3: Flere enkle kommandoer og kjeder

Video: Begynnerveiledningen til Shell Scripting 3: Flere enkle kommandoer og kjeder

Video: Begynnerveiledningen til Shell Scripting 3: Flere enkle kommandoer og kjeder
Video: Windows 8 - How to create a shutdown shortcut for your Windows 8 PC - YouTube 2024, November
Anonim
Du har lært hvordan du lager skript, bruker argumenter og bygger for looper. Nå, la oss se på noen flere grunnleggende kommandoer, tekstfilmanipulering og omdirigere inngang og utdata til filer og andre kommandoer.
Du har lært hvordan du lager skript, bruker argumenter og bygger for looper. Nå, la oss se på noen flere grunnleggende kommandoer, tekstfilmanipulering og omdirigere inngang og utdata til filer og andre kommandoer.

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

ekko - Denne kommandoen skriver ut (viser) hele argumentet på kommandolinjen som utgang

echo argument with spaces

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 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 kan se, oppfører enkelt og dobbelt anførselstegn annerledes. For mer informasjon, sjekk ut Hva er forskjellen mellom enkle og doble tilbud i Bash Shell?
Som du kan se, oppfører enkelt og dobbelt anførselstegn annerledes. For mer informasjon, sjekk ut Hva er forskjellen mellom enkle og doble tilbud i Bash Shell?

katt - 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 katten kommandoen på filen, kan vi se det er utgang.
Når vi bruker katten kommandoen på filen, kan vi se det er utgang.
grep - Dette er en av de mest kraftige og nyttige kommandoer 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 - Dette er en av de mest kraftige og nyttige kommandoer 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 tingene.
Jeg forsikrer deg, grep kan gjøre mer, men for nå la oss holde oss til de enklere tingene.

Omdirigere utganger

For å omdirigere utgangen av en kommando til en fil, benytter vi et spesialtegn, større enn symbolet (>).

La oss endre vår liste opp, skal vi? Skriv inn følgende kommando:

echo pepperoni > list

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

Vær også oppmerksom på at det forrige innholdet i "listen" ble fjernet. Prøv 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:
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 >> list

Lett! La oss bruke denne kommandoen til å lage en større liste, skal vi?
Lett! 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.
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 / > ~/rootlist

Å lage lister over filer, redigere dem, og deretter løpe 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å.
Å lage lister over filer, redigere dem, og deretter løpe 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å.

Piping, eller Chaining

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 ">", bortsett fra at det kan kjedes flere ganger, og effekten er mer generell fordi den ikke trenger å gå gjennom en tekstfil.
Det virker mye som ">", 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 saksensitiv. Du kan bruke "-i" -flagget for å gjøre det ignorert.

Image
Image

Omdirigere innganger

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

cat < list

"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.
"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 "revisjoner".

grep pep < list > revisions

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

grep pep < list | sort > revisions

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.
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.
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 vil ta uttrykket og bruke 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å:
Her er katalogen som vi skal teste skriptet på:
Og vi kan lage en liste over hva her inne, og kjør deretter skriptet.
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!
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 - en veldig avansert tekstbehandling språ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 til nye data i kolonner
  • se - søk som grep gjør, men bruker en ordlistefil (som kan være brukerdefinert) for oppslaget
  • wc - lar deg få ordtelling, linjetall, karaktertelling og mer

Vi tok en titt på noe 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 favorittskriptene dine? Har du spesielle bruksskript for tekstbaserte filer? Del det du vet i kommentarene!

Anbefalt: