web-dev-qa-db-fra.com

Que fait le double trait d'union dans `lxc exec`

Certains tutoriels (tels que le Getting Started sur linuxcontainers.org) recommandent l'utilisation d'un double trait d'union (--) lorsque vous utilisez lxc exec pour exécuter un programme dans un conteneur LXD. , un péché

$ lxc exec my-container -- apt update

Je soupçonne que -- dit à lxc exec de transmettre les indicateurs fournis au programme, car p. Ex. lxc exec my-container apt list --upgradable échoue avec

error: flag provided but not defined: --upgradable

Cependant, je ne trouve aucune documentation sur le problème. Quelqu'un peut-il confirmer ou préciser si ce n'est pas exactement ce que cela fait?

De plus, j’ai vu des cas où les gens utilisent -- à différents endroits, par exemple:

$ lxc exec my-container apt -- list --upgradable
$ lxc exec my-container apt list -- --upgradable

Quelle est la différence?

3
Jonathan Y.

Ceci est en partie une copie de que signifie le double tiret .

Vous posez une question intéressante à propos de lxc alors laissez-moi vous répondre. Dans vos deux exemples, les deux instances de -- indiquent à lxc de ne pas interpréter les options après ce moment. Le positionnement différent dans ce cas est sans importance. Cependant, étant donné que vous exécutez une ligne de commande dans un conteneur, vous pouvez utiliser -- dans le cadre de cette ligne de commande. Considérez ce qui suit: J'ai créé un fichier /tmp/bar contenant la ligne --foo. Les commandes suivantes ont été exécutées dans le conteneur:

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

Maintenant, je vais chercher cela en utilisant grep. Je dois informer grep que le -- fait partie du modèle de recherche et non une option pour grep:

$ lxc exec myContainer -- grep -- --foo /tmp/bar
here is --foo

Si j'utilise un seul --, il est consommé par la ligne de commande lxc et j'obtiens l'erreur suivante:

$ lxc exec myContainer grep -- --foo /tmp/bar
grep: unrecognized option '--foo'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
4