Eu gostaria de escrever um arquivo shell script / rc que automatize a divisão do GNU Screen e inicie programas dentro deles

2

Gostaria de automatizar um cenário quando estou trabalhando em um projeto de trilhos, e acho que a tela é a maneira perfeita de fazer isso sem ter que arrastar e soltar várias janelas após cada inicialização (fico irritado quando preciso tocar no mouse) )

Idealmente vou digitar:

$ ./bitchin_screen_automation project_name

e

Existem algumas ferramentas que eu sempre inicio ao trabalhar com o servidor Rails (nesta ordem), servidor spork, autoteste e impressão de comandos sql sendo executados no banco de dados.

Geralmente termina em uma formação parecida com: esta

O seguinte .screen rc gera algo semelhante, mas não consigo descobrir como automatizar os comandos para iniciar o servidor rails em cada uma das divisões, nem passar nenhum comando para eles. Também seria bom se eu pudesse alterar o diretório em um deles para o diretório do projeto. É possível transmitir argumentos para um arquivo RC? Eu sei que a tela possui o comando -c para especificar arquivos RC diferentes, para que funcionem como último recurso, e escreverei um novo para meus projetos ou um script para gerá-los.

screen -t home
split -v
focus right
screen -t home
focus left
split
split -v
focus left
screen -t home 

Então, em resumo:

1) Como posso escrever comandos de inicialização em meus splits

2) Qualquer maneira de passar argumentos para o arquivo rc (diretório do projeto)

3) BÔNUS: Também seria ótimo se alguém me dissesse como eu posso desanexar e reconectar uma sessão sem perder as divisões, li em algum lugar que não era possível, mas tenho certeza de que alguém tem uma solução hackeada . a solução para isso, na tela FAQ

Hortinstein
fonte

Respostas:

4

Depois que vi algumas postagens relacionadas ao SuperUser do lado que consegui realizar dessa maneira (os ecos substituem as startups de comando que eu preciso, caso alguém queira experimentá-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ê encontrará isso: insira a descrição da imagem aqui

Hortinstein
fonte
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"

(Consulte o manual do tmux (1) para obter uma descrição dos valores da janela de destino e do painel de destino aceitos por -t)

gravidade
fonte
obrigado pelo conselho sobre o tmux. Estou usando agora para manter minha tela dividida intacta quando desconecto. Eu posso mudar completamente, vou ter que brincar com o código que você deu.
Hortinstein