是否可以在命令输出前后添加空行,但前提是该命令没有输出任何内容



举个简单的例子:

~$ cd ~/Documents/
~$ ls
a file   another file
~$ echo “Ok”
Ok
~$ rm *
~$ ls
~$ cd

这受到了这个问题的启发,其中trap 'echo' DEBUG用于在每个命令的输出前后添加一个空行。不幸的是,如果命令没有输出,仍然会添加空行。trap 'echo' DEBUG的另一个缺点是它有点"黑客",我听说它破坏了一些程序。它还在管道中的命令输出之间添加空行。

现在,我意识到可能不可能在命令输出之前添加空行,因为要检查命令是否有任何输出,必须首先将输出打印到屏幕上,然后才能添加空行!因此,如果在没有输出的情况下运行命令时,每个提示之间都有一行空行,也可以,只是不像trap 'echo' DEBUG那样有两行

我这样做的原因是,我经常发现在输出的海洋中很难找到我的提示,尤其是当它是一个色彩鲜艳的差异时。我尝试过两行提示,有时以前是空行,还为我的提示添加了可怕的混乱颜色。两者都不太令人满意。

谢谢你的帮助!

您可以简单地执行:

echo ""

尽管对于以新行结尾的格式化输出,printf是一个更好的选择,例如:printf "%snn" "output"

我认为以下主题是关于你的主题,对于空行:在shell脚本中回显空行的首选方法是什么?

至于控制输出,请尝试将命令执行置于变量中,然后按照您想要的方式进行计算
例如ls和if:

list=$(ls | wc -l)
if [ "$list" -gt 0 ]
then
echo "Working fine"
else
echo ""
fi

如果需要的话,你仍然可以打印命令的输出。但我认为如果不涉及某种报告,就没有必要。例如,在两种情况下打印输出:

当条件满足和不满足时(再次执行命令(,添加以下内容:

echo "$(ls)"

例如,将条件更改为不满足条件会得到所需的输出:

adama@galactica:~$ ./processing.sh
a
column2.txt
pepito
processing.sh
test.txt

致以最诚挚的问候

最新更新