Hvis du kommer i gang med Linux-systemer, vil begreper som “Shell scripting” eller “Bash-skripting”Kan være ganske vanlig - men hva betyr de? Før vi kommer i detalj, kan læring av Bash-skripting hjelpe deg med å spare tid på å utføre og utføre forskjellige systemoppgaver og forstå Linux-kommandolinjen (Terminal) bedre og automatisere flere systemoppgaver.
Hva er Bash?
Bash, et akronym for “Bourne-Again-Shell,” er et Unix-skall eller kommandospråktolk for GNU-operativsystemet. Det har vært den viktigste Shell for Linux-distribusjoner og Apple macOS-utgivelser før macOS Catalina. Bash er også tilgjengelig for Windows 10 via Windows-delsystemet for Linux.
Bash kjører vanligvis i et tekstvindu, kjent som Terminal, der brukere skriver inn kommandoer for å utføre forskjellige oppgaver. Bash kan også utføre kommandoer skrevet i en fil, en metode referert til som “Bash scripting.”
Forskjellen mellom Bash scripting og Shell Scripting
Shell-skripting og Bash-skripting er ikke de samme tingene. Med Bash scripting bruker du eksplisitt bash-skallet. På den annen side kan Shell-skripting være et ganske bredt ord siden vi har andre skjell tilgjengelig enn Bash. Noen av de vanligste inkluderer Korn (ksh), C shell (csh), Z shell (zsh) og Bash shell (sh). Det ville imidlertid ikke være en overraskelse å finne folk som bruker bash scripting og shell scripting om hverandre for å bety det samme. Innlegget vårt på Topp 6 Open Source Shells for Linux gir en detaljert beskrivelse av disse skallene.
I dette innlegget vil vi se på Bash scripting. Som standard bruker mange tilgjengelige Linux-distribusjoner Bash-skallet. Sjekk ut innlegget vårt på de 6 beste Linux-distribusjonene for nybegynnere. For å bekrefte skallet du bruker på din nåværende Linux-distribusjon, utfør kommandoen på terminalen.
ekko $ SHELL
Fra bildet over kan du se standard tolk i systemet mitt er bash. For øyeblikket kjører jeg Ubuntu 20.04 LTS. La oss dykke inn!
Forstå Bash-skript
Bash-skript er tekstfiler som inneholder bash-kommandoer som utføres for å utføre forskjellige oppgaver. For å skrive disse skriptene trenger du bare en enkel tekstredigerer som gedit, leaf pad, vim, nano og mye mer. Husk å lagre skriptene dine med en .sh
utvidelse og som ren tekst og ikke rik tekst. En av favorittredaktørene mine som jeg bruker til å skrive manus er nano-editoren.
Navngi, tildele tillatelser og utføre et Bash-skript
Som forklart ovenfor, sørg for å bruke .sh-utvidelse for bash-skriptene dine. For eksempel kan du ha et skript med navnet fosslinux_backup.sh
. Det ville imidlertid være best hvis du var forsiktig med å navngi manusene dine. For eksempel liker de fleste å lagre de fleste av skriptene sine som “test.”Ukjent for de fleste, det er en Unix innebygd kommando kalt test, som sjekker filtyper og sammenligner verdier. Du kan bruke hvilken kommando for å sjekke om det er et program med samme navn som skriptet for å forhindre programkonflikter.
som [kommando] e.g hvilken test
Fra utgangen ovenfor kan vi se at testen allerede er en innebygd kommando. Derfor, for å unngå konflikter mellom programmer, vil jeg ikke nevne noen av skriptene mine som "test.”
For å gjøre skriptet kjørbart for hver bruker, bruk kommandoen nedenfor:
chmod + x [skript.sh]
For å gjøre skriptet kjørbart for den nåværende brukeren, bruk kommandoen nedenfor:
chmod u + x [skript.sh]
Nå for å kjøre skriptet, utfør kommandoen nedenfor:
./ [script_name]
Med metoden ovenfor vil du innse at du vil trenge å bruke cd
kommando for å flytte til katalogen som inneholder skriptet eller sende banen til skriptet. Det er imidlertid en løsning på dette. Lagre skriptene dine i søppel
katalog til stede i hjemmekatalogen.
Med de siste oppdateringene følger ikke de fleste distribusjoner med søppel
mappen som standard. Du blir derfor bedt om å opprette den manuelt. Ved å plassere skriptene dine i denne mappen, kan du utføre skriptet ved å skrive navnet på terminalen uten å bruke cd
og ./
kommandoer.
Retningslinjer for Bash Scripting
Før du skriver det første skriptet, er det noen retningslinjer du trenger å forstå når du skriver manus.
- Alle skriptene dine skal begynne med linjen “#!/ bin / bash.”
- Sett hver kommando på en ny linje.
- Hver kommentar starter med en
#
symbol. - Kommandoer følger med
()
braketter.
De #!/ bin / bash
(Hash-Bang Hack) uttalelse er veien til skallet vi skal bruke. Hvis du bruker et annet skall, må du redigere denne banen. Vi forstår at alle kommentarer starter med #
symbol. Imidlertid når fulgt med en (!)
merke i Hash-Bang Hack, er skriptet tvunget til å utføre med skallet pekt på av denne linjen. I vårt tilfelle er det Bash-skallet.
Ditt første Bash-skript
Som de fleste programmeringsspråk, vil vi skrive et skript som skriver ut "Hei Verden" uttalelse når den blir henrettet. Åpne favoritt teksteditoren din og lim inn kommandoene nedenfor. Lagre tekstfilen som fossHelloWorld.sh
eller et annet navn som ikke er en innebygd kommando.
#!/ bin / bash #Dette skriptet vil skrive ut 'Hello World' på Terminal echo "Hello World"
Når du har lagret filen, gjør du den kjørbar ved å utføre kommandoen nedenfor:
chmod + x fossHelloWorld.sh
Kjør det nå med kommandoen nedenfor:
./ fossHelloWorld.sh
Skriptet ovenfor har bare tre linjer. Den første er Hash-Bang Hack, som vi har diskutert ovenfor, den andre er en kommentar, og den tredje er kommandoen som skal utføres. Merk at kommentarer aldri blir utført.
La oss se på andre bash-skriptfunksjoner som du kan bruke.
Ekkokommando
Echo-kommandoen brukes til å skrive ut utdata på Linux-kommandolinjen eller terminalen. Hvis du er utvikler og har jobbet med PHP før, må du også ha kommet over denne kommandoen. La oss skrive et lite bash-skript for å demonstrere hvordan denne kommandoen fungerer.
#!/ bin / bash # La oss skrive ut første linje ekko "Dette er Fosslinux.com - Med en ny linje "# La oss skrive ut den andre setningen uten en ny linje ekko -n" Dette er Fosslinux - Ingen ny linje "
Lagre skriptet, tilordne de nødvendige tillatelsene og kjør det.
For å forstå koden, skriver den første ekkokommandoen ut en uttalelse og går til neste linje. Den andre ekkokommandoen har -n
argument som hindrer skriptet i å gå til neste linje. Du kan bruke mange andre alternativer med Echo-kommandoen, inkludert variabler, som vi vil se nedenfor.
Variabler
Variabler er en vanlig og nødvendig del av ethvert programmeringsspråk. Man kan erklære Bash-variabler på flere måter. Når du tilordner en verdi til en variabel, trenger du ikke bruke noen symboler. Når du ringer variabelens verdi, må du imidlertid bruke $
tegn på begynnelsen av variabelen.
Du kan bruke variabler på terminalen eller som skript. Utfør kommandoene nedenfor på terminalen din.
myWebsite = "Fosslinux.com "ekko $ myWebsite
La oss nå lage et bash-skript som tar to innganger fra brukeren og lagrer dem i variabler $ x
og $ y
. Skriptet vil da sjekke om de to verdiene er like eller ikke.
#!/ bin / bash echo "Enter the first number" read a echo "Enter the second number" read b if [[$ a -eq $ b]] then echo "Numbers are equal" else echo "Numbers are not equal" fi
Lagre skriptet og kjør det. Fra bildet nedenfor kan du se at vi har angitt forskjellige verdier, og skriptet kunne sjekke om de er like eller ikke.
La oss nå se nærmere på koden. De to første ekkosetningene ber brukeren om å legge inn første og andre tall. De lese
kommandoen vil vente på at brukeren skal skrive inn et nummer og lagre det til den angitte variabelen. I vårt tilfelle er det en
og b
. Vi har da en if-setning som sjekker om de to verdiene er like eller ikke.
Betinget uttalelse
I ethvert programmeringsspråk kontrollerer betingede utsagn flyten til et program. Et stykke kode utføres bare når en bestemt betingelse er oppfylt. Noen av de vanligste betingede utsagnene inkluderer "if-then-else" og "case.”Nedenfor er den grunnleggende syntaksen til if-then-else-setningen.
hvis [[tilstand]] daellers fi
Ta en titt på skriptet nedenfor, som bruker den "hvis-så-annet" -betingelsen.
#!/ bin / bash ekko "Enter Your Age" les alder hvis ((alder> 18)) så ekko "Du kan gå til festen" annet ekko "Du er ikke kvalifisert til å gå til festen" fi
La oss gå gjennom skriptet ovenfor. Vi har ekko
uttalelse som ber brukerne om å angi aldersnummeret. De lese
uttalelse lagrer alderen som er angitt til en variabel “alder.”Vi har da en hvis-så-annet betinget uttalelse som sjekker om alderen er over 18 år før brukeren instrueres.
Sløyfer
Sløyfer brukes ofte når du vil utføre et stykke kode flere ganger. Hvis jeg for eksempel vil ekko 1000 linjer i utsagnet "Velkommen til Fosslinux", ville jeg krevd 1000 ekkouttalelser. Imidlertid, med sløyfer, er alt jeg trenger å gjøre å spesifisere antall ganger jeg vil at uttalelsen skal ekko eller skrives ut på terminalen. Bash støtter tre typer løkker; For Loop, While Loop og Before Loop. La oss se på hver av dem.
-
The For Loop
A For Loop brukes til å gjenta gjennom en liste over spesifiserte data eller en matrise. Nedenfor er den grunnleggende syntaksen til Bash For Loop;
for verdi i 1 2 3 4 5 ... N gjør instruksjon1 instruksjon2 instruksjon-N ferdig
eller,
for VALUE i fil1 fil2 fil3 gjør instruksjon1 på $ VALUE instruksjon2 instruksjon-N ferdig
Ta en titt på skriptet nedenfor. Det går gjennom de angitte ukedagene og skriver dem ut på Terminal linje for linje.
#Les et ukedagsnavn i hver iterasjon av løkken for dag i mandag tirsdag onsdag torsdag fredag lørdag søndag gjør ekko "$ dag" gjort
La oss lagre skriptet som ForLoop.sh
og utfør det. Nedenfor er et skjermbilde av utgangen.
Det er bare et enkelt eksempel på hva du kan gjøre med For Loop. Du kan også kombinere det med betingede uttalelser for å fullføre en bestemt oppgave.
-
Mens løkken
While Loop utfører en bestemt oppgave mens en bestemt tilstand forblir sann. I hver iterasjon vil løkken først sjekke tilstanden før instruksjonene utføres. Når tilstanden er falsk, vil sløyfen avsluttes. Den grunnleggende syntaksen til bash While-løkken er som følger:
mens [CONDITION] gjør [COMMANDS] ferdig
For eksempel kan vi ha et skript som vil skrive ut uttalelsen “Velkommen til FOSSLINUX.COM ” 20 ganger til en variabel X er satt til 20. La oss prøve å implementere det praktisk. Ta en titt på skriptet nedenfor.
#!/ bin / bash x = 1 mens [$ x -le 20] gjør ekko "Velkommen til FOSSLINUX.COM "x = $ (($ x + 1)) ferdig
La oss lagre skriptet som WhileLoop.sh
og utfør det. Nedenfor er et skjermbilde av utgangen.
La oss ta en titt på While Loop-skriptet ovenfor. Vi erklærer først en variabel X som gir verdien 1. Vi oppretter deretter en While-setning som sender utsagnet "Velkommen til FOSSLINUX.COM ”mens X er mindre enn 20. Til slutt øker vi X en etter hver iterasjon.
-
Inntil løkken
Bash Before-loops brukes til å utføre et sett med instruksjoner eller kommandoer så lenge den angitte tilstanden evalueres til falsk. Nedenfor er den grunnleggende syntaksen til Fram Loop.
til [BETINGELSE] gjør [INSTARUKSJONER / KOMMANDOER] utført
I likhet med While Loop evaluerer Before Loop først innstilt tilstand før den utfører instruksjonene eller kommandoene. Hvis tilstanden evalueres til falsk, utføres instruksjonene. Sløyfen avsluttes når tilstanden evalueres til sant. Ta en titt på eksemplet nedenfor.
#!/ bin / bash count = 0 til [$ count -gt 5] do echo Counter: $ count ((count ++)) done
Etter at vi har lagret og kjørt skriptet ovenfor, får vi utdataene nedenfor:
Skriptene ovenfor oppretter først et variabelantall og setter det til null (0). Det er tilstanden som styrer flyten av programmet vårt. Inntil sløyfen sjekker om telleverdien er større enn 5. Hvis ikke, vil den skrive ut instruksjonene som er bestått. Imidlertid, hvis verdien er større enn 5, vil sløyfen avsluttes umiddelbart. Til slutt øker vi tellingsverdien med 1 (count ++).
Bash Funksjoner
I programmering og skripting brukes funksjoner til å holde en gjenbrukbar kode som er nødvendig for å utføre en bestemt oppgave. Derfor, hvis du har lignende kommandoer som du vil utføre på forskjellige deler i skriptet, trenger du ikke å skrive disse kommandoene flere ganger. Sett dem i en funksjon og utfør funksjonen i stedet.
Nedenfor er den grunnleggende syntaksen til Bash-funksjonen.
funksjonsnavn ()
eller,
funksjon funksjonsnavn
La oss lage et enkelt skript som bruker funksjoner. Vi oppretter først en funksjon kalt “myFunction”, som sender utsagnet “Hei, jeg er den første funksjonen” når den blir ringt. Den andre funksjonen, "myCities", er litt avansert når det tar argumenter. Argumentene blir gitt etter å ha kalt funksjonsnavnet. De er tilgjengelige i funksjonen som $ 1.
#!/ bin / bash myFunction () echo "Hei, jeg er den første funksjonen" echo "Hei, jeg er den første funksjonen" echo echo "Dette er den andre funksjonen" funksjon myCities () echo Hello $ 1 myFunction myCities Washington, D.C myCities Phoenix
Etter å ha lagret og utført skriptet, får vi utdataene nedenfor.
Bash-menyer
Når du skriver et skript for å utføre en avansert oppgave, kan det hende du trenger at brukeren velger et enkelt alternativ fra flere alternativer som vises på terminalen. For å oppnå det, vil vi bruke bash å velge
kommando.
Det skaper et enkelt menyskript som vil be brukerne om å velge favoritt Linux-distribusjoner fra en liste. Ta en titt på skriptet nedenfor.
#!/ bin / bash #Skriv ut melding for brukerens ekko "Velg din favoritt Linux-distribusjon" velg distro i Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali gjør #Skriv ut den valgte verdien hvis [[$ distro == "Avslutt"]] og avslutt 0 annet ekko "Valgt Linux-distribusjon er $ distro" ferdig
La oss lagre skriptet som meny.sh og utfør den. Vi får utdataene nedenfor.
I skriptet ovenfor har vi en liste over Seven Linux-distribusjon fra brukeren vil velge en. Etter at de har gjort et valg, lagres det i variabelen distro
og senere skrevet ut ved å sammenkoble den med strengen “Valgt Linux-distribusjon er.” Bash-utvalgte menyer kan være ganske nyttige, spesielt når du har flere skript som utfører forskjellige oppgaver, og man må velge den de ønsker å utføre.
Aritmetikk
Hvert programmeringsspråk støtter utførelse av aritmetiske operasjoner, og bash scripting er ikke noe unntak. Hvordan vi utfører aritmetiske operasjoner er imidlertid litt annerledes. Nedenfor er en av måtene du kan utføre aritmetiske operasjoner i bash. Vi vil se på fire typer aritmetiske operasjoner - Sum, inndeling og multiplikasjon.
#!/ bin / bash # Beregn sumresultatet = $ ((70 + 15)) # Print sum value echo "sum = $ result" # Calculate the division result = $ ((100/25)) # Print divisjonsverdi echo "divisjon = $ resultat "#Calculate Multiplikation result = $ ((15 * 15)) echo" Multiplication = $ result "
La oss lagre ovenstående skript som aritmetikk.sh og utfør den. Vi får utdataene nedenfor.
Konklusjon
Det er en komplett nybegynnerveiledning for å komme i gang med Bash-skripting. Det er imidlertid mer å Bash enn det som er dekket i denne opplæringen. Et av stedene jeg vil anbefale for å fremme ferdighetene dine, er GNUs Bash Reference Manual. Hvis du møter noen problemer eller kommenterer dette innlegget, er du velkommen til å trykke kommentarene nedenfor.