Bash 提示字符串与curl 命令输出出现在同一行

Bash 提示字符串与curl 命令输出出现在同一行

当我运行curl命令时,它返回的json响应与b​​ash提示字符串发生冲突:

~$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

  1. 简单的答案:\n在提示字符串的开头使用(换行)特殊字符。它将确保 bash 提示字符串总是出现在换行符处。然而,这种情况发生的频率可能比您想要的要高。
  2. 如果您只是在使用时遇到此问题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"}
~$

相关内容