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
    
  • 相关阅读:
    HTML5(3) 拖放(Drag 和 Drop)
    HTML5(2) 画布Canvas
    HTML5(1) 介绍
    C#(99):System.IO.Path文件路径类
    SQL Server(00):逻辑函数
    SQL Server(00):删除表中的重复数据
    DevExpress03、XtraGrid(1)基本应用
    DevExpress11、TreeList
    DevExpress10、RichEditControl
    XtraEditors五、SpinEdit、TimeEdit
  • 原文地址:https://www.cnblogs.com/alongdidi/p/linux_command_man.html
Copyright © 2011-2022 走看看