Назад | Перейти на главную страницу

BASH: новая строка или HR после длинного вывода команды

Есть ли способ настроить 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 строк)