Hva er Shell Scripting?
Å være en Linux bruker betyr at du spiller rundt med kommandolinjen. Liker det eller ikke, det er bare noen ting som gjøres mye lettere via dette grensesnittet enn ved å peke og klikke. Jo mer du bruker og lærer kommandolinjen, desto mer ser du potensialet. Vel, kommandolinjen i seg selv er et program: skallet. De fleste Linux distros i dag bruker Bash, og dette er hva du virkelig skriver inn kommandoer inn i.
Nå, noen av dere som brukte Windows før du bruker Linux, kan huske batchfiler. Disse var små tekstfiler som du kunne fylle med kommandoer for å utføre, og Windows ville kjøre dem igjen. Det var en smart og fin måte å få ting gjort, for eksempel å kjøre spill i din videregående datamaskinlaboratorium når du ikke kunne åpne systemmapper eller lage snarveier. Batchfiler i Windows, mens nyttig, er en billig etterligning av shell-skript.
Det er virkelig makt for skripting, tror jeg. Du kommer til å programmere med kommandoer du allerede vet, mens du lærer stifter av de fleste store programmeringsspråk. Trenger du å gjøre noe repeterende og kjedelig? Skript det! Trenger du en snarvei for en virkelig innviklet kommando? Skript det! Vil du bygge et veldig enkelt å bruke kommandolinjegrensesnitt for noe? Skript det!
Før du begynner
Før vi begynner vår skriptserie, la oss dekke noen grunnleggende opplysninger. Vi bruker bash-skallet, som de fleste Linux-distribusjoner bruker innfødt. Bash er tilgjengelig for Mac OS-brukere og Cygwin på Windows også. Siden det er så universelt, bør du kunne skanne uavhengig av plattformen din. I tillegg, så lenge alle kommandoer som refereres finnes, kan skript fungere på flere plattformer med liten eller ingen tilpasning.
Scripting kan enkelt gjøre bruk av "administrator" eller "superuser" privilegier, så det er best å teste skript før du setter dem på jobb. Bruk også sunn fornuft, som å sørge for at du har sikkerhetskopier av filene du skal kjøre et skript på. Det er også veldig viktig å bruke de riktige alternativene, som -i for kommandoen rm, slik at samspillet ditt er nødvendig. Dette kan forhindre noen ekkel feil. Som sådan, les gjennom skript du laster ned og vær forsiktig med data du har, bare hvis ting går galt.
Kjernen er bare enkle tekstfiler. Du kan bruke noen tekstredigerer til å skrive dem: gedit, emacs, vim, nano … Denne listen fortsetter. Bare vær sikker på å lagre den som ren tekst, ikke som rik tekst, eller et Word-dokument. Siden jeg elsker brukervennligheten som nano gir, bruker jeg det.
Skript Tillatelser og navn
Skript utføres som programmer, og for at dette skal skje, må de ha de riktige tillatelsene. Du kan gjøre skript kjørbare ved å kjøre følgende kommando på det:
chmod +x ~/somecrazyfolder/script1
Dette vil tillate noen å kjøre det bestemte skriptet. Hvis du vil begrense bruken til bare brukeren din, kan du bruke dette i stedet:
chmod u+x ~/somecrazyfolder/script1
For å kunne kjøre dette skriptet, må du cd inn i riktig katalog og deretter kjøre skriptet slik:
cd ~/somecrazyfolder
./script1
For å gjøre ting mer praktisk, kan du plassere skript i en "bin" -mappe i din hjemmekatalog:
~/bin
I mange moderne distroer er denne mappen ikke lenger opprettet som standard, men du kan opprette den. Dette er vanligvis hvor kjørbare filer lagres som tilhører brukeren din og ikke til andre brukere. Ved å plassere skript her, kan du bare kjøre dem ved å skrive navnet deres, akkurat som andre kommandoer, i stedet for å måtte cd rundt og bruke prefikset './'.
Før du navngir et skript, bør du imidlertid følgende kommando for å sjekke om du har installert et program som bruker det navnet:
which [command]
Mange mennesker kaller deres tidlige skript "test", og når de prøver å kjøre det i kommandolinjen, skjer ingenting. Dette skyldes at det er i konflikt med testkommandoen, noe som ikke gjør noe uten argumenter. Vær alltid sikker på at skriptnavnene dine ikke står i konflikt med kommandoer, ellers kan du finne deg selv å gjøre ting du ikke har tenkt å gjøre!
Scripting Retningslinjer
- Hvert script skal være med "#! / Bin / bash"
- Hver ny linje er en ny kommando
- Kommentar linjer starter med en #
- Kommandoer er omgitt av ()
Hash-Bang Hack
Når et skall analyserer gjennom en tekstfil, er den mest direkte måten å identifisere filen som et skript ved å lage din første linje:
#!/bin/bash
Hvis du bruker et annet skall, erstatte du banen her. Kommentar linjer starter med hashes (#), men legger til bang (!) Og shell banen etter at det er en slags hack som vil omgå denne kommentaren regel og vil tvinge skriptet til å utføre med skallet som denne linjen peker på.
Ny linje = Ny kommando
Hver ny linje bør betraktes som en ny kommando, eller en komponent av et større system. Hvis / da / andre setninger vil for eksempel overta flere linjer, men hver komponent i det systemet er i en ny linje. Ikke la en kommando bløde over i neste linje, da dette kan avkorte forrige kommando og gi deg en feil på neste linje. Hvis tekstredigereren gjør det, bør du slå av tekstinnpakning for å være på den sikre siden. Du kan slå av tekstinnpakning i nano-bit som rammer ALT + L.
Kommenter Ofte med #s
Hvis du starter en linje med en #, ignoreres linjen. Dette gjør det til en kommentarlinje, der du kan minne deg om hva resultatet av den forrige kommandoen var, eller hva neste kommando vil gjøre. Igjen, slå av tekstinnpakning, eller bry deg om kommentarer til flere linjer som alle begynner med en hash. Å bruke mange kommentarer er en god praksis å beholde, ettersom det lar deg og andre mennesker tilpasse dine skript lettere. Det eneste unntaket er den nevnte Hash-Bang hack, så følg ikke #s med! S.;-)
Kommandoer er omgitt av parenteser
I eldre dager ble kommandosubstitusjoner gjort med enkelt merketegn (`, aksjer ~ -tasten). Vi kommer ikke til å røre på dette ennå, men som de fleste går av og utforske etter å ha lært grunnleggende, er det sannsynligvis en god ide å nevne at du bør bruke parenteser i stedet. Dette skyldes hovedsakelig at når du nest - sette kommandoer i andre kommandoer - fungerer parenteser bedre.
Ditt første skript
La oss starte med et enkelt skript som lar deg kopiere filer og legge til datoer til slutten av filnavnet. La oss kalle det "datecp". Først, la oss sjekke for å se om det navnet står i konflikt med noe:
La oss lage en tom fil i ~ / bin-mappen:
touch ~/bin/datecp
nano ~/bin/datecp
Og la oss gå videre og sette inn forutsetningen første linje, og en kommentar om hva dette skriptet gjør.
Hva skal vi sette inn variabel? Vel, la oss lagre dato og klokkeslett! For å gjøre dette, ringer vi på datoen kommandoen.
Ta en titt på skjermbildet nedenfor for hvordan du bygger utdataene fra datakommandoen:
La oss bruke den siste iterasjonen av datakommandoen, "dato +% m_% d_% y-% H.% M.% S", og bruk det i vårt skript.
Men la oss gjøre noe annerledes. La oss gi et variabelt navn, som date_formatted til denne kommandoen. Den riktige syntaksen for dette er som følger:
variable=$(command –options arguments)
Og for oss vil vi bygge det slik:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Her er et eksempelskript og dets utgang:
La oss komme tilbake til vårt skript. La oss legge til i kopieringsdelen av kommandoen.
cp –iv $1 $2.$date_formatted
Deretter kan du se at jeg har lagt til «$ 1» -alternativet.Ved skripting vil et dollarskilt ($) etterfulgt av et tall angi det nummererte argumentet for skriptet når det ble påkalt. For eksempel i følgende kommando:
cp –iv Trogdor2.mp3 ringtone.mp3
Det første argumentet er, ÄúTrogdor2.mp3,Äù og det andre argumentet er, Eúringtone.mp3,Äù.
Ser tilbake på skriptet vårt, vi kan se at vi refererer til to argumenter:
Det andre argumentet, $ 2, vil fungere som utdatafil for samme kommando. Men du kan også se at det er annerledes. Vi har lagt til en periode, og vi har referert til, Äúdate_formatted,Äù variabel ovenfra. Nysgjerrig på hva dette gjør?
Her skjer hva som skjer når skriptet kjøres:
Nå når jeg kjører datecp-kommandoen, vil den kjøre dette skriptet og tillate meg å kopiere noen fil til en ny plassering, og legg automatisk til dato og klokkeslett til slutten av filnavnet. Nyttig for arkivering av ting!
Shell skripting er sentral i å gjøre ditt OS arbeid for deg. Du må ikke lære et nytt programmeringsspråk for å få det til å skje heller. Prøv å skripte med noen grunnleggende kommandoer hjemme og begynn å tenke på hva du kan bruke dette til.
Skriver du? Har du råd til nybegynnere? Del dine tanker i kommentarene! Det er mer å komme inn i denne serien!