![`lxc exec` 中的双连字符起什么作用](https://linux22.com/image/893083/%60lxc%20exec%60%20%E4%B8%AD%E7%9A%84%E5%8F%8C%E8%BF%9E%E5%AD%97%E7%AC%A6%E8%B5%B7%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8.png)
一些教程(例如入门在 linuxcontainers.org 上)建议在 LXD 容器内运行程序时使用双连字符 ( --
) lxc exec
,例如
$ lxc exec my-container -- apt update
我怀疑--
告诉lxc exec
将提供的标志传递给程序,因为例如lxc exec my-container apt list --upgradable
失败
error: flag provided but not defined: --upgradable
但是,我找不到有关此问题的任何文档。有人可以确认或澄清它是否确实如此吗?
--
另外,我还看到人们在不同地方使用它的例子,例如:
$ lxc exec my-container apt -- list --upgradable
$ lxc exec my-container apt list -- --upgradable
有什么不同?
答案1
部分内容与以下内容重复双破折号是什么意思。
您问了一个有趣的问题,lxc
所以让我来回答。在您的两个示例中,两个实例都--
告诉lxc
不要解释该点之后的选项。在这种情况下,不同的定位是无关紧要的。但是,由于您正在容器中运行命令行,因此您可能希望将其用作该命令行的一部分。考虑以下内容:我创建了一个包含行的--
文件。容器中运行以下命令:/tmp/bar
--foo
root@myContainer:~# echo "here is --foo" >/tmp/bar
root@myContainer:~# echo "this line has no double dash" >> /tmp/bar
root@myContainer:~# cat /tmp/bar
here is --foo
this line has no double dash
root@myContainer:~# exit
现在我要使用 来搜索grep
。我需要让grep
大家知道 是--
搜索模式的一部分,而不是 的选项grep
:
$ lxc exec myContainer -- grep -- --foo /tmp/bar
here is --foo
如果我使用单个,--
它会被命令行消耗lxc
,并且我会收到错误:
$ lxc exec myContainer grep -- --foo /tmp/bar
grep: unrecognized option '--foo'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.