Как открыть дополнительную консоль и запустить в ней программу одной командой?

Так что я знаю, что если я введу gnome-терминал или xterm, появится новое окно. Затем я проверил справочную страницу для этих двух, ничего релевантного не нашел.

Тогда я заметил, что под Mac вы можете сделать это с открытой программой. Но, похоже, под Linux это не так тривиально.

У кого-нибудь есть опыт?

4 ответа

Решение

Я бы предпочел использовать опцию -x что обеспечивает более надежную работу, чем -e:

gnome-terminal -x bash -c "<my command or script>; exec bash"
  • Опция -x средства --execute - остаток командной строки внутри терминала.

  • И наша команда bash -c "<commands>", Это означает, что мы выполняем новый bash оболочка, которая должна запускаться -c "<commands>",

  • У нас есть два разделенных (точкой с запятой ; == new line) <commands>,

  • Первая команда <my command or script> выполнит то, что мы хотим.

  • Вторая команда exec bash имеет смысл - оставаться открытым текущим gnome-terminal окно. Есть и другие возможные подходы к этому. В текущем случае команда exec заменит текущий образ процесса новым образом процесса - другими словами, он "убьет" текущий процесс и выполнит новый (bash) под текущим PID.


Обновление: -x/-e синтаксис теперь устарел - Ubuntu 18.04. Новый рекомендуемый способ:

 gnome-терминал - bash -c "<моя команда или скрипт>; exec bash" 
 
  • Если вы хотите получить доступ к домашнему каталогу пользователей с помощью вышеуказанной команды, используйте переменную среды $HOME: bash -c "cd $HOME/; ..."

Еще примеры использования этого формата:

Другой подход, который будет держать окно открытым, заключается в использовании xterm:

xterm -hold -e cmd

Опция удержания держит окно открытым.

gnome-terminal -e cmd откроет окно терминала и запустит cmd внутри.

Вы можете просто сделать CTRLALTT, и вы откроете новый терминал.

Пытаться gnome-terminal -e "bash -c command;bash"

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