zoukankan      html  css  js  c++  java
  • 命令:man

    简介

    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
    
  • 相关阅读:
    DPDK安装方法 17.12.13
    numa.h:No such file or directory 解决方法
    17秋 软件工程 第六次作业 Beta冲刺 Scrum3
    17秋 软件工程 第六次作业 Beta冲刺 总结博客
    17秋 软件工程 第六次作业 Beta冲刺 Scrum2
    Paper Reviews and Presentations
    17秋 软件工程 第六次作业 Beta冲刺 Scrum1
    17秋 软件工程 第六次作业 Beta冲刺
    error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/share': Operation not permitted
    17秋 软件工程 个人作业 软件产品案例分析
  • 原文地址:https://www.cnblogs.com/alongdidi/p/linux_command_man.html
Copyright © 2011-2022 走看看