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

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

24
задан 19 October 2018 в 22:43

7 ответов

В вашем ярлыке .desktop используйте это

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

После того, как ваш скрипт завершится, процесс Bash заменит себя новым вызовом.

Если вам нужно передать аргументы в кавычках в ваш скрипт, вы должны экранировать кавычки:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
0
ответ дан 19 October 2018 в 22:43

Предполагая, что ваша команда называется mycommand, я бы изменил мой модуль запуска для запуска этого:

gnome-terminal -e "mycommand|less"

Если вы хотите более постоянное, возможно, более чистое решение, откройте gnome-терминал, перейдите Изменить, настройки профиля и нажмите вкладку Название и команда. Измените параметр «Когда команда выходит» на «Держать терминал открытым».

Когда вы выполняете команды, он должен оставлять терминал открытым, когда что-то работает.

Редактировать: Если вы не очень заботитесь о терминале, вы можете просто использовать флаг удержания xterm:

xterm -e "mycommand" hold
0
ответ дан 19 October 2018 в 22:43

Ваш лаунчер запускает скрипт правильно?

В конце вашего скрипта добавьте

read -p "Press any key to exit > " -n1 junk
echo 

Тогда ваш скрипт будет ждать, пока вы решите его завершить.

0
ответ дан 19 October 2018 в 22:43

Немного отличающийся подход из других ответов: выполните свою команду и если это перестало работать, то породите оболочку. Таким образом, Вы не должны держать открытый терминал (который не различает успешность или неуспешность команды), и Вы могли бы найти что оболочка особенно полезный в отказе. Для закрытия его просто используйте Ctrl-D (EOF), "выход", Alt-F4 (или безотносительно использования менеджера окон для закрытия окон), и т.д.

успех-или-оболочка

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

Поместите этот файл куда-нибудь, такой как ~ / мусорное ведро, затем используйте "успех-или-оболочку Ваша исходная команда" в Вашем средстве запуска.

3
ответ дан 19 October 2018 в 22:43

Этот ответ дает лучший ответ, я видел до сих пор к выполнению, что Вы хотите. Они рекомендуют делать сценарий с командами, чтобы выполнить и использовать его с - параметр init-файла (конкретный удар, но Вы могли, вероятно, сделать то же для csh/tcsh/zsh, и т.д.):

#!/bin/bash --init-file
commands to run

... и выполните его как:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang
0
ответ дан 19 October 2018 в 22:43

Используйте команду watch.

Формат: watch -n60 myCommand или watch -n60 "my command string"

  • -n указывает количество секунд ожидания между вызовами на myCommand ; Пример: приведенная выше команда будет вызывать myCommand каждые 60 секунд, навсегда.
  • Если команда состоит из нескольких слов, поместите ее в двойные кавычки: "my command string".

Допустим, вам нужен модуль запуска, который отображает использование диска и остается открытым для просмотра читателем. Я бы просто использовал эту команду внутри Launcher:
watch -n60 "df -h", который теперь вызывает df -h каждые 60 секунд.

Мне нравится этот ответ за принятый ответ gnome-terminal -e "mycommand|less", потому что я использую Xubuntu, который по умолчанию использует другой терминал.

0
ответ дан 19 October 2018 в 22:43

Попытайтесь щелкнуть правой кнопкой по средству запуска и ввести свойства.

должна быть опция сохранить окно терминала, открывают enter image description here

In .desktop файл, должна быть запись X-KeepTerminal=true

0
ответ дан 5 September 2019 в 09:58

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

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