Решение
Менее ручная версия ответа knitatoms в сочетании с Ответ Алекса Мартейли работает довольно хорошо: передайте параметр +Gg
на less
черезего опция пейджера.
Например, попробуйте
man -P 'less -s -M +Gg' man
Это можно сделать навсегда, поместив
export MANPAGER='less -s -M +Gg'
в один из ваших файлов конфигурации оболочки (синтаксис вышедля баш и зш).Теперь, например, man man
отображает процент, как вы хотели!
Предупреждение
Вы должны не поставить +Gg
в переменную LESS
!Например, выполнение
export LESS='-M +Gg'
вызовет проблемы при чтении очень больших файлов.Например,
yes | LESS='-M +Gg' less
работает не очень хорошо ...
Объяснение
Как объяснили другие ответы, проблема в том, что less
не может сказатькакой процент в файле вы находитесь, пока он не узнает, как долго он находится, и он не читает до конца файла по умолчанию при чтении из канала.
Из раздела OPTIONS
в man less
:
+ If a command line option begins with +, the remainder of that
option is taken to be an initial command to less. For exam‐
ple, +G tells less to start at the end of the file rather than
the beginning, and +/xyz tells it to start at the first occur‐
rence of "xyz" in the file. As a special case, +<number> acts
like +<number>g; that is, it starts the display at the speci‐
fied line number (however, see the caveat under the "g" com‐
mand above). If the option starts with ++, the initial com‐
mand applies to every file being viewed, not just the first
one. The + command described previously may also be used to
set (or change) an initial command for every file.
g
означает «возврат в начало файла».
Из man man
:
-P pager, --pager=pager
Specify which output pager to use. By default, man uses pager
-s. This option overrides the $MANPAGER environment variable,
which in turn overrides the $PAGER environment variable. It
is not used in conjunction with -f or -k.
The value may be a simple command name or a command with argu‐
ments, and may use shell quoting (backslashes, single quotes,
or double quotes). It may not use pipes to connect multiple
commands; if you need that, use a wrapper script, which may
take the file to display either as an argument or on standard
input.