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