日期:2014-05-16  浏览次数:20691 次

linux 下 man的使用
在Linux下写程序,遇到一个函数不知道怎么用就得上网去查,没有类似MSDN之类的软件,烦得很。看到网上很多人都说用man很方便,只要man一下你想了解的函数就行了,可我在man之后什么都得不到,比如 man printf,结果就是没有入口(No manual entry for printf)

今天专门上网搜了下,发现原来是因为Ubuntu默认没有装manpages-dev,而函数都在这个包里,把这个安装上,果然就能用man来查函数了。

还有一个manpages-zh,是中文的帮助,把这个安装包装上,再改些配置就能看到中文的帮助了。

首先,编码要改为utf8的,又是这该死的编码问题……用下面这个脚本(网上一搜都是一样的,应该是Ubuntu中文论坛中eexpress写的),随便存成个.sh文件,比如:chman.sh,然后在当前目录下执行 sudo sh ./chman.sh

QUOTE:
#!/bin/bash

for k in /usr/share/man/zh_CN/*/*.gz; do

echo $k

j=`echo $k | sed “s/\.gz$//”`

gunzip $k

iconv -f gb18030 -t utf8 $j > tmp

mv tmp $j

gzip $j

done


这时就可以用

man -M /usr/share/man/zh_CN printf

来查看printf的中文帮助了。

每次都输入这么长的命令实在是太烦了,网上有两种方法

1. alias cman=’man -M /usr/share/man/zh_CN’

重命名一下,在这个终端中就能用cman来查看中文帮助了。把这一行加入到/etc/bash.bashrc中去,以后就都能在终端中用cman了,不过还有很多没有中文的帮助,就还得用man了。加到/etc/profile中却还是不能在终端中运行,但用ctrl+alt+F1切换到Shell中却能用了,不明白是什么原因…

2. 改/etc/manpath.config文件,在/usr/share/man前面加上/usr/share/man/zh_CN,即把AMNPATH_MAP这段改成如下所示,这样man就会先在zh_CN的目录中搜索了,没有中文帮助时,就会给出英文的

QUOTE:
#———————————————————

# set up PATH to MANPATH mapping

# ie. what man tree holds man pages for what binary directory.

#

# *PATH* -> *MANPATH*

#

MANPATH_MAP /bin /usr/share/man/zh_CN /usr/share/man

MANPATH_MAP /usr/bin /usr/share/man/zh_CN /usr/share/man

MANPATH_MAP /sbin /usr/share/man/zh_CN /usr/share/man

MANPATH_MAP /usr/sbin /usr/share/man/zh_CN /usr/share/man

MANPATH_MAP /usr/local/bin /usr/local/man

MANPATH_MAP /usr/local/bin /usr/local/share/man

MANPATH_MAP /usr/local/sbin /usr/local/man

MANPATH_MAP /usr/local/sbin /usr/local/share/man

MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man

MANPATH_MAP /usr/bin/X11 /usr/X11R6/man

MANPATH_MAP /usr/games /usr/share/man/zh_CN /usr/share/man

MANPATH_MAP /opt/bin /opt/man

MANPATH_MAP /opt/sbin /opt/man


现在仅仅知道了怎样查函数,Linux下应该还有很多方便写程序的工具的,可惜都不知道。唉,所谓工欲善其事,必先利其器,只是连有啥器都不知道,所以说Linux下写程序还是很不爽

最后写上点man的小用法,一般只需直接man+所查命令,但有相同命令时,man出来的结果很可能不是想要的,可以先用man -f 查询,然后用man+数字+命令名查询。程序函数一般可以用man 2+函数名查到,如直接man open出来的并不是open()函数的帮助,发现有俩open,第二个是找开文件,这时就可用man 2 open了

QUOTE:
lik@lik-laptop:~$ man -f open

open (1) - start a program on a new virtual terminal (VT).

open (2) - open and possibly create a file or device

lik@lik-laptop:~$ man 2 open

-------------------------------
man tar
man bzip2