2

Я хотел бы автоматизировать сценарий, когда я работаю над проектом rails, и я думаю, что экран - это идеальный способ сделать это без необходимости перетаскивать несколько окон после каждого запуска (это злит меня, когда я касаюсь своей мыши ).

В идеале я наберу:

$ ./bitchin_screen_automation project_name

а также

Есть несколько инструментов, которые я всегда запускаю при работе с rails (в этом порядке) rails server, spork, autotest и распечатка команд sql, выполняемых в базе данных.

Обычно это заканчивается в структуре, похожей на: этот

Следующий .screen rc генерирует нечто подобное, но я не могу понять, как автоматизировать команды для запуска сервера rails в каждом из разделений или передать им какие-либо команды. Также было бы хорошо, если бы я мог изменить каталог в одном из них на каталог проекта. Можно ли передать аргументы в файл RC? Я знаю, что screen имеет команду -c для указания различных RC-файлов, так что это может быть последним средством, и я просто напишу новый для моих проектов или напишу скрипт для их генерации.

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

Итак, в заключение:

1) Как я могу написать сценарий запуска команд в моих разделениях

2) Любой способ передачи аргументов в файл rc (каталог проекта)

3) БОНУС: Было бы замечательно, если бы кто-то мог сказать мне, как я могу отсоединить и заново присоединить сеанс, не теряя при этом также разбиения, я где-то читал, что это было невозможно, но я уверен, что у кого-то есть взломанное вместе решение. ИЗМЕНИТЬ: найдено решение этого, с экрана FAQ

2 ответа2

4

После того, как я увидел некоторые связанные посты SuperUser на стороне, я смог сделать это следующим образом (echos замените командные запуски, которые мне нужны в случае, если кто-то захочет попробовать это в своей системе):

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'

загрузить этот RC, и вы получите это:

3

Попробуйте 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"

(См. Руководство по tmux(1) для описания значений target-window и target-pane, принимаемых -t)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .