Ich habe eine Reihe von Befehlen a, b, c, die ich mit &&: verkette a && b && c
.
Ich möchte die Ausgabe aller Befehle sowohl an stdout als auch an stderr abfangen.
a && b && c 2>&1 > capture_file
Erfasst nur die Ausgabe des Befehls c.
shell
io-redirection
TLOlczyk
quelle
quelle
2>&1
bedeutet, das Ziel von stdout (1) nach stderr (2) zu duplizieren. Es wäre also nutzlos, wenn Sie nicht zuvor die stdout-Umleitung eingerichtet hätten.2>capture_file >&2
(aber nicht, denn das ist nicht idiomatischen ist). Wichtig ist, dass Sie einen von ihnen in eine Datei umleiten, bevor Sie diesen Stream in den anderen duplizieren.Neben der Verwendung der Befehlsgruppierung
{}
können Sie die Befehle auch in einer Subshell ausführen und die Ausgabe (und / oder den Fehler) sofort erfassen:Beispiel:
quelle