命令行选项风格
1、原始unix风格
a、命令行选项以连字符‘-‘开头,后跟单个字符表示选项,选项后面跟着取值,如:mysql -hlocalhost
b、选项不带取值的,可以组合在一起,如:sed -n -r 可以写成 sed -nr
c、偏爱小写字母,大写字母另有含义,非常简练
2、GNU风格
a、命令行选项以两个连字符‘--‘开头,后跟选项名称,选项后面使用空格或者等号 紧接着取值。
b、容易记忆,书写麻烦。
3、大多数程序是两种风格混用,两种风格都支持,前者是后者的缩写方式,如下:
mysql --host localhost 或者 mysql --host=localhost ,缩写方式为mysql -hlocalhost,注意缩写方式尽量不要再写成 mysql -h localhost,或者 mysql -h=localhost,因为这可能会存在解析困难,空格可能会认为是下一个选项,而等号可能会认为是取值的一部分。比如:
mysql -hlocalhost -uroot -p 123456,认为123456 是一个数据库,还需要输入密码。
mysql -hlocalhost -uroot -p=123456,认为密码是 "=123456",当然密码错误。
4、通过 man xxx 或者 xxx --help 我们可以看到命令的用法,会列出选项和选项的缩写方式,如mysql --help
-h, --host=name Connect to host. 前面是缩写方式,后面是描述说明。
5、一般的缩写方式是取全称的第一个字符,这就存在冲突的问题。比如:--host 与--help ,解决办法是:其中一个提供缩写方式,另外一个不提供。当然也可能提供另外一个字符,表示缩写,这个字符是大写形式或者意思相近的字符。比如:mysql 小写p是password的缩写,大写P是port的缩写。
6、对于help,一般会有三种方式,--help、-h、-?
随着时间的推移,简写方式有一些不成文的约定,如下:
-a
all(ls -a)
append
-b
set buffer/block size (du)
-d
debug
directory(ls -d)
delete
diffrent
-D
define(gcc -Dmac)
-e
execute(sed -e ‘command‘ -e ‘command1‘)
exclude
expression
-f
file(grep -f file)
force(rm -rf)
-h
header(ps)
-i
initialize
ineractive(rm -i)
-I
include(gcc -Ipath)
-k
keep(passwd, bzip, fetchmail)
kill
-l
list(ls -l)
load(gcc -llib)
-m
message(git commit -m)
-n
number(head -n 1)
-o
output(wget)
-p
port(ssh)
protocol(fetchmail)
-q
quite(make)
-r(R)
recurse(cp)
reverse(sort)
-s
slient(fetmail)
subject(mail, mutt)
size
-t
tag(vi)
-u
user(ps, fetchmail)
-v
verbose(tar, cp, cat)
version(patch)
-V
version(gcc, hostname)
-w
width(od)
warning(flex)
-x
启用调试 -d
-y
yes(yum update -y)
-z
启用压缩(bzip, tar)