27Jun

Begynderens Guide til Shell Scripting 3: Flere grundlæggende kommandoer &kæder

click fraud protection

Du har lært, hvordan du opretter scripts, bruger argumenter og bygger til sløjfer. Lad os nu se på nogle flere grundlæggende kommandoer, tekstfilmanipulation og omdirigere input og output til filer og andre kommandoer.

Nogle grundlæggende nyttige kommandoer

Vi har allerede givet dig en grundlæggende sammenfatning af skalskripter og en eksempelbaseret oversigt over for sløjfer, men sørg for at tjekke disse artikler, hvis du har savnet vores shell scripting guide hidtil.

Kommandolinjen er vidunderlig af mange grunde, og omdirigering er en af ​​de mest fremtrædende. Hvis du skulle notere og reproducere output fra hver kommando for at tage yderligere handlinger eller bruge det til noget andet, ville vi alle være gået for længe siden. Omdirigering giver os mulighed for at bruge det output og gemme det eller bruge det som et input til en anden kommando. Vi kan også bruge filer som input til andre kommandoer.

Før vi fortsætter, lad os dække nogle grundlæggende kommandoer, der kan bruges på mange forskellige steder.

instagram viewer

echo - Denne kommando udskriver ganske enkelt( viser) hele dens argument på kommandolinjen som output

ekko argument med mellemrum

Som du kan se, skal specialtegn "undslippes", så de behandles normalt. Dette gøres ved at bruge et backslash( \) foran tegnet. Det er en bedre ide at bruge citater. Ekkokommandoen virker også med variabler.

Som du kan se, opfører enkelte og dobbelt citater anderledes. For mere information, se hvad er forskellen mellem enkelt og dobbelt citater i Bash Shell?

cat - Denne kommando viser indholdet af tekstfiler som output.

cat file_to_be_read

Lad os sige, at vi opretter denne tekstfil i nano:

Når vi bruger kommandoen cat på filen, kan vi se det er output.

grep - Dette er en af ​​de mest kraftfulde og nyttige kommandoer til rådighed i Linux. Det står for Global / Regular Expression Print. Det ser gennem en fil og udskriver enhver linje, der matcher et bestemt mønster. Fordi dette mønster er baseret på "regulært udtryk", kan en kort linje give et væld af mønstre, der skal matches. For ikke kan du dog indtaste en tern til søgning.

grep mønster fil

Jeg forsikrer dig, grep kan gøre mere, men for nu lad os holde os til de lettere ting.

Omdirigere output

For at omdirigere output fra en kommando til en fil benytter vi et specialtegn, større end symbolet( & gt;).

Lad os ændre vores liste op, skal vi? Indtast følgende kommando:

echo pepperoni & gt;liste

Du kan se, at ekko ikke længere viser linjen, og når vi ser på indholdet i "listefilen", ser vi, hvad vi ekkoede derinde.

Bemærk også, at det forrige indhold af "listen" blev fjernet. Prøv det igen:

Dette kan være nyttigt, når du vil genbruge en fil, men ofte vil vi blot tilføje til en eksisterende fil. Til dette bruger vi to på hinanden følgende større end symboler:

echo yellow peppers & gt; & gt;liste

nemt! Lad os bruge denne kommando til at oprette en større liste, skal vi?

Der går vi. Jeg tror, ​​du kan se, hvorfor så mange geeks bruger kommandolinjen til at lave to-do lister og lignende, men det bliver endnu bedre.

Lad os tage output fra en kommando og sætte den i en fil:

ls -al / & gt;~ / rodliste

At lave lister over filer, redigere dem og derefter køre kommandoer på dem, du vil have, har aldrig været enklere. Og mens vi laver disse grundlæggende funktioner i kommandolinjen, fungerer de også godt i scripts.

Rørledning eller kæde

Rørledning er så navngivet, fordi den bruger røret,( |; delt med \ nøglen på de fleste tastaturer).I det væsentlige tager det udgangen af ​​en kommando og direkte føder den til en anden. Du kan oprette lange kommandokæder for at få en meget specifik ønsket udgang på denne måde, og det er meget praktisk til kommandoer som grep.

Det virker meget som "& gt;" bortset fra at det kan kædes flere gange, og dets virkning er mere generel, fordi den ikke behøver at gå gennem en tekstfil.

Som du kan se, er grep sagerfølsom. Du kan bruge "-i" flag for at gøre det ignorere tilfælde.

Omdirigering af indgange

Du kan også tage input fra filer til kommandoer ved at bruge symbolet mindre end( & lt;).

cat & lt;liste

"Det er ikke anderledes end at bruge et argument!" Kan du sige. Nå, du ville være korrekt i dette tilfælde. Hvor omdirigering af input virkelig kommer i brug, er i kædekommandoer sammen.

Lad os sige, at vi vil filtrere ethvert ord, der har "pep" i det fra vores nuværende "list" -fil til en ny fil kaldet "revisions".

grep pep & lt;liste & gt;revisioner

Lad os gentage denne kommando, og tilføj nogle sortering.

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

Dette vil bruge "pep" som søgeord fra inputfilen "list", sorter den i alfabetisk rækkefølge( alle overordnede udtryk efterfulgt af alle små bogstaver), og send det derefter til "revisions" -filen.

For at illustrere sorteringskommandoen, lad os se på følgende eksempel:

Som du kan se, kan du ignorere tilfældet ved at tilføje "-f" -flagget til sorteringskommandoen. Dette gør det nemt for os at alfabetisere linjer i tekstfiler og ignorere kapitalisering, når det ikke betyder noget.

Et simpelt script

Lad os oprette et script, der har følgende form:

script searchterm listfile

Det vil tage ordet og bruge grep til at søge gennem en listefil, sortere resultaterne og derefter udføre dem til en anden fil.

Her er den mappe, som vi skal teste scriptet i:

Og vi kan oprette en liste over hvad her, så kør scriptet.

Der går du! Jo mere du lærer reglerne for regulære udtryk, jo mere præcist kan du sammensætte en søgekommando. Og alt, hvad der er gyldigt i citater, kan erstatte dit første argument!

Hvad sorten går, kan du gøre mere end bare sortere alfabetisk. Se på mandsiden for nogle af følgende kommandoer:

  • tsort - en mere avanceret topologisk sorteringsfunktion
  • tr - lader dig kortlægge bestemte tegn til andre tegn og transkribe mellem dem.
  • uniq - fjerner ikke-unikt( læse: duplikat)
  • awk - en virkelig avanceret tekstbehandlingssprog / -funktion, der kan bruges til at adskille felter i filnavne
  • klippe, indsæt / delt - kommandoer, der er nyttige til at isolere felter fra tekstfiler og tilføjenye data i kolonner
  • look - søger ligesom grep gør, men bruger en ordbog fil( som kan være brugerdefineret) til opslaget
  • wc - lader dig få ordtælling, linjetælling, tegnantal og mere

Vi tog et kigPå nogle mere grundlæggende i dag kan det være lige så nyttigt på kommandolinjen som i scripts. Tekstbaserede data er ofte kernen i ting, vi bruger dagligt, så at kunne arbejde med det, søge det og manipulere det er nøglen.

Hvad er nogle af dine yndlingsskrifter? Har du nogle specielle anvendelsesskrifter til tekstbaserede filer? Del hvad du ved i kommentarerne!