命令中“ – ”和“ – ”之间有什么区别?

我经常看到一个破折号-或双破折号--后跟linux命令或其他已安装的linux程序。

单个破折号和双破折号之间有什么区别?

它只是缩写吗? 例如, -v表示 – 大部分时间都在运行。

这是一个惯例问题。 POSIX标准程序通常只有单个字符选项,并且它们都以单个连字符为前缀。 为了清晰起见,较长的版本是GNU改进,据我所知,并且通常以双连字符为前缀。 您可以在用于解析选项的库和程序中看到这一点 – 分别是getoptgnu-getopt 。 非GNU和非POSIX兼容的程序可能完全做其他事情。 请注意,您确实不能确定参数的长forms在程序之间可能是相同的。 -f通常表示--force ,但不是apt-get install (常见的误解)。 -v可能意味着版本 – 通常,或--verbose ,等等。 检查手册页或其他文档以确定。 另请参阅关于getopt的维基百科文章 。 所有这些都超过了Linux十年或更长时间。

dd是POSIX标准实用程序的一个示例,它根本没有任何带连字符的选项。 find是POSIX标准实用程序的经典示例,它具有带单个连字符的单词选项 – 几乎所有find选项都是多个字符长。 ps支持多种选项样式:

 This version of ps accepts several kinds of options: 1 UNIX options, which may be grouped and must be preceded by a dash. 2 BSD options, which may be grouped and must not be used with a dash. 3 GNU long options, which are preceded by two dashes. 

GNU tar还支持多种选项样式。

作为一个使用问题,如果您可以确保脚本将在兼容的环境中运行,则更喜欢脚本中的长选项 – 在调试时,清晰度的提高是一种祝福。 为了便于携带,首选短选项。

通常 – 选项可以链接在一起,例如pacman -Syu等同于pacman -S -y -u , – options通常采用./configure --prefix=/usr的参数./configure --prefix=/usr