命令中的“-”和“--”有什么区别?

命令中的“-”和“--”有什么区别?

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

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

只是缩写吗?例如,-v意思是--verbose“大多数时候”。

答案1

这是惯例问题。POSIX 标准程序通常只有单字符选项,并且都以单个连字符作为前缀。据我所知,较长的版本是 GNU 为提高清晰度而做出的改进,通常以双连字符作为前缀。您可以在用于解析选项的库和程序中分别看到这一点 -getoptgnu-getopt。非 GNU 和非 POSIX 兼容程序可能会完全执行其他操作。请注意,您真的无法确定参数的长格式在各个程序之间是否相同。-f通常表示--force,但不表示 with 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.

GNUtar还支持多种选项样式。

从使用角度来说,如果您能确保脚本将在兼容的环境中运行,则最好在脚本中使用长选项 - 清晰度的提高在调试时是一种福音。从可移植性角度来说,最好使用短选项。

答案2

通常 - 选项可以链接在一起,就像pacman -Syu相当于pacman -S -y -u, 和 -- 选项通常采用一个参数,如./configure --prefix=/usr

相关内容