将信息页转换为手册页

将信息页转换为手册页

我被邀请以较少的意见重新发布这个提问,所以如果它看起来很熟悉,那就是原因。

如何将信息页转换为手册页?我曾经有一个 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

相关内容