Shell命令中的双破折号是什么意思? |
您所在的位置:网站首页 › 破折号表示什么意思该怎么读才正确 › Shell命令中的双破折号是什么意思? |
1. 概述
在本教程中,我们将研究双破折号在 shell 命令中的使用。我们将看看它的作用以及何时需要它。 2. 它有什么作用?**shell 命令中的双破折号表示选项结束并禁用进一步的选项处理。**让我们使用grep 命令来看看这一点 。 想象一个场景,我们想 在文件data.txt中搜索hello的出现: $ grep hello data.txt此命令输出指定文件中所有出现的字符串hello。但是,如果我们想要查找所有出现的“–hello”而不是hello怎么办? 如果我们使用相同的方法,我们会收到一个错误: $ grep "--hello" data.txt grep: unrecognized option '--hello'这是因为grep将“–hello”视为多字符命令选项。为了克服这个问题,我们需要使用双破折号 (–)。后面的任何内容都将被视为位置参数: $ grep -- --hello data.txt 3. 什么时候需要?**每当我们的非选项参数以连字符开头时,我们都需要使用双破折号。**如果我们不终止选项处理,命令将尝试将非选项参数解释为选项,并且很可能会失败。 我们已经看到当我们为 grep提供以连字符开头的模式时会发生什么。不过,这并不总是那么明显。 有时,我们无法完全控制参数。例如,可以使用环境变量将参数提供给命令: $ grep $PATTERN data.txt如果环境变量PATTERN内容为“–hello”,则grep命令会将模式视为命令选项,并失败。相反,我们应该使用双破折号: $ grep -- $PATTERN data.txt我们在删除文件时 也会遇到类似的情况。例如,假设我们有一个充满文本文件的文件夹。我们可以使用带有通配符的rm删除它们 : $ rm *.txt但是,如果任何文件名以连字符开头,则该命令将失败,因为该文件名将被视为命令选项。为了解决这个问题,我们必须使用双破折号: $ rm -- *.txt 4. 并非所有命令都支持不幸的是,并非所有命令都支持双破折号功能。 例如,让我们看一下 Bash 中的echo 命令。如果我们想 使用 echo输出字符串“-n”,我们可以尝试使用双破折号来终止选项处理: $ echo -- "-n" -- -n与 Bash 捆绑的echo版本也将输出双破折号。但是,如果我们尝试在没有双破折号的情况下运行该命令,我们将不会收到可见的输出。这是因为“-n”被视为一个选项,指示echo 不要打印尾随的换行符。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |