40 yksinkertaista mutta tehokasta esimerkkiä Linux Shell-skripteistä

Historiallisesti komentotulkki on ollut Unixin kaltaisten järjestelmien alkuperäinen komentorivitulkki. Se on osoittautunut yhdeksi Unixin tärkeimmistä ominaisuuksista vuosien varrella ja kasvanut omaksi aiheekseen. Linux tarjoaa useita tehokkaita kuoria, joissa on vankka toiminnallisuus, kuten Bash, Zsh, Tcsh ja Ksh. Yksi näiden kuorien hämmästyttävimmistä ominaisuuksista on niiden ohjelmoitavuus. Yksinkertaisten mutta tehokkaiden Linux shell -skriptien luominen päivittäisten töiden hoitamista varten on melko helppoa. Lisäksi vaatimaton tietämys tästä aiheesta tekee sinusta Linuxin tehokäyttäjän hetkessä. Pysy kanssamme, jotta saamme yksityiskohtaisen johdannon Unixin shell-skripteihin.

Linuxin shell-skripti-esimerkkejä

Suurin osa Linuxissa tehdyistä shell-skripteistä liittyy bash-kuorimalliin. Tehokäyttäjät, joilla on tarkennettuja valintoja, käyttävät usein muita komentosarjoja, kuten Zsh:ta ja Ksh:ta. Pysyttelemme esimerkissämme enimmäkseen Linuxin bash-skripteissä niiden laajan suosion ja valtavan käytettävyyden vuoksi. Toimittajamme ovat myös yrittäneet hahmotella joitakin shell-skriptiesimerkkejä, jotka käsittelevät muita shellejä kuin bashia. Löydät huomattavan paljon tuttuutta eri shell-skriptien välillä.

Linuxin Bash-skriptit

Bash eli Bourne Again Shell on nykyään useimpien Linux-distrojen oletuskomentorivitulkki. Se on päivitys aiemmasta Bourne-shellistä, joka esiteltiin ensimmäisen kerran versio 7 Unixissa. Opettelemalla bash-shellskriptauksen voit ymmärtää muita shell-skriptejä paljon nopeammin. Kokeile siis itse näitä yksinkertaisia esimerkkejä saadaksesi ensikäden kokemusta.

1. Hello World

Ohjelmoijat oppivat usein uusia kieliä opettelemalla hello world -ohjelman. Se on yksinkertainen ohjelma, joka tulostaa merkkijonon ”Hello World” standarditulosteeseen. Luo editorilla, kuten vimillä tai nanolla, tiedosto hello-world.sh ja kopioi siihen alla olevat rivit.

#!/bin/bashecho "Hello World"

Tallenna ja lopeta tiedosto. Sinun täytyy tehdä tämä tiedosto suoritettavaksi alla olevalla komennolla.

$ chmod a+x hello-world.sh

Voit suorittaa tämän jollakin kahdesta alla olevasta komennosta.

$ bash hello-world.sh$ ./hello-world.sh

Se tulostaa skriptin sisällä echolle välitetyn merkkijonon.

2. echon käyttäminen tulostamiseen

Echo-komentoa käytetään tietojen tulostamiseen bashissa. Se muistuttaa C:n funktiota ’printf’ ja tarjoaa monia yleisiä vaihtoehtoja, kuten pakosekvenssit ja uudelleenohjaus.

Kopioi alla olevat rivit tiedostoon nimeltä echo.sh ja tee se suoritettavaksi kuten edellä on tehty.

#!/bin/bashecho "Printing text"echo -n "Printing text without newline"echo -e "\nRemoving \t special \t characters\n"

Ajoita skripti nähdäksesi mitä se tekee. -e-optiota käytetään kertomaan echolle, että sille välitetty merkkijono sisältää erikoismerkkejä ja vaatii laajennettua toiminnallisuutta.

3. Kommenttien käyttäminen

Kommentit ovat hyödyllisiä dokumentoinnissa, ja ne ovat edellytys laadukkaille koodipohjille. On yleinen käytäntö laittaa kommentteja kriittistä logiikkaa käsittelevien koodien sisälle. Jos haluat kommentoida rivin pois, käytä vain #(hash)-merkkiä sen edessä. Tarkista alla oleva esimerkki bash-skriptistä.

#!/bin/bash# Adding two values((sum=25+35))#Print the resultecho $sum

Tämä skripti tulostaa luvun 60. Tarkista, miten kommentteja käytetään käyttämällä #-merkkiä ennen joitakin rivejä. Ensimmäinen rivi on kuitenkin poikkeus. Sitä kutsutaan shebangiksi, ja sen avulla järjestelmä tietää, mitä tulkkia käytetään, kun tämä skripti ajetaan.

4. Moniriviset kommentit

Monet ihmiset käyttävät monirivisiä kommentteja komentosarjakomentosarjojensa dokumentointiin. Tarkista, miten tämä tehdään seuraavassa komentosarjassa nimeltä comment.sh.

#!/bin/bash: 'This script calculatesthe square of 5.'((area=5*5))echo $area

Huomaa, miten moniriviset kommentit sijoitetaan :’ ja ’ -merkkien sisään.

5. While-silmukka

While-silmukkakonstruktiota käytetään jonkin käskyn suorittamiseen useita kertoja. Tutustu seuraavaan komentosarjaan nimeltä while.sh, jotta ymmärrät tämän käsitteen paremmin.

#!/bin/bashi=0while doecho Number: $i((i++))done

While-silmukka saa alla olevan muodon.

while docommands 1commands ndone

Sulkeiden ympärillä olevat välilyönnit ovat pakollisia.

6. For-silmukka

For-silmukka on toinen laajalti käytetty bash-shellin konstruktio, jonka avulla käyttäjät voivat iteroida koodeja tehokkaasti. Alla on esitetty yksinkertainen esimerkki.

#!/bin/bashfor (( counter=1; counter<=10; counter++ ))doecho -n "$counter "doneprintf "\n"

Tallenna tämä koodi tiedostoon nimeltä for.sh ja suorita se komennolla ./for.sh. Älä unohda tehdä siitä suoritettavaa. Tämän ohjelman pitäisi tulostaa numerot 1-10.

7. Käyttäjän syötteen vastaanottaminen

Käyttäjän syötteen vastaanottaminen on ratkaisevan tärkeää käyttäjän vuorovaikutuksen toteuttamiseksi skripteissäsi. Alla oleva komentosarjakomentoselosteen esimerkki havainnollistaa, miten käyttäjän syötettä vastaanotetaan komentosarjakomento-ohjelmassa.

#!/bin/bashecho -n "Enter Something:"read somethingecho "You Entered: $something"

Käyttäjän syötteen saamiseen käytetään siis read-konstruktiota, jota seuraa muuttujan nimi. Syötteet tallennetaan tämän muuttujan sisälle ja niitä voidaan käyttää $-merkillä.

8. If-lause

If-lauseet ovat yleisin Unixin komentosarjakomentosarjassa käytettävissä oleva ehdollinen konstruktio, ja ne ovat alla esitetyssä muodossa.

if CONDITION thenSTATEMENTSfi

Lausekkeet suoritetaan vain edellyttäen, että EHDOTUS on tosi. Avainsanaa fi käytetään if-lauseen lopun merkitsemiseen. Nopea esimerkki on esitetty alla.

#!/bin/bashecho -n "Enter a number: "read numif ]thenecho "Number is greater than 10."fi

Yllä oleva ohjelma näyttää tulosteen vain, jos syötteen kautta annettu luku on suurempi kuin kymmenen. -gt tarkoittaa suurempi kuin, -lt vastaavasti pienempi kuin, -le pienempi kuin yhtä suuri ja -ge suurempi kuin yhtä suuri. ] on pakollinen.

9. Enemmän hallintaa If Else:n avulla

Yhdistämällä else-konstruktiota if:n kanssa voit hallita skriptisi logiikkaa paljon paremmin. Alla on esitetty yksinkertainen esimerkki.

#!/bin/bashread nif ;thenecho "It is a one digit number"elseecho "It is a two digit number"fi

else-osa on sijoitettava if:n action-osan jälkeen ja ennen fi:tä.

10. AND-operaattorin käyttäminen

AND-operaattorin avulla ohjelmamme voi tarkistaa, täyttyykö useampi ehto kerralla vai ei. Kaikkien AND-operaattorilla erotettujen osien on oltava totta. Muussa tapauksessa AND-operaattorin sisältävä lauseke palauttaa epätosi. Tutustu seuraavaan bash-skriptiesimerkkiin, jotta ymmärrät paremmin, miten AND toimii.

#!/bin/bashecho -n "Enter Number:"read numif ]; thenecho "Even Number"elseecho "Odd Number"fi

AND-operaattoria merkitään &&-merkillä.

11. TAI-operaattorin käyttäminen

TAI-operaattori on toinen tärkeä konstruktio, jonka avulla voimme toteuttaa monimutkaista, vankkaa ohjelmointilogiikkaa skripteissämme. Toisin kuin AND, OR-operaattorista koostuva lauseke palauttaa totuuden, kun jompikumpi sen operandeista on tosi. Se palauttaa väärän vain silloin, kun kumpikin OR-operaattorilla erotettu operandi on epätosi.

#!/bin/bashecho -n "Enter any number:"read nif ]thenecho "You won"elseecho "You lost!"fi

Tämä yksinkertainen esimerkki havainnollistaa, miten OR-operaattori toimii Linuxin komentosarjan komentosarjoissa. Se ilmoittaa käyttäjän voittajaksi vain silloin, kun hän syöttää luvun 15 tai 45. ||-merkki edustaa OR-operaattoria.

12. Elif-lausekkeen käyttäminen

Elif-lauseke tarkoittaa else if -lauseketta ja tarjoaa kätevän keinon ketjulogiikan toteuttamiseen. Selvitä, miten elif toimii arvioimalla seuraava esimerkki.

#!/bin/bashecho -n "Enter a number: "read numif ]thenecho "Number is greater than 10."elif ]thenecho "Number is equal to 10."elseecho "Number is less than 10."fi

Yllä oleva ohjelma on itsestään selvä, joten emme paloittele sitä rivi riviltä. Muuta skriptin osia, kuten muuttujien nimiä ja arvoja, ja tarkista, miten ne toimivat yhdessä.

13. Kytkentäkonstruktio

Kytkentäkonstruktio on toinen Linuxin bash-skriptien tarjoama tehokas ominaisuus. Sitä voidaan käyttää silloin, kun tarvitaan sisäkkäisiä ehtoja, mutta ei haluta käyttää monimutkaisia if-else-elif-ketjuja. Katso seuraava esimerkki.

#!/bin/bashecho -n "Enter a number: "read numcase $num in100)echo "Hundred!!" ;;200)echo "Double Hundred!!" ;;*)echo "Neither 100 nor 200" ;;esac

Ehdot kirjoitetaan case- ja esac-avainsanojen väliin. *) käytetään sovittamaan kaikki muut syötteet kuin 100 ja 200.

14. Komentoriviargumentit

Argumenttien saaminen suoraan komentoriviltä voi olla hyödyllistä useissa tapauksissa. Alla oleva esimerkki havainnollistaa, miten tämä tehdään bashissa.

#!/bin/bashecho "Total arguments : $#"echo "First Argument = "echo "Second Argument = "

Ajoita tämä komentosarja niin, että sen nimen perässä on kaksi lisäparametria. Olen nimennyt sen test.sh:ksi, ja kutsumenettely on hahmoteltu alla.

$ ./test.sh Hey Howdy

Ensimmäistä argumenttia käytetään siis $1, toista $2 ja niin edelleen. $# käytetään argumenttien kokonaismäärän saamiseen.

15. Argumenttien hakeminen nimillä

Alhaalla olevassa esimerkissä näytetään, miten komentorivin argumentit haetaan niiden nimillä.

#!/bin/bashfor arg in "$@"doindex=$(echo $arg | cut -f1 -d=)val=$(echo $arg | cut -f2 -d=)case $index inX) x=$val;;Y) y=$val;;*)esacdone((result=x+y))echo "X+Y=$result"

Nimeä tämä skripti test.sh ja kutsu sitä alla esitetyllä tavalla.

$ ./test.sh X=44 Y=100

Sen pitäisi antaa tulokseksi X+Y=144. Argumentit tallennetaan tässä ’$@’-kenttään ja skripti hakee ne Linuxin cut-komennolla.

16. Merkkijonojen ketjuttaminen

Merkkijonojen käsittely on äärimmäisen tärkeää monille nykyaikaisille bash-skripteille. Onneksi se on paljon mukavampaa bashissa ja mahdollistaa paljon tarkemman ja ytimekkäämmän tavan toteuttaa se. Alla olevasta esimerkistä saat nopean katsauksen bash-merkkijonojen ketjuttamiseen.

#!/bin/bashstring1="Ubuntu"string2="Pit"string=$string1$string2echo "$string is a great resource for Linux beginners."

Oheinen ohjelma tulostaa näytölle merkkijonon ”UbuntuPit on loistava resurssi Linuxin aloittelijoille.”.

17. Merkkijonojen leikkaaminen

Kontrastina moniin ohjelmointikieliin bash ei tarjoa mitään sisäänrakennettua funktiota merkkijonon osien leikkaamiseen. Alla oleva esimerkki havainnollistaa, miten tämä voidaan tehdä käyttämällä parametrien laajentamista.

#!/bin/bashStr="Learn Bash Commands from UbuntuPit"subStr=${Str:0:20}echo $subStr

Tämän skriptin pitäisi tulostaa tulosteeksi ”Learn Bash Commands”. Parametrien laajentaminen tapahtuu muodossa ${VAR_NAME:S:L}. Tässä S tarkoittaa lähtöasemaa ja L ilmoittaa pituuden.

18. Osajonojen poimiminen Cutin avulla

Linuxin cut-komentoa voidaan käyttää skriptien sisältä ”leikkaamaan” osa merkkijonosta eli osajono. Seuraava esimerkki näyttää, miten tämä voidaan tehdä.

#!/bin/bashStr="Learn Bash Commands from UbuntuPit"#subStr=${Str:0:20}subStr=$(echo $Str| cut -d ' ' -f 1-3)echo $subStr

Lue tämä opas ymmärtääksesi, miten Linuxin Cut-komento toimii.

19. Kahden arvon lisääminen

Linuxin shell-skriptien sisällä on melko helppoa suorittaa aritmeettisia operaatioita. Alla oleva esimerkki havainnollistaa, miten käyttäjältä otetaan syötteeksi kaksi lukua ja lasketaan ne yhteen.

#!/bin/bashecho -n "Enter first number:"read xecho -n "Enter second number:"read y(( sum=x+y ))echo "The result of addition=$sum"

Kuten näet, lukujen lisääminen bashissa on kohtuullisen suoraviivaista.

20. Useiden arvojen lisääminen

Voit käyttää silmukoita saadaksesi useita käyttäjän syötteitä ja lisätä ne skriptisi sisällä. Seuraavissa esimerkeissä tämä näkyy käytännössä.

#!/bin/bashsum=0for (( counter=1; counter<5; counter++ ))doecho -n "Enter Your Number:"read n(( sum+=n ))#echo -n "$counter "doneprintf "\n"echo "Result is: $sum"

Vaikka, jos jätät (( )) pois, tuloksena on merkkijonojen ketjuttaminen eikä yhteenlasku. Tarkista siis, onko ohjelmassasi tällaisia asioita.

21. Funktiot Bashissa

Kuten missä tahansa ohjelmointimurteessa, funktioilla on tärkeä rooli Linuxin shell-skripteissä. Niiden avulla ylläpitäjät voivat luoda mukautettuja koodilohkoja usein käytettäväksi. Alla oleva esittely kertoo, miten funktiot toimivat Linuxin bash-skripteissä.

#!/bin/bashfunction Add(){echo -n "Enter a Number: "read xecho -n "Enter another Number: "read yecho "Adiition is: $(( x+y ))"}Add

Tässä olemme lisänneet kaksi numeroa aivan kuten aiemmin. Mutta tässä olemme tehneet työn käyttämällä funktiota nimeltä Add. Joten aina kun sinun täytyy lisätä uudelleen, voit vain kutsua tätä funktiota sen sijaan, että kirjoittaisit tuon kohdan uudelleen.

22. Paluuarvoja sisältävät funktiot

Yksi funktioiden upeimmista ominaisuuksista on se, että ne mahdollistavat tietojen siirtämisen funktiosta toiseen. Siitä on hyötyä monenlaisissa skenaarioissa. Katso seuraava esimerkki.

#!/bin/bashfunction Greet() {str="Hello $name, what brings you to UbuntuPit.com?"echo $str}echo "-> what's your name?"read nameval=$(Greet)echo -e "-> $val"

Tässä tulosteessa on Greet()-funktiosta saatuja tietoja.

23. Hakemistojen luominen Bash-skripteistä

Kyky suorittaa järjestelmäkomentoja shell-skriptien avulla antaa kehittäjille mahdollisuuden olla paljon tuottavampia. Seuraavassa yksinkertaisessa esimerkissä näytetään, miten hakemisto luodaan shell-skriptistä.

#!/bin/bashecho -n "Enter directory name ->"read newdircmd="mkdir $newdir"eval $cmd

Jos katsot tarkkaan, tämä skripti yksinkertaisesti kutsuu tavallista shell-komentoa mkdir ja antaa sille hakemiston nimen. Tämän ohjelman pitäisi luoda hakemisto tiedostojärjestelmääsi. Voit myös välittää suoritettavan komennon backtickien(”) sisällä, kuten alla näkyy.

`mkdir $newdir`

24. Luo hakemisto olemassaolon vahvistamisen jälkeen

Yllä oleva ohjelma ei toimi, jos nykyinen työhakemistosi sisältää jo samannimisen kansion. Alla oleva ohjelma tarkistaa minkä tahansa $dir-nimisen kansion olemassaolon ja luo sellaisen vain, jos se ei löydä sellaista.

#!/bin/bashecho -n "Enter directory name ->"read dirif thenecho "Directory exists"else`mkdir $dir`echo "Directory created"fi

Kirjoita tämä ohjelma evalin avulla lisätäksesi bash-skriptaustaitojasi.

25. Tiedostojen lukeminen

Bash-skriptien avulla käyttäjät voivat lukea tiedostoja erittäin tehokkaasti. Alla olevassa esimerkissä esitellään, miten tiedosto luetaan shell-skriptien avulla. Luo tiedosto nimeltä editors.txt, jonka sisältö on seuraava.

1. Vim 2. Emacs 3. ed 4. nano 5. Code

Tämä skripti tulostaa jokaisen yllä olevan 5 rivin.

#!/bin/bashfile='editors.txt'while read line; doecho $linedone < $file

26. Tiedostojen poistaminen

Seuraava ohjelma demonstroi, miten tiedosto poistetaan Linux-komentosarjassa. Ohjelma pyytää ensin käyttäjää antamaan syötteenä tiedostonimen ja poistaa sen, jos se on olemassa. Linuxin rm-komento tekee tässä poiston.

#!/bin/bashecho -n "Enter filename ->"read namerm -i $name

Kirjoitetaan tiedostonimeksi editors.txt ja painetaan y, kun kysytään vahvistusta. Sen pitäisi poistaa tiedosto.

27. Tiedostoihin liittäminen

Alhaalla oleva komentosarjakomentosarjakomentoesimerkki näyttää, miten tietoja liitetään tiedostojärjestelmän tiedostoon bash-skriptien avulla. Se lisää lisärivin aiempaan editors.txt-tiedostoon.

#!/bin/bashecho "Before appending the file"cat editors.txtecho "6. NotePad++" >> editors.txtecho "After appending the file"cat editors.txt

Pitäisi jo huomata, että käytämme jokapäiväisiä terminaalikomentoja suoraan Linuxin bash-skripteistä.

28. Tiedoston olemassaolon testaaminen

Seuraavassa komentosarjakomentosarjakomentoesimerkissä näytetään, miten tiedoston olemassaolo voidaan tarkistaa bash-ohjelmista.

#!/bin/bashfilename=if ; thenecho "File exists"elseecho "File does not exist"fi

Ojennamme tiedostonimen argumenttina suoraan komentoriviltä.

29. Sähköpostien lähettäminen Shell-skripteistä

Sähköpostien lähettäminen bash-skripteistä on melko suoraviivaista. Seuraava yksinkertainen esimerkki esittelee yhden tavan tehdä tämä bash-sovelluksista.

#!/bin/bashrecipient="[email protected]"subject="Greetings"message="Welcome to UbuntuPit"`mail -s $subject $recipient <<< $message`

Se lähettää vastaanottajalle sähköpostin, joka sisältää annetun aiheen ja viestin.

30. Päivämäärän ja kellonajan jäsentäminen

Seuraavassa bash-skriptiesimerkissä näytetään, miten päivämääriä ja kellonaikoja käsitellään skriptien avulla. Linuxin päivämääräkomentoa käytetään tarvittavien tietojen hankkimiseen, ja ohjelmamme tekee jäsentelyn.

#!/bin/bashyear=`date +%Y`month=`date +%m`day=`date +%d`hour=`date +%H`minute=`date +%M`second=`date +%S`echo `date`echo "Current Date is: $day-$month-$year"echo "Current Time is: $hour:$minute:$second"

Aja tämä ohjelma nähdäksesi, miten se toimii. Kokeile myös päivämääräkomennon suorittamista terminaalista.

31. Sleep-komento

Sleep-komennon avulla komentotulkkiskriptisi voi pitää tauon ohjeiden välillä. Se on hyödyllinen useissa tilanteissa, kuten järjestelmätason töiden suorittamisessa. Seuraava esimerkki näyttää sleep-komennon toiminnassa komentosarjan sisällä.

#!/bin/bashecho "How long to wait?"read timesleep $timeecho "Waited for $time seconds!"

Tämä ohjelma keskeyttää viimeisimmän käskyn suorituksen $time-sekuntiin asti, jonka käyttäjä tässä tapauksessa antaa.

32. Wait-komento

Wait-komentoa käytetään Linuxin bash-skriptien järjestelmäprosessien keskeyttämiseen. Katso seuraavasta esimerkistä, miten tämä toimii bashissa.

#!/bin/bashecho "Testing wait command"sleep 5 &pid=$!kill $pidwait $pidecho $pid was terminated.

Käynnistä tämä ohjelma itse ja tarkista, miten se toimii.

33. Viimeksi päivitetyn tiedoston näyttäminen

Joskus saatat joutua etsimään viimeksi päivitetyn tiedoston tiettyjä toimintoja varten. Seuraava yksinkertainen ohjelma näyttää, miten tämä tehdään bashissa awk-komennolla. Se listaa joko viimeksi päivitetyn tai luodun tiedoston nykyisessä työhakemistossasi.

#!/bin/bashls -lrt | grep ^- | awk 'END{print $NF}'

Yksinkertaisuuden vuoksi vältämme tässä esimerkissä awk:n toiminnan kuvaamista. Voit yksinkertaisesti kopioida tämän koodin, jotta saat tehtävän tehtyä.

34. Erälaajennusten lisääminen

Alla oleva esimerkki soveltaa mukautettua laajennusta kaikkiin hakemiston sisällä oleviin tiedostoihin. Luo uusi hakemisto ja laita sinne muutamia tiedostoja esittelyä varten. Kansiossani on yhteensä viisi tiedostoa, joista jokaisen nimi on test ja sen jälkeen (0-4). Olen ohjelmoinut tämän skriptin lisäämään (.UP) tiedostojen loppuun. Voit lisätä minkä tahansa haluamasi päätepäätteen.

#!/bin/bashdir=for file in `ls /*`domv $file $file.UPdone

Aluksi, älä kokeile tätä skriptiä mistä tahansa tavallisesta hakemistosta, vaan suorita tämä testihakemistosta. Lisäksi sinun on annettava tiedostojesi hakemistonimi komentoriviargumenttina. Käytä pistettä(.) nykyisen työhakemiston kohdalla.

35. Tulosta tiedostojen tai hakemistojen määrä

Alla oleva Linux-bash-skripti selvittää tietyn hakemiston sisällä olevien tiedostojen tai kansioiden määrän. Se käyttää tähän Linuxin find-komentoa. Sinun on annettava komentoriviltä hakemiston nimi, josta haluat etsiä tiedostoja.

#!/bin/bashif ; thenecho "Files found: $(find "$@" -type f | wc -l)"echo "Folders found: $(find "$@" -type d | wc -l)"elseecho " Please retry with another folder."exit 1fi

Ohjelma pyytää käyttäjää yrittämään uudelleen, jos määritetty hakemisto ei ole käytettävissä tai siinä on oikeuksia koskevia ongelmia.

36. Lokitiedostojen puhdistaminen

Seuraava yksinkertainen esimerkki osoittaa kätevän tavan, jolla voimme käyttää komentosarjakomentosarjoja tosielämässä. Tämä ohjelma yksinkertaisesti poistaa kaikki /var/log-hakemiston sisällä olevat lokitiedostot. Voit muuttaa muuttujaa, joka pitää tätä hakemistoa muiden lokitiedostojen siivoamista varten.

#!/bin/bashLOG_DIR=/var/logcd $LOG_DIRcat /dev/null > messagescat /dev/null > wtmpecho "Logs cleaned up."

Muista ajaa tämä Linuxin shell-skripti rootina.

37. Varmuuskopiointiskripti käyttäen Bashia

Shell-skriptit tarjoavat vankan tavan varmuuskopioida tiedostoja ja hakemistoja. Seuraava esimerkki varmuuskopioi jokaisen tiedoston tai hakemiston, jota on muutettu viimeisen 24 tunnin aikana. Tämä ohjelma hyödyntää find-komentoa tähän tarkoitukseen.

#!/bin/bashBACKUPFILE=backup-$(date +%m-%d-%Y)archive=${1:-$BACKUPFILE}find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."exit 0

Se tulostaa tiedostojen ja hakemistojen nimet varmuuskopioinnin onnistumisen jälkeen.

38. Tarkista, oletko root

Alla oleva esimerkki havainnollistaa nopean tavan selvittää Linuxin bash-skripteistä, onko käyttäjä root vai ei.

#!/bin/bashROOT_UID=0if thenecho "You are root."elseecho "You are not root"fiexit 0

Tämän skriptin tulosteet riippuvat sitä suorittavasta käyttäjästä. Se vastaa root-käyttäjää $UID:n perusteella.

39. Duplikaattirivien poistaminen tiedostoista

Tiedostojen käsittely vie huomattavasti aikaa ja haittaa ylläpitäjien tuottavuutta monin tavoin. Kaksoiskappaleiden etsiminen tiedostoista voi muodostua pelottavaksi tehtäväksi. Onneksi voit tehdä tämän lyhyellä komentosarjakomentosarjalla.

#! /bin/shecho -n "Enter Filename-> "read filenameif ; thensort $filename | uniq | tee sorted.txtelseecho "No $filename in $pwd...try again"fiexit 0

Yllä oleva komentosarja käy tiedostosi läpi rivi riviltä ja poistaa kaikki päällekkäiset rivit. Sitten se sijoittaa uuden sisällön uuteen tiedostoon ja pitää alkuperäisen tiedoston koskemattomana.

40. Järjestelmän ylläpito

Käytän usein pientä Linuxin komentosarjakomentosarjaa järjestelmän päivittämiseen sen sijaan, että tekisin sen manuaalisesti. Alla oleva yksinkertainen shell-skripti näyttää, miten tämä tehdään.

#!/bin/bashecho -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n"apt-get updateapt-get -y upgradeapt-get -y autoremoveapt-get autocleanecho -e "\n$(date "+%T") \t Script Terminated"

Skripti huolehtii myös vanhoista paketeista, joita ei enää tarvita. Sinun täytyy ajaa tämä skripti käyttäen sudoa, muuten se ei toimi kunnolla.

Loppuajatuksia

Linuxin shell-skriptit voivat olla niin erilaisia kuin voit kuvitella. Ei ole kirjaimellisesti mitään rajaa, kun on kyse siitä, mitä se voi tehdä tai ei voi tehdä. Jos olet uusi Linux-harrastaja, suosittelemme, että hallitset nämä perustavanlaatuiset bash-skriptiesimerkit. Sinun kannattaa viritellä niitä, jotta ymmärrät paremmin, miten ne toimivat. Olemme yrittäneet parhaamme antaaksemme sinulle kaikki olennaiset oivallukset, joita tarvitaan nykyaikaisiin Linux-bash-skripteihin. Emme ole puuttuneet joihinkin teknisiin asioihin yksinkertaisuuden vuoksi. Tämän oppaan pitäisi kuitenkin osoittautua loistavaksi lähtökohdaksi monille teistä.

Vastaa

Sähköpostiosoitettasi ei julkaista.