Как сбросить справочную страницу?

46

Как я могу «кошачьи» справочную страницу, как я бы «кошачий» файл, чтобы получить только дамп содержимого?

LanceBaynes
источник

Ответы:

41

Прежде всего, файлы man обычно представляют собой просто текстовые файлы gziped где-то в вашей файловой системе. Так как ваш поиск будет различаться, и вы, вероятно, хотели получить обработанную и отформатированную версию, которую вам даст человек вместо источника, вы можете просто сбросить их с помощью manинструмента. Посмотрев man man, я вижу, что вы можете изменить программу, используемую для просмотра man-страниц, с таким -Pфлагом:

man -P cat command_name

Кроме того, ничего не стоит, что manавтоматически обнаруживает, когда вы выводите на экран его вывод, а не просматриваете его на экране, поэтому, если вы собираетесь обрабатывать его чем-то другим, вы можете сразу перейти к этому шагу следующим образом:

man command_name | grep search_string

или сбросить в файл:

man command_name > formatted_man_page.txt
Калеб
источник
1
использование -P не делает выходной файл аккуратно читаемым. Это набросано всеми символами ctrl-H. Я раньше делал man cmd>! man.cmd и откройте man.cmd и выполните «% s / ^ H .// g», чтобы удалить надоедливые управляющие символы для представления жирного шрифта и курсива. Но это все еще имеет некоторую проблему, когда есть другие специальные символы. Я все еще ищу хороший метод, чтобы избежать ручного редактирования вывода.
Чан Ким
@ChanKim Вы делаете что-то не так или вам мешает нестандартная конфигурация, потому что оба метода на самом деле производят чистый вывод, отформатированный в виде обычного текста без дополнительных управляющих символов. Вы уверены, что manв вашей оболочке нет псевдонимов или флагов, которые отделяют вашу функцию от обычной man?
Калеб
1
@ Калеб, я подтверждаю проблему ОП. Выпуск CentOS 6.7 (Final), / usr / bin / man gcc> j, отредактируйте 'j', все ctrl-H там. Лучший ответ, который я нашел, находится на commandlinefu.com/commands/view/2417/…
Чарльз Рот
1
man command_name > formatted_man_page.txtвызовет некоторое слово дубликат.
Зиги Вонг
52

Чтобы получить файл справочной страницы ASCII, без назойливых попыток подчеркивания / подчеркивания на заднем плане и странных последовательностей, чтобы сделать жирным шрифтом:

man ksh | col -b > ksh.txt
Брюс Эдигер
источник
6
Вы заслуживаете больше голосов
Labo
2
Привет, почему вывод man piped содержит повторяющиеся символы? и как col -b удаляет его? Заранее спасибо.
saurabheights
2
@saurabheights - человек пытается сделать подчеркивание и полужирный текст и, возможно, некоторые другие вещи с помощью символов возврата, дублирования символов, escape-последовательностей и т. д. как текст на терминале. Я не читал исходный текст col, но он, вероятно, просто проверяет байты stdin и не передает символы возврата и т. Д. В stdout. Страница man col читается так, как будто кто-то написал ее специально для фильтрации вывода man.
Брюс Эдигер
1
хорошо, это имеет смысл. Такие символы (скрытые) могут вызвать дублирование символов. Спасибо, Брюс.
saurabheights
Вы действительно заслуживаете модного отката. Есть ли "col" для столбца?
алгебра
24

Страницы troffруководства обычно представляют собой предварительно обработанные файлы, и вы можете перейти к простому тексту,

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

groffэто обертка для troff.

Больше информации здесь .

Возможно, вам придется сначала использовать gzip для распаковки файлов справочной страницы, и у вас все равно будет много информации о форматировании в выводе.

EightBitTony
источник
4
+1 за разговор о groff / troff и о форматировании man-страниц
lgeorget
11

Я делаю это все время. Эта командная строка делает меня счастливым:

man man | col -bx > man.txt

col -b удаляет пробелы.

col -bx также заменяет табуляцию пробелами, что является моим сильным предпочтением.

Если я хочу, чтобы текст во время чтения форматировался в соответствии с шириной моих предпочтений, я изменяю команду на следующую:

MANWIDTH=10000 man man | col -bx > man.txt
sotosoc
источник
man man | col -bx > man.txtработал на меня. Спасибо.
JaredH
6

Просто используйте manкоманду - вы можете направить вывод в другие вещи, как вы можете catдля файла.

TomH
источник
1
Мне нравится простота.
Джоэл Шегрен
3

Если вы просто хотите перейти catна man-страницу, вы можете просто отправить ее по адресу cat:

man ls | cat

Если вы хотите вывести его содержимое в файл:

man ls > ls_manpage_dump.txt
Sheharyar
источник