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

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

24
задан 31 August 2010 в 17:19

65 ответов

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

success-or-shell

  #! / bin / sh [$ # -eq 0] & amp; & amp; & amp; & amp;  {echo "$ (basename $ 0): no command" & gt; & amp; 2 exit 1} "$ @" ||  {echo "не удалось: $?"  exec $ SHELL}  

Поместите этот файл где-нибудь, например ~ / bin, а затем используйте команду «success-or-shell your original command» в вашей пусковой установке. [ ! d4]

3
ответ дан 13 August 2018 в 17:26

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

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

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

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

   Exec = gnome-terminal -x bash -c "YOUR_SCRIPT \" arg with spaces \ "; exec $ SHELL"  
8
ответ дан 13 August 2018 в 17:26

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

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

  read -p "Нажмите любую клавишу, чтобы выйти & gt;" -n1 junk  echo  

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

7
ответ дан 13 August 2018 в 17:26
  • 1
    +1, и чтобы показать приглашение только в случае сбоя команды (возвращает ненулевой код выхода), можно выполнить команду || read -n1 -p "Ошибка команды. Нажмите любую клавишу, чтобы выйти ... & quot; – Jukka Matilainen 31 August 2010 в 17:50

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

  #! / bin / bash --init-file для запуска  

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

  xterm -e / path  / to / script # или gnome-terminal -e / path / to / script # или the-terminal -e bash --init-файл / путь / в / script / с / no / shebang  
0
ответ дан 13 August 2018 в 17:26

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

Формат: watch -n60 myCommand или watch -n60 «моя командная строка»

  • -n задал количество секунд ожидания между вызовами myCommand ; ex: вышеуказанная команда будет называть myCommand каждые 60 секунд, навсегда.
  • Если команда является несколькими словами, поместите ее в двойные кавычки: «моя командная строка» .

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

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

0
ответ дан 13 August 2018 в 17:26

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

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