Скрыть вывод локона

209

Я делаю запрос curl, где он отображает вывод html в консоли, как это

<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/domain/public_html/wp-content/themes/explicit/functions/ajax.php:87) in <b>/home/domain/public_html/wp-content/themes/explicit/functions/ajax.php</b> on line <b>149</b><br />......

и т.д

Мне нужно скрыть эти выводы при выполнении запросов CURL, попытался запустить CURL, как это

curl -s 'http://example.com'

Но он по-прежнему отображает вывод, как я могу скрыть вывод?

Спасибо

Rjack
источник
1
Добавить >/dev/nullв конце. Подробнее о файловых дескрипторах читайте
Валентин

Ответы:

323

Из man curl

-s, --silent Тихий или тихий режим. Не показывать индикатор прогресса или сообщения об ошибках. Делает Curl немым. Он по-прежнему будет выводить запрашиваемые вами данные , потенциально даже в терминал / стандартный вывод, если вы не перенаправите их .

Так что если вы не хотите использовать вывод:

curl -s 'http://example.com' > /dev/null
FloHimself
источник
22
Если вы хотите только ошибки, добавьте -S флаг curl -s -S ' example.com '> / dev / null
Гонсало Цао
Обратите внимание, что вы не можете сделать curl -o /dev/null; это выдаст ошибку записи.
Кит Тайлер
Но вы можете сделать curl ... 2>/dev/nullтолько перенаправление stderr.
Джесси Чисхолм
2
@KeithTyler curl https://www.google.com -o /dev/nullуспешно без ошибок для меня. Я использую curl-7.58.0.
x-yuri
что, по моему мнению, wgetследует использовать средства вместо curlзагрузки файлов.
Вишрант
70

Это выглядит более элегантно для меня:

curl --silent --output /dev/null http://example.com

Также, если вы хотите увидеть код HTTP:

curl --write-out '%{http_code}' --silent --output /dev/null http://example.com

Полная документация здесь .

yegor256
источник
6
Если вы все еще хотите, чтобы ошибки отображались, вы также можете добавить --show-errorпараметр.
Саймон Ист
Даже используя -sS он по-прежнему отображает заголовки для меня :(
Freedo