Hemsida » hur » Nybörjarens guide till Shell Scripting 3 Fler grundläggande kommandon och kedjor

    Nybörjarens guide till Shell Scripting 3 Fler grundläggande kommandon och kedjor

    Du har lärt dig hur du skapar skript, använder argument och bygger för slingor. Låt oss nu titta på några fler grundläggande kommandon, textfilmanipulation och omdirigera inmatning och utmatning till filer och andra kommandon.

    Några grundläggande användbara kommandon

    Vi har redan gett dig en grundläggande sammanfattning av skalskript och en exempelbaserad översikt över för slingor, men se till att kolla in de artiklarna om du har missat vår skalskriptguide så långt.

    Kommandoraden är underbar av många anledningar, och omdirigering är en av de mest framträdande. Om du måste notera och reproducera produktionen av varje kommando för att vidta ytterligare åtgärder eller använda det för något annat, skulle vi alla ha gått galen för länge sedan. Omdirigering låter oss använda den utsignalen och spara den eller omedelbart använda den som en ingång för ett annat kommando. Vi kan också använda filer som ingångar för andra kommandon.

    Innan vi fortsätter, låt oss täcka några grundläggande kommandon som kan användas på många olika ställen.

    eko - Detta kommando skriver ut (visar) hela dess argument på kommandoraden som utgång

    eko-argument med mellanslag

    Som du kan se behöver specialtecken "fly" så att de behandlas normalt. Detta görs genom att använda en backslash (\) framför tecknet. Det är en bättre idé att använda citat. Echo-kommandot fungerar också med variabler.

    Som du kan se, uppträder enskilda och dubbla citat annorlunda. För mer information, kolla Vad är skillnaden mellan enkla och dubbla citat i Bash Shell?

    katt - Detta kommando visar innehållet i textfiler som utgång.

    katt file_to_be_read

    Låt oss säga att vi skapar den här textfilen i nano:

    När vi använder kattkommandot på filen kan vi se det är utgången.

    grep - Detta är en av de mest kraftfulla och användbara kommandon som är tillgängliga för dig i Linux. Den står för Global / Regular Expression Print. Det tittar igenom en fil och skriver ut en rad som matchar ett visst mönster. Eftersom det här mönstret är baserat på "reguljärt uttryck" kan en kort linje ge en mängd mönster som matchas. För inte, du kan dock skriva in en tern för sökning.

    grep-mönsterfilen

    Jag försäkrar dig, grep kan göra mer, men för nu låt oss hålla fast vid de enklare sakerna.

    Omdirigera utgångar

    För att omdirigera utsignalen från ett kommando till en fil använder vi oss av ett specialtecken, den större symbol än (>).

    Låt oss ändra vår lista, ska vi? Ange följande kommando:

    echo pepperoni> listan

    Du kan se att echo inte visar raden längre, och när vi tittar på innehållet i "list" -filen ser vi vad vi echoed där inne.

    Observera också att föregående innehåll i "lista" har tagits bort. Försök igen:

    Detta kan vara användbart när du vill återanvända en fil, men ofta vill vi bara lägga till en befintlig fil. För detta använder vi två i följd större än symboler:

    echo yellow peppers >> listan

    Lätt! Låt oss använda det här kommandot för att skapa en större lista, ska vi?

    Där går vi. Jag tror att du kan se varför så många geeks använder kommandoraden för att göra listor och liknande, men det blir ännu bättre.

    Låt oss ta utmatningen av ett kommando och lägga in det i en fil:

    ls -al /> ~ / rotlista

    Att göra listor med filer, redigera dem, och sedan köra kommandon på de du vill ha har aldrig varit enklare. Och medan vi gör dessa grundläggande funktioner i kommandoraden fungerar de också bra i skript.

    Piping eller Chaining

    Piping är så namngiven eftersom den använder röret, (|; delat med \ -knappen på de flesta tangentbord). I huvudsak tar det utmatningen av ett kommando och direkt matar det till en annan. Du kan skapa långa kedjor med kommandon för att få en mycket specifik önskad utmatning på det här sättet, och det är mycket bekvämt för kommandon som grep.

    Det verkar mycket som ">" förutom att det kan vara kedjat flera gånger och dess effekt är mer generell eftersom det inte behöver gå igenom en textfil.

    Som du kan se är grep skiftlägeskänslig. Du kan använda "-i" -flaggan för att göra det ignorera fallet.

    Omdirigering av ingångar

    Du kan också ta in data från filer för kommandon med hjälp av symbolen mindre än (<).

    katt < list

    "Det är inte annorlunda än att använda ett argument!" Kan du säga. Tja, du skulle vara rätt i det här fallet. Där omdirigering av ingången verkligen kommer till nytta är det i kedjekommandon tillsammans.

    Låt oss säga att vi vill filtrera varje ord som har "pep" i det från vår nuvarande "list" -fil till en ny fil som heter "revisions".

    grep pep revisioner

    Låt oss göra om det här kommandot, och lägg till en sortering.

    grep pep revisioner

    Detta kommer att använda "pep" som sökord från inmatningsfilen "lista", sortera den i alfabetisk ordning (alla överordnade termer följt av alla små bokstäver) och sedan mata ut det i "revisions" -filen.

    För att illustrera sorteringskommandot, låt oss titta på följande exempel:

    Som du kan se lägger du till "-f" -flaggan i sorteringskommandot så att du kan ignorera fallet. Det gör det enkelt för oss att alfabetisera rader i textfiler och ignorera kapitalisering när det inte spelar någon roll.

    Ett enkelt skript

    Låt oss skapa ett skript som har följande formulär:

    script sökord listfile

    Det tar termen och använder grep för att söka igenom en listfil, sortera resultaten och sedan mata ut dem till en annan fil.

    Här är katalogen som vi ska testa skriptet i:

    Och vi kan skapa en lista över vad här och kör sedan skriptet.

    Varsågod! Ju mer du lär dig reglerna för reguljära uttryck, desto mer exakt kan du sätta ihop ett sökkommando. Och allt som är giltigt i citat kan ersättas med ditt första argument!

    När det gäller sortering går det att göra mer än bara sortera alfabetiskt. Ta en titt på mansidan för några av följande kommandon:

    • tsort - en mer avancerad topologisk sorteringsfunktion
    • tr - kan du kartlägga specifika tecken till andra tecken och transkribera mellan dem.
    • uniq - tar bort alla icke-unika (läs: dubblett)
    • awk - ett riktigt avancerat textbehandlingsspråk / -funktion som kan användas för att separera fält i filnamn
    • klippa, klistra in / ansluta - kommandon som är användbara för att isolera fält från textfiler och lägga till nya data i kolumner
    • look - sökningar som grep gör, men använder en ordboksfil (som kan vara användardefinierad) för uppslaget
    • wc - låter dig få ordtal, linjetal, antal tecken och mer

    Vi kollade på några mer grunder idag som kan vara lika användbara på kommandoraden som i skript. Textbaserad data är ofta kärnan i saker vi använder dagligen, så att vi kan arbeta med det, söka det och manipulera det är nyckeln.

    Vad är några av dina favoritskript? Har du några specialanvändningsskript för textbaserade filer? Dela vad du vet i kommentarerna!