为什么我的命令输出后面附加了一个“%”

为什么我的命令输出后面附加了一个“%”

查看下面的命令输出,里面附加了%我真正想要的内容:

➜ ls *.md | tr '\n' ':'
README.md:%

其原因何在?如何消除?

提前致谢!

答案1

我猜你正在使用zsh作为 shell?它表示程序的输出未以换行符结尾。它由zsh而不是程序打印。程序运行正常。

假设每个程序在其输出末尾打印一个换行符。这允许下一个程序安全地开始打印下一行 - 例如在 shell 的情况下的提示符。以下是一个例子bash

gronostaj:~# echo test
test
gronostaj:~# 

echo默认情况下,将在末尾添加换行符。您可以使用 来隐藏此操作,-n结果如下,同样在 中bash

gronostaj:~# echo -n test
testgronostaj:~# 

这可不太酷。关于输出以换行符结尾的假设是不正确的,提示符被连接到了上一个输出的末尾。

在中zsh,第二个示例如下所示:

➜ echo -n test
test%

zsh打印%字符以表明检测到缺少换行符,并且它已将其附加到您以避免破坏提示。不是 echo 打印它,而是 shell。

相关内容