LINUX.ORG.RU

STDERR ведь не стоит воспринимать в буквальном смысле как ERROR?

 


0

1

Правильно ли я понимаю, что лучше всего сразу писать всю информацию для человеков в STDERR, а STDOUT оставить зарезервированным для выхлопа результата работы?

Получается, что если мы будем писать echo в STDOUT, то потом, когда заходим прикрутить вывод в STDOUT опцией "--output -" (как это негласно принято делать), то нам придётся сверху ещё прикручивать костыль, который вывод всех сообщений для человеков перенаправит в STDERR, а затем уже делать выхлоп в STDOUT?

Ну дак, может лучше сразу в STDERR echo >&2 писать чтобы потом не заморачиваться, а?

★★★★★

Всё верно, это вывод для человеков. Сюда же можно выводить лог или справку по --help. Хотя некоторые программы выводят справку в stdout.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)

Довольно странные вопросы для так называемого «Ведущего разработчика дистрибутива CRUX» 😁

chenbr0
()
Ответ на: комментарий от chenbr0

Почему странные? Это вполне себе философский вопрос. Стандарт не декларирует то, что в stderr должны сыпаться ТОЛЬКО ошибки.

STDERR это небуферизированный вывод ДИАГНОСТИЧЕСКИХ и ОТЛАДОЧНЫХ сообщений. А чем –help не диагностическое сообщение, например?

anonymous
()
Ответ на: комментарий от chenbr0

да пажжи ты, всё будет, щя тока в гта онлин наиграюсь и всё будет, я уже и домен в зоне .su зарегистрировал, вот только в гта наиграюсь и всё будет... мам, ну скажи ему!

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от wandrien

Сюда же можно выводить лог или справку по --help. Хотя некоторые программы выводят справку в stdout.

Потому что лень делать нормально. Вывод в stdout нужен тогда, когда мы конкретно эту справку и запросили. А вот когда персер опций вызова ничего понять не может, на что обругаться по конкретной ошибке, тогда всю справку надо выводить в stderr.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Как выше отметил аноним, это вполне вписывается в «вывод ДИАГНОСТИЧЕСКИХ и ОТЛАДОЧНЫХ сообщений».

Что касается «делать нормально» в том смысле как вы написали, то я раньше заморачивался и так делал.

А потом подумал, а зачем? Однозначных требований нет, реальная практика противоречива. Значит можно делать как проще.

wandrien ★★
()
Ответ на: комментарий от chenbr0

«Ведущего разработчика дистрибутива CRUX»

чёт орнул

anonymous
()
Ответ на: комментарий от vodz

Вывод в stdout нужен тогда, когда мы конкретно эту справку и запросили. А вот когда персер опций вызова ничего понять не может, на что обругаться по конкретной ошибке, тогда всю справку надо выводить в stderr.

+1

В то же вермя лично я не обижусь если help выведется в stdout даже при ошибке, при условии что программа завершится с ненулевым кодом. А вот всегда видеть help в stderr, даже при явном запросе - неправильно.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

В то же вермя лично я не обижусь если help выведется в stdout даже при ошибке, при условии что программа завершится с ненулевым кодом. А вот всегда видеть help в stderr, даже при явном запросе - неправильно.

Не, ровно наоборот. Скриптам help не нужен и даже противопоказан, а для человека всё равно куда help выводится, одно отличие, если вам таки надо его сохранить.

А вот сообщения об ошибках в stdout отправлять вам никто не запрещает сделать dup дескриптора (типа 2>&1), зато очистить pipe от мусорного debug в общем случае уже не получится.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Сохранить не сохранить, а ‘что-то –help | less’ вполне законное и часто встречающееся сочетание. Особенно когда программа справку на пять экранов выплёвывает и буфер терминала на это говорит «пока-пока». Тех, кто выводит справку в stderr надо пытать виндой с билли гейцом на обоях.

anonymous
()
Ответ на: комментарий от Black_Shadow

Ага, или грепать выхлоп команды.

EXL ★★★★★
()
Ответ на: комментарий от wandrien

Сюда же можно выводить лог или справку по –help.

Bad practice.

Хотя некоторые программы выводят справку в stdout.

Правильно делают, потому что stdout перенаправить на grep/less/more и др. – быстрее.

EXL ★★★★★
()
Ответ на: комментарий от anonymous

а ‘что-то –help | less’ вполне законное и часто

Ну да, я и говорю, что абсолютно правильное, когда явный вызов help должно выводить на stdout, но если автор заленился, то чертыхнувшись вы можете и вызвать как cmd -help 2>&1 | less, а скрипт такое не сообразит, у него мозгов нету. Зато наоборот уже в общем случае - никак.

vodz ★★★★★
()
Ответ на: комментарий от wandrien

Прокрутка.

В консоли уже поломали, бесит жуть при старой то привычке.

vodz ★★★★★
()
Ответ на: комментарий от vodz

а скрипт такое не сообразит, у него мозгов нету

Правильно. Зато должен соображать автор, у него вроде мозги должны быть, теоретически же он не скрипт?

Значит

но если автор заленился

у вас слишком много ошибок во фразе «автор намеренно хотел поднасрать юзеру».

чертыхнувшись вы можете и вызвать

могу вызвать, но скорее всего могу поискать другую программу с теми же функциями. Если автор решил поднасрать в такой мелочи, кто его знает, какие ещё «весёлые» сюрпризы он оставил пользователю.

anonymous
()

К вопросу о твоей последней теме. Я, да и не только я говорили тебе о релокации в Мск хоть на позицию курьера, и дальнейшего устройства жизни пока ты переходил на позицию дворника? Говорили. Сейчас у тебя ещё больше проблем с деньгами, а совет не меняется - быстрей собирайся в Мск/Питер и стартуй с любой позиции недалеко от снимаемой комнаты. Не хочешь? Дальше будет ещё хуже, не будет ни только денег, но и здоровья.

П. С. Хату сдавай через агентство за копейки, лишь бы не убили и платили коммуналку.

П. П. С. А вообще, рекомендую для понаеха Питер, там к проблемным относятся с пониманием, да и условно-адекватную пассию будет найти проще. Там и хату дешевле будет взять, при этом в красивых местах.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.