Чтобы сохранить обзор, мне нравится размещать несколько команд всегда в одном и том же порядке и запускать их автоматически вместе (gradle, git, database, scala-REPL, jboss ...)
-H (удержание), кажется, означает, что терминал не закрывается после завершения, но как я могу завершить такой процесс преднамеренно? Не за что? Таким образом, что я могу продолжать использовать терминал.
Я использую xubuntu с xfce4-терминал и Bash. Есть ли лучшее GUI-решение для запуска нескольких команд с возможностью продолжить работу в этом окне / вкладке?
Обновление: если вы не знаете эти команды: Jboss и gradle непрерывно генерируют вывод, который вы не хотите смешивать в одном терминале. И иногда их нужно прервать с помощью ^ C и перезапустить. Я не люблю открывать термин xfce4 и переходить в каталог, в котором мне нужно действовать.
База данных и scala-REPL являются интерактивными, поэтому нет смысла запускать их в фоновом режиме.
Мой текущий скрипт запуска просто переходит к нужным каталогам и открывает все вкладки в правильном порядке, чтобы найти их всегда в одной и той же позиции, называя каждую вкладку по назначению:
xfce4-terminal -T eclipse --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
--tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
--tab -T bash --working-directory=/home/stefan/oximity \
--tab -T gradle --working-directory=/home/stefan/oximity/med \
--tab -T git --working-directory=/home/stefan/oximity/med \
--tab -T mysql --working-directory=/opt/mini/mysql \
--tab -T jboss --working-directory=/opt/mini/jboss \
--tab -T jboss-log --working-directory=/opt/mini/jboss/standalone/log \
--tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala
Eclipse и arandr отсоединяются от оболочки и запускаются в своем собственном окне, поэтому здесь работает параметр -e (execute). Я думаю, что для scala-REPL это работает, так как это последняя команда в списке.
источник
xterm -e 'stuff;bash'
?Ответы:
-H/-hold
Вариант держать терминал открытым эмулятор окна после того , как приложения , запущенные в ней (оболочки или другой) завершился. В этом состоянии больше ничего не может произойти.Если вы хотите запустить команду как задание интерактивной оболочки в эмуляторе терминала xfce4-терминал и поддерживать оболочку в рабочем состоянии и использовать ее в интерактивном режиме после выхода из приложения, с помощью
bash
вы можете использовать$PROMPT_COMMAND
переменную окружения дляxfce-terminal
запуска интерактивная оболочка, которая запускает данную команду непосредственно перед первым приглашением.Таким образом, команды заданиями этой оболочки, что означает, что вы можете приостановить их Ctrl-Zи возобновить позже
fg/bg
как если бы вы ввели их по запросу этой интерактивной оболочки.Это предполагает, однако, что вы не установите
$PROMPT_COMMAND
в своем~/.bashrc
. Также обратите внимание, что статус выхода команды не будет доступен в$?
.Чтобы сделать его еще более похожим на команду, введенную в командной строке, вы даже можете добавить ее в список истории. Подобно:
Таким образом, как только вы выходите
vi
вы можете нажать Upклавишу, чтобы вызвать ту жеvi
команду.Более простой способ написать это:
:
Решение, как указано в других ответах, работает, но имеет некоторые недостатки:
cmd
работает, это убивает внешнююsh
так как есть только одна группа процессов для обоихsh
иcmd
.cmd
$PROMPT_COMMAND
подходе, статус выхода команды не будет доступен в$?
.Вы можете обойти 1 выше, выполнив:
Или:
С последним вы также сможете приостановить процесс Ctrl-Z, но не сможете использовать
fg/bg
его. Вы сможете продолжить его в фоновом режиме , хотя посредством производстваkill -s CONT
на ВЗОМТ изcmd
.источник
bash
сценариях нет истории вообще, так как нет редактирования строк или взаимодействия с пользователем, если вы не используетеread -e
в своем сценарии (и вы увидите, что этоhistory -s text
работает, чтобы заполнить историю, видимую этимread -e
). Здесь мы запускаем неhistory -s
скрипт, а$PROMPT_COMMAND
интерактивную оболочку.xfce4-terminal
по крайней мере в версии 0.6.3 теперь хочет дополнительный параметр ---disable-server
- пройти через окружающую среду. Ссылка: lists.debian.org/debian-user/2017/10/msg00045.html .Насколько я понял ваш вопрос, вы хотите запустить некоторые процессы в терминале, имея возможность Ctrl+ Cих и, после этого, держать окно открытым с помощью оболочки.
Если я прав, это может быть выполнено с помощью такой команды:
источник
несколько приложений на
xfce4-terminal
вкладкахДобавление интерактивной оболочки на каждую вкладку xfce
Вы можете использовать этот хак, чтобы добавить оболочку, если / когда вы Ctrl+Cвкладка:
Это даст вам следующее:
источник
При выходе из оболочки без
-H
терминала тоже будет закрыто. С этим флагом терминал продолжит работу, но процесс оболочки закрыт и не может быть восстановлен.Я думаю, что вы пытаетесь архивировать, что вы просто запускаете свой терминал и ваша среда разработки запускается?
Вы можете создать сценарий оболочки и поместить в него все свои команды. В конце скрипта вы просто запускаете свою оболочку:
Затем вызовите этот скрипт через
xfce4-terminal -e /the/script
. При выходе из$SHELL
родительского процесса (вашего скрипта) завершен, и фоновые задачи также получат сигнал выхода и выход.Если вы хотите сохранить их, используйте, например,
nohup jboss &
в вашем скриптеисточник