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


46

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

Ответы:


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 для распаковки файлов справочной страницы, и у вас все равно будет много информации о форматировании в выводе.


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

man man | col -bx > man.txtработал на меня. Спасибо.
JaredH

6

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


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

3

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

man ls | cat

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

man ls > ls_manpage_dump.txt
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.