在命令中,"-"和"--"有什么区别?

我经常看到单破折号-或双破折号--后面跟着Linux命令或其他已安装的Linux程序。
单破折号和双破折号有什么区别呢?
这只是缩写吗?例如,大多数情况下-v表示--verbose

可能是这个问题的重复 - user69874
2个回答

这是一个惯例问题。POSIX标准程序通常只有单个字符选项,它们都以单个连字符为前缀。根据我所知,长版本是GNU改进的清晰度,并且通常以双连字符为前缀。您可以在用于解析选项的库和程序中看到这一点 - 分别是 getopt gnu-getopt 。非GNU和非POSIX兼容的程序可能会完全做出其他操作。请注意,您无法确定参数的长形式在程序之间是否相同。 -f 通常表示 --force ,但在 apt-get install 中不是(常见误解)。 -v 可能表示版本-通常是这样,或者表示 --verbose 等等。请查看手册页面或其他文档以确保。还可以查看 getopt的Wikipedia文章。所有这些都比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,而 -- 选项通常需要一个参数,例如 ./configure --prefix=/usr