Grundlagen von Linux und der Kommandozeile

$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txt

Wie oben gezeigt, wird in einem Verzeichnis, in dem a.txt existiert und nofile nicht, der letzte Befehl ausgeführt. Welches Ergebnis ist richtig?

  1. ANur die Fehlerzeile wird in out.txt geschrieben, und die Zeile a.txt erscheint auf dem Bildschirm
  2. BSowohl die Fehlerzeile als auch die Zeile a.txt werden in out.txt geschrieben, und auf dem Bildschirm erscheint nichts
  3. 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“.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Welchen Wert gibt der letzte Befehl in der obigen Sitzung aus?
  2. Welche Zeilen gibt das letzte grep in der obigen Sitzung aus?
  3. In den Auswahlmöglichkeiten sind die Leerzeichen am Zeilenanfang weggelassen. Welche Zeile gibt die letzte Pipeline in der obigen Sitzung aus?
  4. Zeilen, die später an die Server-Logdatei /var/log/app.log angehängt werden, sollen fortlaufend auf dem Bildschirm erscheinen, sobald sie hinzukommen. Welcher Befehl ist geeignet?
  5. Welche Ausgabe erzeugt der obige Befehl, der Spalten aus einer kommagetrennten Zeile herausschneidet?