Erläuterung des Linux-Skriptbefehls

Erläuterung des Linux-Skriptbefehls

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 oim objOrdner 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 mvBefehls 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

verwandte Informationen