GNU Screen
Материал из Xgu.ru
- Автор: Игорь Чубин
[править] Основы
[править] Создание окон
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