GNU Screen (Русский)

GNU Screen — это полноэкранный оконный менеджер для терминала, который мультиплексирует его между несколькими процессами, обычно интерактивными оболочками. Программы, запущенные в Screen, продолжают работать, когда их окно в данный момент скрыто, и даже когда весь сеанс screen отсоединён от пользовательского терминала.

Состояние перевода: На этой странице представлен перевод статьи GNU Screen. Дата последней синхронизации: 15 января 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Обзор возможностей можно почитать в документации GNU Screen.

Установка

Установите пакет screen.

Использование

Для ввода команд нужно нажать escape-комбинацию (по умолчанию Ctrl+a) и затем нужное сочетание клавиш.

Некоторым пользователям Ctrl+a кажется неудобным. Можно назначить другое сочетание клавиш, как описано в разделе #Изменение escape-комбинации.

Стандартные команды

  • ctrl+a ? Отображает список команд и их параметры по умолчанию
  • ctrl+a : Ввод команды для screen
  • ctrl+a Список окон
  • ctrl+a Открыть окно 0
  • ctrl+a Переименовать текущее окно
  • ctrl+a Отправить ctrl+a в текущее окно
  • ctrl+a c Создать новое окно
  • ctrl+a S Разделить текущий регион на два по горизонтали
  • Ctrl+a Разделить текущий регион на два по вертикали
  • ctrl+a Переключить фокус ввода на следующий регион
  • ctrl+a ctrl+a Переключение между текущим и предыдущим регионами
  • ctrl+a Перейти в режим копирования (используйте enter для выделения текста)
  • ctrl+a Вставка текста
  • ctrl+a Закрыть все регионы кроме текущего
  • ctrl+a Закрыть текущий регион
  • ctrl+a Отключиться от текущего сеанса screen, оставив его работающим в фоне. Для переподключения используйте

Вводимые команды

  • Ctrl+a Закрывает все окна и завершает сеанс screen
  • Ctrl+a :source ~/.screenrc Перезагружает файл настроек screenrc (также можно использовать )

Именованные сеансы

Создание сеанса с определённым названием:

$ screen -S название_сеанса

Переименование текущего сеанса:

Ctrl+a

Список всех существующих сеансов текущего пользователя:

$ screen -list

Подключение к существующему сеансу по его имени:

$ screen -x название_сеанса

или

$ screen -r название_сеанса

Настройка Screen

Вы можете изменить настройки Screen по умолчанию в соответствии с вашими предпочтениями в файле , который содержит команды, которые выполнятся при запуске (например, ~/.screenrc или на лету с помощью ввода команд (например, Ctrl+a ).

Советы и рекомендации

Автозапуск с помощью systemd

Эта служба автоматически запускает screen для указанного пользователя (например, ). Важно запускать эту службу как системную, так как systemd --user может не запуститься, а также будет завершён после закрытия последнего сеанса пользователя.

Изменение escape-комбинации

Изменение стандартной escape-комбинации может быть хорошей идеей не только потому, что «a» обычно набирается левым мизинцем, но также и потому, что Ctrl+a часто используется как команда в GNU Readline и bash-совместимых командных оболочках.

Её можно изменить с помощью опции в ~/.screenrc или параметра для команды screen.

Например, если вы заметите, что редко используете в своей оболочке или редакторе, вы можете использовать для изменения escape-последовательности на . Второй "j" означает, что литерал может быть отправлен на терминал путём нажатия . Для пользователей Dvorak более удобным может быть сочетание клавиш (escape ^Tt).

Более экзотические варианты: , который задаёт клавишу , или , который задаёт .

Escape-комбинация также называется "командным символом" ("command character") в документации Screen.

Запуск в окне 1

По умолчанию, первое окно screen имеет номер 0. Возможно, вы предпочтете начать с нумерацию с единицы, добавьте это в ~/.screenrc:

~/.screenrc
bind c screen 1
bind ^c screen 1
bind 0 select 10
screen 1

Вложенные сеансы Screen

Можно случайно застрять во вложенном сеансе screen. Частый сценарий: вы запускаете сеанс SSH внутри сеанса screen. В сеансе SSH вы запускаете screen. По умолчанию первый сеанс screen будет перехватывать команды Ctrl+a. Чтобы отправить команду второму сеансу screen, используйте Ctrl+a и затем свою команду. Например:

  • Ctrl+a Отсоединяется от внутреннего сеанса screen.
  • Ctrl+a Завершает (kill) внутренний сеанс screen.

Запуск Screen во всех командных оболочках

Для Bash и Zsh добавьте следующий фрагмент в ваш or перед псевдонимами:

Использование 256 цветов

По умолчанию Screen использует эмулятор 8-цветного терминала. Чтобы включить больше цветов, вам нужно использовать терминал, который их поддерживает, и установить правильное значение term. Будет использоваться terminfo для описания того, как будут интерпретироваться управляющие коды ANSI. Запись в структуре базы данных terminfo должна существовать, ncurses предоставляет много описаний в .

Сначала попробуйте общее значение:

Если это не работает, попробуйте установить значение, соответствующее вашему текущему терминалу. Например, при использовании терминала на основе xterm:

Для rxvt-unicode:

Примечание: Файл /usr/share/terminfo/r/rxvt-unicode-256color предоставляется пакетом rxvt-unicode-terminfo, который устанавливается как зависимость пакета rxvt-unicode. Однако, если вы подключаетесь к серверу по SSH и на нём запускаете screen, нужный файл terminfo может не найтись на сервере. В таком случае можно скопировать /usr/share/terminfo/r/rxvt-unicode-256color на сервер в каталог ~/.terminfo/.

В крайнем случае попробуйте использовать termcapinfo:

Информативный статус-бар

Стандартный статус бар немного пустоват. Вы можете посчитать это полезным:

Ещё вариант из frodfrog's blog:

В Screen версии 5 (master-ветка) escape-коды изменились:

Статус-бар наверху:

Использование hardstatus в качестве динамического заголовка окна терминала

Это довольно просто: переделайте текущий hardstatus на с уведомлением и отредактируйте соответствующим образом:

Это отобразит что-то вроде в заголовке окна вашего терминала. Caption содержит дату, текущее время и раскрашивает коллекцию экранных окон.

Использование механизма прокрутки X

Доступ к буферу прокрутки GNU Screen можно получить с помощью Ctrl+a [. Однако это очень неудобно. Чтобы использовать полосу прокрутки эмулятора терминала (например, в xterm или Konsole), добавьте следующую строку :

Перемещение работающий программы в Screen

Если вы запустили программу вне Screen, но теперь хотите поместить её внутрь Screen, вы можете использовать reptyr, чтобы переназначить процесс с его текущего TTY на Screen.

Установите пакет .

Найдите PID нужного процесса (например с помощью ) и используйте его как аргумент для команды reptyr внутри нужного окна screen:

$ reptyr pid

Использование другой строки приглашения bash внутри screen

Добавьте в :

Отключение визуального сигнала

По умолчанию при получении ASCII-символа Bell Screen некрасиво мерцает. Можно отключить это и вернуть звуковой сигнал с помощью этой опции:

Избавление от вертикальных и горизонтальных полос

Чтобы скрыть вертикальные полосы:

Чтобы скрыть горизонтальные полосы, установите в основной и фоновый цвета в default (d) и выведите пустоту (" "):

Если это не сработает, попробуйте . Для стандартного чёрно-белого caption используйте caption string "%{00}%3n %t".

Решение проблем

Исправление остатков текста после редактора

После открытия и последующего закрытия текстового редактора внутри screen (например nano) текст может оставаться видимым в терминале. Исправление:

Исправление столбца Name в windowlist, который отображает только "bash"

Добавьте в ~/.screenrc:

Смотрите также

gollark: Also functional programming.
gollark: I like static typing yes.
gollark: I mean, *ish*.
gollark: Python doesn't even have ADTs. Or actually types?
gollark: > Java
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.