Ya, tampilkan pesan pada stderr
saat argumen yang salah digunakan. Dan jika itu juga menyebabkan aplikasi keluar, keluar dengan status keluar yang tidak nol.
Anda harus menggunakan aliran kesalahan standar untuk pesan diagnostik atau untuk interaksi pengguna. Pesan diagnostik termasuk pesan kesalahan, peringatan, dan pesan lain yang bukan bagian dari keluaran utilitas ketika beroperasi dengan benar ("benar" artinya tidak ada kejadian luar biasa, seperti file yang tidak ditemukan, atau apa pun itu).
Banyak tampilan kerang (semua?) Meminta, apa yang diketik pengguna, dan menu dll. stderr
Sehingga pengarahan ulang stdout
tidak akan menghentikan Anda berinteraksi dengan shell dengan cara yang berarti.
Berikut ini adalah dari posting blog tentang topik ini:
Ini adalah kutipan dari Doug McIllroy, penemu pipa Unix, menjelaskan bagaimana stderr
bisa terjadi. 'v6' mengacu pada versi versi spesifik dari sistem operasi Unix asli yang dirilis pada tahun 1975.
Semua program menempatkan diagnostik pada output standar. Ini selalu menyebabkan masalah ketika output diarahkan ke file, tetapi menjadi tidak dapat ditoleransi ketika output dikirim ke proses yang tidak curiga. Namun demikian, karena tidak mau melanggar kesederhanaan model input-standar-output-standar, orang-orang mentolerir keadaan ini melalui v6. Tidak lama kemudian Dennis Ritchie memotong simpul Gordian dengan memperkenalkan file kesalahan standar. Itu tidak cukup. Dengan pipa, diagnostik dapat berasal dari salah satu dari beberapa program yang berjalan secara bersamaan. Diagnostik diperlukan untuk mengidentifikasi diri mereka sendiri.
- Doug McIllroy, "A Research UNIX Reader: Kutipan Beranotasi dari Manual Programmer, 1971-1986"
Untuk "mengidentifikasi diri sendiri" berarti hanya mengatakan "Hei! Ini aku yang berbicara! Ini salah: [...]":
$ ls nothere
ls: nothere: No such file or directory
Melakukan hal ini pada stderr
lebih disukai, karena bisa dinyatakan dibaca oleh apa pun yang membaca di stdout
(tapi kami tidak melakukannya dengan ls
tetap , kita?).