为什么 cURL 在 ZSH 中的每个请求中都请求 return 一个百分号 (%)?

Why does a cURL request return a percent sign (%) with every request in ZSH?

我注意到 ZSH 中任何 cURL 请求的 return 都以 % 结尾,例如:

$ curl http://textbelt.com/text -d number="555555555" -d message="hey"
=> { "success": true }%

为什么要添加这个字符,是否有删除它的标准方法?

注意:ZSH 是我唯一注意到这种情况的 shell(在 bash csh ksh sh tcsh zsh 中测试)

尝试在邮件中明确添加换行符 \n。

这是一个 zsh feature,它在命令完成后打印百分号和换行符 if 该命令尚未包含输出末尾的换行符。如果 zsh 没有这样做,您将永远不会注意到该命令没有打印换行符这一事实 - 或者您会看到 zsh 的命令提示符 not 从边缘开始并思考这是 zsh 中的一个错误。

像 curl 这样的工具虔诚地打印他们从源代码中获得的任何结果,并且永远不会在没有被要求的情况下自发地打印换行符。我最常在 curl 中看到这种行为。如果您正在编写使用 curl 的工具,您当然可以选择自己添加换行符。

我建议除非你真的需要,否则不要添加换行符。如果你真的想添加一个换行符,你可以使用一个单独的工具(例如回声) - 但最简单的 curl 是 "write-out" 选项:

$ curl http://api.macvendors.com/0015c7   
Cisco Systems, Inc%     
$ curl -w '\n' http://api.macvendors.com/0015c7
Cisco Systems, Inc
$

来自 curl 的手册页:

   -w, --write-out <format>
          Make  curl  display  information  on stdout after a completed transfer. The format is a string that may contain plain text
          mixed with any number of variables. The format can be specified as a literal "string", or you can have curl read the  for-
          mat from a file with "@filename" and to tell curl to read the format from stdin you write "@-".