Вопрос или проблема
С момента обновления до Debian 12 (bookworm) команда more
кажется была изменена и теперь останавливается, когда вы достигаете конца файла, который просматриваете, и затем отображает “(END)“, вместо того чтобы просто вернуть вас к командной строке (или предложить перейти к следующему файлу, если вы пытаетесь просмотреть несколько файлов), как это было раньше.
Кажется, теперь мне нужно нажимать q
, чтобы действительно выйти из more
и вернуться к командной строке – но это тогда не позволит мне просмотреть следующий файл(ы), которые я указал (в случае нескольких файлов), и в таком случае мне нужно будет явно использовать клавиатурное не совсем короткое сочетание “Перейти к следующему файлу”.
Как человек с многолетней мышечной памятью о том, что <space>
является универсальным сочетанием для выполнения правильного действия, это изменение действительно очень раздражает!
Существует ли способ вернуть more
к предыдущему более разумному поведению, или, возможно, теперь, к сожалению, пришло время мне рассмотреть возможность использования другой программы для просмотра файлов?
Это было изменение поведения в реализации more
, предоставленной util-linux 2.38. До этого выход на EOF был включен, если more
не запускался в терминале; в версии 2.38 выход на EOF был отключен по умолчанию, чтобы сделать more
совместимым с его спецификацией POSIX (см. также письмо с патчем). Это было отменено в 2.39 (точнее, выход на EOF теперь включен, если POSIXLY_CORRECT
не установлен), но Debian 12 поставляется с 2.38.
Тем не менее, существует параметр, который включает выход на EOF: -e
. Поэтому вы можете создать псевдоним more
как more -e
, чтобы восстановить старое поведение, как минимум, когда вы явно запускаете more
в своей оболочке. Чтобы восстановить поведение во всех случаях, определите переменную окружения MORE
:
export MORE=-e
.
Ответ или решение
Чтобы решить проблему с окончанием работы команды more
, которая теперь останавливается на конце файла и показывает "(END)" в Debian 12 (Bookworm), рассмотрим несколько вариантов.
Причины изменения поведения more
Это изменение поведения связано с обновлением util-linux
до версии 2.38, в которой по умолчанию отключена функция выхода на конце файла (EOF). Ранее версия more
завершала работу и возвращала вас в командную строку, когда достигала конца файла. С новой версией more
было сделано изменение, чтобы привести его в соответствие с POSIX-спецификациями. Однако это может привести к путанице у пользователей, которые привыкли к старому поведению.
Варианты решения проблемы
-
Использование команды
-e
:
Вы можете использовать опцию-e
, чтобы вернутьmore
к привычному поведению, когда оно завершает работу на конце файла. Для этого просто выполните команду:more -e имя_файла
Однако, это решение требует ручного ввода опции каждый раз.
-
Создание алиаса:
Если вы хотите автоматизировать этот процесс и не вводить-e
вручную каждый раз, вы можете создать алиас в вашем shell. Для этого добавьте следующую строку в файл конфигурации вашего терминала (например,~/.bashrc
или~/.zshrc
, в зависимости от используемого интерпретатора команд):alias more='more -e'
После внесения изменений не забудьте выполнить команду:
source ~/.bashrc
или
source ~/.zshrc
Это позволит вам использовать команду
more
с опцией-e
автоматически. -
Использование переменной окружения
MORE
:
Чтобы вернуть старое поведение в каждом сеансе, вы также можете установить переменную окруженияMORE
. Для этого выполните следующую команду в терминале:export MORE=-e
Чтобы это изменение применялось автоматически при каждом запуске терминала, добавьте эту строку в файл конфигурации вашего оболочки:
echo 'export MORE=-e' >> ~/.bashrc
Заключение
Эти методы позволят вам эффективно работать с командой more
в Debian 12, не беспокоясь о новом поведении, которое может мешать вашему привычному потоку работы. Если ни одно из предложенных решений вас не устраивает, вы можете рассмотреть возможность использования альтернативных программ для просмотра файлов, таких как less
, который также предлагает множество полезных функций и менее строгую навигацию.