Відповіді:
додайте -s
(беззвучний) варіант для видалення вимірювача ходу, а потім перенаправляйте stderr на stdout, щоб отримати багатослівний вихід на тому ж fd, що і тіло відповіді
curl -vs google.com 2>&1 | less
2>&1
.
Можливо, у вашій URL-адресі розміщено розширення. У мене була і ця проблема, і я зрозумів, що моя URL-адреса повна амперсандів (від передаваних змінних CGI), і тому все надходило на задній план дивним чином і, таким чином, не перенаправлялось належним чином. Якщо ви поставите лапки навколо URL-адреси, це виправить.
Відповідь вище для мене не спрацювала. Зрештою, був цей синтаксис:
curl https://${URL} &> /dev/stdout | tee -a ${LOG}
tee ставить вихід на екран, але також додає його до мого журналу.
&> /dev/stdout
була точно відсутня частина, дякую
Якщо вам потрібен вихід у файл, ви можете використовувати переспрямування:
curl https://vi.stackexchange.com/ -vs >curl-output.txt 2>&1
Будьте впевнені, що не перевертайте >curl-output.txt
та 2>&1
, що не працюватиме через поведінку перенаправлення Баша .
Я знайшов те саме: curl сам по собі надрукував би STDOUT, але не міг бути переданим в іншу програму.
Спочатку я подумав, що вирішив це, використовуючи xargs, щоб спочатку відзвучити вихід:
curl -s ... <url> | xargs -0 echo | ...
Але потім, як зазначено в коментарях, він також працює без частини xargs, тому -s
(безшумний режим) є ключем до запобігання виходу стороннього прогресу в STDOUT:
curl -s ... <url> | perl -ne 'print $1 if /<sometag>([^<]+)/'
Наведений вище приклад захоплює простий <sometag>
вміст (не містить вбудованих тегів) з виводу XML оператора curl.
Всього мої 2 копійки. Наведена нижче команда повинна виконати трюк, як відповіли раніше
curl -vs google.com 2>&1
Однак якщо вам потрібно отримати вихід у файл,
curl -vs google.com > out.txt 2>&1
повинен працювати.
Цей простий приклад показує, як зафіксувати висновок curl та використовувати його в скрипті bash
function main
{
\curl -vs 'http://google.com' 2>&1
# note: add -o /tmp/ignore.png if you want to ignore binary output, by saving it to a file.
}
# capture output of curl to a variable
OUT=$(main)
# search output for something using grep.
echo
echo "$OUT" | grep 302
echo
echo "$OUT" | grep title
curl -v url 2>&1
, помилки правильно перенаправляються на стандартний для мене вихід.