Les pages de manuel indiquent:
-e, --command=STRING
Execute the argument to this option inside the terminal.
-x, --execute
Execute the remainder of the command line inside the terminal.
À quoi se réfère la "ligne de commande" dans le deuxième exemple? Et quel est son "reste"? Pourriez-vous s'il vous plaît donner un exemple où ces deux options diffèrent? Ou sont-ils fondamentalement les mêmes?
Considérer:
gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version
Dans le premier exemple, tout ce qui suit le -x
est utilisé pour l'exécution de la commande. Le terminal GNOME exécutera donc sleep 10m --version
en tant que commande. --version
fait dans ce cas partie de la commande à exécuter par le terminal GNOME.
Dans le second, seul l'argument de chaîne unique à -e
est utilisé comme commande, rien d'autre. Donc --version
est en fait une option pour GNOME Terminal.
Le premier peut être plus utile si vous souhaitez exécuter une chaîne de commandes:
gnome-terminal -x bash -c 'command 1; command 2; ...'
Ceci est difficile à faire avec -e
, car toute la commande doit être une seule chaîne. Vous devrez donc tout citer. Cela signifie à son tour que vous devez faire plus attention aux guillemets et à l’expansion des variables, par exemple:
gnome-terminal -e "bash -c 'command 1 $foo; command 2; ...'"
Ici, $foo
sera développé par le shell actuel.
gnome-terminal -e 'bash -c "command 1 | awk '\''{print $NF}'\''"'
L'utilisation de '
dans la chaîne de commande implique une gestion des devis agaçante.