Запускать команды в окнах экрана GNU из .screenrc - PullRequest
7 голосов
/ 28 сентября 2011

Есть ли способ отправить последовательность команд в окна экрана GNU из моего .screenrc? Кажется, это должно быть легко сделать:

.screenrc:

startup_message off
screen -t "RAILS SERVER"
<send command to last created window> <my alias to cd Rails project>
<send command to last created window> rails s
screen -t "RAILS CONSOLE"
<send command to last created window> <my alias to cd to Rails project>
rails c

Я просматривал man-страницу Screen несколько раз, но не могу найти ничего, что <send command to last created window>.

Спасибо, Max

Ответы [ 2 ]

17 голосов
/ 30 мая 2014

Ответ Кейта выполняет работу, но он связывает окно с этим процессом, так что, как только приложение завершается, окно закрывается.

Вот то, что я закончил, прекрасно сработав:

screen -t "RAILS SERVER"
stuff "cd $my_rails_directory; rails server^M"

screen -t "RAILS CONSOLE"
stuff "cd $my_rails_directory; rails console^M"

Здесь важно отметить символ ^ M . На самом деле это не ^, за которым следует М. Это необработанный символ новой строки. Практически в любой программе CLI (vi, emacs, shell) вы можете нажать CTRL-V и затем нажать ENTER, чтобы сгенерировать этот символ.

Как это работает? Команда stuff вводит данную строку прямо в консоль. Буква newline в конце фактически отправляет команду не так, как обычно, если вы набираете ее самостоятельно. Надеюсь, это поможет! Я обнаружил, что этот подход намного более стабилен и надежен, чем другие.

7 голосов
/ 28 сентября 2011

Это не отдельная команда; Вы просто указываете команду для запуска в строке, которая создает окно.

Например (не проверено):

screen -t "RAILS SERVER" sh -c "cd ... ; rails s"
...