Некоторые учебные руководства (такие как Начало работы на linuxcontainers.org) рекомендуют использование двойного дефиса (--
) при использовании lxc exec
запускать программу в контейнере LXD, как в
$ 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
Какая разница?
Частично это - дубликат того, что действительно удваивает среднего тире.
Вы задаете интересный вопрос о 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.