Die Bash-Sonderzeichen, die Sie kennen sollten
In Bash sind nicht alle Zeichen gleich. Einige von ihnen führen spezielle Funktionen aus, optimieren Befehle und helfen uns bei der Manipulation von Daten. Deshalb haben wir die folgende Liste mit den wichtigsten Bash-Sonderzeichen zusammengestellt. Lesen Sie weiter, um herauszufinden, wie Sie sie verwenden und wie sie Ihren Bash-Alltag einfacher machen können.
Ordnerpfad-Trennzeichen (/)
In Bash trennt der Schrägstrich (/) die Teile eines Pfads, die Unterordner innerhalb von Ordnern. Um den Ordner „pictures“ in Ihrem Home-Ordner aufzurufen, müssen Sie den Befehl cd wie folgt verwenden:
cd /home/USERNAME/PicturesAlles, was im obigen Beispiel auf einen Schrägstrich folgt, befindet sich in dem, was dem Schrägstrich vorausgeht.
Home-Verzeichnis (~)
Anstatt den vollständigen Namen Ihres Home-Ordners in Ihr Bash-Terminal einzugeben, können Sie das Tilde-Zeichen (~) verwenden. Um beispielsweise zu Ihrem Home-Ordner zu gelangen, verwenden Sie Folgendes:
Sie können es auch in komplexere Pfade einbinden. Um beispielsweise eine Datei mit dem Namen „mydata.txt“ im Ordner „Persönlich“ in Ihrem Home-Verzeichnis zu bearbeiten, verwenden Sie Folgendes:
[enlazatom_show_links]nano ~/Personal/mydata.txtAktueller/oben liegender Ordner (.)
Sie können einen einzelnen (.) oder einen doppelten Punkt (..) verwenden, um zu definieren, ob eine Aktion im aktuellen Verzeichnis bzw. im darüber liegenden Verzeichnis ausgeführt werden soll. Ein einzelner Punkt (.) wird dem aktuellen Ordner zugeordnet, während ein doppelter Punkt (..) dem darüber liegenden Ordner zugeordnet wird.
Nehmen wir an, Sie befinden sich im Ordner „/home/USERNAME/Pictures“ und möchten das Skript „transform_images.sh“ im selben Verzeichnis ausführen. Geben Sie in diesem Fall Folgendes ein:
Wenn Sie nach der Ausführung des Skripts zu dem Ordner zurückkehren möchten, der über dem Ordner liegt, in dem Sie sich gerade befinden, geben Sie Folgendes ein:
Dadurch gelangen Sie vom Ordner „/home/USERNAME/Pictures“ zu „/home/USERNAME“.
Das Hash-Symbol (#) ist beim Schreiben von Bash-Skripten nützlicher, da Sie damit Kommentare zur späteren Bezugnahme hinzufügen können. Bash ignoriert alles, was auf ein Rautesymbol folgt.
Im folgenden Skript definiert die erste Zeile, dass es sich um ein Bash-Skript handelt, die zweite ist ein Kommentar, der ignoriert wird, und die dritte ist ein typischer Kopierbefehl:
#!/bin/bash # Dies ist ein Kommentar – Sie können hier alles eingeben, was Sie wollen, cp file1.txt /home/USERNAME/scripts/file2.txtHashes sind auch dann nützlich, wenn Sie kein Skript schreiben, da sie es Ihnen ermöglichen, Teile eines Befehls abzubrechen. Um dies in Aktion zu sehen, probieren Sie den folgenden einfachen Befehl aus:
Versuchen Sie dann stattdessen Folgendes:
In der zweiten Version wird nur „I am“ zurückgegeben, da der Hash alles, was danach folgte, aufgehoben hat.
Bereiche ([])
Sie können Zeichenbereiche definieren, indem Sie sie in eckige Klammern setzen ([]). Um dies in Aktion zu sehen, nehmen wir an, Sie möchten nach Ordnernamen suchen, die entweder mit D oder M beginnen. Geben Sie Folgendes ein:
Vielleicht befinden Sie sich stattdessen in einem Ordner voller Unterordner, die nach jedem Jahr benannt sind. Um die Ordner der letzten fünf Jahre nach „/home/USERNAME/backup“ zu kopieren, verwenden Sie:
cp -r 201[56789] /home/BENUTZERNAME/backupSie können sie mit einem Bindestrich (-) sogar noch weiter vereinfachen:
vgl. 201[5-9] /home/BENUTZERNAME/backupBash iteriert von 5 bis 9, um die Zahlen dazwischen einzubeziehen.
Weiterleitung ()
Mit spitzen Klammern (<>) können Sie die Eingabe oder Ausgabe eines Befehls umleiten. Zum Beispiel der folgende Befehl:
leitet die Ausgabe von ls um und speichert sie in der Datei „list.txt“.
Beachten Sie, dass eine doppelte rechte Klammer (>>) anhängt die Ausgabe eines Befehls in eine Datei. Wenn Sie denselben Befehl erneut ausführen, wird die Ausgabe an das Ende des vorhandenen Inhalts angehängt. Zu ersetzen Um den Inhalt mit neuen Ergebnissen zu vergleichen, verwenden Sie eine einzelne rechte spitze Klammer (>):
Rohre (|)
Mithilfe von Pipes (|) können Sie verschiedene Befehle zu einem größeren Ganzen kombinieren, um komplexere Ergebnisse zu erzielen. Sie ähneln in gewisser Weise der Umleitung (mehr zu ihren Gemeinsamkeiten und Unterschieden finden Sie hier).
Angenommen, Sie haben eine riesige Datei mit Tausenden von Einträgen und möchten darin Ihren Namen finden. Anstatt in einem Texteditor danach zu suchen, gehen Sie wie folgt vor:
cat-Einträge.txt | grep 'DeinName'In diesem Fall wird die Ausgabe von „entries.txt“ an den grep-Befehl weitergeleitet.
Tipp: Erfahren Sie mehr über Pipes, Datenströme und Umleitungen durch die Verwendung von sed unter Linux.
Befehlstrennzeichen (;)
Mit Bash können Sie mehrere Befehle auf einmal erteilen, indem Sie sie durch Semikolons (;) trennen. Um beispielsweise zwei Ordner mit einem Befehl an zwei verschiedene Ziele zu kopieren:
cp -r Ordner1 Ziel1; cp -r Ordner2 Ziel2Das Semikolon trennt die beiden Befehle und weist Bash an, sie nacheinander auszuführen. Beachten Sie, dass Sie bei Bedarf mehr als zwei Befehle verwenden können.
Platzhalter
Wahrscheinlich haben Sie das Sternchen bereits verwendetin einigen Befehlen. Es entspricht jeder Zeichenfolge und ermöglicht Aktionen wie das Kopieren aller JPG-Dateien von einem Ordner in einen anderen:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/Das Fragezeichen (?) ist in Bash ebenfalls ein Platzhalter, entspricht aber nur einem einzelnen Zeichen. Zum Beispiel:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
Der obige Befehl kopiert alle JPG-Dateien in Ordner, die mit „201“ beginnen. Da der Platzhalter in jedes alphanumerische Zeichen übersetzt wird, nicht nur in Zahlen, würde der obige Befehl auch jeden Ordner kopieren, der möglicherweise „201A“ oder „201z“ heißt.
Im Hintergrund starten (&)Sie können Befehle als Hintergrundprozesse ausführen, indem Sie einfach ein kaufmännisches Und-Symbol (&) an den Befehl anhängen:
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
Das Obige beginnt mit dem Kopieren der Datei riesig_file.zip und tritt sofort in den Hintergrund, sodass Sie das Terminal weiterhin verwenden können. Der Befehl wird nach Abschluss automatisch beendet. Wenn Sie es wieder nach vorne bringen möchten, können Sie dies tun, indem Sie fg gefolgt von Enter eingeben.
Variablen ($)Mit dem Dollarzeichen ($) können Sie Variablen zur Verwendung in Ihren Befehlen einrichten. Um sie in Aktion zu sehen, geben Sie Folgendes in Ihr Terminal ein:
myname=YOUR_NAME myage=YOUR_AGE echo „Ich bin $myname“ Beachten Sie, dass es beim Zuweisen von Werten zu Variablen kein Dollarzeichen gibt.
Zu Ihrer Information:
Bash-Variablen können mehr als nur statische Daten speichern. Erfahren Sie, wie Sie Arrays und Subshells innerhalb von Shell-Variablen erstellen.
Escapezeichen (\) und Anführungszeichen (“)
Wenn Sie eines der Sonderzeichen unverändert in einem Befehl verwenden möchten, müssen Sie es maskieren. Sie können dies tun, indem Sie dem Sonderzeichen einen Backslash (\) voranstellen. Wenn Sie beispielsweise eine Datei haben, deren Name ein Ausrufezeichen enthält, müssen Sie \! eingeben. Stattdessen interpretiert Bash es als Ausrufezeichen und nicht als Sonderzeichen.
Eine andere Möglichkeit wäre die Verwendung von einfachen ('') oder doppelten Anführungszeichen (""). Wenn Sie eine Zeichenfolge in Anführungszeichen setzen, wird jedes darin enthaltene Sonderzeichen als das eigentliche Zeichen behandelt. Es gibt auch einen Unterschied zwischen einfachen und doppelten Anführungszeichen. Einfache Anführungszeichen werten die eingeschlossene Zeichenfolge als Text aus, während doppelte Anführungszeichen Ihnen die Verwendung von Variablen ($) innerhalb der eingeschlossenen Zeichenfolge ermöglichen.
Eingabe- (<) und Fehler- (2>) Umleitung
Neben der Umleitung der Ausgabe von Programmen ist es auch möglich, zu steuern, woher die Eingabe eines Programms kommt. Mit dem Kleiner-als-Operator (<) können Sie Daten aus Dateien „herausziehen“, anstatt sie in sie hineinzuschieben. Mit dem folgenden Befehl werden beispielsweise alle doppelten Zeilen in der Datei „sort.txt“ entfernt und alphabetisch sortiert:Sie können Bash auch zwingen, alle Fehlermeldungen eines Programms umzuleiten. Der folgende Code leitet die Ausgabe des Sortierbefehls auf „out.txt“ und die Fehler auf „err.txt“ um:
Sortieren Sie ./invalid.file > out.txt 2> err.txtDarüber hinaus können Sie auch den kaufmännischen Und-Operator (&) verwenden, um die Ausgabe Ihres Programms mit etwaigen Fehlern zu kombinieren:
Sortieren Sie ./invalid.file &> out.txt
Steuerzeichen
Ein Steuerzeichen ist ein Operator, der es Ihnen ermöglicht, nicht schreibbare Zeichen in Ihr Skript aufzunehmen. Mit dem folgenden Befehl wird die Eingabeaufforderung beispielsweise um ein Leerzeichen nach unten und einen Tabulator nach rechts verschoben:
Steuerzeichen können Funktionen wie die Unicode-Formatierung unterstützen. Dazu wird der \x-Operator verwendet, um jeden Bytewert als Segment eines Unicode-Glyphen zu interpretieren.Der folgende Code gibt ein Nullzeichen zusammen mit einem Deltazeichen aus: printf „\xe2\x88\x85 \xe2\x88\x86\n“
Notiz:
Sie können den Hexadezimalwert Ihres Unicode-Glyphen ermitteln, indem Sie ihn an das Dienstprogramm xxd weiterleiten:
Arithmetisches Erweiterungszeichen
Das Zeichen „Arithmetische Erweiterung“ ist ein Operator, der mathematische Gleichungen ohne externe Programme erstellen kann. Es funktioniert, indem alles innerhalb der Erweiterung als Argumente für eine Ganzzahlberechnung behandelt wird.
Die folgende Zeile addiert beispielsweise zwei Zahlen und gibt das Ergebnis auf dem Bildschirm aus:Darüber hinaus können Sie Variablen auch innerhalb jeder arithmetischen Erweiterung verwenden. Der folgende Code nutzt dies beispielsweise als Grundlage für ein einfaches Multiplikationsprogramm:
#!/bin/bash # Ermittelt die ersten zehn Vielfachen einer Zahl. für (( i = 1; i <= 10; i++ )); echo $(( $1 * $i )); Erledigt
Bewertungscharakter [[ $string1 != $string2 ]Das Evaluationszeichen ist ein logischer Operator, der Ihnen hilft, Testbedingungen in Ihren Skripten zu erstellen. Es enthält die Fähigkeit, Dateien sowie variable Ungleichheiten zu erkennen:#!/bin/bash string1='Hallo' string2='Welt' if
]; then echo „Die Zeichenfolgen sind nicht gleich.“; fi [[ -e "maketecheasier" ]Das folgende Beispiel verwendet das Bewertungszeichen auch, um zu testen, ob das aktuelle Verzeichnis eine „maketecheasier“-Datei enthält:#!/bin/bash if
]; then echo „Es gibt eine Datei mit dem Namen maketecheasier“; fi
AND (&&) und OR (||) Zeichen
Einer der Nachteile des Bewertungscharakters besteht darin, dass immer nur eine einzige Testbedingung ausgeführt werden kann. Um dies zu beheben, stellt Bash zwei zusätzliche Operatoren zur Verfügung, die die Funktionen des Bewertungszeichens erweitern. [[ $target == $(pwd) && -e "maketecheasier.txt" ]Mit dem UND-Zeichen können Sie zwei Bedingungen testen und nur dann einen Wert zurückgeben, wenn beide wahr sind. Damit können Sie beispielsweise sicherstellen, dass eine Funktion nur dann ausgeführt wird, wenn sie sich im richtigen Verzeichnis mit der richtigen Datei befindet:#!/bin/bash target="/home/ramces/maketecheasier" if
]; dann echo „Beide Bedingungen sind wahr!“ fi [[ -d "directory1" || -d "directory2" ]Ähnlich wie AND können Sie mit dem OR-Zeichen auch zwei Bedingungen in einer einzigen Auswertung testen. Es wird jedoch auch dann ein Wert zurückgegeben, wenn nur eine der Bedingungen erfüllt ist. Das folgende Beispiel verwendet dies, um nach zwei ähnlichen Verzeichnissen zu suchen:#!/bin/bash if
]; dann echo „Ein passendes Verzeichnis ist vorhanden!“ fi
Subshell-Ausführung und Gruppierung
Eine Subshell ist ein unabhängiger Shell-Prozess, den Sie innerhalb der aktuellen Sitzung ausführen können. Im Gegensatz zu einer normalen Shell öffnet sich eine Subshell nur, wenn Sie sie aufrufen, und schließt sich, sobald sie aufgelöst wird.Dieser Ansatz verhindert, dass Subshells Informationen zwischen anderen Shells weitergeben. Beispielsweise findet das Cat-Programm im folgenden Code „test.txt“ nicht, selbst wenn die Subshell in das richtige Verzeichnis geht:
( mkdir-Beispiel && cd-Beispiel && echo "Hallo, MakeTechEasier" > test.txt ; ) && cat test.txtTrotzdem können Sie Befehle immer noch „gruppieren“, ohne eine Subshell zu erstellen. Dies kann hilfreich sein, wenn Sie Befehle im aktuellen Prozess ausführen möchten: { mkdir-Beispiel && cd-Beispiel && echo "Hallo, MakeTechEasier" > test.txt ; } && cat test.txt
Gut zu wissen:
Ändern Sie Ihre Shell mithilfe Ihrer neuen Bash-Kenntnisse, indem Sie Ihre .bashrc-Datei anpassen.
Häufig gestellte Fragen
Ist es möglich, in Bash einen mehrzeiligen Befehl zu erstellen?
Ja. Sie können dies tun, indem Sie am Ende Ihres Befehls ein Escape-Zeichen hinzufügen. Dadurch wird Ihr Cursor in die nächste Zeile bewegt, ohne dass Ihr Programm ausgeführt wird.
Kann man ein früheres Hintergrundprogramm wieder in den Vordergrund holen?
Ja. Dazu müssen Sie den Befehl jobs ausführen und die Jobnummer des gewünschten Prozesses ermitteln. Führen Sie als Nächstes fg gefolgt von der Nummer Ihres Befehls aus, um ihn wieder in den Vordergrund zu rücken.
Können Sie ein Eingabe- und Ausgabeumleitungszeichen in einem Befehl verwenden? Ja. Dazu müssen Sie Ihre Eingabeumleitung vor Ihrer Ausgabe bereitstellen. Wenn Sie beispielsweise sed 2q < ./long-file > ./short-file ausführen, wird sed angewiesen, die „lange Datei“ zu lesen und dann in die „kurze Datei“ auszugeben.
Index
- Ordnerpfad-Trennzeichen (/)
- Home-Verzeichnis (~)
- Aktueller/oben liegender Ordner (.)
- Bereiche ([])
- Weiterleitung ()
- Rohre (|)
- Befehlstrennzeichen (;)
- Platzhalter
- cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
- cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
- Zu Ihrer Information:
- Wenn Sie eines der Sonderzeichen unverändert in einem Befehl verwenden möchten, müssen Sie es maskieren. Sie können dies tun, indem Sie dem Sonderzeichen einen Backslash (\) voranstellen. Wenn Sie beispielsweise eine Datei haben, deren Name ein Ausrufezeichen enthält, müssen Sie \! eingeben. Stattdessen interpretiert Bash es als Ausrufezeichen und nicht als Sonderzeichen.
- Darüber hinaus können Sie auch den kaufmännischen Und-Operator (&) verwenden, um die Ausgabe Ihres Programms mit etwaigen Fehlern zu kombinieren:
- Notiz:
- Darüber hinaus können Sie Variablen auch innerhalb jeder arithmetischen Erweiterung verwenden. Der folgende Code nutzt dies beispielsweise als Grundlage für ein einfaches Multiplikationsprogramm:
- #!/bin/bash if
- #!/bin/bash if
- Gut zu wissen:
Schreibe einen Kommentar