Как вы сценарий экран GNU из сеанса экрана, чтобы открыть новые окна и запускать команды в них? - PullRequest
1 голос
/ 28 января 2010

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

Мне нужен такой скрипт:

screen -t newWindow
[switch to newWindow and execute a command]
screen -t newWindow2
[switch to newWindow2 and execute a command]

Я не знаю, как добиться эффекта, который я описал в скобках. Есть какие-нибудь подсказки? Обратите внимание, что это не скрипт, который я буду запускать для запуска сеанса экрана. Мне нужно, чтобы этот скрипт был запущен в рамках существующего сеанса экрана, чтобы добавить новые окна в сеанс.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Примечание: вы не можете запустить скрипт, работающий следующим образом из сеанса экрана. И он не откроет в сеансе никаких вкладок ... Это скорее связанный совет, чем реальный ответ на вопрос.

Существует другое решение, если вы соглашаетесь на сеанс экрана, запустив процесс ...

новый скрипт сессии

#!/bin/sh
echo "nouvelle session screen ${sessionName}"
screen -S ${sessionName}  init.sh
echo "screen session: done"
echo "go to ${AnyWhere}"
sleep 1
screenexec ${sessionName} "cd ${AnyWhere}"

сценарий инициализации (здесь "init.sh")

#!/bin/zsh
zsh -c "sleep 0.2"
screen -d #detach the initialised screen
zsh       #let a prompt running

сценарий внедрения (здесь screenexec)

#!/bin/sh
# $1 -> nom de screen cible  $2 -> commande
echo "injection de «${2}» dans la session «${1}» ..."
screen -x "$1" -X stuff "$2"              #inject the command
screen -x "$1" -X eval "stuff \015"       #inject \n
echo "Done"

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

Для тех, кто предпочитает скрипт на python, я сделал небольшую библиотеку для создания сессий, закрытия сессий, ввода команд: ScreenUtils.py

Это небольшой проект, который не поддерживает многоэкранные сеансы экрана.

Забыл упомянуть, что я давно создал настоящую библиотеку Python: https://github.com/Christophe31/screenutils

1 голос
/ 28 января 2010

Запуск этого скрипта на экране делает то, что я думаю, вы хотите:

#!/bin/bash

screen vi
screen top
...