Выполнить команду в другом (новом) окне терминала

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

Пример: я открыл одно окно терминала, и если я запускаю команду, подобную apropos editor, то она запускается и выводит это окно. Но я хочу выполнить ту же команду в другом окне терминала (новом окне) вместо этого в текущем окне из первого терминала .

Дальнейшие разъяснения :
Мне нужно suggest-command <command>, чтобы открыть новое окно терминала и запустить упомянутое <command> в этом (вновь открытом) окне. (где suggest-command - пример предложения команды.)

Как это сделать?

41
задан 18 June 2014 в 19:16

8 ответов

Это может быть то, что вы ищете:

gnome-terminal -e "bash -c \"!!; exec bash\""

или (коротко):

gnome-terminal -x sh -c "!!; bash"

Он открывает gnome-terminal с вашей последней командой ( !! ) выполняется, и он остается открытым вместе с выводом команды в оболочке, даже с интерактивной командой типа top или less ...

В вашем регистр:

gnome-terminal -e "bash -c \"apropos editor; exec bash\""

или

gnome-terminal -x sh -c "apropos editor; bash"
36
ответ дан 18 June 2014 в 19:16

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

Какой терминал использовать, зависит в первую очередь от доступности системы, которую вы используете (если они установлены или нет) , затем из их особенностей, а затем из вашего личного вкуса.

  konsole   --hold -e "ls" &  
  xterm      -hold -e "ls" &  
  gnome-terminal   -e "ls" & ...  

Обратите внимание на различия между -hold из xterm и -hold из консоли .

Каждая реализация имеет разные опции , которые вы должны проверить с помощью. Даже помощь может быть вызвана по-разному. Вы можете обнаружить, что man konsole не работает, поэтому вам нужно напрямую запросить исполняемый файл с помощью - help .

Это список терминалов, которые вы можете найти в своей системе

aterm          - AfterStep terminal with transparency support
gnome-terminal - default terminal for GNOME
guake          - A dropdown terminal for GNOME
konsole        - default terminal for KDE
Kuake          - a dropdown terminal for KDE
mrxvt          - Multi-tabbed rxvt clone
rxvt           - for the X Window System (and, in the form of a Cygwin port, 
                 for Windows) 
rxvt-unicode   - rxvt clone with unicode support
xfce4-terminal - default terminal for Xfce desktop 
                 environment with dropdown support
Terminator     - is a GPL terminal emulator. It is available on
                 Microsoft Windows, Mac OS X, Linux and other Unix X11 systems.
Terminology    - enhanced terminal supportive of multimedia 
                 and text manipulation for X11 and Linux framebuffer
tilda          - A drop down terminal
wterm          - It is a fork of rxvt, designed to be lightweight, but still
                 full of features
xterm          - default terminal for the X Window System
Yakuake        - (Yet Another Kuake), a dropdown terminal for KDE
9
ответ дан 18 June 2014 в 19:16

Вы можете использовать параметр -e для gnome-terminal следующим образом:

gnome-terminal -e 'sh -c propose editor'

Здесь sh - это оболочка, которую открывает gnome-terminal. Обратите внимание, что это приведет к выходу из терминала, как только команда завершится. Обратитесь к странице справочника для gnome-terminal для получения дополнительной информации.

3
ответ дан 18 June 2014 в 19:16

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

xterm -hold -e 'apropos editor' & 

Обратите внимание на -hold . Большинство терминалов закрываются после выполнения команды, которую вы им скармливаете. На сайте уже около дюжины вопросов по этому поводу:

An Альтернативой этому является использование приложения, из которого необходимо выйти. nano останется открытым самостоятельно. Если вы просто выводите на экран, вы можете перенаправить его в less :

xterm -e 'apropos editor | less' & 

Тем не менее, в вашем случае (как сказали два других), кажется, проще просто открыть другой терминал и запустите вашу команду.

10
ответ дан 18 June 2014 в 19:16
  1. Open два терминала;
  2. Идентификация каждого терминала с помощью команды tty ;
  3. Предположим, они идентифицированы как / dev / pts / 0 и / dev / pts / 1;
  4. В терминале pts / 0 перенаправление stdout на pts / 1 с помощью команды exec : exec 1> / dev / pts / 1
  5. Теперь каждый вывод stdout команды из терминала pts / 0 отображается в pts / 1;
  6. Перенаправление обратно стандартного вывода с помощью запятой: exec 1> / dev / pts / 0
  7. Теперь стандартный вывод pts / 0 работает как раньше.

Видео на YouTube:

3
ответ дан 18 June 2014 в 19:16

Вот мои 50 центов с Терминатором:

terminator -x "script.sh; bash"

Это тоже работает, но я не могу сказать вам разницы:

terminator -e "script.sh; bash"

Обратите внимание, что сценарий также может быть командой.

Проверено на Ubuntu 18.04 LTS.

1
ответ дан 7 October 2019 в 15:40

После Ubuntu 18.04 LTS вы можете переключиться с -e на - , то есть gnome-terminal -e на gnome-terminal - , потому что -e и -x устарели.

1
ответ дан 16 November 2019 в 11:20

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

Согласно man gnome-terminal вы можете просто выполнить gnome-terminal - sh -c '<ваша команда>'

- sh позволяет это для запуска реальных сценариев вместо приложений, так что это будет похоже на ввод его в обычное окно. Единственное, что следует отметить в этом решении, это то, что терминал завершит работу после завершения выполнения команды.

Надеюсь, это поможет!

0
ответ дан 7 May 2021 в 20:42

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

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