Стандартное разбиение на страницы с использованием 'more' и передача в системный журнал
Я реализовал скрипт-обертку, который заставляет все команды, выполняемые через этот скрипт-обертку, регистрировать (через rsyslog) такие вещи, как время выполнения, пользователь, который выполнил команду, и код выхода.
Я пытаюсь реализовать разбиение на страницы, и у меня возникла проблема с командой "more". Корень моей проблемы в том, что "more", кажется, завершается, когда оно передается в другую программу, например
echo -e "this\nis\na\ntest" | more -3 | cat
Это напечатает 4 строки, хотя, если мы обрежем '| cat 'в конце, затем он остановится после печати 3 строк, как и ожидалось.
Следует признать, что использование "меньше" вместо "больше" работает, хотя это не дает желаемого эффекта, так как открывает отдельное "окно" и не позволяет прокрутить назад после его завершения (мне не нужна возможность прокручивать назад так, как позволяет "меньше".
Мое текущее решение состоит в том, чтобы использовать команды "head" и "tail", чтобы получить желаемый эффект, но есть и другие проблемы, с которыми они сталкиваются.
Кто-нибудь знает секрет, как заставить "больше" работать так, как я себе представлял? Также приветствуются предложения по другому, более простому инструменту подкачки (поддерживает действия Enter, пробел и 'q').
Спасибо!
1 ответ
Кажется, что с помощью tee
для перенаправления в файл и stdout подкачки было бы более подходящим, чем подкачка в середине конвейера:
printf "%s\n" this is a test | tee /tmp/some.file | more -3