RHEL 7 – RHCSA-Hinweise (Spickzettel)
Drei Standard-Dateideskriptoren:
1. stdin 0 - Standard input to the program. 2. stdout 1 - Standard output from the program. 3. stderr 2 - Standard error output from the program.
Zweck | Befehl |
---|---|
Standardausgabe auf Dateiname umleiten | > Dateiname oder 1> Dateiname |
std an Dateinamen anhängen | >> Dateiname |
hängen Sie std out und std err an den Dateinamen an | >> Dateiname 2>&1 oder 1>> Dateiname 2>&1 |
Eingabe aus Dateiname übernehmen | |
Standardfehler auf Dateinamen umleiten | 2> Dateiname |
std out und std error to filename umleiten | 1> Dateiname 2>&1 oder> Dateiname 2>&1 |
Einige Beispiele für die Verwendung der E/A-Umleitung
# cat goodfile badfile 1> output 2> errors
Dieser Befehl leitet die normale Ausgabe (Inhalt von goodfile) auf die Dateiausgabe um und sendet alle Fehler (z. B. über nicht vorhandene badfile) an die Datei error.
# mail user_id < textfile 2> errors
Dieser Befehl leitet die Eingabe für den Mail-Befehl so um, dass sie von der Datei textfile kommt, und alle Fehler werden in die Datei error.
umgeleitet# find / -name xyz -print 1> abc 2>&1
Dieser Befehl leitet die normale Ausgabe in die Datei abc. Das Konstrukt „2>&1“ sagt „Fehlerausgabe an die gleiche Stelle senden, an die wir die normale Ausgabe geleitet haben“.
Beachten Sie, dass die Reihenfolge wichtig ist; Befehl 2>&1 1>Datei macht nicht dasselbe wie Befehl 1>Datei 2>&1. Dies liegt daran, dass die 2>&1-Konstruktion bedeutet, dass Standardfehler an die Stelle umgeleitet werden, an die die Standardausgabe derzeit geht. Der Konstruktionsbefehl 2>&1 1>file leitet die Standardfehler zuerst dorthin um, wohin die Standardausgabe geht (wahrscheinlich das Terminal, wo die Standardfehler sowieso standardmäßig hingehen), und leitet dann die Standardausgabe in die Datei um. Das war wahrscheinlich nicht beabsichtigt.# ( grep Bob filex > out ) 2> err
– Jede Ausgabe des Befehls grep wird an die Datei out gesendet und alle Fehler werden an die Datei err.
gesendet# finden . -name xyz -print 2>/dev/nullDies führt den Befehl find aus, sendet jedoch alle Fehlerausgaben (z. B. aufgrund von nicht zugänglichen Verzeichnissen) an /dev/null. Verwenden Sie es mit Vorsicht, es sei denn, die Fehlerausgabe ist wirklich uninteressant.