Történelmileg a shell volt a Unix-szerű rendszerek natív parancssor-értelmezője. Az évek során bebizonyosodott, hogy a Unix egyik legfontosabb jellemzője, és maga is egy egész témakörré nőtte ki magát. A Linux számos nagy teljesítményű, robusztus funkcionalitású héjat kínál, köztük a Bash, a Zsh, a Tcsh és a Ksh. Ezeknek a héjaknak az egyik legelképesztőbb tulajdonsága a programozhatóságuk. Egyszerű, de hatékony Linux shell szkriptek készítése a mindennapi feladatok megoldásához meglehetősen egyszerű. Ráadásul egy szerény tudás e téma felett pillanatok alatt Linux power userré teszi Önt. Maradjon velünk a Unix shell scriptek részletes bemutatásához.
- Linux shell script példák
- Linux Bash szkriptek
- 1. Hello World
- 2. Az echo használata nyomtatáshoz
- 3. Kommentek használata
- 4. Többsoros megjegyzések
- 5. A While ciklus
- 6. A for ciklus
- 7. Input fogadása a felhasználótól
- 8. Az If utasítás
- 9. Nagyobb kontroll az If Else használatával
- 10. Az AND operátor használata
- 11. A VAGY operátor használata
- 12. Az Elif használata
- 13. A kapcsolószerkezet
- 14. Parancssori argumentumok
- 15. Az argumentumok kinyerése a nevükkel
- 16. Sztringek összefűzése
- 17. Sztringek szeletelése
- 18. Részláncok kivonása a Cut használatával
- 19. Két érték összeadása
- 20. Több érték hozzáadása
- 21. Függvények a Bashben
- 22. Visszatérési értékkel rendelkező függvények
- 23. Könyvtárak létrehozása Bash-skriptekből
- 24. Címtár létrehozása a létezés megerősítése után
- 25. Fájlok olvasása
- 26. Fájlok törlése
- 27. Fájlokhoz csatolás
- 28. Fájl létezésének tesztelése
- 29. E-mail küldése Shell szkriptekből
- 30. Dátum és idő elemzése
- 31. Az alvó parancs
- 32. A wait parancs
- 33. Az utoljára frissített fájl megjelenítése
- 34. Kötegelt kiterjesztések hozzáadása
- 35. Fájlok vagy könyvtárak számának kiírása
- 36. Naplófájlok tisztítása
- 37. Biztonsági mentés szkript a Bash használatával
- 38. Ellenőrizze, hogy root-e
- 39. Duplikált sorok eltávolítása a fájlokból
- 40. Rendszerkarbantartás
- Végső gondolatok
Linux shell script példák
A Linuxon végzett shell scriptek többsége a bash shell-t használja. Azok a Power felhasználók, akiknek meghatározott választási lehetőségeik vannak, gyakran használnak más héjakat, például a Zsh-t és a Ksh-t. Példáinkban leginkább a Linux bash szkripteknél maradunk a széleskörű népszerűségük és hatalmas használhatóságuk miatt. Szerkesztőink igyekeztek felvázolni néhány olyan shell script példát is, amelyek a bash-től eltérő shellekkel foglalkoznak. A különböző shell szkriptek között jelentős ismeretséget fogsz találni.
Linux Bash szkriptek
A Bash, más néven a Bourne Again Shell manapság a legtöbb Linux disztróban az alapértelmezett parancssor-értelmező. Ez a korábbi Bourne shell továbbfejlesztése, amelyet először a Unix 7-es verziójában vezettek be. A bash shell szkriptek megtanulása lehetővé teszi, hogy más shell szkripteket sokkal gyorsabban megértsen. Próbálja ki tehát maga is ezeket az egyszerű példákat, hogy első kézből szerezzen tapasztalatokat.
1. Hello World
A programozók gyakran a hello world program megtanulásán keresztül tanulnak új nyelveket. Ez egy egyszerű program, amely a “Hello World” karakterláncot írja ki a standard kimenetre. Egy szerkesztőprogrammal, például a vim vagy a nano segítségével hozza létre a hello-world.sh fájlt, és másolja bele az alábbi sorokat.
#!/bin/bashecho "Hello World"
Mentés és kilépés a fájlból. Ezt a fájlt az alábbi parancs segítségével futtathatóvá kell tennie.
$ chmod a+x hello-world.sh
Az alábbi két parancs bármelyikével futtathatja.
$ bash hello-world.sh$ ./hello-world.sh
A szkriptben az echo-nak átadott karakterláncot fogja kinyomtatni.
2. Az echo használata nyomtatáshoz
Az echo parancsot a bash-ben információk kinyomtatására használjuk. Hasonlít a ‘printf’ C függvényhez, és számos általános opciót biztosít, beleértve az escape szekvenciákat és az átirányítást.
Másolja az alábbi sorokat egy echo.sh nevű fájlba, és tegye futtathatóvá a fentiek szerint.
#!/bin/bashecho "Printing text"echo -n "Printing text without newline"echo -e "\nRemoving \t special \t characters\n"
Futtassa a szkriptet, hogy megnézze, mit csinál. A -e opcióval közölhetjük az echóval, hogy a neki átadott karakterlánc speciális karaktereket tartalmaz, és bővített funkcionalitást igényel.
3. Kommentek használata
A kommentek hasznosak a dokumentációhoz, és a jó minőségű kódbázisok feltételei. Általános gyakorlat, hogy a kritikus logikával foglalkozó kódok belsejében megjegyzéseket helyezünk el. Ha ki akarsz kommentálni egy sort, csak használd előtte a #(hash) karaktert. Nézze meg az alábbi bash szkript példát.
#!/bin/bash# Adding two values((sum=25+35))#Print the resultecho $sum
Ez a szkript a 60-as számot fogja kiadni. Nézze meg, hogyan használják a megjegyzést a # használatával néhány sor előtt. Az első sor azonban kivétel. Ezt shebangnek hívják, és tudatja a rendszerrel, hogy melyik értelmezőt használja a szkript futtatásakor.
4. Többsoros megjegyzések
Nagyon sokan használnak többsoros megjegyzéseket a shell szkriptjeik dokumentálására. Nézze meg, hogyan történik ez a következő comment.sh nevű szkriptben.
#!/bin/bash: 'This script calculatesthe square of 5.'((area=5*5))echo $area
Nézze meg, hogyan kerülnek a többsoros megjegyzések a :’ és ‘ karakterek közé.
5. A While ciklus
A while ciklus konstrukciót valamilyen utasítás többszöri futtatására használjuk. Nézze meg az alábbi while.sh nevű szkriptet, hogy jobban megértse ezt a koncepciót.
#!/bin/bashi=0while doecho Number: $i((i++))done
A while ciklus tehát az alábbi formát ölti.
while docommands 1commands ndone
A szögletes zárójelek körüli szóközök kötelezőek.
6. A for ciklus
A for ciklus egy másik széles körben használt bash shell konstrukció, amely lehetővé teszi a felhasználók számára a kódok hatékony iterálását. Egy egyszerű példát mutatunk be az alábbiakban.
#!/bin/bashfor (( counter=1; counter<=10; counter++ ))doecho -n "$counter "doneprintf "\n"
Mentsük el ezt a kódot egy for.sh nevű fájlba, és futtassuk a ./for.sh paranccsal. Ne felejtse el futtathatóvá tenni. Ennek a programnak ki kell írnia az 1-től 10-ig terjedő számokat.
7. Input fogadása a felhasználótól
A felhasználói input fogadása kulcsfontosságú a felhasználói interakció megvalósításához a szkriptekben. Az alábbi shell szkript példa bemutatja, hogyan fogadhatunk felhasználói bemenetet egy shell programon belül.
#!/bin/bashecho -n "Enter Something:"read somethingecho "You Entered: $something"
A felhasználói bemenet fogadására tehát a read konstrukciót, amelyet egy változó neve követ, használjuk. A bemenet ebben a változóban tárolódik, és a $ jel segítségével érhető el.
8. Az If utasítás
Az If utasítások a Unix shell szkriptelésben elérhető leggyakoribb feltételes konstrukció, az alábbiakban látható formában.
if CONDITION thenSTATEMENTSfi
Az utasítások csak akkor kerülnek végrehajtásra, ha a FELTÉTEL igaz. A fi kulcsszó az if utasítás végének jelölésére szolgál. Egy gyors példa az alábbiakban látható.
#!/bin/bashecho -n "Enter a number: "read numif ]thenecho "Number is greater than 10."fi
A fenti program csak akkor jeleníti meg a kimenetet, ha a bemeneten megadott szám nagyobb, mint tíz. A -gt a nagyobb, mint; hasonlóan a -lt a kisebb, mint; -le a kisebb, mint egyenlő; és a -ge a nagyobb, mint egyenlő. A ] szükséges.
9. Nagyobb kontroll az If Else használatával
Az else konstrukció és az if kombinálása sokkal jobb kontrollt biztosít a szkript logikája felett. Egy egyszerű példa az alábbiakban látható.
#!/bin/bashread nif ;thenecho "It is a one digit number"elseecho "It is a two digit number"fi
A else részt az if action része után és a fi előtt kell elhelyezni.
10. Az AND operátor használata
Az AND operátor segítségével programunk egyszerre több feltétel teljesülését is ellenőrizheti. Az AND operátorral elválasztott részeknek igaznak kell lenniük. Ellenkező esetben az AND operátort tartalmazó utasítás hamis eredményt ad vissza. Az AND működésének jobb megértéséhez nézze meg a következő bash szkript példát.
#!/bin/bashecho -n "Enter Number:"read numif ]; thenecho "Even Number"elseecho "Odd Number"fi
Az AND operátort a && jellel jelöljük.
11. A VAGY operátor használata
A VAGY operátor egy másik fontos konstrukció, amely lehetővé teszi számunkra, hogy összetett, robusztus programozási logikát valósítsunk meg szkriptjeinkben. Az AND operátorral ellentétben az OR operátorból álló utasítás akkor ad vissza igazat, ha bármelyik operandusa igaz. Csak akkor ad vissza hamisat, ha az OR által elválasztott operandusok mindegyike hamis.
#!/bin/bashecho -n "Enter any number:"read nif ]thenecho "You won"elseecho "You lost!"fi
Ez az egyszerű példa bemutatja, hogyan működik az OR operátor a Linux shell szkriptekben. Csak akkor nyilvánítja a felhasználót nyertesnek, ha a 15-ös vagy a 45-ös számot adja meg. A || jel a VAGY operátort jelenti.
12. Az Elif használata
Az elif utasítás az else if rövidítése, és kényelmes eszközt kínál a lánclogika megvalósítására. Az elif működését a következő példa kiértékelésével ismerhetjük meg.
#!/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
A fenti program magától értetődő, ezért nem boncolgatjuk soronként. Változtassuk meg a szkript egyes részeit, például a változók neveit és értékeit, hogy ellenőrizzük, hogyan működnek együtt.
13. A kapcsolószerkezet
A kapcsolószerkezet egy másik hatékony funkció, amelyet a Linux bash szkriptek kínálnak. Ott használható, ahol egymásba ágyazott feltételekre van szükség, de nem akarunk bonyolult if-else-elif láncokat használni. Nézzük meg a következő példát.
#!/bin/bashecho -n "Enter a number: "read numcase $num in100)echo "Hundred!!" ;;200)echo "Double Hundred!!" ;;*)echo "Neither 100 nor 200" ;;esac
A feltételeket a case és az esac kulcsszavak közé írjuk. A *) a 100-tól és 200-tól eltérő összes bemenetre való megfeleltetésre szolgál.
14. Parancssori argumentumok
Az argumentumok közvetlenül a parancssorból való lekérdezése számos esetben előnyös lehet. Az alábbi példa azt mutatja be, hogyan lehet ezt a bashben megtenni.
#!/bin/bashecho "Total arguments : $#"echo "First Argument = "echo "Second Argument = "
Futtassa ezt a szkriptet két további paraméterrel a neve után. Test.sh-nek neveztem el, a hívási eljárást pedig az alábbiakban ismertetem.
$ ./test.sh Hey Howdy
Az első argumentum eléréséhez $1, a másodikhoz $2, és így tovább. A $# az argumentumok teljes számának lekérdezésére szolgál.
15. Az argumentumok kinyerése a nevükkel
Az alábbi példa azt mutatja, hogyan lehet a parancssori argumentumokat a nevükkel együtt kinyerni.
#!/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"
Nevezze el ezt a szkriptet test.sh-nek, és hívja meg az alábbi módon.
$ ./test.sh X=44 Y=100
A parancsnak X+Y=144-et kell visszaadnia. Az argumentumokat itt a ‘$@’-on belül tároljuk, és a szkript a Linux cut parancsával hozza ki őket.
16. Sztringek összefűzése
A sztringek feldolgozása rendkívül fontos a modern bash szkriptek széles körében. Szerencsére a bash-ben sokkal kényelmesebb és sokkal pontosabb, tömörebb megvalósítást tesz lehetővé. Az alábbi példában egy gyors betekintést nyerhetünk a bash sztring-összekötésbe.
#!/bin/bashstring1="Ubuntu"string2="Pit"string=$string1$string2echo "$string is a great resource for Linux beginners."
A következő program a “UbuntuPit is a great resource for Linux beginners.” sztringet adja ki a képernyőre.
17. Sztringek szeletelése
A bash sok programozási nyelvvel ellentétben nem biztosít beépített függvényt a sztringek részeinek levágására. Az alábbi példa azt mutatja be, hogyan lehet ezt a paraméterek kibővítésével elvégezni.
#!/bin/bashStr="Learn Bash Commands from UbuntuPit"subStr=${Str:0:20}echo $subStr
Ez a szkript kimenetként a “Learn Bash Commands” (Bash-parancsok megtanulása) címet kell kiírnia. A paraméterbővítés a ${VAR_NAME:S:L} formát veszi fel. Itt az S a kezdő pozíciót, az L pedig a hosszúságot jelöli.
18. Részláncok kivonása a Cut használatával
A Linux cut parancsot a szkriptjeinken belülről használhatjuk a karakterlánc egy részének, azaz a részláncnak a “kivágására”. A következő példa azt mutatja be, hogyan lehet ezt megtenni.
#!/bin/bashStr="Learn Bash Commands from UbuntuPit"#subStr=${Str:0:20}subStr=$(echo $Str| cut -d ' ' -f 1-3)echo $subStr
A Linux Cut parancs működésének megértéséhez tekintse meg ezt az útmutatót.
19. Két érték összeadása
Meglehetősen egyszerű számtani műveleteket végezni a Linux shell szkripteken belül. Az alábbi példa azt mutatja be, hogyan kaphatunk két számot bemenetként a felhasználótól, és hogyan adhatjuk össze őket.
#!/bin/bashecho -n "Enter first number:"read xecho -n "Enter second number:"read y(( sum=x+y ))echo "The result of addition=$sum"
Amint láthatjuk, a számok összeadása a bashben meglehetősen egyszerű.
20. Több érték hozzáadása
Hurok segítségével több felhasználói bemenetet is kaphatsz, és hozzáadhatod őket a szkripteden belül. A következő példák ezt mutatják be működés közben.
#!/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"
Az (( )) elhagyása azonban nem összeadást, hanem sztringek összefűzését eredményezi. Ellenőrizze tehát, hogy vannak-e ilyen dolgok a programjában.
21. Függvények a Bashben
Mint minden programozási dialektusban, a függvények is alapvető szerepet játszanak a Linux shell szkriptekben. Lehetővé teszik az adminok számára, hogy egyéni kódblokkokat hozzanak létre gyakori használatra. Az alábbi demonstráció bemutatja, hogyan működnek a függvények a Linux bash szkriptekben.
#!/bin/bashfunction Add(){echo -n "Enter a Number: "read xecho -n "Enter another Number: "read yecho "Adiition is: $(( x+y ))"}Add
Itt is két számot adtunk hozzá, mint korábban. De itt a munkát egy Add nevű függvény segítségével végeztük el. Így bármikor, amikor újra össze kell adnunk, egyszerűen meghívhatjuk ezt a függvényt, ahelyett, hogy újra megírnánk ezt a részt.
22. Visszatérési értékkel rendelkező függvények
A függvények egyik legfantasztikusabb tulajdonsága, hogy lehetővé teszik az adatok átadását egyik függvényből a másikba. Ez a legkülönbözőbb forgatókönyvekben hasznos. Nézze meg a következő példát.
#!/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"
Itt a kimenet a Greet() függvénytől kapott adatokat tartalmazza.
23. Könyvtárak létrehozása Bash-skriptekből
A rendszerparancsok shell-skriptek segítségével történő futtatásának lehetősége lehetővé teszi a fejlesztők számára, hogy sokkal produktívabbak legyenek. A következő egyszerű példa megmutatja, hogyan hozhatunk létre egy könyvtárat egy shell szkriptből.
#!/bin/bashecho -n "Enter directory name ->"read newdircmd="mkdir $newdir"eval $cmd
Ha jobban megnézzük, ez a szkript egyszerűen meghívja a standard shell parancsot, az mkdir-t, és átadja neki a könyvtár nevét. Ennek a programnak létre kell hoznia egy könyvtárat a fájlrendszeredben. A végrehajtandó parancsot átadhatja a backtick(“)-en belül is, ahogy az alább látható.
`mkdir $newdir`
24. Címtár létrehozása a létezés megerősítése után
A fenti program nem fog működni, ha az aktuális munkakönyvtár már tartalmaz egy azonos nevű mappát. Az alábbi program ellenőrzi, hogy létezik-e $dir nevű mappa, és csak akkor hoz létre egyet, ha nem talál ilyet.
#!/bin/bashecho -n "Enter directory name ->"read dirif thenecho "Directory exists"else`mkdir $dir`echo "Directory created"fi
Írd meg ezt a programot eval segítségével, hogy növeld a bash szkriptkészségedet.
25. Fájlok olvasása
A bash szkriptek segítségével a felhasználók nagyon hatékonyan olvashatnak fájlokat. Az alábbi példa bemutatja, hogyan olvashatunk be egy fájlt shell szkriptek segítségével. Hozzon létre egy editors.txt nevű fájlt a következő tartalommal.
1. Vim 2. Emacs 3. ed 4. nano 5. Code
Ez a szkript a fenti 5 sor mindegyikét ki fogja adni.
#!/bin/bashfile='editors.txt'while read line; doecho $linedone < $file
26. Fájlok törlése
A következő program azt mutatja be, hogyan lehet egy fájlt törölni Linux shell szkripteken belül. A program először megkéri a felhasználót, hogy adja meg bemenetként a fájlnevet, és törli azt, ha létezik. A Linux rm parancsa végzi itt a törlést.
#!/bin/bashecho -n "Enter filename ->"read namerm -i $name
Írjuk be a szerkesztők.txt fájlnevet, és nyomjuk meg az y billentyűt, amikor megerősítést kérünk. Ennek törölnie kell a fájlt.
27. Fájlokhoz csatolás
Az alábbi shell script példa megmutatja, hogyan csatolhatunk adatokat egy fájlrendszerben lévő fájlhoz bash scriptek segítségével. Hozzáad egy további sort a korábbi szerkesztők.txt fájlhoz.
#!/bin/bashecho "Before appending the file"cat editors.txtecho "6. NotePad++" >> editors.txtecho "After appending the file"cat editors.txt
Már észre kellett vennie, hogy a mindennapi terminálparancsokat közvetlenül a Linux bash szkriptekből használjuk.
28. Fájl létezésének tesztelése
A következő shell script példa azt mutatja, hogyan ellenőrizhetjük egy fájl létezését bash programokból.
#!/bin/bashfilename=if ; thenecho "File exists"elseecho "File does not exist"fi
A parancssorból közvetlenül a fájlnevet adjuk át argumentumként.
29. E-mail küldése Shell szkriptekből
E-mailek küldése bash szkriptekből elég egyszerű. A következő egyszerű példa a bash alkalmazásokból történő működés egyik módját mutatja be.
#!/bin/bashrecipient="[email protected]"subject="Greetings"message="Welcome to UbuntuPit"`mail -s $subject $recipient <<< $message`
Egy e-mailt küld a címzettnek, amely a megadott tárgyat és üzenetet tartalmazza.
30. Dátum és idő elemzése
A következő bash szkriptpélda azt mutatja be, hogyan kezelhetünk dátumokat és időpontokat szkriptek segítségével. A szükséges információk megszerzéséhez a Linux date parancsát használjuk, a mi programunk pedig elvégzi az elemzést.
#!/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"
Futtassuk ezt a programot, hogy megnézzük, hogyan működik. Próbálja ki a dátum parancs futtatását a terminálból is.
31. Az alvó parancs
A sleep parancs lehetővé teszi, hogy a héjszkriptje szünetet tartson az utasítások között. Számos esetben hasznos, például rendszerszintű feladatok elvégzésénél. A következő példa a sleep parancsot mutatja be működés közben egy héjszkriptben.
#!/bin/bashecho "How long to wait?"read timesleep $timeecho "Waited for $time seconds!"
Ez a program szünetelteti az utolsó utasítás végrehajtását a $time másodpercig, amit ebben az esetben a felhasználó ad meg.
32. A wait parancs
A wait parancs a Linux bash szkriptekből származó rendszerfolyamatok szüneteltetésére szolgál. Nézze meg az alábbi példát, hogy részletesen megértse, hogyan működik ez a bashben.
#!/bin/bashecho "Testing wait command"sleep 5 &pid=$!kill $pidwait $pidecho $pid was terminated.
Futtassa le maga is ezt a programot, hogy megnézze, hogyan működik.
33. Az utoljára frissített fájl megjelenítése
Néha szükség lehet arra, hogy bizonyos műveletekhez megkeresse az utoljára frissített fájlt. A következő egyszerű program megmutatja nekünk, hogy hogyan tehetjük ezt meg a bash-ben az awk parancs segítségével. A program vagy az aktuális munkakönyvtárban lévő utoljára frissített vagy létrehozott fájlt listázza ki.
#!/bin/bashls -lrt | grep ^- | awk 'END{print $NF}'
Az egyszerűség kedvéért ebben a példában nem írjuk le az awk működését. A feladat elvégzéséhez egyszerűen bemásolhatja ezt a kódot.
34. Kötegelt kiterjesztések hozzáadása
Az alábbi példa egy könyvtárban lévő összes fájlra egyéni kiterjesztést alkalmaz. Hozzon létre egy új könyvtárat, és helyezzen el benne néhány fájlt bemutató céllal. A mappámban összesen öt fájl van, mindegyiknek a neve test, amelyet (0-4) követ. Ezt a szkriptet úgy programoztam, hogy a fájlok végére (.UP) kerüljön. Bármilyen kiterjesztést hozzáadhatsz.
#!/bin/bashdir=for file in `ls /*`domv $file $file.UPdone
Először is, ne próbáld ki ezt a szkriptet bármilyen hagyományos könyvtárból, hanem futtasd egy tesztkönyvtárból. Ráadásul parancssori argumentumként meg kell adnia a fájlok könyvtárnevét. Használjon pontot(.) az aktuális munkakönyvtárhoz.
35. Fájlok vagy könyvtárak számának kiírása
Az alábbi Linux bash szkript megkeresi az adott könyvtárban található fájlok vagy mappák számát. Ehhez a Linux find parancsot használja. A parancssorból kell átadni a könyvtár nevét, ahol a fájlokat meg akarja keresni.
#!/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
A program megkéri a felhasználót, hogy próbálja meg újra, ha a megadott könyvtár nem elérhető, vagy jogosultsági problémái vannak.
36. Naplófájlok tisztítása
A következő egyszerű példa egy praktikus módszert mutat be, amellyel a shell szkripteket a való életben is használhatjuk. Ez a program egyszerűen törli a /var/log könyvtárban található összes naplófájlt. Megváltoztathatja az ezt a könyvtárat tartalmazó változót más naplófájlok tisztításához.
#!/bin/bashLOG_DIR=/var/logcd $LOG_DIRcat /dev/null > messagescat /dev/null > wtmpecho "Logs cleaned up."
Ne feledje, hogy ezt a Linux shell szkriptet root felhasználóként futtassa.
37. Biztonsági mentés szkript a Bash használatával
A shell szkriptek robusztus módot biztosítanak a fájlok és könyvtárak biztonsági mentésére. A következő példa minden olyan fájlról vagy könyvtárról biztonsági mentést készít, amelyet az elmúlt 24 órában módosítottak. Ez a program a find parancsot használja ehhez.
#!/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
A mentési folyamat sikere után kiírja a fájlok és könyvtárak nevét.
38. Ellenőrizze, hogy root-e
Az alábbi példa azt mutatja be, hogy a Linux bash szkriptekből gyorsan kideríthető, hogy egy felhasználó root-e vagy sem.
#!/bin/bashROOT_UID=0if thenecho "You are root."elseecho "You are not root"fiexit 0
A szkript kimenete a futtató felhasználótól függ. A $UID alapján a root felhasználóra fog találni.
39. Duplikált sorok eltávolítása a fájlokból
A fájlok feldolgozása jelentős időt vesz igénybe, és sok szempontból akadályozza az adminok termelékenységét. A duplikátumok keresése a fájlokban ijesztő feladattá válhat. Szerencsére ezt egy rövid shell script segítségével megteheti.
#! /bin/shecho -n "Enter Filename-> "read filenameif ; thensort $filename | uniq | tee sorted.txtelseecho "No $filename in $pwd...try again"fiexit 0
A fenti script soronként végigmegy a fájlon, és eltávolít minden duplikált sort. Ezután az új tartalmat egy új fájlba helyezi, az eredeti fájlt pedig érintetlenül hagyja.
40. Rendszerkarbantartás
A kézi frissítés helyett gyakran használok egy kis Linux shell scriptet a rendszerem frissítéséhez. Az alábbi egyszerű shell szkript megmutatja, hogyan kell ezt megtenni.
#!/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"
A szkript gondoskodik a régi, már nem szükséges csomagokról is. Ezt a szkriptet sudo használatával kell futtatni, különben nem fog megfelelően működni.
Végső gondolatok
A linuxos shell szkriptek olyan sokfélék lehetnek, amilyeneket csak el tudsz képzelni. Szó szerint nincs határ, amikor arról van szó, hogy mit tud vagy mit nem tud. Ha új Linux-rajongó vagy, nagyon ajánljuk, hogy sajátítsd el ezeket az alapvető bash script példákat. Érdemes megpiszkálnod őket, hogy jobban megértsd, hogyan működnek. Igyekeztünk mindent megtenni, hogy a modern Linux bash szkriptekhez szükséges összes alapvető betekintést megadjuk. Néhány technikai kérdésre az egyszerűség kedvéért nem tértünk ki. Ez az útmutató azonban sokak számára nagyszerű kiindulópontnak bizonyulhat.