Когда я выполняю man ls > temp.txt
выходной текстовый файл поврежден. Под искаженным я подразумеваю, что первые и последние буквы в некоторых словах чрезмерно повторяются.
Несколько первых строк в temp.txt
:
LS(1) BSD General Commands Manual LS(1)
NNAAMMEE
llss -- list directory contents
SSYYNNOOPPSSIISS
llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]
DDEESSCCRRIIPPTTIIOONN
И так далее. Без перенаправления man ls
это совершенно нормально. Что творится?
terminal
command-line
bash
seeker_of_bacon
источник
источник
less
илиmore
отображается правильно. Если вы используетеvim
, он покажет необработанные backspaces (^H
) с дополнительными буквами.Ответы:
От
man man
:man
печатает отформатированную версию справочной страницы, подчеркивания и двойные буквыанализируютсякомментарий MichaelT
источник
Когда-то компьютеры регулярно подключались к телетайпам (телепринтерам), которые печатали весь текст на бумаге в режиме реального времени по мере его поступления. Несмотря на то, что у телепринтеров не было никаких средств для подчеркнутого или выделенного жирным шрифтом текста, вывод подчеркивания, возврата на задний план и распечатка чего-либо другого может привести к тому, что что-то еще будет подчеркнуто. Аналогичным образом, при выводе символа, возврата на одну позицию и выводе одного и того же символа персонаж будет выглядеть темнее, хотя эффективность этого будет зависеть от качества установленной ленты (если лента старая и слабая, дважды введите один и тот же символ). сделало бы его значительно темнее; с помощью новой ленты, напечатанной на персонаже, даже один раз можно было бы достичь максимальной черноты). Кроме того, даже если пользователь не был подключен к принтеру,
man
для диспетчера очереди печати было бы довольно распространенным явлением, что, вероятно, объясняет, почемуman
бы так себя вести, даже если вывод был перенаправлен.Кстати, на некоторых принтерах (и даже на телепринтерах) производительность
_←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G
будет заметно хуже___________←←←←←←←←←←←UNDERLINING
, поскольку для первого требуется, чтобы печатающая головка многократно изменяла направление (и обычно выходила за пределы цели на обоих концах). То же самое можно сказать и при использовании полужирного жирного шрифта, но в этом случае поведение на самом деле может быть выгодным, поскольку первый раз, когда каждый символ печатается, сразу следует за символом возврата, а второй - нет. Если бы печатающая головка ускорялась при печати первого символа, это привело бы к небольшому смещению относительно второго, делая эффект полужирного лица более эффективным.источник
Ответ Матеуша верен, но стоит отметить, что вместо удаления форматирования, предназначенного для tty, вы можете использовать формат man по-другому.
Например, вы можете получить красиво отформатированный PDF вместо:
источник
gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
-t
форматированиеgroff -Tps ...
выполняется с / из строк в / usr / bin / man, что, по-видимому, жестко закодировано. И так как-Tps
переопределяет GROFF_TYPESETTER, ваше решение может быть наиболее жизнеспособным. Хотя вы упускаете шаг в своем конвейере. Тебе нужен тбл, тогда грифф. Попробуйтеman -d ls
увидеть конвейер, который он использует.В качестве альтернативы у меня определена следующая функция оболочки ( вызывается из плагина OS- Oh Oh-my-ZSH ):
Это приводит к тому, что нужная справочная страница открывается в Preview с полным форматированием, которое только можно пожелать. Достаточно просто добавить этот единственный псевдоним к вашему
~/.profile
(я думаю, чтоpman
прощеman-preview
, поэтому я установилalias pman='man-preview
в своем~/.zshrc
).PS Я видел
pman
функцию, определенную в различных точечных файлах по всему Интернету, Oh-my-ZSH как раз там, где определена моя.источник
Или вы можете использовать ManOpen Карла Линдберга, чтобы найти и распечатать любую страницу руководства. ManOpen был впервые разработан для NeXtStep и до сих пор работает благодаря Карлу.
источник