Я пытаюсь распечатать просто подробные разделы ВИХРЕВОГО запроса (которые отправляются в stderr
) от оболочки удара.
Но когда я перенаправляю stdout
как это:
curl -v http://somehost/somepage > /dev/null
Своего рода таблица результатов появляется посреди вывода к stderr
:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Сопровождаемый этой близостью конец:
{ [data not shown]
118 592 0 592 0 0 15714 0 --:--:-- --:--:-- --:--:-- 25739
Который делает заголовки ответа менее читаемыми.
Я не вижу этот текст, если не перенаправляющий.
Другой способ видеть эффекты:
Таблица не появляется:
curl -v http://somehost/somepage 2>&1
Таблица появляется:
curl -v http://somehost/somepage 2>&1 | cat
1) Каким образом это обнаруживается только с определенными типами перенаправлений?
2) Что самый опрятный путь состоит в том, чтобы подавить его?
Спасибо
Попробуйте это:
curl -vs -o /dev/null http://somehost/somepage 2>&1
Это подавит метр прогресса, отправить stdout
кому: /dev/null
и перенаправление stderr
( -v
вывод) к stdout
.
Со ссылкой на вопрос 1 (как cURL знает, чтобы только отобразить таблицу, когда произведенный перенаправляется), я не понял, что программа могла сказать, что ее выводы направлялись, но это кажется в системах POSIX существует функция isatty
который сообщает, относится ли дескриптор файла к терминалу.