Запоздалое введение в GNU Screen

О GNU Screen я уже немного писал и даже выкладывал свой screenrc, но как оказалось этого мало - огромный (а он действительно не маленький) man читать лень, а возможности screen уже манят. Но вот как воспользоваться хотя бы основными возможностями не прибегая к этому огромному ману?

Ответ прост: начать работать в screen!

А для этого хватит и минимума, который я и хочу описать.

Запускаем screen в консоли (или любом иксовом терминале). Мы видим всю ту же консоль, но мы можем создавать в ней "табы" с помощью повторного ввода screen и запускать любое приложение в новом "табе" screen имя команд. Только вот переключение между такими "табами" будет несколько отличаться от привычных табов.

Всё управление screen сводиться к нажатию ^+a (Ctrl+a) и последующему нажатию требуемой комбинацией. К примеру, переключение между "табами" осуществляеться несколькуми способами.

^+a " двойные ковычки - попадаем в меню выбора "табов", и уже там с помощью клавиш , и enter можно выбрать необходимый "таб". Обратите внимание что нумерация "табов" начинается с нуля, к тому же нумерация позволяет переключаться между "табами" с помощью сочетания ^+a номер, к примеру, ^+a 3 переключит нас на третий "таб"(если он существует). Такой способ даёт нам быстрое переключение между первыми десятью "табами", а если их у вас больше то потребуються лишние телодвижения ^+a '(одинарная ковычка) а уж потом набираем номер "таба".

Так же между табами можно перемещаться с помощью ^+a n и ^+a p, следующий и предыдущий соответственно, хотя можно заменить "n" на пробел а "p" на backspace - но это кому как удобнее.

Новый "таб" можно создать не только с помощью команды screen, но и с помощью сочетания клавиш ^+a ^+c.

Комбинацией ^+a S[Ахтунг, т.е. внимание: сочетание клавиш в screen регистро-зависимы. т.е. S не есть к s. Но это я так, на всякий случай...] можно разбить экран на две части и переключаться между ними с помощью ^+a Tab, на самом деле можно разбить экран и на три и на четыре части(окна, региона)... но не об этом.

Если вы разобьете экран на несколько частей, то удивитесь что имя есть только у одного региона. Несомненно вы можете перейти в созданные с помощью ^+a Tab, но толку с этого будет мало, ибо вы не сможете в этих окнах что-либо делать. Помните комбинацию <^+a ^+c, которая создает новый "таб"? Именно она нам и пригодиться при попадание в пустое регион(пустую часть). Можно и не создавая попасть в уже имеющийся, с помощью всё тех же сочетаний клавиш для перехода по "табам".

Что бы закрыть всё это чудо надо либо закрывать каждый "таб" комбинацией ^+a k либо писать в каждом "табе" exit, но думаю будет лень закрывать так если окон открыто очень много, поэтому закрыть всё и выйти можно всего одной командой ^+a \.

Но самое вкусное это возможность "детатчиться", т.е. выходить из screen не останавливая проистекающие в нем действия (или, если хотите, спрятать текущую сессию от глаз пользователя), естественно, с возможностью последующего подключения к к ней. И действие сие производится сочетанием ^+a ^+d, ну подключение с помощью запуска screen с параметрами, тут уже лучше обратиться к ману (читать про параметры -d -r). Хотя лично мой любимый ключь это -DR что говорит программе screen что если сессия работает, переподключиться, и если надо, то сначала отключиться удаленно, а если сессии не было то создать новую и сообщить об этом пользователю. Про автоматическое отсоединение сессий написано в комментариях к моему screenrc

Собственно для большинства нужд этого достаточно, а для прочих можно и в man заглянуть

PS. Кстати, заголовки текущего окна можно формировать из zsh, добавив или видоизменив функцию precmd() в .zshrc добавить
print -Pn "\ek<$1> [%~]\e\\" && print -Pn "\e]0;<$1> [%~] %m (screen)\a"
Andry 10-10-2010
Привет.
Понимаю, что пишу некропост, но, всё же, хочу сказать СПАСИБО!
Коротко, без лишнего мусора, узнал всё, что мне было нужно именно из этого текста.
Спасибо ещё раз!
muhas 10-10-2010
Рад что помог. хотя на просторах сети хелпов по скрину не мало на разные уровни читателя - сие я скорее для себя писал (вдруг по голове кто даст и я всё забуду)
kartoshin 12-06-2012
Создание нового окна и отключение - всё же без второго ctrl'a. Т.е. ^a + c и ^a + d. Работает и со вторым, но мало ли.