Wget выходной документ и заголовки в STDOUT

116

Я пытаюсь вывести тело документа и его заголовки на стандартный вывод с помощью wget по wget -S -O - http://google.com

но он показывает только html-документ.

Спасибо

UPD:

Сработал это wget --save-headers --output-document - http://google.com

wget --version показывает GNU Wget 1.11.4 Red Hat модифицированный

user1239398
источник
Я просто попробовал, это отлично сработало, но на --save-headersсамом деле это было-save-headers
Крис Раймер
и wget -qS <url>только для заголовков http (eq. to )curl -IL

Ответы:

168

Попробуйте следующее, без лишних заголовков

wget -qO- www.google.com

Обратите внимание на конечный -. Это часть обычного аргумента команды для -Oперехода к файлу, но, поскольку мы не используем его >для перехода к файлу, он переходит в оболочку. Вы можете использовать -qO-или -qO -.

Джозеф похоть
источник
2
что за лишнее - после О?
codecowboy
1
@codecowboy Я приукрасил ответ, чтобы объяснить лишнюю черту.
Джозеф Ласт
3
эта -Sопция не поддерживалась в моем alpineконтейнере Linux. Я пропустил это, и все было хорошо
Кристиан Бонджорно
1
Согласно справочной странице GNU «Если - используется как файл, документы будут распечатываться в стандартный вывод, отключая преобразование ссылок». Это более четко написано с предшествующим пробелом.
Джош Хабдас
4
Этот ответ не имеет смысла. OP попросил показать заголовки, а не скрывать их
aexl
45

wget -S -O - http://google.comработает для меня так, как ожидалось, но с оговоркой: заголовки считаются отладочной информацией и поэтому отправляются в стандартную ошибку а не в стандартный вывод. Если вы перенаправляете стандартный вывод в файл или другой процесс, вы получите только содержимое документа.

В качестве возможного решения вы можете попробовать перенаправить стандартную ошибку на стандартный вывод. Например, в bash:

$ wget -q -S -O - 2>&1 | grep ...

или

$ wget -q -S -O - 1>wget.txt 2>&1

Эта -qопция подавляет индикатор выполнения и некоторые другие раздражающие части wgetвывода.

thkala
источник
1
эта -Sопция не поддерживалась в моем alpineконтейнере Linux. Я пропустил это, и все было хорошо
Кристиан Бонджорно
@ChristianBongiorno Вы можете установить правильный wget с помощью apk add wget, в противном случае будет использоваться только версия busybox.
AndreKR
22

Здесь работает:

    $ wget -S -O - http://google.com
HTTP request sent, awaiting response... 
  HTTP/1.1 301 Moved Permanently
  Location: http://www.google.com/
  Content-Type: text/html; charset=UTF-8
  Date: Sat, 25 Aug 2012 10:15:38 GMT
  Expires: Mon, 24 Sep 2012 10:15:38 GMT
  Cache-Control: public, max-age=2592000
  Server: gws
  Content-Length: 219
  X-XSS-Protection: 1; mode=block
  X-Frame-Options: SAMEORIGIN
Location: http://www.google.com/ [following]
--2012-08-25 12:20:29--  http://www.google.com/
Resolving www.google.com (www.google.com)... 173.194.69.99, 173.194.69.104, 173.194.69.106, ...

  ...skipped a few more redirections ...

    [<=>                                                                                                                                     ] 0           --.-K/s              
<!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"><head><meta itemprop="image" content="/images/google_favicon_128.png"><ti 

... skipped ...

возможно вам нужно обновить ваш wget ( ~$ wget --version GNU Wget 1.14 built on linux-gnu.)

BeniBela
источник
7

Это сработало для меня для печати ответа с заголовком:

wget --server-response http://www.example.com/
Абхишек Сахарн
источник
1
Возможно, вы захотите добавить --spiderаргумент. Эта полезная причина не загружает содержимое страницы.
Антонио
3

Это не будет работать:

wget -q -S -O - google.com 1>wget.txt 2>&1

поскольку перенаправления оцениваются справа налево, он отправляет html в wget.txt, а заголовок в STDOUT:

wget -q -S -O - google.com 2>&1 1>wget.txt
maniac_on_moon
источник