之后man less
(并且可以选择点击h
“较少命令的摘要”),因为man
用于less
显示文本,所以我点击s
将文本保存到文件中。
当我在 emacs 或 vi 中打开文件时,出现不需要的 ctrl+h,并且某些字符出现不需要的重复。这是为什么?如何正确保存“less命令摘要”?
为什么将输出重定向man less
到文件没有问题?
谢谢。
答案1
这可以追溯到 70 年代的电传打字机(ttys!)。
发送X<backspace>X
(^H
作为 ASCII BS 字符)到电传打字机,使其写入 X,返回一个字符并在其自身之上再次写入 X。它被写了两次,使它看起来像大胆的。
类似地,对于下划线,你可以写_<backspace>X
它会写X
在下划线 X̲
。
roff
,所使用的排版系统man
是 70 年代为 Unix 编写的第一批系统之一,因为这就是 Unix 作者获得资金的方式。
man
在电传打字机上使用then 会将这些序列发送为粗体和下划线。
电传打字机很快就被阴极射线管终端所取代。在那里,BS 字符只是向后移动光标,并且字符覆盖下面的字符。
所以发送X<backspace>X
或_<backspace>X
那里只是显示X
。 CRT 的屏幕空间也有限(与电传打字机中的纸张相反),因此寻呼机就像more
出生一样。
寻呼机得到了增强,可以理解这些X<BS>X
序列并使用相应的转义序列告诉终端显示粗体或下划线。
如今寻呼机,包括more
、less
、most
,w3m
仍然可以理解这些序列。
man
当输出发送到寻呼机时,仍然使用它们显示粗体或下划线。
当man
(至少某些实现)检测到输出没有发送到终端时,它不会调用寻呼机并且不会使用这些序列,这就是为什么当您重定向到文件时看不到它们的原因。
如果你想删除这些序列,可以使用该col -b
命令。