gnome-terminalの-eオプションと-xオプションの違いは何ですか?


11

マニュアルページの状態:

-e, --command=STRING
Execute the argument to this option inside the terminal.
-x, --execute
Execute the remainder of the command line inside the terminal.

2番目の例の「コマンドライン」とは何ですか?そして、その「残り」とは何ですか?これら2つのオプションが異なる例を挙げていただけますか?それとも基本的に同じですか?


1
正確ではありませんが、このsuperuser.com/questions/198015/…
r –dɑː

素晴らしい最初の質問。
ジャレッドスミス

回答:


16

考慮してください:

gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version

最初の例では、以降のすべて-xがコマンドの実行に使用されます。したがって、GNOMEターミナルはsleep 10m --versionコマンドとして実行されます。--versionこの場合、GNOMEターミナルによって実行されるコマンドの一部になります。

2番目では、単一の文字列引数のみ-eがコマンドとして使用され、それ以外は何も使用されません。その--versionため、実際にはGNOMEターミナルのオプションがあります。

最初のコマンドは、一連のコマンドを実行する場合により便利です。

gnome-terminal -x bash -c 'command 1; command 2; ...'

-eコマンド全体を単一の文字列にする必要があるため、これを行うのは困難です。そのため、全体を引用する必要があります。これは、引用符や変数の展開などに注意する必要があることを意味します。

gnome-terminal -e "bash -c 'command 1 $foo; command 2; ...'"

ここで$fooは、現在のシェルによって展開されます。

gnome-terminal -e 'bash -c "command 1 | awk '\''{print $NF}'\''"' 

'コマンド文字列内で使用すると、面倒な引用符の処理が必要になります。


5
なるほど。-xオプションは、引用符に関する問題を回避するための便利な方法としておそらく発明されたようです。
スタックゼブラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.