我正在寻找在 Linux 中仅打印目录名称的命令。我遇到了这种新颖的语法,我们可以将两个连字符相邻而不用任何单词。
ls -ld -- */
此命令以及一般 Linux 命令中的双连字符 (--) 有何含义?
答案1
“--”用于标记选项的结束,从而标记参数的开始。它告诉命令将其后面的所有内容视为参数,并且不是作为选择,即使有些事情可能看就像一个选项。这在多个命令中使用,而不仅仅是ls
.
这可以防止命令因以连字符 (-) 或两个 (--) 开头的参数(例如文件名)而阻塞,否则会导致错误(没有此类选项)或不可预测的结果(如果连字符的参数实际上是一个有效选项),因为该命令会尝试将其解释为选项(而不是参数)。
例如,假设您的参数之一是包含报纸文章的文件:
- 总统感叹,没有勾结 - Washington Post.html
前面的“--”将阻止“-No”被视为选项。
在您的示例中使用小丑 (*) 时,这一点尤其重要,因为您无法事先知道多个子目录中的所有文件中的一个或多个是否以连字符开头。