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

Итак, я знаю, что если я наберу gnome-terminal или xterm, вы откроется новое окно. Затем я проверил man-страницу для этих двух, ничего не найдено.

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

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

1
задан 9 November 2017 в 20:17

10 ответов

Я бы предпочел использовать опцию -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 означает --execute - остальную часть командной строки внутри терминала. Start Конкретный терминал при запуске И наша команда bash -c "<commands>". Это означает, что мы выполняем новую оболочку bash, которая должна запускать некоторые -c "<commands>". Xdotool не минимизирует окно терминала при использовании в загрузочном приложении при загрузке pc?
0
ответ дан 22 May 2018 в 16:22
  • 1
    Я понял. Если я просто наберу gnome-terminal -x ./main, это не сработает. Причина " bash " это параметр, который мне нужно передать для запуска ./main? – J.R. 9 November 2017 в 21:41
  • 2
    @ J.R. Вот подробное объяснение: askubuntu.com/a/967720/566421 – pa4080 9 November 2017 в 21:53
  • 3
    @ J.R. Я думаю, gnome-terminal -x ./main будет работать, но терминал закрыт слишком быстро. Кроме того, использование /full/path/ лучше, чем ./, вы также можете предоставить и рабочий каталог для нового экземпляра gnome-terminal --working-directory='/home/<user>/..... – pa4080 9 November 2017 в 22:19
  • 4
    хороший. Thnx за помощь. Еще один маленький вопрос. Могу ли я установить его на консоль в программной среде IDE? Подобно тому, как консоль показывает «тип чего-нибудь, чтобы продолжить», тогда, если я нахожу ввод, консоль будет закрыта, а не набирает «exit». – J.R. 10 November 2017 в 11:28
  • 5
    Привет, я решил это самостоятельно, установив экспорт PROMPT_COMMAND = " exit " – J.R. 10 November 2017 в 12:04

Я бы предпочел использовать опцию -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-terminal -- bash -c "<my command or script>; exec bash"

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

Опция -x означает --execute - остальная часть командной строки внутри терминала. Запустить gnome-терминал из сеанса SSH для сеанса рабочего стола И наша команда - bash -c "<commands>". Это означает, что мы выполняем новую оболочку bash, которая должна запускать некоторую -c "<commands>". Crontab и C-программу, которая должна быть запущена в окне терминала . У нас есть два разделенных (по точкам с запятой ; == new line) <commands>.
0
ответ дан 18 July 2018 в 03:35

Я бы предпочел использовать опцию -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-terminal -- bash -c "<my command or script>; exec bash"

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

Опция -x означает --execute - остальная часть командной строки внутри терминала. Запустить gnome-терминал из сеанса SSH для сеанса рабочего стола И наша команда - bash -c "<commands>". Это означает, что мы выполняем новую оболочку bash, которая должна запускать некоторую -c "<commands>". Crontab и C-программу, которая должна быть запущена в окне терминала . У нас есть два разделенных (по точкам с запятой ; == new line) <commands>.
0
ответ дан 24 July 2018 в 17:52

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

0
ответ дан 22 May 2018 в 16:22
  • 1
    Здравствуй. Это тоже странная часть со мной. После ввода типа «gnome-terminal -e ./main"» открывается дополнительная консоль, но я получил ошибку, и программа выполнена неправильно. Если я запустил его со встроенной программой, например, «gnome-terminal -e ls», похоже, что-то произошло, но никакая дополнительная консоль не будет открыта. – J.R. 9 November 2017 в 21:27
  • 2
    @ J.R. команда выполняется, но терминал закрывается после выполнения команды – lapisdecor 9 November 2017 в 21:31
  • 3
    @lapisdecor ах, хорошо, поэтому я должен добавить что-то вроде «cmd -k». для генома также? Но почему gnome-terminal -e ./main не работает? – J.R. 9 November 2017 в 21:36
  • 4
    попробуйте gnome-terminal -e "bash -c ls; bash" – lapisdecor 9 November 2017 в 21:47

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

Попробуйте gnome-terminal -e "bash -c command;bash"

0
ответ дан 22 May 2018 в 16:22

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

xterm -hold -e cmd

Параметр hold сохраняет окно открытым.

0
ответ дан 22 May 2018 в 16:22

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

xterm -hold -e cmd

Параметр hold сохраняет окно открытым.

0
ответ дан 18 July 2018 в 03:35

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

Попробуйте gnome-terminal -e "bash -c command;bash"

0
ответ дан 18 July 2018 в 03:35

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

xterm -hold -e cmd

Параметр hold сохраняет окно открытым.

0
ответ дан 24 July 2018 в 17:52
  • 1
    Здравствуй. Это тоже странная часть со мной. После ввода типа «gnome-terminal -e ./main"» открывается дополнительная консоль, но я получил ошибку, и программа выполнена неправильно. Если я запустил его со встроенной программой, например, «gnome-terminal -e ls», похоже, что-то произошло, но никакая дополнительная консоль не будет открыта. – J.R. 9 November 2017 в 21:27
  • 2
    @ J.R. команда выполняется, но терминал закрывается после выполнения команды – lapisdecor 9 November 2017 в 21:31
  • 3
    @lapisdecor ах, хорошо, поэтому я должен добавить что-то вроде «cmd -k». для генома также? Но почему gnome-terminal -e ./main не работает? – J.R. 9 November 2017 в 21:36
  • 4
    попробуйте gnome-terminal -e "bash -c ls; bash" – lapisdecor 9 November 2017 в 21:47

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

Попробуйте gnome-terminal -e "bash -c command;bash"

0
ответ дан 24 July 2018 в 17:52

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

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