Apakah ada POSIX, GNU resmi, atau pedoman lain di mana laporan kemajuan dan informasi logging (hal-hal seperti "Melakukan foo; foo dilakukan") harus dicetak? Secara pribadi, saya cenderung menulisnya ke stderr sehingga saya bisa mengarahkan ulang stdout dan hanya mendapatkan output aktual program. Saya baru-baru ini diberitahu bahwa ini bukan praktik yang baik karena laporan kemajuan sebenarnya bukan kesalahan dan hanya pesan kesalahan yang harus dicetak ke stderr.
Kedua posisi tersebut masuk akal, dan tentu saja Anda dapat memilih satu atau yang lain tergantung pada rincian apa yang Anda lakukan, tetapi saya ingin tahu apakah ada standar yang berlaku umum untuk ini. Saya belum dapat menemukan aturan khusus dalam POSIX, standar pengkodean GNU, atau daftar praktik terbaik lainnya yang diterima secara luas.
Kami memiliki beberapa pertanyaan serupa, tetapi mereka tidak membahas masalah yang tepat ini:
Kapan harus menggunakan pengalihan ke stderr dalam skrip shell : Jawaban yang diterima menyarankan apa yang saya cenderung lakukan, menjaga hasil akhir program pada stdout dan apa pun ke stderr. Namun, ini hanya disajikan sebagai pendapat pengguna, meskipun didukung oleh argumen.
Haruskah pesan penggunaan pergi ke stderr atau stdout? : Ini khusus untuk membantu pesan tetapi mengutip standar pengkodean GNU. Ini adalah hal yang saya cari, hanya saja tidak terbatas untuk membantu pesan saja.
Jadi, apakah ada aturan resmi tentang di mana laporan kemajuan dan pesan informatif lainnya (yang bukan bagian dari hasil aktual program) harus dicetak?
stdout
sebenarnya adalah cara yang aman dan benar untuk melakukan pringting pemintal dan pesan informatif lainnya, tetapi seperti yang dikatakan banyak programmer, 'Diam adalah emas. Tidak menghasilkan apa-apa jika semuanya baik-baik saja. ' jadi pada kenyataannya, stderr selalu digunakan untuk melakukan itu karena definisi yang kabur dan juga stdout dapat memutus urutan pipa. untuk panduan resmi
stderr
untuk melaporkan pesan kesalahan, kecuali ketika --verbose
bendera digunakan, di mana titik laporan kemajuan disertakan juga.
stdout
bersama-sama dengan hasilnya adalah cara yang aman untuk membuat hasil tidak berguna. Jika Anda perlu menyalurkan hasilnya ke beberapa program lain, program tersebut perlu memisahkan hasil dari pemintal. Juga, jika Anda mengarahkan output ke file Anda tidak akan dapat melihat pemintal. MENURUT OPINI SAYA.