学会阅读Linux手册,Linux命令就变得简单了

即便你已经用过一段时间的 Linux,并且已经熟悉了一些 Linux 命令,Linux 的命令行仍会让你觉着望而生畏,但其实对大多数的 Linux 命令而言,Linux 自带的使用手册就可以告诉你如何使用它,可以随时查询,学会查阅 Linux 使用手册,就会发现 Linux 命令其实并没有那么可怕;本文所有例子均在 Ubuntu 20.04 下通过,本文适合初学者阅读。

Linux 命令的使用手册

  • Linux 下有一个 man 命令,用于显示 Linux 下各种命令、实用程序和系统调用的使用手册页,是 Linux 下一个非常强大的工具;

  • man 是 Manual 的缩写,也就是手册的意思;

  • 使用 man 命令查阅 Linux 命令的使用方法非常容易,大多数的 Linux 命令都可以使用 man 命令获得其使用方法;

  • 比如使用 man mkdir 便可以轻易地查看命令 mkdir 的使用方法:

    Screenshot of man mkdir

  • man 命令本质上就是一个手册阅读器,当您键入 man 命令名称 后,它会检索并显示该命令的手册页,手册页中包含如何使用该命令的全面详细信息,包括所有可用的选项和标志;

  • man 命令本身也是有手册页的,你可以试一下 man man 命令试一下;

    Screenshot of man man

  • 但是也不是所有的命令都可以使用 man 命令查看使用手册,比如:man alias 并不会看到命令 alias 的使用手册;

    Screenshot of man alias

  • 这些命令的使用方法通常可以使用 "命令名称 --help" 获得,比如:alias --help

    Screenshot of alias --help

  • 即便是有 man 手册页的命令,通常也可以使用 --help 参数获得其使用方法,通常 --help 获取的使用方法比 man 命令获取的使用手册要更简洁,比如前面提到过的 mkdir 命令,也可以使用 --help 获得命令的使用方法:

    Screenshot of mkdir --help

  • Linux 命令在运行出错时,或者一些必须有参数才能运行但没有带参数运行时,有些命令也会打印其用法,通常只会打印出一个基本的命令格式,比如 grep 是必须要带参数的,当仅运行 grep 而不带参数时,会显示其一个基本的运行格式:

    Screenshot of grep

  • 所以,有多种方法可以获得一个 Linux 命令的使用方法,最常用的是 "man 命令名称""命令名称 --help",本文主要讨论如何使用 man 命令获得 Linux 命令的使用手册。

Linux 命令格式

  • linux 命令通常遵循以下惯例:

    • 以命令名称开始
    • 然后是单字母选项,单字母选项是以 - 开头的单个字母,也称为短选项,用方括号 [...] 表示它们是可选的,多个单字母选项在使用时可以连在一起,比如 ls -lrtls -l -r -t 是相同的;
    • 短选项之后是带参数的选项和长格式选项(简称长选项),长选项是以 -- 开头的完整单词,某些长格式选项可能有可选参数,例如,[--color[=when]] 表示 --color 是可选的,并且该选项可以单独存在,也可以后跟等号 = 和以名称 when 引用的值;
    • 最后是参数,是否有参数取决于命令的功能,参数通常是文件,您可能会看到 file ...,表示:“一个或多个文件,以空格分隔”。
  • 了解 Linux 命令格式可以帮助你更好地阅读命令手册。

如何使用 man 命令查阅使用手册

  • 使用 man 命令显示的手册页,是有一个规范的格式的,通常主要由下面一些小节组成:

    1. NAME: 命令名称和命令的简短描述
    2. SYNOPSIS: 命令的语法格式
    3. DESCRIPTION: 命令功能的详细描述,可使用的选项以及选项的作用描述
    4. EXAMPLES: 命令用法的示例
    5. SEE ALSO: 与该命令相关的其它命令或者资源;
  • 实际上并不是每个手册页都有这些小节,比如很多手册页中并没有 EXAMPLES,有些手册页中也会多出一些另外的小节,比如 man mkdir 的手册页中还有 AUTHORCOPYRIGHT 等章节;

  • SYNOPSIS 是有规范的,规范的详细描述见 POSIX.1-2017,这里仅做简单介绍;

    • Option(选项):

      • Option(选项)由 "-" 和紧随其后的单个字母和数字组成,下面的 "-a" 就是 Option,其 [] 表示该选项并不是必需的,是可选的;
        utility_name [-a]
        
      • 如果两个或多个选项互斥,则各选项之间用 "|" 分隔,如下所示,表示 "-a""-b""-c" 互斥,同时只能使用其中的一个;
        utility_name [-a|-b|-c]
        
    • Option-arguments(选项参数)

      utility_name [-c option_argument]   # This option_argument is mandatory
      utility_name [-f[option_argument]]  # This option_argument is optional
      
      • 上面表达式中 [-c option_argument] 表示 -c 这个选项是可选的,但是当使用 -c 这个选项时,后面必须跟选项参数 option_argument
      • [-f[option_argument]] 表示 -f 选项是可选的,当使用 -f 选项时,可以有 选项参数 option_argument,也可以没有选项参数;
      • 当选项参数是必需时,选项和选项参数之间要以空格分隔,如上面[-c option_argument];当选项参数可选时,参数和选项参数之间没有空格,如上面 [-f[option_argument]]
      • 从实践中看,大多数命令的参数和参数选项之间有空格和没有空格都是可以的,比如 du -h -d1du -h -d 1 都是可以的;
      • 如果一个选项后跟多个选项参数,选项参数之间要用 "," 或者空格分开;
      utility_name -c option_argument,option_argument2,option_argument3
      utility_name -c option_argument option_argument2 option_argument3
      
    • Operands(操作数):所有选项及选项参数后面的参数称为 Operands (操作数)

      utility_name [-a] [-b] [-c option_argument] [operand...]
      
      • "..." 表示有多个操作数;
    • 当一个命令有多个 Option(选项),而且其中有多个选项没有选项参数时,可能将这些选项合并表示,utility_name [-abc] [-p arg] [operand]utility_name [-a] [-b] [-c] [-p arg] [operand] 的含义是相同的;

    • 当一条命令的参数非常复杂时,通常会使用下面的方式表示:

      utility_name [options] [operands]
      
    • "<>" 中的内容为必选项,通常出现在 Operands(操作数)中,但其实没有任何修饰的操作数也是必选项,比如 mkdir 的手册页:

      ......
      SYNOPSIS
              mkdir [OPTION]... DIRECTORY...
      ......
      
      • 其中的 "DIRECTORY" 没有任何修饰,表明其是必选项;
    • 有时在 SYNOPSIS 中还会遇到 "()",通常只表示一种逻辑上的分组,并没有特别重要的含义;

    • 当某个命令给出多个 SYNOPSIS 行时,表明该命令有互斥的参数,以 git branch 说明这一点:

      man git branch
      ......
      git branch (-c | -C) [<oldbranch>] <newbranch>
      git branch (-d | -D) [-r] <branchname>...
      ......
      
      • 这表示 "-c | -C""-d | -D" 在功能上是两组互斥的选项,下面的使用方法是不合法的:
        git branch -c -d
        or
        git branch -c -D
        
    • 上面介绍的都是短选项的规则,长选项的规则可参照上述规则,但长选项的参数通常用 "=" 连接,比如下面两个命令是一样的,只是一个使用长选项,另一个使用短选项而已

      mkdir --mode=MODE DIRECTORY
      
      mkdir -m MODE DIRECTORY
      
  • 当在 ubuntu 下启动终端时,启动的 shell 是 bash(Bourne-Again SHell),bash 下有很多内置命令,这些内置命令没有独立的手册页,是不能使用 "man 命令名称" 来查看使用手册的,可以使用命令 "man builtins" 来查看 bash 所有内置命令的使用方法;

  • bash 的内置命令如下:

    序号命令序号命令序号命令序号命令
    1:2.3source4alias
    5bg6bind7break8builtin
    9case10cd11command12compgen
    13complete14continue15declare16dirs
    17disown18echo19enable20eval
    21exec22exit23export24fc
    25fg26getopts27hash28help
    29history30if31jobs32kill
    33let34local35logout36popd
    37printf38pushd39pwd40read
    41readonly42return43set44shift
    45shopt46source47suspend48test
    49times50trap51type52typeset
    53ulimit54umask55unalias56unset
    57until58wait59while
  • 使用 man 命令名称|col -b > 命令名称.txt 可以将一条命令的 man 手册页转换成文本文件,例如:

    man mkdir|col -b > mkdir.txt
    cat mkdir.txt
    

email: hengch@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whowin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值