Historycznie, powłoka była natywnym interpreterem wiersza poleceń dla systemów uniksopodobnych. Okazała się ona jedną z głównych cech Uniksa na przestrzeni lat i sama urosła do rangi zupełnie nowego tematu. Linux oferuje wiele potężnych powłok o rozbudowanej funkcjonalności, w tym Bash, Zsh, Tcsh i Ksh. Jedną z najbardziej zadziwiających cech tych powłok jest ich programowalność. Tworzenie prostych, ale efektywnych skryptów powłoki Linuksa do wykonywania codziennych zadań jest całkiem łatwe. Co więcej, skromna wiedza na ten temat sprawi, że staniesz się potężnym użytkownikiem Linuksa w krótkim czasie. Zostań z nami, aby uzyskać szczegółowe wprowadzenie do skryptów powłoki Uniksa.
- Przykłady skryptów powłoki Linuksa
- Skrypty Bash
- 1. Hello World
- 2. Użycie echo do drukowania
- 3. Używanie komentarzy
- 4. Komentarze wielowierszowe
- 5. Pętla while
- 6. Pętla for
- 7. Odbieranie danych wejściowych od użytkownika
- 8. Instrukcja if
- 9. Więcej kontroli przy użyciu If Else
- 10. Używanie operatora AND
- 11. Użycie operatora OR
- 12. Używanie instrukcji elif
- 13. Konstrukcja przełącznika
- 14. Argumenty wiersza poleceń
- 15. Uzyskiwanie argumentów z nazwami
- 16. Konkatenacja łańcuchów
- 17. Wycinanie łańcuchów
- 18. Wyodrębnianie podłańcuchów za pomocą polecenia cut
- 19. Dodawanie dwóch wartości
- 20. Dodawanie wielu wartości
- 21. Funkcje w Bashu
- 22. Funkcje ze zwracanymi wartościami
- 23. Tworzenie katalogów ze skryptów Bash
- 24. Tworzenie katalogu po potwierdzeniu istnienia
- 25. Czytanie plików
- 26. Usuwanie plików
- 27. Dołączanie do plików
- 28. Testowanie istnienia pliku
- 29. Wysyłanie maili ze skryptów powłoki
- 30. Parsowanie daty i czasu
- 31. Polecenie uśpienia
- 32. Komenda wait
- 33. Wyświetlanie ostatnio zaktualizowanego pliku
- 34. Adding Batch Extensions
- 35. Drukuj liczbę plików lub katalogów
- 36. Czyszczenie plików dziennika
- 37. Skrypt kopii zapasowej przy użyciu Bash
- 38. Sprawdź, czy jesteś rootem
- 39. Usuwanie zduplikowanych linii z plików
- 40. Konserwacja systemu
- Kończące myśli
Przykłady skryptów powłoki Linuksa
Większość skryptów powłoki wykonywanych na Linuksie dotyczy powłoki bash. Zaawansowani użytkownicy, którzy mają określony wybór, często używają innych powłok, takich jak Zsh i Ksh. W naszych przykładach będziemy głównie trzymać się skryptów bash w Linuksie ze względu na ich powszechną popularność i ogromną użyteczność. Nasi redaktorzy postarali się również nakreślić kilka przykładów skryptów powłoki, które dotyczą powłok innych niż bash. Znajdziesz znaczną ilość znajomości pomiędzy różnymi skryptami powłoki.
Skrypty Bash
Bash aka the Bourne Again Shell jest domyślnym interpreterem wiersza poleceń w większości dystrybucji Linuksa obecnie. Jest to uaktualnienie wcześniejszej powłoki Bourne’a, która została po raz pierwszy wprowadzona w wersji 7 Uniksa. Nauka skryptów powłoki bash pozwoli ci na zrozumienie innych skryptów powłoki znacznie szybciej. Tak więc, wypróbuj te proste przykłady samodzielnie, aby zdobyć doświadczenie z pierwszej ręki.
1. Hello World
Programiści często uczą się nowych języków poprzez naukę programu hello world. Jest to prosty program, który wypisuje ciąg „Hello World” na standardowe wyjście. Użyj edytora takiego jak vim lub nano, aby utworzyć plik hello-world.sh i skopiuj do niego poniższe linie.
#!/bin/bashecho "Hello World"
Zapisz i zamknij plik. Musisz uczynić ten plik wykonywalnym używając poniższego polecenia.
$ chmod a+x hello-world.sh
Możesz to uruchomić używając któregoś z poniższych dwóch poleceń.
$ bash hello-world.sh$ ./hello-world.sh
Wydrukuje ono łańcuch przekazany do echo wewnątrz skryptu.
2. Użycie echo do drukowania
Komenda echo jest używana do drukowania informacji w bashu. Jest ono podobne do funkcji C 'printf’ i zapewnia wiele typowych opcji, w tym sekwencje ucieczki i przekierowania.
Skopiuj poniższe linie do pliku o nazwie echo.sh i uczyń go wykonywalnym, jak zrobiono powyżej.
#!/bin/bashecho "Printing text"echo -n "Printing text without newline"echo -e "\nRemoving \t special \t characters\n"
Uruchom skrypt, aby zobaczyć, co robi. Opcja -e służy do poinformowania echo, że przekazany mu łańcuch zawiera znaki specjalne i wymaga rozszerzonej funkcjonalności.
3. Używanie komentarzy
Komentarze są użyteczne dla dokumentacji i są wymogiem dla wysokiej jakości baz kodu. Powszechną praktyką jest umieszczanie komentarzy wewnątrz kodów, które mają do czynienia z krytyczną logiką. Aby wykomentować linię, wystarczy użyć znaku #(hash) przed nią. Sprawdź poniższy przykład skryptu basha.
#!/bin/bash# Adding two values((sum=25+35))#Print the resultecho $sum
Ten skrypt wypisze liczbę 60. Sprawdź jak używane są komentarze używając # przed niektórymi liniami. Pierwsza linia jest jednak wyjątkiem. Nazywa się shebang i pozwala systemowi wiedzieć, jakiego interpretera użyć podczas uruchamiania tego skryptu.
4. Komentarze wielowierszowe
Wiele osób używa komentarzy wielowierszowych do dokumentowania swoich skryptów powłoki. Sprawdź, jak to się robi w następnym skrypcie o nazwie comment.sh.
#!/bin/bash: 'This script calculatesthe square of 5.'((area=5*5))echo $area
Zauważ, jak komentarze wielowierszowe są umieszczane wewnątrz znaków :’ i ’.
5. Pętla while
Konstrukcja pętli while jest używana do wielokrotnego wykonywania pewnych instrukcji. Sprawdź poniższy skrypt o nazwie while.sh, aby lepiej zrozumieć tę koncepcję.
#!/bin/bashi=0while doecho Number: $i((i++))done
Więc, pętla while przyjmuje poniższą postać.
while docommands 1commands ndone
Spacja wokół nawiasów kwadratowych jest obowiązkowa.
6. Pętla for
Pętla for jest kolejną szeroko stosowaną konstrukcją powłoki bash, która pozwala użytkownikom na wydajne iterowanie po kodach. Prosty przykład jest zademonstrowany poniżej.
#!/bin/bashfor (( counter=1; counter<=10; counter++ ))doecho -n "$counter "doneprintf "\n"
Zapisz ten kod w pliku o nazwie for.sh i uruchom go przy użyciu ./for.sh. Nie zapomnij, aby był on wykonywalny. Ten program powinien wypisać liczby od 1 do 10.
7. Odbieranie danych wejściowych od użytkownika
Odbieranie danych wejściowych od użytkownika jest kluczowe dla implementacji interakcji użytkownika w twoich skryptach. Poniższy przykład skryptu powłoki zademonstruje, jak otrzymywać dane wejściowe użytkownika w ramach programu powłoki.
#!/bin/bashecho -n "Enter Something:"read somethingecho "You Entered: $something"
Więc, konstrukcja read, po której następuje nazwa zmiennej, używana jest do uzyskiwania danych wejściowych użytkownika. Dane wejściowe przechowywane są wewnątrz tej zmiennej i można się do nich dostać przy pomocy znaku $.
8. Instrukcja if
Konstrukcje if są najpowszechniejszą konstrukcją warunkową dostępną w skryptach powłoki uniksowej, przyjmują one postać pokazaną poniżej.
if CONDITION thenSTATEMENTSfi
Konstrukcje te są wykonywane tylko wtedy, gdy WARUNEK jest prawdziwy. Słowo kluczowe fi używane jest do oznaczania końca instrukcji if. Szybki przykład jest pokazany poniżej.
#!/bin/bashecho -n "Enter a number: "read numif ]thenecho "Number is greater than 10."fi
Powyższy program wyświetli dane wyjściowe tylko wtedy, gdy liczba podana na wejściu jest większa niż dziesięć. Znak -gt oznacza większy niż; podobnie -lt oznacza mniejszy niż; -le oznacza mniejszy niż równy; oraz -ge oznacza większy niż równy. The ] są wymagane.
9. Więcej kontroli przy użyciu If Else
Połączenie konstrukcji else z if pozwala na znacznie lepszą kontrolę nad logiką Twojego skryptu. Prosty przykład jest pokazany poniżej.
#!/bin/bashread nif ;thenecho "It is a one digit number"elseecho "It is a two digit number"fi
Część else musi być umieszczona po części action instrukcji if i przed fi.
10. Używanie operatora AND
Operator AND pozwala naszemu programowi sprawdzić, czy wiele warunków jest spełnionych jednocześnie, czy nie. Wszystkie części oddzielone operatorem AND muszą być prawdziwe. W przeciwnym razie instrukcja zawierająca operator AND zwróci wartość false. Sprawdź poniższy przykład skryptu bash, aby lepiej zrozumieć jak działa AND.
#!/bin/bashecho -n "Enter Number:"read numif ]; thenecho "Even Number"elseecho "Odd Number"fi
Operator AND jest oznaczany znakiem &&.
11. Użycie operatora OR
Operator OR jest kolejną istotną konstrukcją, która pozwala nam implementować w naszych skryptach złożoną, solidną logikę programistyczną. W przeciwieństwie do AND, instrukcja zawierająca operator OR zwraca wartość true, gdy którykolwiek z jej operandów jest prawdziwy. Zwraca fałsz tylko wtedy, gdy każdy z operandów oddzielonych operatorem OR jest fałszywy.
#!/bin/bashecho -n "Enter any number:"read nif ]thenecho "You won"elseecho "You lost!"fi
Ten prosty przykład demonstruje, jak operator OR działa w skryptach powłoki Linuksa. Deklaruje on użytkownika jako zwycięzcę tylko wtedy, gdy wprowadzi on liczbę 15 lub 45. Znak || reprezentuje operator OR.
12. Używanie instrukcji elif
Konstrukcja elif jest skrótem od else if i oferuje wygodny sposób implementacji logiki łańcuchowej. Dowiedz się, jak działa elif, analizując poniższy przykład.
#!/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
Powyższy program nie wymaga wyjaśnień, więc nie będziemy go analizować linia po linii. Zmieniaj fragmenty skryptu, takie jak nazwy zmiennych i wartości, aby sprawdzić, jak działają razem.
13. Konstrukcja przełącznika
Konstrukcja przełącznika jest kolejną potężną funkcją oferowaną przez linuksowe skrypty bash. Może być używana tam, gdzie wymagane są zagnieżdżone warunki, ale nie chcesz używać skomplikowanych łańcuchów if-else-elif. Spójrz na następny przykład.
#!/bin/bashecho -n "Enter a number: "read numcase $num in100)echo "Hundred!!" ;;200)echo "Double Hundred!!" ;;*)echo "Neither 100 nor 200" ;;esac
Warunki są zapisane między słowami kluczowymi case i esac. Znak *) jest używany do dopasowywania wszystkich wejść innych niż 100 i 200.
14. Argumenty wiersza poleceń
Pobieranie argumentów bezpośrednio z wiersza poleceń może być korzystne w wielu przypadkach. Poniższy przykład demonstruje, jak to zrobić w bashu.
#!/bin/bashecho "Total arguments : $#"echo "First Argument = "echo "Second Argument = "
Uruchom ten skrypt z dwoma dodatkowymi parametrami po jego nazwie. Nazwałem go test.sh, a procedura wywołania jest przedstawiona poniżej.
$ ./test.sh Hey Howdy
Więc, $1 jest używany do uzyskania dostępu do pierwszego argumentu, $2 do drugiego, i tak dalej. Wartość $# służy do uzyskania całkowitej liczby argumentów.
15. Uzyskiwanie argumentów z nazwami
Poniższy przykład pokazuje, jak uzyskać argumenty wiersza poleceń z ich nazwami.
#!/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"
Nazwij ten skrypt test.sh i wywołaj go tak, jak pokazano poniżej.
$ ./test.sh X=44 Y=100
Powinien on zwrócić X+Y=144. Argumenty są tu przechowywane wewnątrz '$@’, a skrypt pobiera je za pomocą linuksowego polecenia cut.
16. Konkatenacja łańcuchów
Przetwarzanie łańcuchów ma ogromne znaczenie dla wielu współczesnych skryptów basha. Na szczęście, jest to znacznie wygodniejsze w bashu i pozwala na znacznie bardziej precyzyjny, zwięzły sposób implementacji tego. Zobacz poniższy przykład dla szybkiego spojrzenia na konkatenację łańcuchów w bashu.
#!/bin/bashstring1="Ubuntu"string2="Pit"string=$string1$string2echo "$string is a great resource for Linux beginners."
Poniższy program wypisuje na ekran łańcuch „UbuntuPit jest świetnym źródłem dla początkujących użytkowników Linuksa.”.
17. Wycinanie łańcuchów
W przeciwieństwie do wielu języków programowania, bash nie dostarcza żadnej wbudowanej funkcji do wycinania fragmentów łańcucha. Poniższy przykład demonstruje, jak można to zrobić za pomocą interpretacji parametrów.
#!/bin/bashStr="Learn Bash Commands from UbuntuPit"subStr=${Str:0:20}echo $subStr
Skrypt ten powinien wypisać na wyjściu „Learn Bash Commands”. Interpretacja parametrów przyjmuje postać ${VAR_NAME:S:L}. Tutaj S oznacza pozycję początkową, a L – długość.
18. Wyodrębnianie podłańcuchów za pomocą polecenia cut
Linuxowe polecenie cut może być użyte wewnątrz skryptów do „wycięcia” części łańcucha, aka podłańcucha. Następny przykład pokazuje, jak można to zrobić.
#!/bin/bashStr="Learn Bash Commands from UbuntuPit"#subStr=${Str:0:20}subStr=$(echo $Str| cut -d ' ' -f 1-3)echo $subStr
Sprawdź ten przewodnik, aby zrozumieć, jak działa polecenie Cut w systemie Linux.
19. Dodawanie dwóch wartości
Dość łatwo jest wykonywać operacje arytmetyczne wewnątrz skryptów powłoki Linuksa. Poniższy przykład demonstruje, jak otrzymać dwie liczby jako dane wejściowe od użytkownika i dodać je do siebie.
#!/bin/bashecho -n "Enter first number:"read xecho -n "Enter second number:"read y(( sum=x+y ))echo "The result of addition=$sum"
Jak widać, dodawanie liczb w bashu jest dość proste.
20. Dodawanie wielu wartości
Możesz użyć pętli, aby uzyskać wiele danych wprowadzonych przez użytkownika i dodać je wewnątrz skryptu. Poniższe przykłady pokazują to w akcji.
#!/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"
Jednakże, pominięcie (( )) spowoduje konkatenację łańcuchów, a nie dodawanie. Sprawdź więc, czy w Twoim programie nie ma takich rzeczy.
21. Funkcje w Bashu
Jak w każdym dialekcie programowania, funkcje odgrywają istotną rolę w skryptach powłoki Linuksa. Pozwalają one administratorom na tworzenie niestandardowych bloków kodu do częstego użycia. Poniższa demonstracja przedstawi sposób działania funkcji w linuksowych skryptach bash.
#!/bin/bashfunction Add(){echo -n "Enter a Number: "read xecho -n "Enter another Number: "read yecho "Adiition is: $(( x+y ))"}Add
Tutaj dodaliśmy dwie liczby tak samo jak poprzednio. Ale tutaj wykonaliśmy pracę używając funkcji o nazwie Add. Więc kiedykolwiek będziesz potrzebował dodać ponownie, możesz po prostu wywołać tę funkcję zamiast pisać tę sekcję ponownie.
22. Funkcje ze zwracanymi wartościami
Jedną z najbardziej fantastycznych cech funkcji jest to, że pozwalają one na przekazywanie danych z jednej funkcji do drugiej. Jest to przydatne w wielu różnych scenariuszach. Sprawdź następny przykład.
#!/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"
Tutaj na wyjściu znajdują się dane otrzymane z funkcji Greet().
23. Tworzenie katalogów ze skryptów Bash
Możliwość uruchamiania poleceń systemowych za pomocą skryptów powłoki pozwala programistom być znacznie bardziej produktywnymi. Poniższy prosty przykład pokaże, jak utworzyć katalog z wnętrza skryptu powłoki.
#!/bin/bashecho -n "Enter directory name ->"read newdircmd="mkdir $newdir"eval $cmd
Jeśli przyjrzysz się uważnie, ten skrypt po prostu wywołuje standardowe polecenie powłoki mkdir i przekazuje mu nazwę katalogu. Ten program powinien utworzyć katalog w twoim systemie plików. Możesz również przekazać polecenie do wykonania wewnątrz backticks(„), jak pokazano poniżej.
`mkdir $newdir`
24. Tworzenie katalogu po potwierdzeniu istnienia
Powyższy program nie zadziała, jeśli twój bieżący katalog roboczy zawiera już folder o tej samej nazwie. Poniższy program sprawdzi istnienie dowolnego folderu o nazwie $dir i utworzy go tylko wtedy, gdy nie znajdzie żadnego.
#!/bin/bashecho -n "Enter directory name ->"read dirif thenecho "Directory exists"else`mkdir $dir`echo "Directory created"fi
Napisz ten program przy użyciu eval, aby zwiększyć swoje umiejętności pisania skryptów w bashu.
25. Czytanie plików
Skrypty basha pozwalają użytkownikom na bardzo efektywne czytanie plików. Poniższy przykład pokaże, jak odczytać plik przy użyciu skryptów powłoki. Utwórz plik o nazwie editors.txt o następującej zawartości.
1. Vim 2. Emacs 3. ed 4. nano 5. Code
Ten skrypt wyświetli każdą z powyższych 5 linii.
#!/bin/bashfile='editors.txt'while read line; doecho $linedone < $file
26. Usuwanie plików
Poniższy program zademonstruje, jak usunąć plik w skryptach powłoki Linuksa. Program najpierw poprosi użytkownika o podanie nazwy pliku jako danych wejściowych i usunie go, jeśli istnieje. Linuksowe polecenie rm wykona tutaj usunięcie.
#!/bin/bashecho -n "Enter filename ->"read namerm -i $name
Wpiszmy editors.txt jako nazwę pliku i naciśnijmy y, gdy zostaniemy poproszeni o potwierdzenie. Powinno to spowodować usunięcie pliku.
27. Dołączanie do plików
Poniższy przykład skryptu powłoki pokaże ci, jak dołączać dane do pliku w systemie plików przy użyciu skryptów basha. Dodaje on dodatkową linię do wcześniejszego pliku editors.txt.
#!/bin/bashecho "Before appending the file"cat editors.txtecho "6. NotePad++" >> editors.txtecho "After appending the file"cat editors.txt
Powinieneś już zauważyć, że używamy codziennych poleceń terminala bezpośrednio z linuksowych skryptów bash.
28. Testowanie istnienia pliku
Następny przykład skryptu powłoki pokazuje, jak sprawdzić istnienie pliku z poziomu programów bash.
#!/bin/bashfilename=if ; thenecho "File exists"elseecho "File does not exist"fi
Przekazujemy nazwę pliku jako argument bezpośrednio z wiersza poleceń.
29. Wysyłanie maili ze skryptów powłoki
Wysyłanie maili ze skryptów basha jest całkiem proste. Poniższy prosty przykład zademonstruje jeden ze sposobów robienia tego z poziomu aplikacji bash.
#!/bin/bashrecipient="[email protected]"subject="Greetings"message="Welcome to UbuntuPit"`mail -s $subject $recipient <<< $message`
Wysyła on wiadomość e-mail do odbiorcy zawierającą podany temat i wiadomość.
30. Parsowanie daty i czasu
Następny przykład skryptu basha pokaże, jak obsługiwać daty i czasy za pomocą skryptów. Linuksowe polecenie date jest używane do uzyskania niezbędnych informacji, a nasz program zajmuje się parsowaniem.
#!/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"
Uruchom ten program, aby zobaczyć, jak działa. Spróbuj również uruchomić polecenie daty z terminala.
31. Polecenie uśpienia
Polecenie uśpienia pozwala skryptowi powłoki na wstrzymanie pracy pomiędzy instrukcjami. Jest ono przydatne w wielu scenariuszach, takich jak wykonywanie zadań na poziomie systemu. Następny przykład pokazuje działanie polecenia sleep wewnątrz skryptu powłoki.
#!/bin/bashecho "How long to wait?"read timesleep $timeecho "Waited for $time seconds!"
Ten program wstrzymuje wykonanie ostatniej instrukcji do czasu $time sekund, który w tym przypadku jest podany przez użytkownika.
32. Komenda wait
Komenda wait jest używana do wstrzymywania procesów systemowych z linuksowych skryptów bash. Sprawdź poniższy przykład dla szczegółowego zrozumienia, jak to działa w bashu.
#!/bin/bashecho "Testing wait command"sleep 5 &pid=$!kill $pidwait $pidecho $pid was terminated.
Uruchom ten program samodzielnie, aby sprawdzić, jak działa.
33. Wyświetlanie ostatnio zaktualizowanego pliku
Czasami możesz potrzebować znaleźć ostatnio zaktualizowany plik dla pewnych operacji. Poniższy prosty program pokazuje nam jak to zrobić w bashu, używając polecenia awk. Wyliczy on ostatnio uaktualniony lub utworzony plik w bieżącym katalogu roboczym.
#!/bin/bashls -lrt | grep ^- | awk 'END{print $NF}'
Dla uproszczenia, nie będziemy opisywać działania awk w tym przykładzie. Możesz po prostu skopiować ten kod, aby wykonać zadanie.
34. Adding Batch Extensions
Poniższy przykład zastosuje niestandardowe rozszerzenie do wszystkich plików wewnątrz katalogu. Utwórz nowy katalog i umieść w nim kilka plików dla celów demonstracyjnych. Mój katalog zawiera w sumie pięć plików, każdy o nazwie test, po której następuje (0-4). Zaprogramowałem ten skrypt tak, aby dodawał (.UP) na końcu plików. Możesz dodać dowolne rozszerzenie, jakie chcesz.
#!/bin/bashdir=for file in `ls /*`domv $file $file.UPdone
Po pierwsze, nie próbuj tego skryptu z dowolnego zwykłego katalogu; zamiast tego uruchom go z katalogu testowego. Dodatkowo, musisz podać nazwę katalogu swoich plików jako argument wiersza poleceń. Użyj kropki(.) dla bieżącego katalogu roboczego.
35. Drukuj liczbę plików lub katalogów
Poniższy skrypt bash Linux znajduje liczbę plików lub katalogów znajdujących się wewnątrz danego katalogu. Wykorzystuje do tego linuksowe polecenie find. Musisz przekazać nazwę katalogu, w którym chcesz szukać plików z linii poleceń.
#!/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
Program poprosi użytkownika, aby spróbować ponownie, jeśli określony katalog nie jest dostępny lub mają problemy z uprawnieniami.
36. Czyszczenie plików dziennika
Kolejny prosty przykład demonstruje poręczny sposób, w jaki możemy używać skryptów powłoki w prawdziwym życiu. Ten program po prostu usunie wszystkie pliki logów znajdujące się w katalogu /var/log. Możesz zmienić zmienną, która przechowuje ten katalog do czyszczenia innych logów.
#!/bin/bashLOG_DIR=/var/logcd $LOG_DIRcat /dev/null > messagescat /dev/null > wtmpecho "Logs cleaned up."
Pamiętaj, aby uruchomić ten skrypt powłoki Linuksa jako root.
37. Skrypt kopii zapasowej przy użyciu Bash
Skrypty powłoki zapewniają solidny sposób tworzenia kopii zapasowych plików i katalogów. Poniższy przykład wykona kopię zapasową każdego pliku lub katalogu, który został zmodyfikowany w ciągu ostatnich 24 godzin. Ten program wykorzystuje do tego polecenie find.
#!/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
Po pomyślnym wykonaniu kopii zapasowej wydrukuje nazwy plików i katalogów.
38. Sprawdź, czy jesteś rootem
Poniższy przykład demonstruje szybki sposób sprawdzania, czy użytkownik jest rootem, czy nie, za pomocą linuksowych skryptów bash.
#!/bin/bashROOT_UID=0if thenecho "You are root."elseecho "You are not root"fiexit 0
Wyjście tego skryptu zależy od użytkownika, który go uruchamia. Będzie on pasował do użytkownika root na podstawie $UID.
39. Usuwanie zduplikowanych linii z plików
Przetwarzanie plików zajmuje dużo czasu i na wiele sposobów obniża produktywność administratorów. Wyszukiwanie duplikatów w plikach może stać się zniechęcającym zadaniem. Na szczęście, możesz to zrobić za pomocą krótkiego skryptu powłoki.
#! /bin/shecho -n "Enter Filename-> "read filenameif ; thensort $filename | uniq | tee sorted.txtelseecho "No $filename in $pwd...try again"fiexit 0
Powyższy skrypt przechodzi linia po linii przez twój plik i usuwa każdą zduplikowaną linię. Następnie umieszcza nową zawartość w nowym pliku i zachowuje oryginalny plik nienaruszony.
40. Konserwacja systemu
Często używam małego skryptu powłoki Linuksa do aktualizacji mojego systemu, zamiast robić to ręcznie. Poniższy prosty skrypt powłoki pokaże ci jak to zrobić.
#!/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"
Skrypt zajmuje się również starymi pakietami, które nie są już potrzebne. Musisz uruchomić ten skrypt używając sudo inaczej nie będzie działał poprawnie.
Kończące myśli
Skrypty powłoki Linux mogą być tak różnorodne jak tylko możesz sobie wyobrazić. Nie ma dosłownie żadnych ograniczeń, jeśli chodzi o określenie, co może zrobić, a czego nie może. Jeśli jesteś nowym entuzjastą Linuksa, gorąco polecamy ci opanowanie tych podstawowych przykładów skryptów bash. Powinieneś je podrasować, aby lepiej zrozumieć jak one działają. Zrobiliśmy co w naszej mocy, aby zapewnić ci wszystkie istotne spostrzeżenia potrzebne dla nowoczesnych skryptów bash w Linuksie. Ze względu na prostotę nie poruszyliśmy niektórych kwestii technicznych. Jednak ten przewodnik powinien okazać się świetnym punktem wyjścia dla wielu z was.