在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&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)