联机手册页manpages是*NIX用户必不可少的参考文档,apropos(1)可以用于查找手册页的名字和介绍;或者通过导入脚本/etc/bash_completion,可以使用制表键的自动补全功能来列出手册页清单。

这里我自己也写了个比较山寨的索引工具来查找man手册。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
TMP1="/tmp/manindex1.$$"
TMP2="/tmp/manindex2.$$"
 
echo "#     Online Reference Manuals Index" >> $TMP1
echo "# type Enter to see the manual of entry you selected" >> $TMP1
echo "# type q to quit" >> $TMP1
SEC=`echo $1 | grep "^[1-9]$"`
 
for DIR in `manpath | sed 's/:/ /g'`;do
    case $1 in
        [1-9]) ls $DIR/man$1 2>/dev/null ;;
           '') ls $DIR/man* | grep -v "/" ;;
            *) find $DIR -regex .*$1[^$/]+$ -exec basename {} ;;;
    esac  | sed 's/.gz$//g;s/.[n0-9][a-z]*$//g' >> $TMP2
done
 
cat $TMP2 | grep -v '^[s]*$' | sort | uniq >> $TMP1
vim "+syntax on" "+set filetype=conf nonu noma" "+map q :q!<CR>" "+map <CR> :!man $SEC <cWORD><CR><CR>" $TMP1
rm -f $TMP1 $TMP2

 

程序用vim显示匹配的man手册条目列表,移动光标到相应条目,键入回车即可跳转到对应的man命令查看页,键入q退出程序。

用法:

manindex [正则表达式 或者 章节号]

把上面的脚本以manindex为名字保存放到你的PATH中并设置执行属性后,可以在你的vimrc中加入

set keywordprg=manindex

这样在使用vim时,就可以随时用K查看对应的关键字看都有可供参考的联机手册了。

下图为执行"manindex 7"的结果,它显示了man手册第7章节所能找到的所有条目:

 

说明:

  1. 不带参数直接执行此脚本,显示所有条目;
  2. 参数为1-9之间的数字,显示系统中对应章节的所有条目;
  3. 参数数为正则表达式,显示匹配的条目(不支持^和$);

不完善的地方:

未知章节号时,按默认方式执行man。例如我执行"manindex mkdir"的话,显示的mkdir条目只能跳转到"man mkdir"。而实际上有mkdir(1)和mkdir(2)两个不同章节的条目。以后会提供条目对应的章节。可以选择使用"man 1 mkdir"还是"man 2 mkdir"