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?
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:
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, 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..."
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.
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
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.
--tab-with-profile=PROFILENAME
opção gnome-terminal . Você pode ter muitos perfis para bahaviours diferentes desta forma :-)xterm -hold -e mycommand
Seu iniciador está executando um script, certo?
No final do seu script, adicione
Então, seu script aguardará até você optar por finalizá-lo.
fonte
command || read -n1 -p "Command failed. Press any key to exit..."
No seu atalho .desktop, use este
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:
fonte
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
Coloque esse arquivo em algum lugar, como ~ / bin, e use "success-or-shell your command original" no seu iniciador.
fonte
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):
... e execute-o como:
fonte
Use o
watch
comandoFormato:
watch -n60 myCommand
ouwatch -n60 "my command string"
-n
especificado o número de segundos a esperar entre as chamadas para myCommand ; ex: o comando acima chamará myCommand a cada 60 segundos, para sempre."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 chamadf -h
agora 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.fonte
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
No arquivo .desktop, deve haver a entrada
X-KeepTerminal=true
fonte