Como posso criar um script que abra janelas do terminal e execute comandos nelas?

113

Eu tenho três scripts que preciso executar quando inicializo minha máquina Ubuntu, eles iniciam serviços que uso em meu ambiente de desenvolvimento.

Para fazer isso, eu abro manualmente três terminais e digito os comandos.

Existe alguma maneira de criar um script que abra três terminais e execute um comando em cada um deles? (Cada comando deve estar em uma janela de terminal separada para que eu possa ver sua saída).

    
por JSBach 02.06.2011 / 21:58

5 respostas

116
gnome-terminal -e command

ou

xterm -e command

ou

konsole -e command

Muito

terminal -e command

Para fazer o terminal ficar quando o comando sai:

No konsole, há um sinalizador --noclose .

No xterm, há um sinalizador -hold .

Em gnome-terminal , vá para Editar - > Preferências de perfil - > Título . Clique na guia Comando . Selecione Segure o terminal no menu suspenso Quando o comando sai . Você deve criar um novo perfil para isso e executar com

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
por nickguletskii 02.06.2011 / 22:03
48

Em vez de codificar gnome-terminal , konsole , et cetera, use o sistema Alternatives. O programa que executa o emulador de terminal padrão é:

x-terminal-emulator

No meu sistema, ele abre uma nova instância do Konsole toda vez que eu executo este comando.

Felizmente, os terminais parecem suportar a opção -e para executar um comando (verifiquei por konsole e gnome-terminal ). Argumentos após o comando são passados para o comando chamado. Bash se recusa a ficar aberto no meu terminal, um script adicional é necessário para obter um terminal:

#!/bin/sh
"$@"
exec "$SHELL"

Se você salvou o script anterior como /home/user/hacky e o tornou executável, você executaria seus scripts com:

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

O caminho completo é obrigatório e /home/user/hacky tem que ser executável.

Minha tentativa anterior de executar um script em uma nova janela de terminal pode ser encontrada em revisão # 2 , era antes Eu percebi que os argumentos podem ser passados para x-terminal-emulator .

    
por Lekensteyn 02.06.2011 / 22:29
8

Simplesmente -

#!/bin/bash

/etc/init.d/ccpd status

Isso é suficiente para outros comandos que não precisam exibir nada no terminal. Mas aqui é preciso ver o status exibido.
Então, ele precisa ser executado em uma janela de terminal

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

O outro post destina-se [] a ser um marcador de posição

Aqui "NAMEOFTHEPROFILE" deve ser substituído pelo nome do perfil que "Mantém o terminal quando o comando sai".

    
por Karthik T 23.01.2013 / 10:31
1

comentando a resposta de Lekensteyn. Eu sei que este é um post antigo, mas para quem acha isso útil (como acabei de fazer) Em vez de fazer outro "script hacky" com apenas colocar uma função dentro do script que você está chamando

hacky_function()
{
"$@"
exec "$SHELL"
}

Chame seu script com argumentos opcionais "x-terminal-emulator -e / caminho / para / script hacky_function aqui"

Não se esqueça de colocar "$ @" no final do script

    
por Sruli 06.12.2017 / 21:11
-2

Use o comando de tela e -d desanexe de uma sessão de tela existente e reconecte aqui -m forçar uma nova sessão de tela -S cria uma sessão nomeada em vez de usar o nome padrão

    
por Jack Heath 13.04.2014 / 22:00