GNU Screen

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Автор: Игорь Чубин


Содержание

[править] Основы

[править] Создание окон

Ctrl-a c - создание нового окна.

[править] Переключение между окнами

Ctrl-a " - выбором из списка
Ctrl-a Space - вперёд
Ctrl-a BackSpace - назад
Ctrl-a № - переключение к заданному номеру (нумеруются от 0)
Ctrl-a Ctrl-a - переключение в предыдущее окно

[править] Отключение/подключение

Ctrl-a d - отключиться от сессии
screen -ls - получить список активных сессий
screen -r [SessionID] - подключиться к отключённой сессии. Если сессия одна - ID указывать не обязательно.
screen -x [SessionID] - подключиться к подключённой сессии (мультиэкранный режим).

[править] Регионы

ctrl-a Q — закрыть все регионы кроме текущего
ctrl-a X — закрыть текущий регион

[править] Некоторые хитрости

[править] Прокрутка в Screen

Для того чтобы прокрутить текст в screen, нужно перейти в режим прокрутки нажатием Ctrl-a [. После этого можно перемещаться по тексту стрелками и клавишами PgUp/PgDn.

Для того чтобы прокрутка заработала в привычном режиме, нужно добавить строку:

termcapinfo xterm* ti@:te@  

(верно только для сеансов Screen, запущенных в графическом терминале).

[править] Название программы в заголовке

В командных интерпретаторах tcsh и zsh задача решается очень легко. Там есть готовый механизм, позволяющий передавать имя программы наружу.

В tcsh:

alias postcmd 'echo -ne "^[k\!#:0^[\\"'

В zsh:

preexec () {
  echo -ne "\ek${1%% *}\e\\"
}

Для bash тоже можно добиться такого результата, но только с хитростями.

В конфигурационный файл screen нужно добавить строку, которая показывает каким символом заканчивается приглашение, и какое название окна следует использовать по умолчанию:

shelltitle "$ |bash"

Кроме этого, нужно включить в PS1 последовательность '\[\033k\033\\\]':

export PS1='\[\033k\033\\\]\u@\h:\w\$ '

Теперь в названии окна будет автоматически отображаться имя исполняемой программы.

Подробнее: [1]


[править] Имя хоста в заголовке

Бывает часто, что из окон screen заходишь на разные хосты, а потом перебираешь окна в поисках хоста, который потерялся среди многочисленных окон. Можно сделать так, чтобы имя хоста, на который вы зашли из окна screen, отображалось в строке состояния и в заголовке окна.

Скрипт [2] необходимо вызывать при каждом заходе на удалённый хост.

Это будет происходить автоматически, если добавить в конфигурационный файл ssh строки:

 Host *
   LocalCommand /path/to/screen_ssh.sh $PPID %n

Пример строки состояния:

 hardstatus alwayslastline
 "%{= bw} %{= bc}[%{-}%0c%{= bc}]%{-} [%-Lw%{= bW}%{+b}%50>%n%f* %t%{-b}%{= bw}%+Lw]%<"

Подробнее: [3]

[править] Переименование поредевших окон

Сначала у вас были окна:

1 2 3 4 5 

а потом вы закрыли несколько, и стало:

1   3   5

Как их спрессовать?

Используйте патч: [4].

[править] Запуск команд на отключенном Screen

Screen можно запустить в отключенном сразу режиме. Например:

 screen -m -d tail -f /var/log/messages

Потом к нему можно будет подключиться и использовать его. Можно даже и не подключаться, просто использовать программу по сети.

Сессией screen можно будет управлять с помощью вызова

  screen -X screen-command

здесь вместо screen-command может быть любая команда screen (примеры: [5]).

Но что интересно, некоторые команды работают, только если к скрину хотя бы один раз подключиться. Например:

 screen -S example -m d tail -f /var/log/messages
 screen -S example -X title messages

Здесь заголовок окна не поменяется.

А если экран хотя бы раз подключить, а потом опять отключить, то эти же команды будут работать нормально.

Некоторые команды работают нормально сразу. Например, открытие новых окон с помощью screen -X screen.

[править] Замедленная вставка текста из буфера

Для того чтобы текст из буфера обмена GNU Screen вставлять не на полной скорости, а с задержками, можно использовать команду slowpaste.

 slowpaste 100

При вставке GNU Screen будет ждать 100 мс после каждого символа.

[править] Подсветка вертикального разделителя другим цветом

:rendition so by

so расшифровывается как standout.

[править] Как запускать графические приложения из старого screen после перезапуска X'ов?

Например, вот так: [6].

[править] Можно ли объединять в группы экраны GNU Screen?

Да. Читайте про group.

Пример использования [7].

[править] Можно ли чтобы состояние регионов в Screen сохранялось после отключения/подключения?

Да. Подробнее [8].


[править] Как увеличить буфер прокрутки?

Без перезаруска Screen:

   scrollback 10000

С перезапуском: добавить в ~/.screenrc

   defscrollback 10000

Посмотреть величину буфера прокрутки можно, нажава ctrl-a i.

[править] См. также

  • screen(1) — man-страница GNU Screen

[править] Дополнительная информация

  • Using screen for remote interaction (англ.) — Статья, рассказывающая о том, как использовать GNU Screen для удалённого взаимодействия; в частности в ней рассказывается как организовать доступ к экрану в режиме readonly
  • Unbreaking GNU Screen (англ.) — Заметка о том, как бороться с неудобствами GNU Screen: отключением стандартного механизма прокрутки, альтернативным экраном и захватом комбинации Ctrl-A (подробнее что такое альтернативный экран (alternate screen) можно почитать здесь [9])
  • TIP Using screen (англ.) — огромнейшее количество полезных советов по использованию GNU Screen. Рекомендуется читать всем продвинутым пользователям GNU Screen. Начинающим тоже можно
  • New screen features available (англ.) — новые возможности Screen, которые пока что не описаны в мане, но уже доступны. В частности вертикальный сплит (ctrl-a |)
  • .screenrc (англ.) — Примеры
  • Screen notes @ noah.org (англ.) — некоторые хитрые примеры использования GNU Screen

[править] Оконные менеджеры на Xgu.ru

  • GNU Screen — текстовый, но оконный менеджер
  • wmii
Источник — «http://xgu.ru/wiki/GNU_Screen»