Historisch gesehen ist die Shell der native Befehlszeileninterpreter für Unix-ähnliche Systeme. Sie hat sich im Laufe der Jahre als eines der wichtigsten Merkmale von Unix erwiesen und sich zu einem ganz eigenen Thema entwickelt. Linux bietet eine Vielzahl leistungsfähiger Shells mit robuster Funktionalität, darunter Bash, Zsh, Tcsh und Ksh. Eine der erstaunlichsten Eigenschaften dieser Shells ist ihre Programmierbarkeit. Die Erstellung einfacher, aber effektiver Linux-Shell-Skripte zur Bewältigung alltäglicher Aufgaben ist recht einfach. Darüber hinaus wird ein bescheidenes Wissen über dieses Thema Sie in kürzester Zeit zu einem Linux Power User machen. Bleiben Sie bei uns, um eine detaillierte Einführung in die Unix-Shell-Skripterstellung zu erhalten.
- Linux-Shell-Skript-Beispiele
- Linux Bash-Skripte
- 1. Hello World
- 2. echo zum Drucken verwenden
- 3. Kommentare verwenden
- 4. Mehrzeilige Kommentare
- 5. Die While-Schleife
- 6. Die For-Schleife
- 7. Eingaben vom Benutzer erhalten
- 8. Die If-Anweisung
- 9. Mehr Kontrolle mit If Else
- 10. Verwendung des AND-Operators
- 11. Verwendung des OR-Operators
- 12. Verwendung von elif
- 13. Das Switch-Konstrukt
- 14. Befehlszeilenargumente
- 15. Abrufen von Argumenten mit Namen
- 16. Verkettung von Zeichenketten
- 17. Slicing Strings
- 18. Extrahieren von Teilstrings mit Cut
- 19. Zwei Werte addieren
- 20. Hinzufügen mehrerer Werte
- 21. Funktionen in der Bash
- 22. Funktionen mit Rückgabewerten
- 23. Erstellen von Verzeichnissen aus Bash-Skripten
- 24. Erstellen eines Verzeichnisses nach Überprüfung der Existenz
- 25. Dateien lesen
- 26. Löschen von Dateien
- 27. Anhängen an Dateien
- 28. Testen der Dateiexistenz
- 29. Mails aus Shell-Skripten versenden
- 30. Parsing von Datum und Uhrzeit
- 31. Der Sleep-Befehl
- 32. Der Wait-Befehl
- 33. Anzeige der zuletzt aktualisierten Datei
- 34. Hinzufügen von Batch-Erweiterungen
- 35. Anzahl der Dateien oder Verzeichnisse ausgeben
- 36. Reinigen von Protokolldateien
- 37. Backup-Skript mit Bash
- 38. Prüfen, ob Sie Root sind
- 39. Entfernen doppelter Zeilen aus Dateien
- 40. Systemwartung
- Ending Thoughts
Linux-Shell-Skript-Beispiele
Die meisten Shell-Skripte, die unter Linux erstellt werden, verwenden die Bash-Shell. Power-User, die bestimmte Möglichkeiten haben, verwenden oft andere Shells wie Zsh und Ksh. Wir werden uns in unseren Beispielen hauptsächlich auf Linux-Bash-Skripte beschränken, da sie weit verbreitet und sehr benutzerfreundlich sind. Unsere Redakteure haben auch versucht, einige Shell-Skript-Beispiele zu skizzieren, die sich mit anderen Shells als der bash beschäftigen. Sie werden eine beträchtliche Menge an Vertrautheit zwischen den verschiedenen Shell-Skripten finden.
Linux Bash-Skripte
Bash, auch bekannt als die Bourne Again Shell, ist heutzutage der Standard-Kommandozeilen-Interpreter in den meisten Linux-Distributionen. Sie ist eine Weiterentwicklung der früheren Bourne-Shell, die erstmals in Version 7 von Unix eingeführt wurde. Wenn Sie Bash-Shell-Skripte lernen, können Sie andere Shell-Skripte viel schneller verstehen. Probieren Sie also diese einfachen Beispiele selbst aus, um Erfahrungen aus erster Hand zu sammeln.
1. Hello World
Programmierer lernen neue Sprachen oft durch das Erlernen des Hello World Programms. Es ist ein einfaches Programm, das die Zeichenkette „Hello World“ auf der Standardausgabe ausgibt. Verwenden Sie einen Editor wie vim oder nano, um die Datei hello-world.sh zu erstellen und kopieren Sie die folgenden Zeilen hinein.
#!/bin/bashecho "Hello World"
Speichern Sie die Datei und beenden Sie sie. Sie müssen diese Datei mit dem folgenden Befehl ausführbar machen.
$ chmod a+x hello-world.sh
Sie können diese Datei mit einem der beiden folgenden Befehle ausführen.
$ bash hello-world.sh$ ./hello-world.sh
Sie wird die Zeichenkette ausdrucken, die innerhalb des Skripts an echo übergeben wurde.
2. echo zum Drucken verwenden
Der echo-Befehl wird zum Drucken von Informationen in der Bash verwendet. Er ähnelt der C-Funktion ‚printf‘ und bietet viele gängige Optionen, einschließlich Escape-Sequenzen und Umleitungen.
Kopieren Sie die folgenden Zeilen in eine Datei namens echo.sh und machen Sie sie wie oben beschrieben ausführbar.
#!/bin/bashecho "Printing text"echo -n "Printing text without newline"echo -e "\nRemoving \t special \t characters\n"
Starten Sie das Skript, um zu sehen, was es tut. Die Option -e wird verwendet, um echo mitzuteilen, dass die übergebene Zeichenkette Sonderzeichen enthält und eine erweiterte Funktionalität erfordert.
3. Kommentare verwenden
Kommentare sind nützlich für die Dokumentation und eine Voraussetzung für qualitativ hochwertige Codebasen. Es ist gängige Praxis, Kommentare in Codes einzufügen, die sich mit kritischer Logik befassen. Um eine Zeile auszukommentieren, verwenden Sie einfach das Zeichen #(Raute) vor der Zeile. Sehen Sie sich das folgende Bash-Skript-Beispiel an:
#!/bin/bash# Adding two values((sum=25+35))#Print the resultecho $sum
Dieses Skript gibt die Zahl 60 aus. Prüfen Sie, wie Kommentare mit # vor einigen Zeilen verwendet werden. Die erste Zeile ist jedoch eine Ausnahme. Sie wird Shebang genannt und teilt dem System mit, welchen Interpreter es bei der Ausführung des Skripts verwenden soll.
4. Mehrzeilige Kommentare
Viele Leute verwenden mehrzeilige Kommentare, um ihre Shell-Skripte zu dokumentieren. Schauen Sie sich an, wie das im nächsten Skript namens comment.sh gemacht wird.
#!/bin/bash: 'This script calculatesthe square of 5.'((area=5*5))echo $area
Beachten Sie, wie mehrzeilige Kommentare innerhalb der Zeichen :‘ und ‚ platziert werden.
5. Die While-Schleife
Das Konstrukt der While-Schleife wird verwendet, um eine Anweisung mehrmals auszuführen. Schauen Sie sich das folgende Skript namens while.sh an, um dieses Konzept besser zu verstehen.
#!/bin/bashi=0while doecho Number: $i((i++))done
Die while-Schleife hat also die folgende Form.
while docommands 1commands ndone
Die Leerzeichen um die eckigen Klammern sind obligatorisch.
6. Die For-Schleife
Die for-Schleife ist ein weiteres weit verbreitetes Konstrukt der Bash-Shell, das es dem Benutzer ermöglicht, Codes effizient zu wiederholen. Ein einfaches Beispiel wird unten gezeigt.
#!/bin/bashfor (( counter=1; counter<=10; counter++ ))doecho -n "$counter "doneprintf "\n"
Speichern Sie diesen Code in einer Datei namens for.sh und führen Sie ihn mit ./for.sh aus. Vergessen Sie nicht, es ausführbar zu machen. Dieses Programm sollte die Zahlen 1 bis 10 ausgeben.
7. Eingaben vom Benutzer erhalten
Eingaben vom Benutzer zu erhalten ist wichtig, um Benutzerinteraktion in Ihre Skripte zu implementieren. Das folgende Beispiel für ein Shell-Skript zeigt, wie man Benutzereingaben innerhalb eines Shell-Programms erhält.
#!/bin/bashecho -n "Enter Something:"read somethingecho "You Entered: $something"
Das read-Konstrukt, gefolgt von einem Variablennamen, wird also verwendet, um Benutzereingaben zu erhalten. Die Eingaben werden in dieser Variablen gespeichert und können mit dem $-Zeichen aufgerufen werden.
8. Die If-Anweisung
Die If-Anweisungen sind die gebräuchlichsten bedingten Konstrukte in Unix-Shell-Skripten und haben die unten gezeigte Form.
if CONDITION thenSTATEMENTSfi
Die Anweisungen werden nur ausgeführt, wenn die Bedingung wahr ist. Das Schlüsselwort fi wird verwendet, um das Ende der if-Anweisung zu markieren. Ein kurzes Beispiel wird unten gezeigt.
#!/bin/bashecho -n "Enter a number: "read numif ]thenecho "Number is greater than 10."fi
Das obige Programm zeigt die Ausgabe nur an, wenn die über die Eingabe gelieferte Zahl größer als zehn ist. Das -gt steht für größer als; ebenso -lt für kleiner als; -le für kleiner als gleich; und -ge für größer als gleich. Die ] sind erforderlich.
9. Mehr Kontrolle mit If Else
Die Kombination des else-Konstrukts mit if ermöglicht eine viel bessere Kontrolle über die Logik Ihres Skripts. Ein einfaches Beispiel ist unten dargestellt.
#!/bin/bashread nif ;thenecho "It is a one digit number"elseecho "It is a two digit number"fi
Der else-Teil muss nach dem action-Teil von if und vor fi platziert werden.
10. Verwendung des AND-Operators
Mit dem AND-Operator kann unser Programm prüfen, ob mehrere Bedingungen auf einmal erfüllt sind oder nicht. Alle Teile, die durch einen AND-Operator getrennt sind, müssen wahr sein. Andernfalls gibt die Anweisung, die das AND enthält, false zurück. Das folgende Bash-Skript-Beispiel zeigt, wie AND funktioniert.
#!/bin/bashecho -n "Enter Number:"read numif ]; thenecho "Even Number"elseecho "Odd Number"fi
Der AND-Operator wird durch das Zeichen && gekennzeichnet.
11. Verwendung des OR-Operators
Der OR-Operator ist ein weiteres wichtiges Konstrukt, das es uns ermöglicht, komplexe, robuste Programmierlogik in unseren Skripten zu implementieren. Im Gegensatz zur UND-Verknüpfung gibt eine Anweisung mit dem ODER-Operator wahr zurück, wenn einer der beiden Operanden wahr ist. Sie gibt nur dann falsch zurück, wenn jeder durch das OR getrennte Operand falsch ist.
#!/bin/bashecho -n "Enter any number:"read nif ]thenecho "You won"elseecho "You lost!"fi
Dieses einfache Beispiel zeigt, wie der OR-Operator in Linux-Shell-Skripten funktioniert. Es erklärt den Benutzer nur dann zum Gewinner, wenn er die Zahl 15 oder 45 eingibt. Das Zeichen || steht für den OR-Operator.
12. Verwendung von elif
Die elif-Anweisung steht für else if und bietet eine bequeme Möglichkeit zur Implementierung von Kettenlogik. Um herauszufinden, wie elif funktioniert, sehen Sie sich das folgende Beispiel an.
#!/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
Das obige Programm ist selbsterklärend, daher werden wir es nicht Zeile für Zeile zerlegen. Ändern Sie Teile des Skripts wie Variablennamen und Werte, um zu prüfen, wie sie zusammen funktionieren.
13. Das Switch-Konstrukt
Das Switch-Konstrukt ist eine weitere leistungsstarke Funktion von Linux-Bash-Skripten. Es kann verwendet werden, wenn verschachtelte Bedingungen erforderlich sind, Sie aber keine komplexen if-else-elif-Ketten verwenden wollen. Schauen Sie sich das folgende Beispiel an.
#!/bin/bashecho -n "Enter a number: "read numcase $num in100)echo "Hundred!!" ;;200)echo "Double Hundred!!" ;;*)echo "Neither 100 nor 200" ;;esac
Die Bedingungen werden zwischen den Schlüsselwörtern case und esac geschrieben. Der *) wird für alle Eingaben außer 100 und 200 verwendet.
14. Befehlszeilenargumente
Das Abrufen von Argumenten direkt von der Befehlsshell kann in einer Reihe von Fällen von Vorteil sein. Das folgende Beispiel zeigt, wie man das in der Bash macht.
#!/bin/bashecho "Total arguments : $#"echo "First Argument = "echo "Second Argument = "
Führen Sie dieses Skript mit zwei zusätzlichen Parametern nach seinem Namen aus. Ich habe es test.sh genannt und die Aufrufprozedur ist unten beschrieben.
$ ./test.sh Hey Howdy
So wird $1 für den Zugriff auf das erste Argument verwendet, $2 für das zweite und so weiter. Das $# wird verwendet, um die Gesamtzahl der Argumente zu erhalten.
15. Abrufen von Argumenten mit Namen
Das folgende Beispiel zeigt, wie man Befehlszeilenargumente mit ihren Namen abrufen kann.
#!/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"
Benennen Sie dieses Skript test.sh und rufen Sie es wie unten gezeigt auf.
$ ./test.sh X=44 Y=100
Es sollte X+Y=144 zurückgeben. Die Argumente werden hier in ‚$@‘ gespeichert und das Skript holt sie mit dem Linux-Befehl cut.
16. Verkettung von Zeichenketten
Die Verarbeitung von Zeichenketten ist für eine Vielzahl moderner Bash-Skripte von großer Bedeutung. Glücklicherweise ist es in der Bash viel komfortabler und erlaubt eine viel präzisere, prägnantere Art, dies zu implementieren. Das folgende Beispiel gibt einen kurzen Einblick in die Bash-String-Verkettung.
#!/bin/bashstring1="Ubuntu"string2="Pit"string=$string1$string2echo "$string is a great resource for Linux beginners."
Das folgende Programm gibt den String „UbuntuPit is a great resource for Linux beginners.“ auf dem Bildschirm aus.
17. Slicing Strings
Im Gegensatz zu vielen Programmiersprachen bietet die Bash keine eingebaute Funktion zum Abschneiden von Teilen einer Zeichenkette. Das folgende Beispiel zeigt, wie dies mit Hilfe der Parameterexpansion möglich ist.
#!/bin/bashStr="Learn Bash Commands from UbuntuPit"subStr=${Str:0:20}echo $subStr
Dieses Skript sollte „Learn Bash Commands“ als Ausgabe ausgeben. Die Parameterexpansion hat die Form ${VAR_NAME:S:L}. Dabei steht S für die Startposition und L für die Länge.
18. Extrahieren von Teilstrings mit Cut
Der Linux-Befehl cut kann in Ihren Skripten verwendet werden, um einen Teil einer Zeichenkette, auch Teilstring genannt, „auszuschneiden“. Das nächste Beispiel zeigt, wie dies geschehen kann.
#!/bin/bashStr="Learn Bash Commands from UbuntuPit"#subStr=${Str:0:20}subStr=$(echo $Str| cut -d ' ' -f 1-3)echo $subStr
Lesen Sie diese Anleitung, um zu verstehen, wie der Linux-Befehl Cut funktioniert.
19. Zwei Werte addieren
Es ist recht einfach, arithmetische Operationen in Linux-Shell-Skripten durchzuführen. Das folgende Beispiel zeigt, wie man zwei Zahlen als Eingabe vom Benutzer erhält und sie addiert.
#!/bin/bashecho -n "Enter first number:"read xecho -n "Enter second number:"read y(( sum=x+y ))echo "The result of addition=$sum"
Wie Sie sehen, ist das Addieren von Zahlen in der Bash ziemlich einfach.
20. Hinzufügen mehrerer Werte
Sie können Schleifen verwenden, um mehrere Benutzereingaben zu erhalten und sie in Ihrem Skript hinzuzufügen. Die folgenden Beispiele zeigen dies in Aktion.
#!/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"
Wenn Sie jedoch das (( )) weglassen, führt dies zu einer Verkettung von Zeichenfolgen und nicht zu einer Addition. Achten Sie also auf solche Dinge in Ihrem Programm.
21. Funktionen in der Bash
Wie bei jedem Programmierdialekt spielen Funktionen eine wichtige Rolle in Linux-Shell-Skripten. Sie ermöglichen es Admins, benutzerdefinierte Codeblöcke für den häufigen Gebrauch zu erstellen. Die folgende Demonstration zeigt, wie Funktionen in Linux-Bash-Skripten funktionieren.
#!/bin/bashfunction Add(){echo -n "Enter a Number: "read xecho -n "Enter another Number: "read yecho "Adiition is: $(( x+y ))"}Add
Hier haben wir zwei Zahlen addiert, genau wie zuvor. Aber hier haben wir die Arbeit mit einer Funktion namens Add erledigt. Wenn du also wieder addieren musst, kannst du einfach diese Funktion aufrufen, anstatt diesen Abschnitt erneut zu schreiben.
22. Funktionen mit Rückgabewerten
Eine der fantastischsten Eigenschaften von Funktionen ist, dass sie die Übergabe von Daten von einer Funktion an eine andere ermöglichen. Das ist in einer Vielzahl von Szenarien nützlich. Sehen Sie sich das nächste Beispiel an.
#!/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"
Hier enthält die Ausgabe Daten, die von der Funktion Greet() empfangen wurden.
23. Erstellen von Verzeichnissen aus Bash-Skripten
Die Möglichkeit, Systembefehle mit Hilfe von Shell-Skripten auszuführen, erlaubt es Entwicklern, viel produktiver zu sein. Das folgende einfache Beispiel zeigt Ihnen, wie Sie ein Verzeichnis aus einem Shell-Skript heraus erstellen können.
#!/bin/bashecho -n "Enter directory name ->"read newdircmd="mkdir $newdir"eval $cmd
Wenn Sie genau hinsehen, ruft dieses Skript einfach Ihren Standard-Shell-Befehl mkdir auf und übergibt ihm den Verzeichnisnamen. Dieses Programm sollte ein Verzeichnis in Ihrem Dateisystem erstellen. Sie können den auszuführenden Befehl auch in Backticks(„) übergeben, wie unten gezeigt.
`mkdir $newdir`
24. Erstellen eines Verzeichnisses nach Überprüfung der Existenz
Das obige Programm wird nicht funktionieren, wenn Ihr aktuelles Arbeitsverzeichnis bereits einen Ordner mit demselben Namen enthält. Das folgende Programm prüft die Existenz eines Ordners mit dem Namen $dir und erstellt nur dann einen, wenn es keinen findet.
#!/bin/bashecho -n "Enter directory name ->"read dirif thenecho "Directory exists"else`mkdir $dir`echo "Directory created"fi
Schreiben Sie dieses Programm mit eval, um Ihre Bash-Skriptkenntnisse zu verbessern.
25. Dateien lesen
Bash-Skripte ermöglichen es dem Benutzer, Dateien sehr effektiv zu lesen. Das folgende Beispiel zeigt, wie man eine Datei mit Hilfe von Shell-Skripten lesen kann. Erstellen Sie eine Datei namens editors.txt mit folgendem Inhalt.
1. Vim 2. Emacs 3. ed 4. nano 5. Code
Dieses Skript wird jede der oben genannten 5 Zeilen ausgeben.
#!/bin/bashfile='editors.txt'while read line; doecho $linedone < $file
26. Löschen von Dateien
Das folgende Programm demonstriert, wie man eine Datei innerhalb von Linux-Shell-Skripten löschen kann. Das Programm fordert den Benutzer zunächst auf, den Dateinamen einzugeben, und löscht ihn, falls er existiert. Der Linux-Befehl rm führt hier die Löschung durch.
#!/bin/bashecho -n "Enter filename ->"read namerm -i $name
Lassen Sie uns editors.txt als Dateinamen eingeben und drücken Sie y, wenn Sie zur Bestätigung aufgefordert werden. Damit sollte die Datei gelöscht werden.
27. Anhängen an Dateien
Das folgende Beispiel für ein Shell-Skript zeigt Ihnen, wie Sie mithilfe von Bash-Skripten Daten an eine Datei in Ihrem Dateisystem anhängen können. Es fügt eine zusätzliche Zeile zu der früheren Datei editors.txt hinzu.
#!/bin/bashecho "Before appending the file"cat editors.txtecho "6. NotePad++" >> editors.txtecho "After appending the file"cat editors.txt
Sie sollten jetzt bemerken, dass wir alltägliche Terminalbefehle direkt aus Linux-Bash-Skripten verwenden.
28. Testen der Dateiexistenz
Das nächste Shell-Skript-Beispiel zeigt, wie man die Existenz einer Datei aus Bash-Programmen heraus überprüfen kann.
#!/bin/bashfilename=if ; thenecho "File exists"elseecho "File does not exist"fi
Wir übergeben den Dateinamen als Argument direkt aus der Kommandozeile.
29. Mails aus Shell-Skripten versenden
Es ist recht einfach, E-Mails aus Bash-Skripten zu versenden. Das folgende einfache Beispiel zeigt eine Möglichkeit, dies von Bash-Anwendungen aus zu tun.
#!/bin/bashrecipient="[email protected]"subject="Greetings"message="Welcome to UbuntuPit"`mail -s $subject $recipient <<< $message`
Es wird eine E-Mail mit dem angegebenen Betreff und der Nachricht an den Empfänger gesendet.
30. Parsing von Datum und Uhrzeit
Das nächste Beispiel für ein Bash-Skript zeigt Ihnen, wie Sie Datum und Uhrzeit mit Hilfe von Skripten verarbeiten können. Der Linux-Befehl date wird verwendet, um die notwendigen Informationen zu erhalten, und unser Programm übernimmt das Parsing.
#!/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"
Starten Sie dieses Programm, um zu sehen, wie es funktioniert. Versuchen Sie auch, den Datumsbefehl in Ihrem Terminal auszuführen.
31. Der Sleep-Befehl
Der Sleep-Befehl ermöglicht es Ihrem Shell-Skript, zwischen den Anweisungen zu pausieren. Er ist in einer Reihe von Szenarien nützlich, z. B. bei der Ausführung von Aufgaben auf Systemebene. Das nächste Beispiel zeigt den sleep-Befehl in Aktion innerhalb eines Shell-Skripts.
#!/bin/bashecho "How long to wait?"read timesleep $timeecho "Waited for $time seconds!"
Dieses Programm hält die Ausführung der letzten Anweisung bis zur Zeit $time Sekunden an, die in diesem Fall vom Benutzer angegeben wird.
32. Der Wait-Befehl
Der Wait-Befehl wird zum Anhalten von Systemprozessen aus Linux-Bash-Skripten verwendet. Schauen Sie sich das folgende Beispiel an, um zu verstehen, wie dies in der Bash funktioniert.
#!/bin/bashecho "Testing wait command"sleep 5 &pid=$!kill $pidwait $pidecho $pid was terminated.
Starten Sie dieses Programm selbst, um zu sehen, wie es funktioniert.
33. Anzeige der zuletzt aktualisierten Datei
Manchmal muss man für bestimmte Operationen die zuletzt aktualisierte Datei finden. Das folgende einfache Programm zeigt uns, wie man dies in der Bash mit dem awk-Befehl tun kann. Es listet entweder die zuletzt aktualisierte oder die zuletzt erstellte Datei in Ihrem aktuellen Arbeitsverzeichnis auf.
#!/bin/bashls -lrt | grep ^- | awk 'END{print $NF}'
Der Einfachheit halber wird in diesem Beispiel nicht beschrieben, wie awk funktioniert. Sie können diesen Code einfach kopieren, um die Aufgabe zu erledigen.
34. Hinzufügen von Batch-Erweiterungen
Das folgende Beispiel wendet eine benutzerdefinierte Erweiterung auf alle Dateien in einem Verzeichnis an. Erstellen Sie ein neues Verzeichnis und legen Sie zu Demonstrationszwecken einige Dateien darin ab. Mein Ordner enthält insgesamt fünf Dateien, die jeweils den Namen test gefolgt von (0-4) tragen. Ich habe das Skript so programmiert, dass es (.UP) am Ende der Dateien hinzufügt. Sie können jede beliebige Erweiterung hinzufügen.
#!/bin/bashdir=for file in `ls /*`domv $file $file.UPdone
Erstens, versuchen Sie dieses Skript nicht von einem normalen Verzeichnis aus; führen Sie es stattdessen von einem Testverzeichnis aus. Außerdem müssen Sie den Verzeichnisnamen Ihrer Dateien als Befehlszeilenargument angeben. Verwenden Sie Punkt(.) für das aktuelle Arbeitsverzeichnis.
35. Anzahl der Dateien oder Verzeichnisse ausgeben
Das folgende Linux-Bash-Skript ermittelt die Anzahl der Dateien oder Verzeichnisse in einem bestimmten Verzeichnis. Dazu verwendet es den Linux-Befehl find. Sie müssen den Namen des Verzeichnisses, in dem Sie nach Dateien suchen wollen, auf der Kommandozeile angeben.
#!/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
Das Programm bittet den Benutzer, es noch einmal zu versuchen, wenn das angegebene Verzeichnis nicht verfügbar ist oder Probleme mit den Zugriffsrechten bestehen.
36. Reinigen von Protokolldateien
Das nächste einfache Beispiel demonstriert eine praktische Möglichkeit, Shell-Skripte in der Praxis einzusetzen. Dieses Programm löscht einfach alle Protokolldateien, die sich in Ihrem /var/log-Verzeichnis befinden. Sie können die Variable, die dieses Verzeichnis enthält, ändern, um andere Protokolle zu löschen.
#!/bin/bashLOG_DIR=/var/logcd $LOG_DIRcat /dev/null > messagescat /dev/null > wtmpecho "Logs cleaned up."
Erinnern Sie sich daran, dieses Linux-Shell-Skript als root auszuführen.
37. Backup-Skript mit Bash
Shell-Skripte bieten eine zuverlässige Möglichkeit, Ihre Dateien und Verzeichnisse zu sichern. Im folgenden Beispiel werden alle Dateien und Verzeichnisse gesichert, die innerhalb der letzten 24 Stunden geändert wurden. Dieses Programm verwendet dazu den Befehl 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
Es gibt die Namen der Dateien und Verzeichnisse aus, nachdem der Sicherungsvorgang erfolgreich war.
38. Prüfen, ob Sie Root sind
Das folgende Beispiel zeigt eine schnelle Möglichkeit, mit Linux-Bash-Skripten herauszufinden, ob ein Benutzer Root ist oder nicht.
#!/bin/bashROOT_UID=0if thenecho "You are root."elseecho "You are not root"fiexit 0
Die Ausgabe dieses Skripts hängt von dem Benutzer ab, der es ausführt. Es wird dem Root-Benutzer auf der Grundlage der $UID entsprechen.
39. Entfernen doppelter Zeilen aus Dateien
Die Dateiverarbeitung nimmt viel Zeit in Anspruch und behindert die Produktivität der Administratoren in vielerlei Hinsicht. Die Suche nach Duplikaten in Ihren Dateien kann zu einer entmutigenden Aufgabe werden. Glücklicherweise können Sie dies mit einem kurzen Shell-Skript erledigen.
#! /bin/shecho -n "Enter Filename-> "read filenameif ; thensort $filename | uniq | tee sorted.txtelseecho "No $filename in $pwd...try again"fiexit 0
Das obige Skript geht Zeile für Zeile durch Ihre Datei und entfernt alle doppelten Zeilen. Anschließend wird der neue Inhalt in eine neue Datei eingefügt, während die ursprüngliche Datei intakt bleibt.
40. Systemwartung
Ich verwende oft ein kleines Linux-Shell-Skript, um mein System zu aktualisieren, anstatt es manuell zu machen. Das folgende einfache Shell-Skript zeigt Ihnen, wie Sie dies tun können.
#!/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"
Das Skript kümmert sich auch um alte Pakete, die nicht mehr benötigt werden. Sie müssen dieses Skript mit sudo ausführen, sonst funktioniert es nicht richtig.
Ending Thoughts
Linux-Shell-Skripte können so vielfältig sein, wie Sie sich vorstellen können. Es gibt buchstäblich keine Grenzen, wenn es darum geht, zu bestimmen, was es tun oder nicht tun kann. Wenn Sie ein neuer Linux-Enthusiast sind, empfehlen wir Ihnen dringend, diese grundlegenden Bash-Skript-Beispiele zu beherrschen. Sie sollten sie optimieren, um besser zu verstehen, wie sie funktionieren. Wir haben unser Bestes getan, um Ihnen alle wesentlichen Erkenntnisse zu vermitteln, die Sie für moderne Linux-Bash-Skripte benötigen. Der Einfachheit halber haben wir auf einige technische Aspekte nicht eingegangen. Dennoch sollte dieser Leitfaden für viele von Ihnen ein guter Ausgangspunkt sein.