Latest web development tutorials

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).