我想使用 将mc
手册页重定向到一个文本文件man mc > mc
,但我不小心执行了man mc > mc grep
。结果是一个名为的文本文件mc
,其中包含两个连接的mc
手册页。
然后我尝试man ls > 1 abc
了,这导致名为1
包含ls
手册页的文本文件和终端中的错误消息:No manual entry for abc
.
接下来我尝试了man du > du ls tac
。我期望三个串联du
的手册页,但实际结果是一个名为的文本文件,其中包含,和串联du
的手册页。du
ls
tac
为什么每个命令都会产生它所产生的结果?
这与 Bash 手册中相对晦涩的部分一致,该部分在Shell Grammar部分下说明:
(强调我的。)
这意味着您可以将任何重定向与命令及其参数“混合”。
例如,
echo > world hello
等价于echo hello > world
。换句话说,当你运行类似的命令时
man du > du ls tac
,它相当于运行:这三个联机帮助页最终都连接到一个名为的文件中,这是其输出被重定向或管道传输时行为
du
方式的结果man
:它将不再尝试使用分页器,并且本质上将像cat
.仅供参考/好奇:
我知道我没有回答您的问题,但如果您需要重定向手册页的内容,您可以使用 col(1)
man 1 col | col -b -x > manfile.foo