Katakanlah saya menjalankan perintah atau skrip shell, dan itu memberi saya output. Tanpa mengetahui internal dari perintah atau skrip shell ini, bagaimana cara menentukan apakah outputnya berasal dari stderr
atau stdout
?
Misalnya,
$ ls -ld /
drwxrwxr-t 35 root admin 1258 Dec 11 19:16 /
vs
ls -ld /test
ls: /test: No such file or directory
Bagaimana cara memastikan bahwa perintah pertama dicetak ke stdout
dan yang kedua ke stderr
(berhasil?)?
Jawaban yang Diterima:
Tidak ada cara untuk mengetahui setelah output telah dicetak. Dalam hal ini, keduanya stdout
dan stderr
terhubung ke terminal, sehingga informasi tentang aliran mana yang ditulis sudah hilang pada saat teks muncul di terminal Anda; mereka digabungkan oleh program sebelum sampai ke terminal.
Apa yang dapat Anda lakukan, dalam kasus seperti di atas, adalah menjalankan perintah dengan stdout
dan stderr
diarahkan ke tempat yang berbeda dan melihat apa yang terjadi. Atau jalankan dua kali, sekali dengan stdout
dialihkan ke /dev/null
dan sekali dengan stderr
dialihkan ke /dev/null
, dan lihat kasus mana yang menghasilkan teks yang muncul.
Anda dapat mengalihkan stdout
ke /dev/null
dengan menempelkan >/dev/null
di akhir baris perintah, dan Anda dapat mengarahkan stderr
ke /dev/null
dengan menambahkan 2>/dev/null
.