Есть ли способ настроить Bash для печати новой строки или горизонтальной строки после команд, которые предоставили более N строк вывода? Например, после простого cd
Мне не нужна новая строка или горизонтальная строка, но после долгого cat
визуальное указание конца вывода каждой команды было бы здорово, когда я сравниваю вывод различных команд.
Это невозможно сделать в bash. Вывод программы на терминал не проходит через оболочку (bash), поэтому bash не может определить, сколько строк было напечатано.
Лично я просто вручную нажимаю ввод один или два раза, если мне нужно визуальное разделение. Если вы хотите, чтобы на каждый команда, лучший способ - export PS1='\n'"$PS1"
На самом деле вы можете использовать сценарий-оболочку, подобный приведенному ниже:
#!/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
stdout из вашей команды будет постобработан wrapper.sh (я добавляю горизонтальную линию после каждых 10 строк)