我是在 shell 中工作的新手,这些命令的使用似乎是随意的。有没有原因一个标志有一个破折号而另一个可能有双破折号?
psu*_*usi 138
单个连字符后可以跟多个单字符标志。双连字符作为单个多字符选项的前缀。
考虑这个例子:
tar -czf
Run Code Online (Sandbox Code Playgroud)
在这个例子中,-czf
指定了三个单字符标志:c
,z
,和f
。
现在考虑另一个例子:
tar --exclude
Run Code Online (Sandbox Code Playgroud)
在这种情况下,--exclude
指定名为 的单个多字符选项exclude
。双连字符的歧义消除命令行参数,以确保tar
将其解释为exclude
而非的组合e
,x
,c
,l
,u
,d
,和e
。
mul*_*laz 23
这一切都取决于程序。通常“-”用于“短”选项(一个字母,-h),“--”用于“长”(er)选项(--help)。
通常可以组合短选项(因此“-h -a”与“-ha”相同)
在类 Unix 系统中,ASCII 连字符减号通常用于指定选项。该字符通常后跟一个或多个字母。一个单独的连字符减号本身没有任何字母的参数通常指定程序应该处理来自标准输入的数据或将数据发送到标准输出。在某些程序中使用两个连字符减号 ( -- ) 来指定使用更具描述性的选项名称的“长选项”。这是 GNU 软件的一个共同特点。
小智 10
这真的是一个约定。但是,它可以帮助解析器更有效地了解传递给程序的选项。此外,还有一些简洁的实用程序可以帮助解析这些命令,例如帮助解析程序参数的getopt(3)
非标准命令getopt_long(3)
。
这很好,因为我们可以组合多个简短的选项,正如其他答案所说,例如tar -xzf myfile.tar.gz
.
如果有一个“丽莎”的说法ls
,有可能会具有不同的意义键入ls -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
Run Code Online (Sandbox Code Playgroud)
如果我们允许带有单破折号的长选项,则会导致歧义。为了解决这个问题,我们对长选项使用双破折号。
归档时间: |
|
查看次数: |
54312 次 |
最近记录: |