Jawaban:
Hanya ada tiga cara yang saya tahu untuk menentukan program apa yang akan dihasilkan ke STDOUT dan apa yang harus STDERR
Baca dokumentasinya. Atau
Percobaan dengan pengalihan †
†Sebagai contoh:
program > program.stdout 2> program.stderr
Kemudian lihat dua file output untuk melihat apa yang ditulis oleh program untuk STDOUT dan apa yang telah ditulis untuk STDERR.
Alih-alih pengalihan Anda dapat pipa ke tee
jika Anda perlu output untuk melanjutkan ke layar serta menjadi file. Lihat /programming//q/692000/477035
Berdasarkan permintaan komentar Anda:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdout
dan 2 = stderr
) untuk mengambil output dari set kurung dalam, dan dijalankan stdout
melalui satu sed
perintah, sementara stderr
melewati yang berbeda.
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Jika Anda ingin melakukan ini sekali saja, arahkan salah satunya di tempat lain.
Contoh, mengarahkan standar keluar dengan >
.
ls -al> ls-l.txt (output apa pun di sini bukan dari stdout, jika Anda melihat sesuatu itu pasti output stderr)
Untuk penggunaan redirection stderr 2>
program | grep .
mencetak STDOUT dengan warna merah.