Yanıtlar:
Bir programın STDOUT'a ne vereceğini ve STDERR'a ne vereceğini belirlemenin yalnızca üç yolu vardır
Dokümanları okuyun. Veya
Yeniden yönlendirme ile deneme †
†Örneğin:
program > program.stdout 2> program.stderr
Ardından, programın STDOUT'a ne yazdığını ve STDERR'a ne yazdığını görmek için iki çıktı dosyasına bakın.
Yeniden yönlendirme yerine, tee
hem ekrana hem de bir dosyaya devam etmek için çıktıya ihtiyacınız varsa yönlendirebilirsiniz . Bkz. Https://stackoverflow.com/q/692000/477035
Yorumladığınız talebe dayanarak:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdout
ve 2 = dışında stderr
) kullanmak ve giderken stdout
bir sed
komutla çalıştırmaktır. stderr
farklı bir tane.
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Bunu bir defaya mahsus yapmak istiyorsanız, bunlardan birini başka bir yere yönlendirin.
Örnek, ile standart yeniden yönlendirme >
.
ls -al> ls-l.txt (burada herhangi bir çıktı stdout'tan değildir, eğer bir şey görürseniz stderr çıktısı olmalıdır)
Stderr yönlendirmesi kullanımı için 2>
program | grep .
STDOUT'u kırmızı yazdırır.