Gostaria de escrever um script de shell / arquivo rc que automatize os splits do GNU Screen e inicie programas dentro deles

2

Eu gostaria de automatizar um cenário quando estou trabalhando em um projeto rails, e acho que a tela é a maneira perfeita de conseguir isso sem ter que arrastar e soltar várias janelas após cada inicialização (isso me deixa irritado quando preciso toque meu mouse).

Idealmente eu vou digitar:

$ ./bitchin_screen_automation project_name

e

Existem algumas ferramentas que eu sempre inicio quando trabalho com rails (nesta ordem) servidor rails, spork, autotest, e uma impressão de comandos sql sendo executados no banco de dados.

Geralmente termina em uma formação parecida com:

Oseguinte.screenrcgeraalgosemelhante,masnãoconsigodescobrircomoautomatizaroscomandosparainiciaroservidorrailsemcadaumdosgrupos,nempassarnenhumcomandoparaeles.Tambémseriabomseeupudessemudarodiretórioemumdelesparaodiretóriodoprojeto.ÉpossíveltransmitirargumentosparaumarquivoRC?Euseitelatemocomando-cparaespecificardiferentesarquivosRC,paraquepossafuncionarcomoúltimorecurso,eeuvouapenasescreverumnovoparameusprojetos,ouescreverumscriptparagerá-los.

screen-thomesplit-vfocusrightscreen-thomefocusleftsplitsplit-vfocusleftscreen-thome

Então,emResumo:

1)Comopossoescrevercomandosdeinicializaçãoemmeussplits

2)Qualquerformadepassarargumentosparaoarquivorc(diretóriodoprojeto)

3)BÔNUS:Tambémseriaótimosealguémpudessemedizercomoeupossosepararerecolocarumasessãosemperderasdivisõestambém,euliemalgumlugarquenãoerapossível,mastenhocertezaquealguémtemumasoluçãohackeadaEDIT:encontrouasoluçãoparaisso, da tela de perguntas frequentes

    
por Hortinstein 28.06.2011 / 03:11

2 respostas

4

Depois que eu vi algumas postagens relacionadas ao SuperUser no lado que eu consegui realizar assim (echos substituem as startups de comando que eu preciso no caso de alguém querer testá-lo em seu sistema):

screen -t home
split -v
focus down
screen bash -c 'echo "rails server"; exec bash -i'
split
focus down
screen bash -c 'echo "spork"; exec bash -i'
split -v
focus down
screen bash -c 'echo "sql output"; exec bash -i'
focus down
screen bash -c 'echo "autotest"; exec bash -i'

carregue este RC, e você virá com isto:

    
por 28.06.2011 / 14:08
3

Experimente o tmux:

#!/bin/sh
session=${1:-unnamed}
tmux new -d -s "$session" "bash"
tmux split -t "$session" -h "bash"
tmux select-pane -t "$session" -L
tmux split -t "$session" -v "irb"
tmux select-pane -t "$session" -U
tmux split -t "$session" -h "python"
tmux attach -t "$session"

(Veja o manual de tmux (1) para descrição dos valores target-window e target-pane aceitos por -t )

    
por 28.06.2011 / 11:57