Автоматически добавлять новую строку в конце тела ответа curl
Если тело ответа HTTP для запроса curl не содержит конечную новую строку, я заканчиваю с этим действительно раздражающим условием, когда приглашение оболочки находится в середине строки, и экранирование достаточно перепутано, что, когда я помещаю последнюю команду curl на экран, удаление символов из этой команды curl удаляет неправильные символы.
например:
[root@localhost ~]# curl jsonip.com
{"ip":"10.10.10.10","about":"/about"}[root@localhost ~]#
есть ли трюк, который я могу использовать для автоматического добавления новой строки в конце ответа curl, чтобы получить приглашение обратно на левом краю экрана?
3 ответов
из файла man:
чтобы лучше позволить программистам-скриптам узнать о прогрессе curl, была введена опция-w/--write-out. Используя это, вы можете указать какую информацию из предыдущей передачи вы хотите извлечь.
для отображения количества байтов, загруженных вместе с текстом и окончание новой строки:
curl -w 'We downloaded %{size_download} bytes\n' www.download.com
поэтому попробуйте добавить следующий код :
-w "\n"
попробуй это :
curl jsonip.com; echo
выход
{"ip":"x.x.x.x","about":"/about"}
Это это простой ;)
(и не ограничивается командой curl, но все команды, которые не заканчиваются новой строкой)
для получения дополнительной информации, а также чистой новой строки после curl
~/.curlrc
-w "\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\"%{content_type}\"\n"
(дополнительные опции доступны здесь)
redirect_url
будет пустым, если запрос не попадаете или вы используете -L
следовать перенаправлению.
пример:
~ ➤ curl https://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.uk/?gfe_rd=cr&ei=FW">here</A>.
</BODY></HTML>
status=302 https://www.google.co.uk/?gfe_rd=cr&ei=FW size=262 time=0.044209 content-type="text/html; charset=UTF-8"
~ ➤
редактировать, чтобы сделать вещи более читаемыми, вы можете добавить цвета ANSI в -w
line, это не так просто написать прямо, но этой скрипт может генерировать цвета.
#!/usr/bin/env python3
from pathlib import Path
import click
chunks = [
('status=', 'blue'),
('%{http_code} ', 'green'),
('%{redirect_url} ', 'green'),
('size=', 'blue'),
('%{size_download} ', 'green'),
('time=', 'blue'),
('%{time_total} ', 'green'),
('content-type=', 'blue'),
('\"%{content_type}\"', 'green'),
]
content = '-w "\n'
for chunk, colour in chunks:
content += click.style(chunk, fg=colour)
content += '\n"\n'
path = (Path.home() / '.curlrc').resolve()
print('writing:\n{}to: {}'.format(content, path))
path.write_text(content)