Ich habe diesen Code, um zsh
auszuführen und seine Ausgabe in eine Ausgabedatei zu protokollieren.
Wenn das Programm ausgeführt wird, wird ls
ausgeben
Wenn ich cmd.Stdout = os.Stdout
lasse, wird es korrekt als
Was führt zu den Unterschieden zwischen os.Stdout
und multiwriter
?
Basierend auf Kommentaren von @Time und @wldsvc
Die Ursache des Problems liegt darin, dass isatty
von ls
verwendet wird, um das Standardausgabeformat zu wählen. In diesem Fall führt die Verwendung von io.MultiWriter
und os.Stdout
zu unterschiedlichen Entscheidungen basierend auf dem Ergebnis von isatty
.
Die vorgeschlagene Lösung bestand darin, das Ausgabeformat von ls
mithilfe der Parameter ( man ls ) zu erzwingen:
(Dokumentieren der Antwort als "Zeige hoch" auf der nicht beantworteten Liste)
Tags und Links go