有没有办法配置 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"