仅在命令没有输出任何内容的情况下,才可以在命令的输出前后添加一个空行?

时间:2018-12-02 09:17:56

标签: bash command-prompt prompt

仅举一个简单的例子:

~$ cd ~/Documents/
~$ ls

a file   another file

~$ echo “Ok”

Ok

~$ rm *
~$ ls
~$ cd

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

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

之所以这样做,是因为我经常发现很难在大量的输出中找到提示,尤其是在差异很大的情况下。我尝试了两行提示,有时之前使用空行,并且还在提示中添加了一些难看的颜色。两者都不尽如人意。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以简单地做到:

echo ""

尽管对于以换行符结尾的格式化输出,printf是更好的选择,例如: printf "%s\n\n" "output"

我认为以下主题与您的主题有关,以空行显示: What is the preferred method to echo a blank line in a shell script?

关于控制输出,请尝试将命令执行放在变量中,然后评估所需的方式。
例如使用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

最好的问候