
Wenn ich ein Makefile-Skript lese, stoße ich auf den folgenden Linux-Skriptbefehl:
mv obj/*.o . 2>/dev/null
Was bedeutet dieser Befehl? Ich verstehe, mv obj/*.o .
dass alle Dateien mit Suffix o
im obj
Ordner in den aktuellen Ordner verschoben werden. Was bedeutet das 2>
? Was ist der Zweck, wenn sie zusammengeführt werden? Danke!
Antwort1
Du siehstAusgabeumleitung (Bash). 2 steht für „stderr“, die Fehlerausgabe. Indem Sie sie an umleiten /dev/null
, löschen Sie sie. Die normale Ausgabe, „stdout“ oder 1 wird jedoch weiterhin angezeigt (standardmäßig in Ihrem Terminal).
Im Grunde wird hierdurch lediglich die Fehlerausgabe des mv
Befehls unterdrückt.
Ein Ausschnitt aus dem obigen Link erklärt es allgemeiner:
COMMAND_OUTPUT >
# Redirect stdout to a file.
# Creates the file if not present, otherwise overwrites it.
ls -lR > dir-tree.list
# Creates a file containing a listing of the directory tree.
[..]
1>filename
# Redirect stdout to file "filename."
1>>filename
# Redirect and append stdout to file "filename."
2>filename
# Redirect stderr to file "filename."
2>>filename
# Redirect and append stderr to file "filename."
&>filename
# Redirect both stdout and stderr to file "filename."
Antwort2
Übrigens, manchmal möchten Sie vielleicht die Anzeige auf dem Bildschirm verhindern, aber in einer Datei speichern. In diesem Fall könnten Sie so etwas tun:
mv obj/*.o . > move.log 2>&1