Linux下的编程实践中,man手册页的作用是不可小视的,每一个高效的Linux程序员必然往往也具备快速的通过man手册页找到所需文档的能力。本文是一些关于man手册使用中的一些小技巧总结。
Intro页面和大致分类
man页面大概可以分为9大类,类目的名字再每一个具体的man手册的顶部都会有一个括号加数字的方式标出来,譬如snprintf
函数的man就显示为PRINTF(3)
,这里的3就表明它位于第三个大类中。
每一个大类都有一个对应的Intro页面来介绍本类手册页所涵盖的大致内容,可以通过man -s 2
之类的方式查看。具体的分类如下:
- 系统命令
- 系统调用,一般是对应的C封装函数;所有系统调用的函数在调用发生时都会进入内核空间执行
- 各种库函数手册,例如glibc,pthread库API等,如果是非C库,则会标注出对于的链接选项
- 特殊设备文件,例如zero, mem等
- 文件格式手册,描述Linux支持的各种文件系统以及对于的C接口结构,如vfat/iso
- 游戏程序文档
- 其它的各种各样不在前边分类的文档(8/9除外)
- 系统管理员命令,一般仅供root用户使用,如cron/useradd等
- Linux内核相关部分的手册,一般情况很少用到,这一节就没有
intro
介绍页
如果同名的命令或者函数在多个部分出现,可以用-s x
的方式指定某一部分,或者也可以用-a
选项遍历所有的匹配手册页。譬如,read
就在3个部分都有手册页,分别对应系统shell命令,系统调用和posix定义的shell命令集。
Socket部分
socket的基本API大多是通过系统调用的方式提供的,但是在第7部分,有专门的一节关于socket的介绍文档。前者侧重于系统调用API的说明,而后者则提供整个socket接口,API用法,以及一些选项参数的详细说明。
还有一些类似的命令也有这种分为两个部分的情况,很多时候可以结合两者来获取更多详细的信息。譬如tcp/ip等协议栈的介绍。有些第三方库也可能采用类似的man页面安排,如zeromq的文档,就分布在第三和第七部分,分别用于描述接口API和一些基本原理介绍。
内置命令
shell内置的一些命令和工具都在第一部分中;譬如which
,ls
,cp
等常用的shell操作命令。对于Linux常用的核心命令工具集,可以用info coreutils
来查看,
info工具的操作方式类似于Emacs,熟悉Emacs的话操作起来也想当方便。其中对于不同的工具,又有不同的子部分分别列出;当然也可以用对应的命令到man中查看。
shell变成语言本身的命令解释也在第一部分中。shell的语法描述在man bash
页中有详细的阐述。关于条件检测语句的用法在test页中有详尽的解释。
type命令可以显示出参数对应的命令名字的详细信息,譬如type awk
会给出awk程序在系统中的详细位置。
awk/sed/grep/regex
分页工具和彩色显示
Linux下默认是用less工具来查看man输出的,如果不习惯less的浏览方式,也可以替换为其它的分页工具(man pager
)。如果系统上的默认page工具不是less,也可以通过管道重定向来用less查看。
color相关的环境变量设置
如果希望man的输出是带有不同颜色标记色块的格式,可以通过修改一些环境变量来控制终端输出显示(放在.bashrc):
most
most是一个漂亮的page工具,可以通过系统的包管理器安装(apt-get install most
)。需要注意的是,其操作方式中的某些快捷键采用了Emacs风格,但是也可以用空格来翻页。
update-alternatives
如果需要修改默认的page工具,在Debian以及衍生发行版上,可以使用 update-alternatives
工具来修改默认的系统工具程序:
1 2 3 4 5 6 |
|
第二个命令会给出当前的系统可用工具,并用 * 表示当前的选择,如:
1 2 3 4 5 6 7 8 9 |
|
然后会交互提示用户去选择一个,默认则是仅保留当前的选项。
Window管理器
Linux多终端操作方式下,合适的多窗口管理器能带来效率的极大提升。从最简单古老的screen到负责的tmux等等都可以满足不同口味的要求;但是大致是都可以满足一下的条件:
- 不用鼠标的操于,仅仅通过键盘快捷键在多个窗口之间切换
- 快速调整子窗口的大小
- 保留状态
- 灵活的配置文件,可以方便定制
Tmux是个不错的窗口管理工具,其中的窗口快捷键调整大小的方法非常有利于脱离鼠标,从而大大提高生产率。