Odpowiedzi:
Są tylko trzy sposoby, które znam, aby określić, co program wyświetli do STDOUT i co do STDERR
Przeczytaj dokumentację. Lub
Eksperymentuj z przekierowaniem †
†Na przykład:
program > program.stdout 2> program.stderr
Następnie spójrz na dwa pliki wyjściowe, aby zobaczyć, co program napisał do STDOUT i co napisał do STDERR.
Zamiast przekierowania możesz tee
przesłać do potoku, jeśli potrzebujesz wyjścia, aby przejść do ekranu, a także do pliku. Zobacz /programming//q/692000/477035
Na podstawie skomentowanego żądania:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdout
i 2 = stderr
), aby pobrać dane wyjściowe wewnętrznego zestawu nawiasów i uruchomić stdout
jedno sed
polecenie, podczas gdy stderr
przechodzi przez inny.
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Jeśli chcesz to zrobić raz, przekieruj jeden z nich gdzie indziej.
Przykład przekierowania standardu za pomocą >
.
ls -al> ls-l.txt (każde wyjście tutaj nie pochodzi ze standardowego wyjścia, jeśli coś widzisz, musi być wyjściem standardowym)
Do użycia przekierowania stderr 2>
program | grep .
drukuje STDOUT na czerwono.