Shell-Metazeichen
Shell-Metazeichen sind bestimmte Zeichen, im Allgemeinen Symbole, die innerhalb der Shell eine besondere Bedeutung haben. Die in Bash unterstützten Metazeichen sind wie folgt aufgelistet:
- | :Sendet die Ausgabe des Befehls links als Eingabe an den Befehl rechts vom Symbol
- & :Führt den Prozess im Hintergrund aus, sodass Sie auf der Befehlszeile weiterarbeiten können
- ; :Ermöglicht es Ihnen, mehrere Befehle in einer einzigen Zeile aufzulisten, getrennt durch dieses Zeichen
- () :Gruppiert Befehle und sendet ihre Ausgabe an dieselbe Stelle
- < :Ruft die Eingabe für den Befehl links von der Datei ab, die rechts von diesem Symbol aufgelistet ist
- > :Sendet die Ausgabe des links stehenden Befehls in die rechts von diesem Symbol benannte Datei
- Leertaste
Umleitungs-Metazeichen
Die Befehlsumleitung wird durch die folgenden Shell-Metazeichen aktiviert:
- Umleitung der Standardeingabe (<)
- Umleitung der Standardausgabe (>)
- Umleitung des Standardfehlers (2>)
- Das Pipe-Zeichen (|)
Die Dateideskriptoren
Jeder Prozess arbeitet mit Dateideskriptoren. Dateideskriptoren bestimmen, woher die Eingabe für den Befehl stammt und wohin die Ausgabe und die Fehlermeldungen geleitet werden. Die Tabelle erklärt die Dateideskriptoren.
Dateideskriptornummer | Dateideskriptor-Abkürzung | Definition |
---|---|---|
0 | stdin | Standard-Befehlseingabe |
1 | stdout | Standard-Befehlsausgabe |
2 | stderr | Standardbefehlsfehler |
Befehlsumleitung
Standardmäßig empfängt oder liest die Shell Eingaben von der Standardeingabe, der Tastatur, und zeigt die Ausgabe und Fehlermeldungen auf der Standardausgabe, dem Bildschirm, an. Die Eingabeumleitung zwingt einen Befehl, die Eingabe aus einer Datei statt von der Tastatur zu lesen. Die Ausgabeumleitung sendet die Ausgabe eines Befehls in eine Datei, anstatt die Ausgabe an den Bildschirm zu senden.
Standardeingabe umleiten
Je kleiner als (< ) metacharacter verarbeitet eine Datei als Standardeingabe, anstatt die Eingabe von der Tastatur zu lesen.
# command < filename
oder
# command 0< filename
Verwenden Sie beispielsweise die Datei data.txt als Eingabe für den Befehl mailx.
# mailx -s test [email protected] < data.txt
Standardausgabe umleiten
Das Größer-als (> ) Metazeichen leitet die Standardausgabe in eine Datei, anstatt die Ausgabe auf dem Bildschirm auszugeben.
# command > filename
oder
# command 1> filename
Wenn die Datei nicht existiert, wird sie vom System erstellt. Wenn Sie ein einzelnes Größer-als-Metazeichen (>) verwenden, überschreibt der Befehl den ursprünglichen Inhalt der Datei, falls die Datei bereits vorhanden ist. Wenn Sie zwei Größer-als-Zeichen (>>) verwenden, hängt der Befehl die Ausgabe an den ursprünglichen Inhalt der Datei an.
$ command >> filename
Standardfehler umleiten
Ein Befehl, der die Dateideskriptornummer (2) und das Größer-als-Zeichen (>) verwendet, leitet alle Standardfehlermeldungen in die Datei /dev/null um.
$ command 2> /dev/null
Das folgende Beispiel zeigt die Standardausgabe und den Standardfehler, der in die Datei data.txt umgeleitet wird.
$ ls /tmp 1> data.txt 2>&1Hinweis :Die Syntax 2>&1 weist die Shell an, stderr (2) in dieselbe Datei umzuleiten, die stdout (1) empfängt.
Der Pfeifencharakter
Das Pipe-Zeichen leitet die Standardausgabe eines Befehls auf die Standardeingabe eines anderen Befehls um. Der erste Befehl schreibt die Ausgabe auf die Standardausgabe und der zweite Befehl liest die Standardausgabe des vorherigen Befehls als Standardeingabe.
$ command | command
Verwenden Sie beispielsweise die Standardausgabe des Befehls who als Standardeingabe für den Befehl wc -l.
$ who | wc -l 35
Geben Sie den folgenden Befehl ein, um eine Liste aller Unterverzeichnisse im Verzeichnis /etc anzuzeigen.
$ ls -F /etc | grep "/" X11/ acct/ apache/ apache2/
Verwenden Sie die Ausgabe des Head-Befehls als Eingabe für den 'xargs ls'-Befehl.
head -10 data.txt | xargs ls