在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
#!/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的目录中搜索了,没有中文帮助时,就会给出英文的
#———————————————————
# 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了
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
见: http://forum.ubuntu.org.cn/viewtopic.php?t=12816&start=0&postdays=0&postorder=asc&highlight=
今天专门上网搜了下,发现原来是因为Ubuntu默认没有装manpages-dev,而函数都在这个包里,把这个安装上,果然就能用man来查函数了。
还有一个manpages-zh,是中文的帮助,把这个安装包装上,再改些配置就能看到中文的帮助了。
首先,编码要改为utf8的,又是这该死的编码问题……用下面这个脚本(网上一搜都是一样的,应该是Ubuntu中文论坛中eexpress写的),随便存成个.sh文件,比如:chman.sh,然后在当前目录下执行 sudo sh ./chman.sh
#!/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的目录中搜索了,没有中文帮助时,就会给出英文的
#———————————————————
# 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了
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
见: http://forum.ubuntu.org.cn/viewtopic.php?t=12816&start=0&postdays=0&postorder=asc&highlight=