Grundlagen von Linux und der Kommandozeile
$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txtWie oben gezeigt, wird in einem Verzeichnis, in dem a.txt existiert und nofile nicht, der letzte Befehl ausgeführt. Welches Ergebnis ist richtig?
- ANur die Fehlerzeile wird in out.txt geschrieben, und die Zeile a.txt erscheint auf dem Bildschirm
- BSowohl die Fehlerzeile als auch die Zeile a.txt werden in out.txt geschrieben, und auf dem Bildschirm erscheint nichts
- CNur die Zeile a.txt wird in out.txt geschrieben, und die Fehlerzeile erscheint auf dem Bildschirm
Antwort und Erläuterung anzeigen
Antwort: C. Nur die Zeile a.txt wird in out.txt geschrieben, und die Fehlerzeile erscheint auf dem Bildschirm
Umleitungen werden von links nach rechts verarbeitet. „2>&1“ bedeutet „die Standardfehlerausgabe (2) dorthin leiten, wohin die Standardausgabe (1) in diesem Moment geht“, und zu diesem Zeitpunkt ist die Standardausgabe noch der Bildschirm, also erscheinen Fehler auf dem Bildschirm. Das folgende „> out.txt“ ändert nur die Standardausgabe auf out.txt, sodass die Datei nur die Zeile a.txt erhält, die normale Ausgabe von ls. Um beides in die Datei zu schreiben, ändert man zuerst die Standardausgabe und schreibt danach 2>&1, wie in „ls a.txt nofile > out.txt 2>&1“.
Weiter: 9 weitere Fragen zu Grundlagen von Linux und der Kommandozeile