我被邀请以较less的意见重新发表这个问题,所以如果看起来很熟悉,那就是为什么。
如何将信息页转换成手册页? 我曾经有一个shell,将整个信息文档压平成一个单一的页面,适合用较less的浏览,但我似乎已经失去了它。 请分享,如果你知道如何做到这一点。 🙂
谢谢!
这将输出一个平面文本文件的信息:
info --subnodes --output=info_file.txt info_file
例如:
info --subnodes --output=info.txt info less info.txt
上面的脚本不起作用。 对于正常的手册页,它进入无限recursion; 在命令行上不愉快。 当它调用“man”命令时,必须确保它不是自己调用 – 如果它位于PATH中的目录中,这是一个问题。
由于我的〜/ bin目录在我的PATH中,所以我改变了“case”列表的末尾,
*) /usr/bin/man $@ ;; esac
我从来没有见过真正的“男人”,而是/ usr / bin / man,所以这应该工作。
这里的其他答案将工作,但我有一个更简单的select:
info foo | less
这个命令获取info的输出,并通过lesspipe道,这将使信息页面的行为类似于一个普通的手册页。 它不像其他select那样精确,但是在大多数情况下都能工作。
输出:
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 info foo | less将会很容易记住。
我不想摆脱“男人”的习惯,所以我最终用丹尼斯·威廉姆森的回答写了一个包装。
目录〜/ bin / man:
#!/bin/bash case $1 in info-*) page=$(echo $1 | sed -es/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