简介

man命令,是manual的缩写,manual表示手册的意思。通过man命令,可以查询大多数shell外部命令的帮助手册。

语法格式

# man [[section] page ...] ...

命令行的section我们理解为章节,page就是我们待查询帮助的命令名称。

比如我们想知道man命令自己的帮助手册。

[root@C7 ~]# man man

这个只是最简单的语法格式,详见man手册。

章节

同一个命令的帮助手册有多个章节。当一个命令在多个章节下都有man手册的时候,其查找机制和命令在环境变量PATH中的查找机制类似,会有一个事先定义好的查找顺序,找到第一个man手册之后,就退出查找,将其显示出来,不再查找后续的man手册。

章节是以ID的形式来体现的。章节ID及其对应的含义如下:

  • 1 可执行的程序或者shell命令
  • 2 系统调用(内核所提供的函数)
  • 3 库调用(程序库所提供的函数)
  • 4 特殊文件(通常在/dev目录下)
  • 5 配置文件(例如/etc/passwd)
  • 6 游戏
  • 7 杂项(包含宏包和约定),例如man(7)和groff(7)
  • 8 系统管理员命令(通常仅供root使用)
  • 9 内核例程【非标准】

例如

[root@C7 ~]# man 1 passwd
[root@C7 ~]# man 5 passwd

段落

在每个具体的man手册内部中,也可以有多个section,这里的section我们理解为段落。

常见的段落有:

  • NAME:简要描述信息。
  • SYNOPSIS:语法格式。
  • DESCRIPTION:详细描述信息。
  • OPTIONS:选项说明。
  • EXIT STATUS:命令执行返回的退出码。
  • ENVIRONMENT:相关的环境变量。
  • BUGS:如果命令存在BUG,如何反馈给官方。
  • EXAMPLE:示例。
  • AUTHORS:作者。
  • SEE ALSO:命令的扩展信息,一般一个命令会涉及到多个其他的命令或者机制,需要补充了解的信息,会在该段落中说明。

man文本样式

在SYNOPSIS中,会有一些文本样式,它们有各自不同的含义,并且适用于其他的段落:

  • bold text:粗体字,表示不可替换的固定值。
  • italic text:斜体字,但是一般在终端上,它会显示为下划线字体,表示替换为合适的参数。
  • [-abc]:中括号中的表示都可选。
  • -a|-b:表示二选一,不可以同时使用。
  • argument ...:表示参数可重复。
  • [expression] ...:表示整个表达式可重复。
man  [-C  file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I] [--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p string] [-t]  [-T[device]]  [-H[browser]]  [-X[dpi]]  [-Z]  [[section] page ...] ...

例如从上面的man语法中我们可以看出,man命令是可以不带选项不带参数执行的。

[root@C7 ~]# man
What manual page do you want?

常用选项

  • -f, --whatis:详见whatis(1)。
  • -k, --apropos:详见apropos(1)。

他们都是用于查找命令有哪些相关的章节,以及各自章节的含义。从结果来看-k相对来说搜索的结果更多一点。

[root@C7 ~]# man -f passwd
passwd (5) - password file
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
[root@C7 ~]# man -k passwd
chpasswd (8) - update passwords in batch mode
fgetpwent_r (3) - get passwd file entry reentrantly
getpwent_r (3) - get passwd file entry reentrantly
gpasswd (1) - administer /etc/group and /etc/gshadow
grub2-mkpasswd-pbkdf2 (1) - Generate a PBKDF2 password hash.
kpasswd (1) - change a user's Kerberos password
lpasswd (1) - Change group or user password
lppasswd (1) - add, change, or delete digest passwords.
pam_localuser (8) - require users to be listed in /etc/passwd
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
passwd (5) - password file
passwd2des (3) - RFS password encryption
pwhistory_helper (8) - Helper binary that transfers password hashes from passwd or shadow to opasswd
saslpasswd2 (8) - set a user's sasl password
smbpasswd (5) - The Samba encrypted password file
vncpasswd (1) - change the VNC password
  • -a, --all:默认情况下,man只会显示最优先的帮助手册。使用该选项的话,会显示所有section下符合搜索条件的帮助手册。
[root@c7-server ~]# man -a passwd
--Man-- next: sslpasswd(1ssl) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ] --Man-- next: passwd(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]

当阅读玩passwd(1)的时候,会询问我们是否继续阅读sslpasswd(1ssl)。我们可选择继续、跳过或者干脆直接退出。

  • -M path, --manpath=path:默认情况下,man使用manpath的衍生代码来判断帮助手册的搜索路径。可以通过该选项来修改默认的搜索路径。
  • -P pager, --pager=pager:帮助手册最后会通过pager显示出来,默认的pager是less -s。可以通过该选项修改。
  • -w, --where, --path, --location:不显示帮助手册的内容,而显示帮助手册源nroff文件的位置。nroff文件是帮助手册的源文件,一般是被压缩,当需要被man命令调用展示的时候再解压缩并格式化出来给我们看。
  • -W, --where-cat, --location-cat:和-w类似,只不过帮助手册不是源nroff文件,而是cat文件(应该就是纯文本了)。貌似man手册文件一般都是nroff文件格式的。
[root@c7-server ~]# man -wW passwd ps top systemd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man1/ps.1.gz
/usr/share/man/man1/top.1.gz
/usr/share/man/man1/systemd.1.gz

命令:man的更多相关文章

  1. Cmder--Windows下命令行利器

    cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令. 安装包 安装包链接 下载后,直接解压即用. 修改命令提示符λ为 ...

  2. 【每日一linux命令4】常用参数:

     下面所列的是常见的参数(选项)义: --help,-h                              显示帮助信息 --version,-V                        ...

  3. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  4. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  5. SQLServer执行命令出现“目录无效的提示”

    异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 一般都是清理垃圾清理过头了,把不该删的目录删了 网上说法: 问题描述: 1.s ...

  6. SQLServer文件收缩-图形化+命令

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 收缩前 图形化演示: 不仅仅可以收缩日记文件,数据库文件也是可以收缩的,只不过日记收缩比 ...

  7. 让 windows 下的命令行程序 cmd.exe 用起来更顺手

    在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...

  8. [版本控制之道] Git 常用的命令总结(欢迎收藏备用)

    坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...

  9. git 命令

    切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm  ...

  10. svn 常用命令总结

    svn 命令篇 svn pget svn:ignore // 查看忽略项 svn commit -m "提交说明" // 提交修改 svn up(update) // 获取最新版本 ...

随机推荐

  1. 《剑指offer》— JavaScript(28)数组中出现次数超过一半的数字

    数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超 ...

  2. java开发爬虫Deno

    java开发爬虫Deno 身为一个程序员不会两三手爬虫怎么能在行业里立足啊,这是开发中自己写的一个java爬虫的Demo,供大家参考. java爬虫的开发依赖于jsoup.jar 直接上代码 publ ...

  3. eos源码剖析之controller

    controller::block_status,区块状态枚举类,包括: irreversible = 0,该区块已经被当前节点应用,并且被认为是不可逆的.validated = 1,这是由一个有效生 ...

  4. MySQL-->高级-->001-->MySQL备份与恢复测试

  5. Oracle笔记 - unfinished

    1. plsql查看xmltype字段的xml格式时,出现中文乱码问题,可通过该字段.getClobVal():查询到的xml将是中文不乱码的. 2. extract函数查询xml某节点下的所有节点, ...

  6. bzoj千题计划215:bzoj1047: [HAOI2007]理想的正方形

    http://www.lydsy.com/JudgeOnline/problem.php?id=1047 先用单调队列求出每横着n个最大值 再在里面用单调队列求出每竖着n个的最大值 这样一个位置就代表 ...

  7. 程序员与HR博弈之:有城府的表达你的兴趣爱好

    “面试”这个过程说简单其实也能很简单.譬如急需招某种技能的单位会因为你拥有某方面的经验或特长立马录取你,哪怕你其他方面表现的很“烂”. 从广义上来讲,很多公司尤其是大中型公司的招聘,并不是因为急缺某岗 ...

  8. es6笔记(3.1)三个点的“...”的作用

    展开运算符(spread operator) ES6中"..."的作用之一是,展开运算符. 顾名思义,它的作用是把某些结合数据展开. 在Array.Object.Set和Map上都 ...

  9. MongoDB 之 数据类型 最无聊! But 最有用! MongoDB - 3

    MongoDB的新篇章开始啦 - 数据类型 https://www.cnblogs.com/xuzhaocai/p/8048177.html 一.MongoDB 之 丰富多彩的数据类型世界 首先我们要 ...

  10. Unity 网格 绘制

    网格绘制主要用是对Mesh进行操作,通过对vertex和triangles进行操作生成对应的面片: 这里首先得用到一个类:Triangulator(根据vertex生成triangles数组) usi ...