“-”(双破折号)是什么意思?(也称为“裸双破折号”)


Answers:


583

更准确地说,--bash内置命令和许多其他命令中使用双破折号()表示命令选项的结尾,此后仅接受位置参数。

用法示例:假设您要为该字符串grep文件-v-通常-v将被认为是反转匹配含义的选项(仅显示不匹配的行),但是--您可以grep这样的字符串-v

grep -- -v file

3
最值得注意的是在set绝对必要的内置Bash 中。
l0b0 2012年

10
--可以将选项与正则表达式分开grep,但是规范的方法是使用-e/ --regexp
l0b0 2012年

5
@ l0b0:要搜索的模式通常是位置参数之一,因此它可以放在之后--,尽管您正确地指出我上面的示例也可以写成grep -e -v file(尽管很混乱),但它是正确的。
2015年

2
并非所有bash内置命令都接受--作为选项标记的结尾。[而且echo不要这样(原因之一是echo不能可靠地使用)。
斯特凡Chazelas


39

man bash我们可以阅读的Shell Builtin Commands部分中:

除非另有说明,否则本节中记录为接受选项的每个内置命令均以“ -accepts” -- 开头,以表示这些选项的结尾

:truefalse,和test建宏不接受选项,并没有把--特别。的exitlogoutbreakcontinuelet,和shift内建接受并处理论点开始-,而不需要--。其他接受自变量但未指定为接受选项的内建函数-将以无效选项开头的自变量解释为无效选项,并要求--阻止这种解释。

注意,这echo并不--意味着选项的结束。


2
+1用于参考man bash(下次自己注意:)。
user3773048 '18

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.