设置详细打印无关的额外行

Mer*_*glu 5 bash trace

使用set -x会导致我的 shell 打印不相关的东西。例如:

$ set -x
++ printf $'%157s\r'
$ echo 'hello'
+ echo hello
hello
++ printf $'%157s\r'
Run Code Online (Sandbox Code Playgroud)

以“++”开头的行是额外的。我怎样才能删除那些多余的行?

Mic*_*mer 4

-x标志并不是严格意义上的“详细”,而是:

\n\n
\n

shell 应在扩展命令之后和执行命令之前向标准错误写入每个命令的跟踪。

\n
\n\n

++意味着这行跟踪来自 shell 在考虑您的提示时自己的内部处理。在这种情况下,如果PROMPT_COMMAND运行:

\n\n
PROMPT_COMMAND=\nset -x\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么你不应该得到任何额外的输出。

\n\n

可能您还有其他配置导致它 \xe2\x80\x94 Bash 有很多提示设置 \xe2\x80\x94 ,在这种情况下bash -norc应该完全避免它。

\n\n
\n\n

也就是说,这本质上是预期的行为:-x实际上是为了调试 shell 脚本,而不是在交互式 shell 中使用。它实际上是为了打印出它运行的每个命令,这就是它在这里所做的 - 有一个额外的命令在打印每个提示时运行。

\n