Shell Eingabe / Ausgabe-Umleitung
Die meisten UNIX-Systeme Befehle von Ihrem Terminal Eingabe zu akzeptieren und Ausgang erzeugt wird, zurück zum Terminal gesendet. Ein Befehl, typischerweise von einem lokalen Eingang lesen genannt Standardeingabe, die standardmäßig das Terminal sein geschieht. In ähnlicher Weise schreibt ein Befehl in der Regel seine Ausgabe an die Standardausgabe, die standardmäßig das Ihr Terminal ist.
Redirect-Befehlsliste ist wie folgt:
Befehl | Erklärung |
---|---|
Befehl> Datei | Leiten Sie die Ausgabe in eine Datei. |
Befehl <file | Umleiten Eingabe in die Datei. |
Befehl >> file | Die Ausgabe an den anhängenden Datei umgeleitet werden. |
n> Datei | Der Dateideskriptor für die n-Dateien umgeleitet Datei. |
n >> file | Der Dateideskriptor n, um zusätzliche Möglichkeiten, um die Datei umzuleiten. |
n> & m | Die Ausgabedatei m und n werden zusammengeführt. |
n <& m | Die Eingabedatei m und n werden zusammengeführt. |
<< Tag | Das Start-Tag und End-Tag-Tag-Tag Inhalt zwischen als Eingabe. |
Beachten Sie, dass der Dateideskriptor 0 ist in der Regel die Standardeingabe (STDIN), 1 ist die Standardausgabe (STDOUT), 2 ist die Standardfehlerausgabe (STDERR).
Ausgabeumleitung
Umleiten der Regel durch zwischen Befehl bestimmte Symbole einzufügen zu erreichen. Insbesondere sind diese Symbole in der folgenden Syntax dargestellt:
command1 > file1
Der obige Befehl wird command1 und dann ausgegeben, den Inhalt in file1 gespeichert auszuführen.
File1 Beachten Sie, dass Inhalte, die bereits wird durch den neuen Inhalt ersetzt existiert. Wenn Sie neue Inhalte am Ende der Datei hinzufügen möchten, verwenden Sie den Operator >>.
Beispiele
Führen Sie den folgenden Befehl ein, die es vollenden wird die Ausgabe eines Befehls in den Benutzerdateien (Benutzer) umleiten:
$ who > users
Nach der Ausführung gibt es keine Ausgabe an dem Anschluss, ist es, weil die Ausgabe von der Standardstandardausgabegerät (Terminal) in die angegebene Datei umgeleitet wurde.
Sie können die Katze Befehl, um den Inhalt der Datei anzuzeigen:
$ cat users _mbsetupuser console Oct 31 17:35 tianqixin console Oct 31 17:35 tianqixin ttys000 Dec 1 11:33
Output-Umleitung überschreibt den Inhalt der Datei finden Sie das folgende Beispiel:
$ echo "本教程:www.w3big.com" > users $ cat users 本教程:www.w3big.com $
Wenn Sie überschrieben nicht den Inhalt der Datei möchten, können Sie die Verwendung >> in eine Datei anhängen, zum Beispiel:
$ echo "本教程:www.w3big.com" >> users $ cat users 本教程:www.w3big.com 本教程:www.w3big.com $
Eingabeumleitung
Und wie die Umleitung der Ausgabe kann Unix-Befehl Eingabe aus einer Datei übernehmen, die Syntax:
command1 < file1
Somit wird die ursprüngliche Notwendigkeit zu erhalten Eingaben von der Tastatur zu der Befehlsdatei übergeben werden, um den Inhalt zu lesen.
Hinweis: Die Umleitung der Ausgabe von mehr als-Zeichen (>), Eingabeumleitung ist kleiner als (<).
Beispiele
Dann wird das obige Beispiel müssen wir die Anzahl der Zeilen Benutzer Datei zu zählen, führen Sie den folgenden Befehl ein:
$ wc -l users 2 users
Sie können auch Eingabedateien an Benutzer umleiten:
$ wc -l < users 2
Anmerkung: Die Ergebnisse der obigen beiden Beispiele unterscheiden sich: Das erste Beispiel der Ausgabedateiname wird, die zweite nicht, weil sie weiß, nur Lesen von Standardeingabe.
command1 < infile > outfile
Ersetzen Eingang und Ausgang, führen command1, infile aus der Datei lesen und dann schreiben Sie an die Ausgabedatei die Ausgabe.
Redirect Tiefe Erklärung
Unter normalen Umständen wird jeder Unix / Linux-Befehl ausgeführt drei Dateien öffnen:
- Standard-Eingabedatei (stdin): stdin Dateideskriptors 0, Unix Standard-Programm liest die Daten von stdin.
- Standard-Ausgabedatei (stdout): stdout Dateideskriptor 1, Unix-Programm standardmäßig stdout Ausgangsdaten.
- Standardfehler (stderr): stderr Dateideskriptors 2, Unix-Programm schreibt Fehlermeldungen auf stderr Stream.
Standardmäßig Befehl> Datei Umleiten von stdout in eine Datei, Befehl <Datei wird StdIn Datei umgeleitet.
Wenn Sie stderr in die Datei umleiten möchten, können Sie schreiben:
$ command 2 > file
Wenn Sie an das Ende der Datei stderr Datei anhängen möchten, können Sie schreiben:
$ command 2 >> file
2 stellt die Standardfehlerdatei (stderr).
Wenn Sie auf die Datei umgeleitet, nachdem die stdout und stderr zusammenführen möchten, können Sie schreiben:
$ command > file 2>&1 或者 $ command >> file 2>&1
Wenn Sie stdin und stdout umleiten möchten, können Sie schreiben:
$ command < file1 >file2
Befehl Befehl stdin zu file1 umgeleitet, umleiten stdout zu file2.
Hier Dokument
Hier Document Shell ist in einer speziellen Umleitungsmethoden verwendet Eingang zu einem interaktiven Shell-Skript oder Programm umleiten.
Seiner Grundform ist wie folgt:
command << delimiter document delimiter
Es ist die Rolle des Inhalts (Dokument) wird auf die beiden Trennzeichen zwischen Befehl als Eingabe gesendet.
Hinweis:
- Begrenzer beenden muss das obere Gitter Schreib sein, kann nicht sein, keines der Zeichen vor der Rückseite kann keine Zeichen einschließlich Leerzeichen und Tabula Einzug.
- Leerzeichen vor und nach dem Start-Begrenzer wird ignoriert.
Beispiele
Die Anzahl der Zeilen in der Befehlszeile Computing Hier Dokument vom wc -l-Befehl:
$ wc -l << EOF 欢迎来到 本教程 www.w3big.com EOF 3 # 输出结果为 3 行 $
Wir können auch in einem Skript verwendet-Dokument hier, zum Beispiel:
#!/bin/bash # author:本教程 # url:www.w3big.com cat << EOF 欢迎来到 本教程 www.w3big.com EOF
Die Umsetzung des obigen Skripts, Ausgang:
欢迎来到 本教程 www.w3big.com
/ Dev / null-Datei
Wenn Sie einen Befehl ausführen wollen, aber nicht wollen, die Ausgabe auf dem Bildschirm angezeigt werden, können Sie die Ausgabe nach / dev / null umleiten:
$ command > /dev/null
/ Dev / null ist eine spezielle Datei, wird ihr Inhalt geschrieben verworfen werden, wenn Sie versuchen, aus der Datei zu lesen, was dann nicht lesen kann. Allerdings / dev / null-Datei ist sehr nützlich, um die Ausgabe des Befehls, um es umzuleiten, wird es als "verbieten Ausgang" Effekt wirkt.
Wenn Sie stdout und stderr zu schützen möchten, können Sie schreiben:
$ command > /dev/null 2>&1
Hinweis: 0 ist der Standardeingabe (STDIN), 1 die Standardausgabe (STDOUT) ist, 2 ist die Standardfehlerausgabe (STDERR).