是`man ls> temp.txt`吗?输出文本文件已损坏


27

当我执行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是完全正常的。发生了什么?


有趣的是,使用lessmore正确显示格式查看文件。如果使用vim,它将显示^H带有多余字母的原始退格键()。
开尔文

2
您的文件遭受打ic。
克苏鲁2015年

有趣的是,当重定向输出时,我的Linux计算机上的man命令不会像这样。
大卫·贝利

Answers:


30

来自man man

要获取手册页的纯文本版本,而不包含空格和下划线,请尝试

    # man foo | col -b > foo.mantxt

man格式化手册页,下划线和双字母的版本版画解析

它们并不是被“解析”,而是“如果您没有终端,则将粗体格式显示为重复字符”。一旦将其连接到终端(vt100,xterm,终端等),男人就会识别出该终端并发送适当的控制代码以进行彩色,加粗,下划线等操作。它被正确解析-仅用于空终端类型。

MichaelT评论


21

曾几何时,计算机通常连接到电传打字机(电传打字机),该电传打字机将在接收到所有文字后实时将其打印在纸上。尽管电传打字员没有任何用于带下划线或粗体文本的功能,但输出下划线,退格和打印其他内容会导致其他内容带有下划线。同样,输出一个字符,退格并输出相同的字符会趋于使该字符看起来更暗,尽管效果会因所安装色带的质量而异(如果色带又旧又弱,则两次键入相同的字符会使它明显变暗;用新的色带键入字符,即使一次也将达到接近最大的黑度)。此外,即使没有将用户连接到打印机,man到打印后台处理程序已经很普遍了,这也许可以解释为什么man即使重定向输出时也是如此。

顺便说一句,在某些打印机(甚至是电传打印机)上,的性能_←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G会明显比差___________←←←←←←←←←←←UNDERLINING,因为前者需要打印头反复反转方向(并且通常会超出两端的目标)。当使用多击黑体字时也是如此,但是该行为实际上可能是有利的,因为第一次打印每个字符将立即紧跟退格字符,而第二次则不会。如果在打印第一个字符时打印头处于加速状态,这将导致打印头相对于第二个字符稍微错位,从而使黑体效果更有效。


我对Unix的了解越多,就越能发现它对Windows的向后兼容性的困扰,就像Windows一样。
任思远

整洁的历史课!很高兴看到为什么某些方法可能比其他方法更受欢迎。
达斯汀·惠勒

15

Mateusz的答案是正确的,但值得指出的是,除了剥离用于tty的格式外,您可以使用不同的man格式。

例如,您可以使用以下格式来获取格式正确的pdf:

man -t ls | pstopdf -i -o ~/ls.pdf

我已经使用OnyX多年了,主要是这样做来打印手册页。不再!我将其写入脚本,该脚本将处理系统上的所有手册页。非常感谢,因为我很久以前就放弃了为什么一直使用OnyX。我现在更喜欢在终端上做这样的事情,现在可以了。
user3439894

不错的功能。除此之外,是否有一种简单的方法来输出html?gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
开尔文

man的手册页说,在/ usr / bin / man上运行字符串时出现的-t格式groff -Tps ...和从那里开始的格式似乎是硬编码的。而且由于-Tps覆盖了GROFF_TYPESETTER,因此您的解决方案可能是最可行的。虽然您缺少管道中的步骤。您想要tbl然后发牢骚。尝试man -d ls查看它使用的管道。
Tim B

6

作为替代,我定义了以下外壳函数(从Oh-my-ZSH的OS X插件调用):

man-preview () {
    man -t "$@" | open -f -a /Applications/Preview.app
}

这样就可以在预览中打开所需的手册页,其中包含所有可能需要的漂亮格式。将这个单一别名添加到您的过程中很容易~/.profile(我认为pman比容易man-preview,因此已在中设置alias pman='man-preview~/.zshrc)。

PS我见过pman互联网上各种点文件中定义的功能,哦,我的ZSH恰好是我的定义位置。


2

或者,您可以使用Carl Lindberg的ManOpen查找和打印任何手册页。ManOpen最初是为NeXtStep开发的,但仍要归功于Carl。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.