linux命令描述语法

一、使用模式


一条描述命令用法的语句叫一条使用模式
一条使用模式以“Usage:”或者“用法:”开头,如下例:

Usage: find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression]
用法:git [--version] [--help] [-C <路径>] [-c <名称>=<取值>]
          [--exec-path[=<路径>]] [--html-path] [--man-path] [--info-path]
          [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
          [--git-dir=<路径>] [--work-tree=<路径>] [--namespace=<名称>]
          [--super-prefix=<路径>] [--config-env=<名称>=<环境变量>]
          <命令> [<参数>]


 

二、元素


使用模式由元素组成
元素,英文是element
一个元素就是一个单词。


三、元素种类


(一)program 应用程序名


第一个单词是应用程序名,也可以叫命令或者全局命令
如上例中的find和git

(二)option 选项

可以分为短选项和长选项


1.short option 短选项


以-开头的单词被称为短选项
如上例中的-H
(1)短选项可以合并
-abc与 -a -b -c相同
(2)短选项可以带参数
短选项后面可以加参数,选项与参数中间可以有零个或多个空格
如,-f FILE与-fFILE相同


2.long option 长选项


以--开头的单词称为长选项
如上例中的--version
(1)长选项可以带参数
长选项后面可以带参数,选项与参数中间可以是一个或多个空格,或者是=
如,--input=ARG与--input ARG相同


因为命令有两种:program和command,也就是全局命令和子命令。所以选项也就分为全局选项和子命令选项。

全局选项对应全局命令,子命令选项对应子命令。


(三)argument 参数


1.选项参数


2.命令参数



一个参数可能有歧义
--input ARG
这个ARG是input选项的参数,还是命令的参数?

-fFile
到底是短选项的合并,还是f选项的参数?


(四)command 子命令


不是选项和参数的元素都是子命令
为什么要叫子命令,为了与program命令区分。
如,git commit -m 'message'中的commit就是子命令


总结一下,一条使用模式大概长这样:

usage: 命令 全局选项 子命令 子命令选项 参数 


四、特殊符号


因为一些历史原因,不同的命令可能使用不同的规范,我们这里介绍一种相对常见的规范。这种规范就是git命令采用的规范。


(一)元素如果没有包在<>内


要原样输入
如上例中的--help


(二)<>

必须将其替换成值。就如变量一般,需要根据情况替换成适当的值;

如上例中的<路径>
注意:有的会用斜体字或者用下划线或者用全大写,而不是<>。不过是一个意思。
 


(三)可选元素 []


在[]中的元素,说明在输入命令时可以带,也可以不带这个元素
如上例中的[--info-path]


多个元素是包在同一个[],还是分别包在不同[]内,是相同的
Usage: my_program [command --option <argument>]

Usage: my_program [command] [--option] [<argument>]
相同


(四)必须元素 ()


所有没有包在[]内的元素,都是默认必须带的
但是有时需要显式说明必须元素,包在()中的元素,说明在输入时必须带

比如一种情况是:当您需要对互斥元素进行分组时
my_program (--either-this <and-that> | <or-this>)

另一种情况是:当您需要指定如果有一个元素存在,那么就需要另一个元素
Usage: my_program [(<one-argument> <another-argument>)]
这种情况下,要么没有参数,要么有两个参数

注意:有时会用{},而不是()。不过是一个意思。


(五)互斥元素 |


使用|分隔的元素,是互斥的,也就是说只能从中选1个
如上例中的-p | --paginate | -P | --no-pager

如果必须带一个互斥元素,就应该用()包住
Usage: my_program go (--up | --down | --left | --right)

如果这个互斥元素是可选的,就用[]包住
Usage: my_program go [--up | --down | --left | --right]

不同使用模式与互斥其实是相同的
Usage: my_program run [--fast]
my_program jump [--high]
与
Usage: my_program (run [--fast] | jump [--high])
相同


(六)重复元素 ...


使用...来说明左边的元素重复一次或多次

如果指定零或多次
my_program [<file>...]
my_program [<file>]...
my_program [<file> [<file> ...]]

如果指定一次或多次
my_program <file>...

如果指定两次或多次
my_program <file> <file>...


五、具有特殊含义的字符串


(一)options


代表所有选项,包括短选项和长选项
如果my_program有全部选项如下
--all     List everything.
--long     Long output.
--human-readable     Display in human-readable format.
那么,Usage: my_program [options] <path>
就等于
Usage: my_program [--all --long --human-readable] <path>


(二)--


正常情况下--是引导长选项的;
但是当--单独出现时,它的含义是:分隔选项与参数,目的是防止出现歧义,说明这个参数是命令参数,而不是选项参数
如,my_program -f -- <参数>,说明<参数>是my_program的参数,而不是-f的参数
 


(三)-


正常情况下-引导短选项;
但是当-单独出现时,它的含义是:程序应当处理stdin标准输入,而不是文件。
如,cat -,表示显示标准输入的内容


六、选项描述


选项描述是使用模式下方的描述选项的文本
必须以-或者--开头
如,--all     List everything.


(一)同义的短选项和长选项可以写在一行


使用逗号分隔
如,
-o FILE, --output=FILE
-i <file>, --input <file>


(二)选项有参数


在选项后加参数
如,
-o FILE
--output=FILE


(三)添加描述文本


使用至少两个空格分隔选项与描述文本,防止把描述文本当成参数
如,
--verbose MORE text. 错误写法,这样容易把MORE当成选项参数
-q     Quit. 正确写法
-o     FILE Output file. 正确写法
--stdout     Use stdout. 正确写法


(四)参数的默认值


在描述文本中加入[default: <the-default-value>]可以说明参数的默认值
如,
--coefficient=K     The K coefficient [default: 2.95]
--output=FILE     Output file [default: test.txt]
--directory=DIR     Some directory [default: ./]


七、man命令


命令的手册页第一行,经常看到这样的形式:
command(1)
或者在使用命令man command时,显示如下的形式:

man cd
Man: 寻找所有匹配的手册页 (set MAN_POSIXLY_CORRECT to avoid this)
* cd (1)
cd (n)
cd (3tcl)
Man: 您需要什么手册页?
Man:


这时需要按下括号中的字符串,进入对应的手册页。


那么这个括号里的字符串是什么意思呢,通过 man man 命令就可以知道,这个数字是section,也叫章节。通过它,可以知道这个命令是什么类型的。
大多数类unix操作系统,有如下section:

0 Header files (usually found in /usr/include)
1 可执行程序或 shell 命令
2 系统调用(内核提供的函数)
3 库调用(程序库中的函数)
4 特殊文件(通常位于 /dev)
5 文件格式和规范,如 /etc/passwd
6 游戏
7 杂项(包括宏包和规范), 如 man(7),groff(7), man-pages(7)
8 系统管理命令(通常只针对 root 用户)
9 内核例程 [非标准
n tcl函数
l 数学库函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值