Краткая шпаргалка по использованию GNU screen

Напомню, что screen — это программа, которая позволяет открывать несколько терминалов в одном. Это очень удобно, если вы работаете по SSH или просто без иксов. Также в случае разрыва SSH-соединения screen позволяет возобновить работу там, где вы ее закончили, так как все программы будут продолжать работу в фоне без вас. Последнее часто используется для создания своего рода «демонов для бедных». Есть у screen и другие интересные возможности, например, мониторинг активности терминалов (или ее отсутствия) и ввод диграфов.

Итак, устанавливаем screen:

Запускаем:

Так можно посмотреть список запущенных экземпляров screen:

А так — подключиться к одному из них:

Если в списке только один экземпляр, то можно просто:

Пример файлa ~/.screenrc:

Здесь мы отключаем приветственное сообщение, а также добавляем статусную строку с выводом списка всех окон. Нумерацию окон начинаем с единицы, а не с нуля, как делается по умолчанию.

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

… а второй:

В частности, используя этот прием, можно программировать в паре.

Основные хоткеи в screen следующие.

Окна:

Ctr + A, C Create, создать окно
Ctr + A, K Kill, прибить окно
Ctr + A, W Windows, показать список окон
Ctr + A, Space Переключитьcя на следующее окно
Ctr + A, N То же самое
Ctr + A, Backspace Переключиться на предыдущее окно
Ctr + A, P То же самое
Ctr + A, Ctr + A Вернутся на окно, с которого переключились
Ctr + A, « Выбрать из списка окно, на которое хотим переключиться
Ctr + A, 0-9 Переключиться на окно с таким-то номером
Ctr + A, ‘ Ввести номер окна, на которое хотим переключиться
Ctr + A, Shift + A Переименовать окно
Ctr + A, :number 3 Изменить номер окна
Ctr + A, I Info, информация о текущем окне
Ctr + A, Shift + N Number, номер и название текущего окна

 

Регионы:

Ctr + A, Shift + S Разделить текущий регион горизонтально
Ctr + A, | Разделить текущий регион вертикально
Ctr + A, :resize +5 Изменить размер региона вертикально (увеличить на 5)
Ctr + A, :resize -h 80 Изменить размер региона горизонтально (установить в 80)
Ctr + A, Tab Переключение между регионами
Ctr + A, Shift + X Прибить текущий регион
Ctr + A, Shift + Q Прибить все регионы кроме текущего

 

Мониторинг:

Ctr + A, Shift + M Включить/выключить мониторинг активности в окне
Сек + A, _ Мониторинг неактивности в течение 30 секунд

 

Скролинг и копирование текста:

Ctr + A, [ Перейти в режим copy/scrollback
Ctr + A, ] Вставить содержимое paste buffer (регистр . — «точка»)
Ctr + A, > Записать paste buffer во временный файл (bufferfile)
Ctr + A, < Считать paste buffer из временного файла
Ctr + A, = Удалить bufferfile
Ctr + A, :bufferfile Изменить имя bufferfile (нужно передать аргумент)
Ctr + A, :readreg a Положить paste buffer в регистр a
Ctr + A, :paste a Вставить содержимое регистра a

 

Режим copy/scrollback похож на редактирование текста в Vim. Например, можно искать текст при помощи / и ?. Перейти к началу строки можно при помощи ^,а к концу — при помощи $. Нажатие Y выделяет всю строчку. Нажатие Shift+W копирует одно слово. В целом, в режим copy/scrollback обычно переходят для того, чтобы выделить кусок текста, выведенный ранее в окне. Начало и конец выделения помечаются нажатием на пробел. Попробуйте один раз и сразу все поймете.

Разное:

Ctr + A, ? Подсказка по хоткеям
Ctr + A, D Detach
Ctr + A, \ Прибить все окна и выйти
Ctr + A, A Послать Ctr + A
Ctr + A, T Time, показать текущее время, имя хоста, LA
Ctr + A, V Version, показать версию screen
Ctr + A, X Lock, для разблакировки нужно ввести пароль пользователя
Ctr + A, Z Как Ctr+Z для обычных приложений

 

Детали вы найдете в man screen. Ман подробнейший и вообще классный.