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ä
- Linuxin Bash-skriptit
- 1. Hello World
- 2. echon käyttäminen tulostamiseen
- 3. Kommenttien käyttäminen
- 4. Moniriviset kommentit
- 5. While-silmukka
- 6. For-silmukka
- 7. Käyttäjän syötteen vastaanottaminen
- 8. If-lause
- 9. Enemmän hallintaa If Else:n avulla
- 10. AND-operaattorin käyttäminen
- 11. TAI-operaattorin käyttäminen
- 12. Elif-lausekkeen käyttäminen
- 13. Kytkentäkonstruktio
- 14. Komentoriviargumentit
- 15. Argumenttien hakeminen nimillä
- 16. Merkkijonojen ketjuttaminen
- 17. Merkkijonojen leikkaaminen
- 18. Osajonojen poimiminen Cutin avulla
- 19. Kahden arvon lisääminen
- 20. Useiden arvojen lisääminen
- 21. Funktiot Bashissa
- 22. Paluuarvoja sisältävät funktiot
- 23. Hakemistojen luominen Bash-skripteistä
- 24. Luo hakemisto olemassaolon vahvistamisen jälkeen
- 25. Tiedostojen lukeminen
- 26. Tiedostojen poistaminen
- 27. Tiedostoihin liittäminen
- 28. Tiedoston olemassaolon testaaminen
- 29. Sähköpostien lähettäminen Shell-skripteistä
- 30. Päivämäärän ja kellonajan jäsentäminen
- 31. Sleep-komento
- 32. Wait-komento
- 33. Viimeksi päivitetyn tiedoston näyttäminen
- 34. Erälaajennusten lisääminen
- 35. Tulosta tiedostojen tai hakemistojen määrä
- 36. Lokitiedostojen puhdistaminen
- 37. Varmuuskopiointiskripti käyttäen Bashia
- 38. Tarkista, oletko root
- 39. Duplikaattirivien poistaminen tiedostoista
- 40. Järjestelmän ylläpito
- Loppuajatuksia
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ä.