Quelle est la différence entre les options -e et -x pour gnome-terminal?


11

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 fait référence 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?


1
Pas exact mais trouvé ce superuser.com/questions/198015/…
rɑːdʒɑ

Grande première question.
Jared Smith

Réponses:


16

Considérer:

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

Dans le premier exemple, tout ce qui suit -xest utilisé pour l'exécution de la commande. Le terminal GNOME s'exécutera donc sleep 10m --versioncomme la commande. --versiondans ce cas fait partie de la commande à exécuter par GNOME Terminal.

Dans le second, seul l'argument de chaîne unique -eest utilisé comme commande, rien d'autre. --versionVoici donc 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; ...'

C'est difficile à faire -e, car la commande entière doit être une seule chaîne, vous devrez donc citer le tout. Cela signifie à son tour que vous devez faire plus attention aux guillemets et à l'expansion des variables et autres:

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

Ici, $foosera développé par le shell actuel.

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

L' utilisation 'dans la chaîne de commande implique la manipulation de devis ennuyeux.


5
Je vois maintenant. Il semble que l'option -x ait probablement été inventée comme un moyen pratique d'éviter les problèmes de guillemets.
stackzebra
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.