
У меня есть скрипт, который запускает некоторые из (более 15) приложений, таких как:
cd mypath
sleep 1
gnome-terminal -t App1 --tab -e "./App1"
sleep 1
gnome-terminal -t App2 --tab -e "./App2"
..
..
sleep 1
gnome-terminal -t App15 --tab -e "./App15"
Как вы можете заметить, это запустит приложения на 15 разных терминалах.
Теперь, когда я по какой-либо причине убиваю любую программу ./AppX
с помощью Ctrl+ C, это завершает программу, а также выходит из терминала.
Я хочу, чтобы при нажатии Ctrl+ Cпроисходило только завершение работы ./AppX
, но терминал все равно оставался открытым, потому что когда я захочу снова запустить его, AppX
мне нужно будет нажать только клавишу со стрелкой вверх и Enter.
РЕДАКТИРОВАТЬ::
Получил ответ::см. принятый ответ от askubuntu.com.
Другой вопрос: Как выполнить более одной команды, например:
gnome-terminal -e "sleep 1; AppX"
что НЕ работает, я пробовал разные другие методы (&, &&, |), но все они не увенчались успехом.
решение1
Следующая команда откроет новый терминал с 15 вкладками в multi-gnome-terminal:
cd mypath
multi-gnome-terminal \
--add-tab -tname App1 --tcommand "./App1" \
--add-tab -tname App2 --tcommand "./App2" \
...
--add-tab -tname App15 --tcommand "./App15" \
Если вам действительно нужен такой сон, вы можете включить его в свою программу:
cd mypath
multi-gnome-terminal \
--add-tab -tname App1 --tcommand "sleep 1; ./App1" \
--add-tab -tname App2 --tcommand "sleep 2; ./App2" \
...
--add-tab -tname App15 --tcommand "sleep 15; ./App15" \
А если вам нужно динамически изменить количество/список команд, которые вы собираетесь запустить, вы можете использовать следующее:
cd mypath
cmd=(multi-gnome-terminal)
cmd=("${cmd[@]}" --add-tab -tname App1 --tcommand "sleep 1; ./App1")
cmd=("${cmd[@]}" --add-tab -tname App2 --tcommand "sleep 2; ./App2")
...
cmd=("${cmd[@]}" --add-tab -tname App15 --tcommand "sleep 15; ./App15")
"${cmd[@]}"