`lxc exec` 中的双连字符起什么作用

`lxc exec` 中的双连字符起什么作用

一些教程(例如入门在 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.

相关内容