即便你已经用过一段时间的 Linux,并且已经熟悉了一些 Linux 命令,Linux 的命令行仍会让你觉着望而生畏,但其实对大多数的 Linux 命令而言,Linux 自带的使用手册就可以告诉你如何使用它,可以随时查询,学会查阅 Linux 使用手册,就会发现 Linux 命令其实并没有那么可怕;本文所有例子均在 Ubuntu 20.04 下通过,本文适合初学者阅读。
Linux 命令的使用手册
-
Linux 下有一个
man
命令,用于显示 Linux 下各种命令、实用程序和系统调用的使用手册页,是 Linux 下一个非常强大的工具; -
man
是 Manual 的缩写,也就是手册的意思; -
使用
man
命令查阅 Linux 命令的使用方法非常容易,大多数的 Linux 命令都可以使用 man 命令获得其使用方法; -
比如使用
man mkdir
便可以轻易地查看命令mkdir
的使用方法: -
man
命令本质上就是一个手册阅读器,当您键入man 命令名称
后,它会检索并显示该命令的手册页,手册页中包含如何使用该命令的全面详细信息,包括所有可用的选项和标志; -
man
命令本身也是有手册页的,你可以试一下man man
命令试一下; -
但是也不是所有的命令都可以使用 man 命令查看使用手册,比如:
man alias
并不会看到命令alias
的使用手册; -
这些命令的使用方法通常可以使用
"命令名称 --help"
获得,比如:alias --help
-
即便是有 man 手册页的命令,通常也可以使用
--help
参数获得其使用方法,通常--help
获取的使用方法比man
命令获取的使用手册要更简洁,比如前面提到过的mkdir
命令,也可以使用--help
获得命令的使用方法: -
Linux 命令在运行出错时,或者一些必须有参数才能运行但没有带参数运行时,有些命令也会打印其用法,通常只会打印出一个基本的命令格式,比如
grep
是必须要带参数的,当仅运行grep
而不带参数时,会显示其一个基本的运行格式: -
所以,有多种方法可以获得一个 Linux 命令的使用方法,最常用的是
"man 命令名称"
和"命令名称 --help"
,本文主要讨论如何使用man
命令获得 Linux 命令的使用手册。
Linux 命令格式
-
linux 命令通常遵循以下惯例:
- 以命令名称开始
- 然后是单字母选项,单字母选项是以
-
开头的单个字母,也称为短选项,用方括号[...]
表示它们是可选的,多个单字母选项在使用时可以连在一起,比如ls -lrt
与ls -l -r -t
是相同的; - 短选项之后是带参数的选项和长格式选项(简称长选项),长选项是以
--
开头的完整单词,某些长格式选项可能有可选参数,例如,[--color[=when]]
表示--color
是可选的,并且该选项可以单独存在,也可以后跟等号=
和以名称when
引用的值; - 最后是参数,是否有参数取决于命令的功能,参数通常是文件,您可能会看到
file ...
,表示:“一个或多个文件,以空格分隔”。
-
了解 Linux 命令格式可以帮助你更好地阅读命令手册。
如何使用 man 命令查阅使用手册
-
使用 man 命令显示的手册页,是有一个规范的格式的,通常主要由下面一些小节组成:
- NAME: 命令名称和命令的简短描述
- SYNOPSIS: 命令的语法格式
- DESCRIPTION: 命令功能的详细描述,可使用的选项以及选项的作用描述
- EXAMPLES: 命令用法的示例
- SEE ALSO: 与该命令相关的其它命令或者资源;
-
实际上并不是每个手册页都有这些小节,比如很多手册页中并没有
EXAMPLES
,有些手册页中也会多出一些另外的小节,比如man mkdir
的手册页中还有AUTHOR
和COPYRIGHT
等章节; -
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 -d1
和du -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 .
3 source 4 alias 5 bg 6 bind 7 break 8 builtin 9 case 10 cd 11 command 12 compgen 13 complete 14 continue 15 declare 16 dirs 17 disown 18 echo 19 enable 20 eval 21 exec 22 exit 23 export 24 fc 25 fg 26 getopts 27 hash 28 help 29 history 30 if 31 jobs 32 kill 33 let 34 local 35 logout 36 popd 37 printf 38 pushd 39 pwd 40 read 41 readonly 42 return 43 set 44 shift 45 shopt 46 source 47 suspend 48 test 49 times 50 trap 51 type 52 typeset 53 ulimit 54 umask 55 unalias 56 unset 57 until 58 wait 59 while -
使用
man 命令名称|col -b > 命令名称.txt
可以将一条命令的 man 手册页转换成文本文件,例如:man mkdir|col -b > mkdir.txt cat mkdir.txt
email: hengch@163.com