Автоматически добавлять новую строку в конце тела ответа 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&amp;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)