引入
Linux下使用
ls --help
或者
man ls
以后者为例,查看ls命令说明如下
其中有几个要点:
- LS(1)的1是什么
- SYNOPSIS的语法格式具体含义
- Description中同时出现-a,–all是何含义
下面来一一解读,重点是SYNOPSIS。
LS(1)
Linux将支持的命令归类到不同的section,不同的section有自己的序号,可见官网说明:man-pages
section number | description |
---|---|
1 | User commands; man-pages includes a small number of Section 1 pages that document programs supplied by the GNU C library. |
2 | System calls documents the system calls provided by the Linux kernel. |
3 | Library functions documents the functions provided by the standard C library. |
4 | Devices documents details of various devices, most of which reside in /dev. |
5 | Files describes various file formats and filesystems, and includes proc(5), which documents the /proc file system. |
7 | Overviews, conventions, and miscellaneous. |
8 | Superuser and system administration commands; man-pages includes a small number of Section 8 pages that document programs supplied by the GNU C library. |
一般来说,我们使用的命令基本都是Section 1下的,有时需要去特定section下查看命令(不同section下有同名命令),也可以带此参数,e.g.
man 2 read
SYNOPSIS
synopsis: 大纲,概要。
在描述命令行参数的时候,其格式有约定俗成的写法,各系统之间也有差别。一般采用的格式如下:
命令 <必选参数1|必选参数2> [-option {必选参数1|必选参数2|必选参数3}] [可选参数...] {(默认参数)|参数|参数}
命令格式中常用的几个符号含义如下:
section number | description |
---|---|
尖括号< > | 必选参数,实际使用时应将其替换为所需要的参数 |
花括号{ } | 必选参数,如果内部参数用 |
方括号[ ] | 可选参数,在命令中根据需要加以取舍 |
小括号( ) | 指明参数的默认值,只用于{ }中 |
竖线| | 用于分隔多个互斥参数,含义为“或”,使用时只能选择一个。 |
省略号… | 可使用多个参数 |
参考:命令行语法格式及特殊字符
下面举例来说明
ls
- 1代表User commands,用户命令
- OPTION是可选的(方括号),即可以不加,直接使用ls,如
ls 1.txt
- 后面的省略号表示可以多个参数同时使用(这里的省略号在方括号外面,没关系,大同小异),如
ls -al 1.txt
其中的-a,-l含义下方有说明:
- [FILE]指的是文件(夹)名,也是可选项,可以没有,也可以多个同时出现。
注,ls不加文件名则默认list当前路径下的文件
git commit
- 1代表User commands,用户命令
SYNOPSIS部分比较详细,每个参数可选项都已指明,而不是抽象的OPTIONS。 - [ ]的参数表示可选项,e.g.
-a
- < >:的参数表示必须写。e.g.
[-F <file> | -m <msg>]
即虽然本项整体是可选的,但是一旦使用,则只能使用-F或者-m其中一个参数,如果使用-F则必须加上< file >参数(应该是文件名),如果使用-m参数,则必须要加上< msg >提交信息。
- { }:的参数表示至少选择一个.e.g.
[(-c | -C | --fixup | --squash) < commit >)]
-a,–all
简而言之,二者等效。详见:Linux命令长选项"–“和短选项”-“和没有”-"选项区别(选项的单双连字符’-‘和’–'区别)
这里看到很有意思的一点:
- 之所以长选项要用两个横杠–来作为前缀,是因为为了区分多个短选项和一个长选项的
tar -vxf
如果长选项也用一个横杠来作为前缀,那么这个vxf就有歧义了。
- 不是所有以单杠开头的多字母字符串都是单选项组合,如
find -name -fstype
我的猜测:从技术上看,只要在该命令(可以看作命名空间)下,不引起歧义即可(单选项无论怎怎么组合凑不出长选项单词),长选项同样可以"-"开头。
大多数命令遵循这一规范应该是约定俗称的做法。