BASH:长命令输出后换行或 HR

BASH:长命令输出后换行或 HR

有没有办法配置 Bash,使其在提供超过 N 行输出的命令后打印换行符或水平线?例如,在一个简单的命令之后,cd我不需要换行符或水平线,但在较长的命令之后,cat当我比较各种命令的输出时,每个命令输出结束的视觉指示会很棒。

答案1

实际上,您可以使用如下所示的包装脚本:

#!/bin/bash

CMD="$*"
N=10
IFS=:

i=0;
eval $CMD | while read line; do
    echo "$line"
    i=$((i+1))
    if [ $((i % $N)) -eq 0 ]; then
        echo '================================================================';
    fi
done

将其保存在您的主目录中,假设为 ~/wrapper.sh。在您的 .bashrc 文件中为其创建别名:

alias wrap="~/wrapper.sh "

现在您可以使用“wrap”前缀调用您选择的命令:

wrap cat veryLongFile

命令的标准输出将由 wrapper.sh 进行后期处理(我在每 1o 行后添加一条水平线)

答案2

这在 bash 中无法实现。程序到终端的输出不经过 shell (bash),因此 bash 无法确定打印了多少行。

我个人只需要手动按一次或两次回车键,以防我需要视觉分离。如果你想在每一个命令,最好的方法是export PS1='\n'"$PS1"

相关内容