我被邀请以较少的意见重新发布这个提问,所以如果它看起来很熟悉,那就是原因。
如何将信息页转换为手册页?我曾经有一个 shell 单行程序,可以将整个信息文档平铺为一个平面页面,适合使用 less 进行导航,但我似乎已经失去了它。如果您知道如何做到这一点,请分享。:)
谢谢!
答案1
这将输出info
为平面文本文件:
info --subnodes --output=info_file.txt info_file
例如:
info --subnodes --output=info.txt info
less info.txt
一句话:
info --subnodes --output - info_file | less
答案2
上面的脚本不太管用。对于普通的手册页,它会陷入无限递归;在命令行上不太好。当它调用“man”命令时,它必须确保它没有调用自身——如果它位于您的 PATH 中的目录中,则会出现问题。
因为我的 ~/bin 目录是在我的 PATH 中,我这样更改了“案例”列表的结尾:
*)
/usr/bin/man $@
;;
esac
我从未见过真正的“man”在 /usr/bin/man 以外的任何地方,因此这应该可行。
答案3
这里的其他答案也行得通,但我有一个更简单的选择:
info foo | less
此命令获取 的输出info
并将其通过 管道传输less
,这将使信息页的行为类似于常规手册页。它不如其他替代方案那么精确,但在大多数情况下都有效。
输出:
stefanl@host:~ $ info vi | less
File: *manpages*, Node: vim, Up: (dir)
VIM(1) VIM(1)
NAME
vim - Vi IMproved, a programmers text editor
SYNOPSIS
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
...
...
更精确但更复杂的版本是:
info ls --subnodes -o - |less
这里的其他答案要求您记住晦涩难懂的标志或对您维护的每个 Linux 系统的环境进行修改,如果您在数百个系统上拥有帐户,这种方法就不太适用了。有时,您将处于一个没有自定义环境的系统上,而且info foo | less
很容易记住。
答案4
我不想改掉输入“man”的习惯所以我最终使用 Dennis Williamson 的答案编写了一个包装器。
内容〜/ bin / man:
#!/bin/bash
case $1 in
info-*)
page=$(echo $1 | sed -e s/info-//g)
tmpfile="/tmp/info2man-$page.txt"
info --subnodes --output=$tmpfile $page \
&& less $tmpfile \
&& rm -f $tmpfile
;;
*)
man $@
;;
esac
用例
man sed
# learn the sed man page isn't adequate
man info-sed