İlerleme raporları ve kayıt bilgilerinin ("Foo yapmak; foo yapmak" gibi) basılacağı konusunda resmi bir POSIX, GNU veya başka bir kılavuz var mı? Şahsen ben onları stderr'e yazma eğilimindeyim, böylece stdout'u yönlendirebilir ve sadece programın gerçek çıktısını alabilirim. Son zamanlarda, ilerleme raporları aslında hata olmadığından ve sadece hata mesajlarının stderr'e basılması gerektiği için bunun iyi bir uygulama olmadığı söylendi.
Her iki pozisyon da anlamlıdır ve elbette yaptığınız işin detaylarına bağlı olarak birini veya diğerini seçebilirsiniz, ancak bunun için genel kabul görmüş bir standart olup olmadığını bilmek istiyorum. POSIX, GNU kodlama standartları veya bu tür yaygın kabul görmüş en iyi uygulama listelerinde herhangi bir özel kural bulamamıştım.
Birkaç benzer sorumuz var, ancak bu sorunu çözemiyorlar:
Kabuk komut dosyalarında stderr'e yeniden yönlendirme ne zaman kullanılmalı : Kabul edilen cevap, ne yapma eğiliminde olduğumu, programın son çıktısını stdout'ta ve stderr'de başka bir şeyde tutmayı önerir. Ancak, bu argümanlar tarafından desteklense de, sadece bir kullanıcı görüşü olarak sunulmaktadır.
Kullanım mesajı stderr'e mi yoksa stdout'a mı gitmeli? : Bu, mesajlara yardımcı olmak için özeldir ancak GNU kodlama standardını gösterir. Bu aradığım bir şey, sadece mesajlara yardımcı olmakla sınırlı değil.
Öyleyse, ilerleme raporlarının ve diğer bilgilendirici mesajların (programın gerçek çıktısının bir parçası olmayan) basılması gerektiği konusunda resmi kurallar var mı?
stdout
iplikçilere ve diğer bilgilendirici mesajlara zarar vermenin güvenli ve doğru bir yoludur, ancak birçok programcının söylediği gibi 'Sessizlik altındır. Her şey yolundaysa hiçbir şey çıktı. ' böylece aslında, stderr için sequence.for boruyu kırabilir stdout'u çünkü belirsiz tanım yapmak için kullanılan ve resmi kılavuz
stderr
bir --verbose
bayrak kullanıldığında, hangi noktada ilerleme raporlarının dahil edildiğinin haricinde, yalnızca hata mesajlarını bildirmek için kullanmak olacaktır .
stdout
sonuçlarla birlikte yazdırmak , sonuçları işe yaramaz hale getirmenin güvenli bir yoludur. Sonuçları başka bir programa aktarmanız gerekirse, söz konusu programın sonuçları iplikçilerden ayırmanız gerekir. Ayrıca, çıktıyı bir dosyaya yönlendirirseniz, eğiricileri göremezsiniz. BENİM NACİZANE FİKRİME GÖRE.