Как я могу открыть новое окно терминала из команды cli и напечатать «Hello World» - PullRequest
0 голосов
/ 15 октября 2019

Я играл с командой gnome-terminal для некоторых незначительных автоматизаций, и я продолжаю сталкиваться с той же проблемой. Цель состоит в том, чтобы открыть новое окно в том же каталоге, что и текущее окно, и выполнить простую команду (например, echo, cd или аналогичную). Кажется, эта команда работает нормально, чтобы открыть новое окно в том же каталоге:

DIR=$(pwd); gnome-terminal --working-directory=$DIR

Однако, когда я добавляю к нему выполнение, происходит сбой:

DIR=$(pwd); gnome-terminal --working-directory=$DIR -e 'echo "test"'

Я получаюсообщение о том, что -e устарело, и я должен использовать --, поэтому я переключился на

DIR=$(pwd); gnome-terminal --working-directory=$DIR -- 'echo "test"'

Однако теперь я получаю эту ошибку:

Failed to execute child process “echo "test"” (No such file or directory)

Кто-нибудь знает, почему это происходит?

Точные спецификации системы: Ubuntu 18.04, GNOME Terminal 3.32.1 с использованием VTE 0.56.2 + GNUTLS

Точное сообщение об устаревании:

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.

# Use “-- ” to terminate the options and put the command line to execute after it.

1 Ответ

1 голос
/ 15 октября 2019

Ах. Понимаю. Два сообщения на самом деле различны.

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.

Я думаю, это означает, что вместо этого следует использовать -x - все в командной строке после -x считается частью команды, которая должна бытьВыполнено.

# Use “-- ” to terminate the options and put the command line to execute after it.

Это соглашение, используемое в программах командной строки. Две черты указывают, что все, что приходит после, независимо от того, имеет ли оно черту, является , а не параметром командной строки. Это полезно в сочетании с -x, потому что у вас могут быть вещи, которые вы не хотите анализировать, как один из параметров gnome-терминала - скорее это аргументы командной строки для запуска внутри в терминале.

Я думаю, что пример, вероятно, сделает это более понятным ...

gnome-terminal -x -- grep -v "42" hitchikers_guide_to_the_galaxy.txt

Это откроет терминал гнома. Внутри терминала мы запускаем grep и исключаем любую строку, содержащую строку «42». Если бы мы не использовали --, gnome-терминал увидит -v в качестве аргумента командной строки gnome-terminal и, вероятно, выдаст предупреждение о том, что -v не является допустимым аргументом для gnome-терминала.

Редактировать:

Хорошо, поэтому -x и -c устарели. Вы можете выполнять команды без каких-либо флагов. Это требует использования -- для завершения всех других опций ... так что я почти ошибся во всем, что я сказал. Обоснование было твердым, просто неправильным.

gnome-terminal -- nano

откроет новый терминал и запустит nano внутри терминала.

При попытке

gnome-terminal -- echo foo
* 1041 все становится непросто* Он работает, но выходит так быстро, что вы не видите ничего, кроме вспышки на экране.

Обратите внимание, что есть также открытая ошибка об устаревании -c:

https://bugzilla.gnome.org/show_bug.cgi?id=784925

...