Каково различие между-e и-x опциями для терминала гнома?

Состояние страниц справочника:

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

К чему "командная строка" во втором примере, относящемся? И каков его "остаток"? Вы могли дать пример, где эти две опции отличаются? Или они - в основном то же?

11
задан 6 September 2018 в 01:44

1 ответ

Рассмотрите:

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

В первом примере, всем после -x используется, чтобы команда была выполнена. Таким образом, Терминал GNOME будет работать sleep 10m --version как команда. --version в этом случае становится частью команды, которая будет выполнена Терминалом GNOME.

Во втором, только единственный аргумент строки к -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}'\''"' 

Используя ' в командной строке включает раздражающую обработку кавычки.

16
ответ дан 23 November 2019 в 04:00

Другие вопросы по тегам:

Похожие вопросы: