Jak mogę ustalić, czy to, co wyprowadza proces, jest standardowe lub standardowe?
22
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
program | grep .
drukuje STDOUT na czerwono.Na podstawie skomentowanego żądania:
źródło
stdout
i 2 =stderr
), aby pobrać dane wyjściowe wewnętrznego zestawu nawiasów i uruchomićstdout
jednosed
polecenie, podczas gdystderr
przechodzi przez inny.{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Możesz po prostu przekierować stderr do pliku, a jeśli coś się w nim pojawi, pochodzi od stderr.
na przykład
ls -a 2> ls-all.txt
jeśli z jakiegokolwiek powodu wystąpił błąd wysłany do stderr, zostanie on przekierowany do tego pliku.
źródło
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>
źródło