当我运行curl命令时,它返回的json响应与bash提示字符串发生冲突:
~$curl localhost:8001/api
{"message":"this is a test message"}~$
注意~$
第二行末尾。我已经自定义了 bash 提示字符串以包含工作文件夹:
PS1=\[\e]0;\u@\h: \w\a\]\W\$
看来本地服务器(nodejs)没有在末尾添加换行符。
如何确保 bash 提示字符串始终出现换行符?
答案1
如果您只想对curl
命令执行此操作并且不想在提示中添加额外的换行符,只需回显输出:
~$ echo "$(curl localhost:8001/api)"
{"message":"this is a test message"}
~$
答案2
- 简单的答案:
\n
在提示字符串的开头使用(换行)特殊字符。它将确保 bash 提示字符串总是出现在换行符处。然而,这种情况发生的频率可能比您想要的要高。 - 如果您只是在使用时遇到此问题
curl
,请看一下在这个答案
答案3
您可以使用以下命令强制在 bsh shell 中的每个命令后添加换行符提示命令。
PROMPT_COMMAND="echo"
现在,在每个命令之后或每个提示之前都echo
可以不带参数地调用。然后echo
只打印换行符。请注意,如果您运行以换行符结尾的命令,那么现在末尾将有 2 个换行符。看:
echo -n foo
foo$
$ PROMPT_COMMAND="echo"
echo -n foo
foo
$ echo foo
foo
$
答案4
手动附加换行符的一种方法是&& echo
:
~$ curl localhost:8001/api && echo
{"message":"this is a test message"}
~$