0 Daumen
770 Aufrufe

Mir ist noch unklar, was die Befehle

echo "abc" 1> a.log

und

echo "abc" 2> a.log

genau bedeuten. Ich kenne lediglich die Bedeutung von > (fügt die angegebene Zeichenfolge "abc" der Datei a.log hinzu, leert aber vorher den Inhalt) und >> (fügt die angegebene Zeichenfolge "abc" zu a.log lediglich hinzu, also ohne vorher die Datei zu leeren).

Zu 2> hätte ich zumindest eine Vermutung: Die angegebene Zeichenfolge wird im Terminal ausgegeben und die Datei, die hinter 2> steht, wird geleert. Das ist das, was ich im Terminal beobachten konnte (habe mit cat auf den Dateiinhalt geprüft).

Aber was 1> bedeuten soll, da habe ich leider gar keine Idee.

Im Internet konnte ich nichts Aufschlussreiches dazu finden.

Danke im Voraus! :)

Avatar von

1 Antwort

+1 Daumen
 
Beste Antwort

Eine geöffnete Datei wird durch einen sogenannten file descriptor repräsentiert.

Mit

[anweisung] n> [datei]
wird [anweisung] ausgeführt und das, was der dadurch erzeugte Prozess in die Datei mit file descriptor n schreibt, wird stattdessen in die Datei [datei] gerschrieben.

Beim Programmstart werden üblicherweise automatisch drei Dateien geöffnet:

    0: stdin Die Standardeingabe

    1: stdout Die Standardausgabe

    2: stderr Die Fehlerausgabe

Beispiele.

ls 1> files.txt
schreibt den Inhalt des aktuellen Ordners in die Datei files.txt und zeigt Fehlermeldungen am Bildschirm an. Die 1 hätte hier weggelassen werden können.

ls 2> ls.err
Zeigt den Inhalt des aktuellen Ordners am Bildschirm an und schreibt Fehlermeldungen in die Datei ls.err.

ls 2>ls.err 1> files.txt
Schreibt Inhalt des aktuellen Ordners in die Datei files.txt und Fehlermeldungen in die Datei ls.err.

ls 2>&1 | cat > output
Schreibt Inhalt des aktuellen Ordners und Fehlermeldungen in die Datei output.
Avatar von 5,7 k

Sehr gut erklärt, hat mir echt geholfen! Danke! :)

Grüße

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community