Com um iniciador para um aplicativo de terminal, como posso manter o terminal aberto após a conclusão do programa?


24

Eu tenho um comando de terminal que corro de um iniciador de aplicativos. Isso funciona muito bem, mas às vezes o comando falha, então eu gostaria que o terminal permanecesse aberto para que eu pudesse ver os resultados. Como posso fazer isso?

Respostas:


23

Supondo que seu comando seja chamado mycommand, eu mudaria meu iniciador para executar isso:

gnome-terminal -e "mycommand|less"

Se você deseja uma solução mais permanente, talvez mais limpa, abra o gnome-terminal, vá para Editar, Preferências de perfil e clique na guia Título e comando. Altere a opção "Quando o comando sair" para "Mantenha o terminal aberto".

Quando você executa comandos, agora deve deixar o terminal aberto quando algo for executado.

Edit: Se você realmente não se importa com o terminal, você pode apenas usar o sinalizador de espera do xterm:

xterm -e "mycommand" hold

7
Para manter a ação padrão do terminal 'quando o comando sair', sugiro criar um novo perfil de terminal, configure-o para permanecer aberto após a saída de um comando e passe a --tab-with-profile=PROFILENAMEopção gnome-terminal . Você pode ter muitos perfis para bahaviours diferentes desta forma :-)
invertido

1
xterm -hold -e mycommand

8

Seu iniciador está executando um script, certo?

No final do seu script, adicione

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

Então, seu script aguardará até você optar por finalizá-lo.


1
+1, e para mostrar o prompt somente se o comando falhar (retorna um código de saída diferente de zero) se poderia fazercommand || read -n1 -p "Command failed. Press any key to exit..."
Jukka Matilainen

8

No seu atalho .desktop, use este

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

Após a conclusão do script, o processo do Bash será substituído por uma nova chamada.

Se você precisar passar argumentos citados para o seu script, precisará escapar das aspas:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"

3

Uma abordagem ligeiramente diferente das outras respostas: execute seu comando e, se isso falhar, crie um shell. Dessa forma, você não precisa manter o terminal aberto (o que não distingue entre êxito ou falha do comando) e pode achar esse shell particularmente útil em caso de falha. Para fechá-lo, basta usar Ctrl-D (EOF), "exit", Alt-F4 (ou o que o gerenciador de janelas usar para fechar janelas), etc.

sucesso-ou-concha

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

Coloque esse arquivo em algum lugar, como ~ / bin, e use "success-or-shell your command original" no seu iniciador.


0

Essa resposta fornece a melhor resposta que eu já vi até agora para fazer o que você deseja. Eles recomendam criar um script com os comandos para executá-lo e usá-lo com o parâmetro --init-file (específico do bash, mas você provavelmente poderia fazer o mesmo com csh / tcsh / zsh, etc):

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

... e execute-o como:

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

Use o watchcomando

Formato: watch -n60 myCommandouwatch -n60 "my command string"

  • o -nespecificado o número de segundos a esperar entre as chamadas para myCommand ; ex: o comando acima chamará myCommand a cada 60 segundos, para sempre.
  • Se o comando é várias palavras, colocá-lo citações dentro duplas: "my command string".

Digamos que você queira um Iniciador que exiba o uso do disco e fique aberto para o leitor ver. Eu simplesmente usaria esse comando dentro do Launcher:,
watch -n60 "df -h"que chama df -hagora a cada 60 segundos.

Eu gosto disso com a resposta aceita gnome-terminal -e "mycommand|less"porque estou executando o Xubuntu, que usa um terminal diferente por padrão.


0

Tente clicar com o botão direito do mouse no iniciador e inserir propriedades.

Deve haver uma opção para manter a janela do terminal aberta insira a descrição da imagem aqui

No arquivo .desktop, deve haver a entrada X-KeepTerminal=true

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.