一部のチュートリアル(linuxcontainers.orgの Getting Started など)では、--
を使用して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
違いは何ですか?
一部これは 二重ダッシュの意味 の複製です。
lxc
について興味深い質問をするので、答えさせてください。 2つの例では、--
の両方のインスタンスが、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.