我是新手,在shell中工作,这些命令的使用似乎是任意的。 有一个原因是有一个标志有一个破折号,另一个可能有一个双破折号?
单个连字符后可以跟多个单字符标志。 双连字符前缀单个多字符选项。
考虑这个例子:
tar -czf
在这个例子中, -czf
指定了三个单字符标志: c
, z
和f
。
现在考虑另一个例子:
tar --exclude
在这种情况下,– exclude
指定一个名为exclude
的单个多字符选项。 双连字符消除了命令行参数的歧义,确保tar
解释为exclude
而不是e
, x
, c
, l
, u
, d
和e
。
这一切都取决于该计划。 通常“ – ”用于“短”选项(单字母-h),“ – ”用于“长”(er)选项(–help)。
短期期权通常可以合并(所以“-h -a”与“-ha”相同)
在类Unix系统中,ASCII连字符通常用于指定选项。 字符后面通常是一个或多个字母。 一个参数是一个单独的连字符 – 本身没有任何字母通常指定程序应该处理来自标准input的数据或发送数据到标准输出。 在某些程序中使用了两个连字符减号( – )来指定使用更多描述性选项名称的“长选项”。 这是GNU软件的一个常见function。
资源
这真是一个惯例。 但是,它可以帮助parsing器更高效地了解传递给程序的选项。 此外,还有一些简洁的工具可以帮助parsing这些命令,比如getopt(3)
或者非标准的getopt_long(3)
来帮助parsing一个程序的参数。
这是很好的,因为我们可以有多个短期选项组合,如其他答案说,像tar -xzf myfile.tar.gz
。
如果ls
有一个“lisa”的说法,那么inputls -lisa
与ls --lisa
有不同的含义。 前者是l
, i
, s
和a
参数,而不是单词。
实际上,你可以写ls -l -i -s -a
,和ls -lisa
完全一样,但这取决于程序。
还有一些程序不遵守这个惯例。 最值得注意的是我的视线, dd
和gcc
。
单短划线与双短划线的长选项短期选项
简短的选项可以合并为一个参数;
for example: ls -lrt #instead of ls -l -r -t
如果我们允许单一短划线的长期select,它会导致模糊。 为了解决这个问题,我们使用双破折号的长选项。