Как сделать Меньше указать местоположение в процентах - PullRequest
15 голосов
/ 26 июня 2009

Теперь я хочу показать знак процента также при запуске, например, команды

man emacs

Если вы запустите его, вы получите, например, «байт 3300».

Ответ Алекса подсказывает мне, что нам нужно сделать отдельную функцию оболочки с помощью

man "$1"| col -b > /tmp/manual
less /tmp/manual

где $ 1 относится к первому параметру.


Новая проблема в потоке . Спасибо Юлии за крутой ход!

Ответы [ 6 ]

22 голосов
/ 09 ноября 2013

Решение

Менее ручная версия ответа 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.
13 голосов
/ 26 июня 2009
export LESS="-m"

В более общем случае переменная окружения LESS может содержать параметры, эквивалентные флагам командной строки, которые вы могли бы явно передать при запуске less - здесь, параметр -m, который говорит, что он должен предлагать больше (включая процент, как вы и просили). Вы также можете передать более одной опции в пределах этой единственной переменной среды, заканчивая каждую $. Для получения дополнительной информации см. Справочную страницу less .

Редактировать : конечно, возможно (в зависимости от того, как вы используете меньше, например, если вы направляете на него, а не вызываете его в файле), что меньшее не делает знать общий размер, который он будет отображать, и в этом случае, конечно, он не сможет отобразить% - в этом случае он подскажет, какой маленькой информацией он обладает, например, сколько текста он пока показал , Например, man использует less таким образом, по трубам.

Итак, если вам нужно увидеть% в man (а не при вызове less непосредственно в файле), вам нужно использовать «альтернативный пейджер» (переменная окружения MANPAGER или переключатель * 1021). * в командной строке man - это простой скрипт, который сохраняет вывод man во временный файл, а затем использует less в последнем. (Это может потерять собственную «раскраску» человека, если вы не будете играть еще дальше и более глубокие трюки, и т. Д., И т. Д. - аналогично, вы можете использовать опцию «preformat pages» man и распаковать такую ​​предварительно отформатированную страницу в временный файл, на котором можно запустить less и т. Д., Но это начинает становиться несколько сложным "простым сценарием"; -).

10 голосов
/ 25 августа 2013

В Linux я просто иду в конец справочной страницы с помощью Shift + G , затем возвращаюсь к началу с g . (Или вы можете вернуться на предыдущую позицию с помощью '' ).

Меньше, чем достаточно информации для отображения процента того, как далеко вы пройдете через файл. (Вам может потребоваться набрать -M, чтобы получить длинную подсказку.)

Это что-то вроде хака, но только два нажатия клавиш. Не уверен, что это работает на OS / X.

8 голосов
/ 26 июня 2009

Чтобы добавить к ответу Алекса Мартелли:

Обратите внимание, что вы также можете передать любой параметр командной строки в less во время выполнения, просто набрав его (включая -), а затем клавишу ввода. Так что вы можете просто набрать

-m<Enter>

, чтобы включить длинную подсказку.

Это особенно полезно для параметров, которые необходимо изменить во время выполнения, например, -S (линия складывается вкл / выкл).

3 голосов
/ 13 июля 2015

В режиме реального времени less я использовал -M.

Это "-M Введите " в приглашении : с меньшим количеством операций.

С очень большими буферами мне также пришлось идти до конца, чтобы "определить" их размер. Конец и обратно Дом .


Примечание. Я бы опубликовал в качестве комментария ответ @ sleske , но, насколько я помню, комментарии не поддерживают теги <kbd>Keyboard<kbd>.

1 голос
/ 26 июня 2009

У меня есть это в моей среде.Внизу будет напечатано <filename> - Lines X-Y of Z или, по крайней мере, столько информации, сколько имеется.

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'
...