Como automatizar o início de instâncias de terminal para tarefas específicas

10

Estou passando por alguns tutoriais de programação e, para cada sessão, tenho que iniciar pelo menos três janelas de terminal (uma para o final do arquivo de log, outra para testar a saída, outra para executar vários comandos do shell, etc.)

No momento, inicio todos eles manualmente: clique no ícone Terminal, CD na pasta da direita, digite os comandos e altere o título da janela para algo significativo.

Existe uma maneira de escrever um script ou algo que automatize isso para mim? E se sim, como?

(Eu sou legal em não obter um script completo como resposta. Um indicador de onde começar a ler também funcionaria.)

Adam Lear
fonte

Respostas:

9

Como você está clicando no ícone Terminal, presumo que você esteja usando gnome-terminal.

Eu tenho uma lista de opções usando gnome-terminal --helpna linha de comando e lendo a partir daí.

Com base na resposta da maco, posso sugerir algo como isto:

gnome-terminal --window --title=Log -e "tail -f /var/log/syslog" --window --title=Output --working-directory=output --window --active --title=Dev --working-directory=dev/project

Este exemplo inicia três janelas (embora você possa passar --tabpor guias) e define os diretórios de trabalho (relativos à página inicial) e os títulos de cada um, inicia o tailcomando em uma e ativa a terceira janela.

Claro que você pode preferir usar linhas separadas para iniciar cada janela, principalmente se você tiver muitos argumentos.

Outra coisa útil a se fazer, depois de organizar suas janelas ao seu gosto, é usar

gnome-terminal --save-config=FILE

Isso cria um arquivo de configuração com informações em todas as janelas e guias abertas do terminal (incluindo os títulos, diretórios de trabalho etc.). Iniciar o terminal gnome com a --load-configopção recriará seu layout.

Muitos desenvolvedores que trabalham com vários terminais gostam de usar o Terminator , pois adiciona recursos como layout de grade e atalhos de teclado.

jbowtie
fonte
Fazer dessa maneira com o sinalizador -e fará com que a janela seja fechada assim que o comando for executado? E se sim, é possível fazer com que a janela permaneça aberta?
emf
8

Qualquer que seja o emulador de terminal que você esteja usando, poderá aceitar um comando como argumento. Por exemplo:

gnome-terminal -e "tail -f /var/log/syslog"

Basta adicionar esses comandos à sua inicialização automática em Sistema -> Preferências -> Sessões (Ubuntu) ou Configurações do Sistema -> Inicialização Automática (Kubuntu)

maco
fonte
4

Você também pode automatizar isso usando um script. Eu recomendo a leitura do Advanced Bash Scripting Guide ou do Bash Programming HOWTO, junto com a página de manual do terminal que você estiver usando.

Aqui está um exemplo simples:

$ vi your-script
#!/bin/bash
gnome-terminal -e "tail -f /var/log/syslog"
gnome-terminal --working-directory=/foo/bar
gnome-terminal --whatever-else

Em seguida, apenas torne-o executável:

$ chmod +x your-script
anônimo
fonte
você não precisa de exectudo isso?
maco 18/08/10
Sim, a menos que o gnome-terminal já esteja em execução, o comando apenas abre uma nova janela para o outro processo em execução e depois fecha.
LassePoulsen