Экран GNU: создайте или присоедините к сеансу И источник файла

Используя «screen -D -R -S foo», можно подключиться к существующему сеансу с именем «foo» или, если указанный сеанс не существует, создать его.

Как получить файл, содержащий экранные команды?

Я думал, что это сработает:

screen -D -R -S foo -X source file

К сожалению, это не работает с этим сообщением:

No screen session found.

РЕДАКТИРОВАТЬ: Как указал zebediah49 в комментарии, я по ошибке пропустил «источник» в «исходном файле -X». Обновлено сейчас.


person nickh    schedule 26.10.2012    source источник
comment
Не могли бы вы запустить команду source $file ? Вполне возможно, что он будет работать только в том случае, если он создает новый терминал - выполнение произвольных команд инициализации может плохо закончиться в окне, которое в данный момент что-то делает.   -  person zebediah49    schedule 26.10.2012
comment
@zebediah49 Ты прав. Я хотел включить исходную команду в вопрос. Вопрос был обновлен сейчас. Спасибо.   -  person nickh    schedule 26.10.2012


Ответы (1)


Хорошо, из внимательного чтения справочной страницы я отмечаю:

   -X   Send the specified command to a running screen  session.  You  can
        use  the  -d or -r option to tell screen to look only for attached
        or detached screen sessions. Note that this command  doesn't  work
        if the session is password protected.

запуск сеанса экрана. Другими словами, я не верю, что вы можете сделать то, что ищете, с помощью только одной команды. Однако вы можете

  1. создать окно, если оно не существует
  2. отправить команду в окно
  3. подключиться к окну:

    NL=$'\n' ИМЯ=foo screen -ls | grep "$ИМЯ" || screen -d -m -S "$NAME" screen -r "$NAME" -X stuff "исходный файл$NL" screen -D -R -S "$NAME"

(Пояснение того, как работает -X, из Отправить команды на экран GNU)

person zebediah49    schedule 26.10.2012