在curl响应主体结束时自动添加换行符

如果curl请求的HTTP响应主体不包含尾随的换行符,那么我最终会遇到这样一个非常恼人的情况:shell提示符在行的中间,而且转义已经搞糟了,当我把最后一个curl屏幕上的命令,从curl命令中删除字符将删除错误的字符。

例如:

[root@localhost ~]# curl jsonip.com {"ip":"10.10.10.10","about":"/about"}[root@localhost ~]# 

是否有一个技巧,我可以用它来自动添加一个新行在curl响应结束,以获得提示在屏幕的左边缘?

从man文件中:

为了更好地让脚本程序员了解curl的进度,引入了-w / – write-out选项。 使用这个,你可以指定你想要提取的上一次传输的信息。

要显示下载的字节数以及一些文本和一个结束换行符:

 curl -w 'We downloaded %{size_download} bytes\n' www.download.com 

所以请尝试将以下内容添加到~/.curlrc文件中:

 -w "\n" 

尝试一下:

 curl jsonip.com; echo 

OUTPUT

 {"ip":"xxxx","about":"/about"} 

这很简单;)

有关更多信息以及curl后的干净新行

~/.curlrc

 -w "\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\"%{content_type}\"\n" 

(更多选项可在这里 )

如果请求没有被redirect,或者使用-L来跟踪redirect,则redirect_url将为空。

示例输出:

 ~ ➤ 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行,直接编写并不容易,但是此脚本可以使用颜色生成~/.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)