English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell-Eingabe/Ausgabeumleitung

Die meisten UNIX-Systemkommandos nehmen Eingaben von Ihrem Terminal an und senden die resultingen Ausgaben zurück an Ihr Terminal. Ein Kommando liest normalerweise Eingaben von einem Ort namens Standard-Eingabe, der standardmäßig Ihr Terminal ist. Ebenso schreibt ein Kommando normalerweise seine Ausgaben in den Standard-Ausgabe, der ebenfalls standardmäßig Ihr Terminal ist.

Liste der Umleitungsbefehle:

Befehl Erklärung
command > file Leiten Sie die Ausgabe auf Datei um.
command < file Leiten Sie die Eingabe auf Datei um.
command >> file Leiten Sie die Ausgabe auf Datei als Anhängen um.
n > file Leiten Sie die Datei mit dem Dateideskriptor n auf Datei um.
n >> file Leiten Sie die Datei mit dem Dateideskriptor n auf Datei als Anhängen um.
n >& m Fügen Sie die Ausgabedateien m und n zusammen.
n <& m Fügen Sie die Eingabedateien m und n zusammen.
<< tag Nehmen Sie den Inhalt zwischen dem Starttag tag und dem Endtag tag als Eingabe.

Zu beachten ist, dass der Dateideskriptor 0 in der Regel der Standardinput (STDIN) ist:1 ist die Standardausgabe (STDOUT),2 ist die Standardfehlerausgabe (STDERR).

Ausgabeumleitung

Die Umleitung erfolgt in der Regel durch die Einfügung spezialisierter Symbole zwischen den Befehlen. Besonders ist die Syntax dieser Symbole wie folgt gezeigt:

command1 > file1

Dieser Befehl führt command aus1Dann speichern Sie den Ausgabehinweis in file1.

Bitte beachten Sie jede file1Bestehender Inhalt im Inneren wird durch neuen Inhalt ersetzt. Wenn Sie neuen Inhalt am Ende der Datei anhängen möchten, verwenden Sie den Operator >>.

Online-Beispiel

Führen Sie den folgenden who-Befehl aus, der den vollständigen Ausgabeumleitung in der Benutzerdatei (users) speichert:

$ who > users

Nach der Ausführung gibt es keine Informationen im Terminal aus, weil die Ausgabe bereits von der Standardschnittstelle für Standardausgaben (Terminal) auf die angegebene Datei umgeleitet wurde.

Sie können den Befehl cat verwenden, um den Dateiningehalt anzuzeigen:

$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33

Die Ausgabeumleitung überschreibt den Dateiningehalt, siehe das folgende Beispiel:

$ echo "Grundlagen-Tutorial-Website: de.oldtoolbag.com" > users
$ cat users
Grundlagen-Tutorial-Website: de.oldtoolbag.com
$

Wenn Sie nicht möchten, dass der Dateiningehalt überschrieben wird, können Sie >> verwenden, um an das Dateiende anzuhängen, zum Beispiel:

$ echo "Grundlagen-Tutorial-Website: de.oldtoolbag.com" >> users
$ cat users
Grundlagen-Tutorial-Website: de.oldtoolbag.com
Grundlagen-Tutorial-Website: de.oldtoolbag.com
$

Eingabeumleitung

Wie die Ausgabeumleitung, können Unix-Befehle auch Eingaben aus Dateien beziehen, die Syntax ist:

command1 < file1

Dadurch wird der Befehl, der ursprünglich von der Tastatur Eingaben abfordern sollte, auf die Dateilektüre umgeleitet.

Bitte beachten Sie: Die Ausgabeumleitung ist durch das Großzeichen > gekennzeichnet, die Eingabeumleitung durch das Kleinszeichen <.

Online-Beispiel

Fügen Sie den folgenden Befehl hinzu, um die Anzahl der Zeilen in der Datei users zu zählen:

$ wc -l users
       2 users

Es kann auch die Eingabe in die Datei users umgeleitet werden:

$ wc -l < users
       2

Hinweis: Die Ergebnisse der obigen beiden Beispiele sind unterschiedlich: Der erste gibt den Dateinamen aus; der zweite nicht, da er nur weiß, dass er aus dem Standardinput liest.

command1 < infile > outfile

Ersetze gleichzeitig Eingabe und Ausgabe und führe command aus1Lese Inhalte aus der Datei infile und schreibe die Ausgabe in outfile.

Vertiefende Erklärung zur Umleitung

Im Allgemeinen jede Unix/Linux-Kommandos öffnen immer drei Dateien während der Ausführung:

  • Standardeingabedatei (stdin): Der Dateideskriptor von stdin ist 0, Unix-Programme lesen standardmäßig aus stdin.

  • Standardausgabedatei (stdout): Der Dateideskriptor von stdout ist1Unix-Programme geben standardmäßig Daten an stdout aus.

  • Standardfehlerdatei (stderr): Der Dateideskriptor von stderr ist2Unix-Programme schreiben Fehlerinformationen in den stderr-Stream.

Standardmäßig leitet 'command > Datei' stdout in die Datei um und 'command < Datei' leitet stdin in die Datei um.

Wenn Sie stderr in die Datei umleiten möchten, schreiben Sie so:

$ command 2>Datei

Wenn Sie stderr an das Ende der Datei Datei anhängen möchten, schreiben Sie so:

$ command 2>>Datei

2 Das stellt die Standardfehlerdatei (stderr) dar.

Wenn Sie stdout und stderr zusammengefasst in Datei umleiten möchten, schreiben Sie so:

$ command > Datei 2>&1
oder
$ command >> Datei 2>&1

Wenn Sie stdin und stdout umleiten möchten, schreiben Sie so:

$ command < Datei1 >Datei2

Das Kommando 'command' leitet stdin in die Datei um1stdout in die Datei umleiten2.

Hier-Dokument

Hier-Dokument ist eine spezielle Umleitungsmethode in Shell, um Eingaben in einen interaktiven Shell-Skript oder Programm umzuleiten.

Seine grundlegende Form ist wie folgt:

command << delimiter
    Document
Delimiter

Seine Funktion ist es, den Inhalt zwischen zwei Delimiter als Eingabe an das Kommando zu übergeben.

Hinweis:

  • Der delimiter am Ende muss genau geschrieben werden, vor ihm dürfen keine Zeichen vorhanden sein, und nach ihm auch nicht, einschließlich Leerzeichen und Tabulatoren.

  • Die Leerzeichen vor und nach dem delimiter am Anfang werden ignoriert.

Online-Beispiel

Durch wc im Kommandozeilenfenster -l-Befehl berechnet die Anzahl der Zeilen von Here Document:

$ wc -l << EOF
    Willkommen hier
    Grundlegende Anleitung-Website
    de.oldtoolbag.com
EOF
3          # Ausgabeergebnis: 3 Zeile
$

Hier Document kann auch in Skripten verwendet werden, z.B.:

#!/bin/bash
# author:Grundlegende Anleitung-Website
# url:de.oldtoolbag.com
cat << EOF
Willkommen hier
Grundlegende Anleitung-Website
de.oldtoolbag.com
EOF

Führen Sie den obigen Skript aus, die Ausgabe ist:

Willkommen hier
Grundlegende Anleitung-Website
de.oldtoolbag.com

/dev/null-Datei umleiten

Wenn Sie einen Befehl ausführen möchten, aber nicht möchten, dass die Ausgabe auf dem Bildschirm angezeigt wird, können Sie die Ausgabe in /dev/null:

$ command > /dev/null

/dev/null ist eine spezielle Datei, alles, was in sie geschrieben wird, wird weggeworfen; wenn Sie versuchen, Inhalte aus dieser Datei zu lesen, können Sie nichts lesen. Aber /dev/null-Datei ist sehr nützlich, leiten Sie die Ausgabe der Befehle darauf um, um die Wirkung von "keine Ausgabe" zu erzielen.

Wenn Sie möchten, dass stdout und stderr ausgeblendet werden, können Sie dies so schreiben:

$ command > /dev/null 2>&1

Hinweis:0 ist die Standardeingabe (STDIN),1 ist die Standardausgabe (STDOUT),2 ist die Standardfehlerausgabe (STDERR).

hier 2 und > Zwischen ihnen dürfen keine Leerzeichen sein,2> Es wird nur dann ein Fehlerausgabe angezeigt, wenn es sich um ein Einheitssystem handelt.