我是刚开始使用Shell的人,这些命令的用法似乎是任意的。是否有一个原因一个标志有一个破折号而另一个标志可能有一个双破折号?
我是刚开始使用Shell的人,这些命令的用法似乎是任意的。是否有一个原因一个标志有一个破折号而另一个标志可能有一个双破折号?
Answers:
单个连字符后可以跟多个单个字符标志。双连字符为单个多字符选项加上前缀。
考虑以下示例:
tar -czf
在这个例子中,-czf
指定了三个单字符标志:c
,z
,和f
。
现在考虑另一个示例:
tar --exclude
在这种情况下,请--exclude
指定一个名为的单个多字符选项exclude
。双连字符的歧义消除命令行参数,以确保tar
将其解释为exclude
而非的组合e
,x
,c
,l
,u
,d
,和e
。
cdrecord
几年前在上面的评论中提到的那样。
这完全取决于程序。通常,“-”用于“短”选项(一个字母,-h),“-”用于“长”(er)选项(-帮助)。
短选项通常可以组合使用(因此“ -h -a”与“ -ha”相同)
在类Unix系统中,ASCII连字符减号通常用于指定选项。该字符通常后跟一个或多个字母。一个单独的连字符减号(不带任何字母)的参数通常指定程序应处理来自标准输入的数据或将数据发送到标准输出。在某些程序上,使用两个连字符-减号(-)指定“长选项”,其中使用了更具描述性的选项名称。这是GNU软件的常见功能。
这确实是一个惯例。但是,它可以帮助解析器更有效地了解传递给程序的选项。此外,还有一些精巧的实用工具可以帮助解析这些命令,例如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
。