Bagaimana saya bisa menentukan apakah proses keluaran adalah stdout atau stderr?
22
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
program | grep .
mencetak STDOUT dengan warna merah.Berdasarkan permintaan komentar Anda:
sumber
stdout
dan 2 =stderr
) untuk mengambil output dari set kurung dalam, dan dijalankanstdout
melalui satused
perintah, sementarastderr
melewati yang berbeda.{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Anda bisa mengarahkan ulang stderr ke file dan jika ada yang muncul di dalamnya, itu dari stderr.
misalnya
ls -a 2> ls-all.txt
jika ada kesalahan karena alasan apa pun yang dikirim ke stderr, itu akan diarahkan ke file ini.
sumber
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>
sumber