skyscribe.programming.thinking

汇小流以成江海,积跬步以至千里

Linux Man手册相关小技巧

| Comments

Linux下的编程实践中,man手册页的作用是不可小视的,每一个高效的Linux程序员必然往往也具备快速的通过man手册页找到所需文档的能力。本文是一些关于man手册使用中的一些小技巧总结。

Intro页面和大致分类

man页面大概可以分为9大类,类目的名字再每一个具体的man手册的顶部都会有一个括号加数字的方式标出来,譬如snprintf函数的man就显示为PRINTF(3),这里的3就表明它位于第三个大类中。

每一个大类都有一个对应的Intro页面来介绍本类手册页所涵盖的大致内容,可以通过man -s 2之类的方式查看。具体的分类如下:

  1. 系统命令
  2. 系统调用,一般是对应的C封装函数;所有系统调用的函数在调用发生时都会进入内核空间执行
  3. 各种库函数手册,例如glibc,pthread库API等,如果是非C库,则会标注出对于的链接选项
  4. 特殊设备文件,例如zero, mem
  5. 文件格式手册,描述Linux支持的各种文件系统以及对于的C接口结构,如vfat/iso
  6. 游戏程序文档
  7. 其它的各种各样不在前边分类的文档(8/9除外)
  8. 系统管理员命令,一般仅供root用户使用,如cron/useradd等
  9. 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
update-alternatives --list pager
#/bin/less
#/bin/more
#/bin/bin/most
#/bin/bin/pg
update-alternatives --config pager

第二个命令会给出当前的系统可用工具,并用 * 表示当前的选择,如:

1
2
3
4
5
6
7
8
9
There are 4 choices for the alternative pager (providing /usr/bin/pager).

  Selection    Path            Priority   Status
  ------------------------------------------------------------
    0            /bin/less        77        auto mode
    1            /bin/less        77        manual mode
    2            /bin/more        50        manual mode
  * 3            /usr/bin/most    60        manual mode
    4            /usr/bin/pg      10        manual mode

然后会交互提示用户去选择一个,默认则是仅保留当前的选项。

Window管理器

Linux多终端操作方式下,合适的多窗口管理器能带来效率的极大提升。从最简单古老的screen到负责的tmux等等都可以满足不同口味的要求;但是大致是都可以满足一下的条件:

  1. 不用鼠标的操于,仅仅通过键盘快捷键在多个窗口之间切换
  2. 快速调整子窗口的大小
  3. 保留状态
  4. 灵活的配置文件,可以方便定制

Tmux是个不错的窗口管理工具,其中的窗口快捷键调整大小的方法非常有利于脱离鼠标,从而大大提高生产率。

Comments