Автоматически добавлять новую строку в конце тела завивки
Если тело ответа HTTP для запроса на завивание не содержит завершающей новой строки, я получаю это действительно раздражающее условие, когда приглашение оболочки находится в середине строки, и экранирование настолько перепутано, что когда я помещаю последняя команда curl на экране, удаление символов из этой команды curl удаляет неправильные символы.
Например:
[[email protected] ~]# curl jsonip.com
{"ip":"10.10.10.10","about":"/about"}[[email protected] ~]#
Есть ли трюк, который я могу использовать для автоматического добавления новой строки в конце отклика, чтобы вернуть запрос на левый край экрана?
Ответы
Ответ 1
Из файла man:
Чтобы лучше позволить программистам script узнать о прогрессе curl, была выбрана опция -w/- write-out. Используя это, вы можете указать какую информацию из предыдущей передачи вы хотите извлечь.
Чтобы отобразить количество байтов, загруженных вместе с некоторым текстом и endline:
curl -w 'We downloaded %{size_download} bytes\n' www.download.com
Попробуйте добавить следующее к вашему файлу ~/.curlrc
:
-w "\n"
Ответ 2
Попробуй это:
curl jsonip.com; echo
ВЫХОД
{"ip":"x.x.x.x","about":"/about"}
Это так просто;)
(и не только команда curl, но все команды, которые не заканчиваются переводом строки)
Ответ 3
Для получения дополнительной информации, а также чистой новой строки после завитка
~/.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
, это не так просто написать напрямую, но этот скрипт может генерировать файл ~/.curlrc
с цветами.
#!/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)
Ответ 4
Общее решение для bash - добавить символ новой строки в командную строку:
См. Связанный вопрос (Как получить новую строку перед приглашением bash?) И соответствующий ответ
Это решение охватывает каждую команду, а не только curl.
echo $PS1 # To get your current PS1 env variable value aka '_current_PS1_'
PS1='\n_current_PS1_'
Единственным побочным эффектом является то, что вы получаете командную строку после каждой второй строки.