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

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

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

65 ответов

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

gnome-terminal -e "mycommand|less"

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

xterm -e "mycommand" hold
21
ответ дан 26 May 2018 в 01:26

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

gnome-terminal -e "mycommand|less"

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

xterm -e "mycommand" hold
20
ответ дан 25 July 2018 в 23:15

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

gnome-terminal -e "mycommand|less"

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

xterm -e "mycommand" hold
20
ответ дан 27 July 2018 в 03:30

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

gnome-terminal -e "mycommand|less"

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

xterm -e "mycommand" hold
21
ответ дан 31 July 2018 в 11:36

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

  gnome-terminal -e «mycommand | less»  

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

  xterm -e «mycommand» hold  
21
ответ дан 2 August 2018 в 04:32

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

  gnome-terminal -e «mycommand | less»  

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

  xterm -e «mycommand» hold  
21
ответ дан 4 August 2018 в 21:06

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

  gnome-terminal -e «mycommand | less»  

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

  xterm -e «mycommand» hold  
21
ответ дан 6 August 2018 в 04:36

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

  gnome-terminal -e «mycommand | less»  

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

  xterm -e «mycommand» hold  
21
ответ дан 7 August 2018 в 22:46

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

  gnome-terminal -e «mycommand | less»  

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

  xterm -e «mycommand» hold  
21
ответ дан 10 August 2018 в 10:51

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

  gnome-terminal -e «mycommand | less»  

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

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

Изменить: если вы на самом деле не волнует терминал, вы можете просто использовать флаг hold xterm:

  xterm -e «mycommand» hold  
21
ответ дан 13 August 2018 в 17:26
  • 1
    Чтобы оставить действие терминала по умолчанию «когда выходите из команды», я предлагаю создать новый профиль терминала, установить его, чтобы он оставался открытым после выхода команды, и передать gnome-terminal - tab-with-profile = PROFILENAME . У вас может быть много профилей для разных bahaviours таким образом :-) – invert 31 August 2010 в 18:22
  • 2
    xterm -hold -e mycommand – user 31 August 2010 в 20:38

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

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

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

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

8
ответ дан 26 May 2018 в 01:26
  • 1
    +1, и чтобы показать приглашение только в случае сбоя команды (возвращает ненулевой код выхода), можно сделать command || read -n1 -p "Command failed. Press any key to exit..." – Jukka Matilainen 31 August 2010 в 17:50

В ярлыке .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"
8
ответ дан 26 May 2018 в 01:26

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

success-or-shell

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

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

3
ответ дан 26 May 2018 в 01:26

Этот ответ дает лучший ответ, который я видел до сих пор, чтобы делать то, что вы хотите. Они рекомендуют создать скрипт с исполняемыми командами и использовать его с параметром -init-file (специфичный для bash, но вы, вероятно, можете сделать то же самое для 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
ответ дан 26 May 2018 в 01:26

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

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

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

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

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

0
ответ дан 26 May 2018 в 01:26

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

success-or-shell

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

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

3
ответ дан 26 May 2018 в 01:26

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

success-or-shell

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

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

3
ответ дан 26 May 2018 в 01:26

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

success-or-shell

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

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

3
ответ дан 26 May 2018 в 01:26

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

success-or-shell

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

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

3
ответ дан 26 May 2018 в 01:26

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

success-or-shell

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

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

3
ответ дан 26 May 2018 в 01:26

Этот ответ дает лучший ответ, который я видел до сих пор, чтобы делать то, что вы хотите. Они рекомендуют создать скрипт с исполняемыми командами и использовать его с параметром -init-file (специфичный для bash, но вы, вероятно, можете сделать то же самое для 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
ответ дан 25 July 2018 в 23:15

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

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

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

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

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

0
ответ дан 25 July 2018 в 23:15

В ярлыке .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"
8
ответ дан 25 July 2018 в 23:15

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

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

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

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

7
ответ дан 25 July 2018 в 23:15
  • 1
    +1, и чтобы показать приглашение только в случае сбоя команды (возвращает ненулевой код выхода), можно сделать command || read -n1 -p "Command failed. Press any key to exit..." – Jukka Matilainen 31 August 2010 в 17:50

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

success-or-shell

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

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

3
ответ дан 25 July 2018 в 23:15

Этот ответ дает лучший ответ, который я видел до сих пор, чтобы делать то, что вы хотите. Они рекомендуют создать скрипт с исполняемыми командами и использовать его с параметром -init-file (специфичный для bash, но вы, вероятно, можете сделать то же самое для 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
ответ дан 27 July 2018 в 03:30

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

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

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

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

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

0
ответ дан 27 July 2018 в 03:30

В ярлыке .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"
8
ответ дан 27 July 2018 в 03:30

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

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

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

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

7
ответ дан 27 July 2018 в 03:30
  • 1
    +1, и чтобы показать приглашение только в случае сбоя команды (возвращает ненулевой код выхода), можно сделать command || read -n1 -p "Command failed. Press any key to exit..." – Jukka Matilainen 31 August 2010 в 17:50

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

success-or-shell

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

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

3
ответ дан 27 July 2018 в 03:30

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

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