Ya, tampilkan pesan pada stderrsaat 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. stderrSehingga pengarahan ulang stdouttidak 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 stderrbisa 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 stderrlebih disukai, karena bisa dinyatakan dibaca oleh apa pun yang membaca di stdout(tapi kami tidak melakukannya dengan lstetap , kita?).