Как я могу использовать человека без меньшего?


21

По умолчанию manиспользуется lessдля вывода текста. Как я могу сказать, чтобы он просто выводил на стандартный вывод? Мой эмулятор терминала имеет полосу прокрутки и функцию поиска, и я хочу использовать их вместо клавиш со стрелками.

Ответы:


31

На самом деле он использует все, что указано в переменной окружения MANPAGERили PAGER.

В зависимости от вашей manреализации и версии может быть также переключатель командной строки для указания пейджера.

В реализации man-db я использую все следующие способы работы:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

Чтобы установить его навсегда, просто добавьте его в свой ~/.bashrc(или другой файл инициализации, используемый вашей оболочкой):

export MANPAGER=cat

Это работает и с некоторыми более старыми manреализациями, хотя MANOPTэто специфично для man-db:

export MANOPT='-P cat'

(Лучше не устанавливать PAGERэтот путь. Этот также используется многими другими приложениями.)

Там также может быть глобальный файл конфигурации. man-db имеет /etc/man_db.confили /etc/manpath.config. Там вы можете установить:

DEFINE    pager    cat

Но, к сожалению, это принимается во внимание, только если ни то, MANPAGERни другое не PAGERустановлено.


2
Хороший ответ. Re: ~/.bashrc, Вы можете также обернуть экспорт в условном , так это только устанавливает пейджер , если это уместно терминал / Эмулятор: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; очевидно замените xtermна соответствующий эмулятор.
Кевин

1
На самом деле, это хорошо, и дизайн manpath.config учитывается позже. И PAGER, и MANPAGER находятся на уровне пользователя, где файл конфигурации - на уровне системы. Если системный уровень будет иметь приоритет, пользователи не смогут переопределить его вообще.
Поль де Вриз

@PauldeVrieze, вы правы MANPAGER. Я использовал слово «к сожалению» для того факта, что поведение также применимо к нему PAGER, что является общим параметром (используется многими инструментами), и я бы предпочел, чтобы он не переопределял конкретный параметр (используется только одним инструментом), даже если это один - системный уровень.
manatwork

Если вы хотите переопределить определенный параметр для отдельного инструмента, вы всегда можете сделать это, создав псевдоним, функцию оболочки или сценарий оболочки. Любой из них может составить:, PAGER=cat manнапример:alias man='PAGER=cat MANPAGER=cat man'
Поль де Вриз

6

Просто труба выводить manдо cat?

man ls | cat   # useful use of cat

6
Обратите внимание, что в зависимости от manреализации, что либо: 1) возникает ошибка, 2) отображает коды формата troff в терминале, 3) удаляет все форматирование, 4) работает должным образом.
manatwork

2
Я никогда не видел, чтобы это делало кроме 4.
Кит Томпсон

@KeithThompson macOS, manкажется, использует пейджер, установленный MANPAGERдаже тогда, когда выводом является файл или канал. И если пейджер есть less, то это все хорошо, потому что lessведет себя так, как будто catвывод - это труба ... Но если вы используете что-то другое (например, Vim, который я использую), то это не так хорошо.
Муру

1

Попробуйте эти команды для генерации вывода человеком без пейджера.

  • man ls | cat (генерируется фиксированная ширина)

  • man -P cat ls (генерируется переменная ширина)

Я был в системе GNU Linux


1

Другой угол: похож на ответ Тони.

Вы также можете перенаправить вывод man в файл и просмотреть его в своем любимом текстовом редакторе или даже добавить в него закладки, комментарии и т. Д.

man bash  > bashman.txt

У меня есть копия справочной страницы bash, а также только разделы об управлении потоком bash и флагах тестирования bash, сохраненные в виде текстовых файлов в моем каталоге bin, так что я могу загрузить их прямо в свой текстовый редактор (kate) для справки, пока я написание скриптов bash.


Предупреждение: в зависимости от вашей системы и справочной страницы указанная выше команда может привести к форматированию информации и управляющих символов в файле.

Чтобы избежать этого, сделайте как предложено в LESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt

1
@Wildcard - Спасибо. Я не знал об этом.
Джо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.