Еще немного о screen
GNU Screen - это небольшая утилита, позволяющая оставлять сессии работающими, в то время как вы физически вышли из системы, либо использовать несколько терминальных окон в одном. Она обладает большими возможностями (некоторые из них описаны здесь), но в этой заметке я расскажу о строке состояния screen.
Вы можете использовать два вида строки состояния:
- “Заголовок” (Caption)
- “Статус” (Hardstatus)
В чем же различие между ними? “Статус” обычно используется для получения и отображения сообщений от screen, например оповещений об активности или похожих сообщений. “Заголовок” обычно используется при работе с больше чем одним окном и отображает информацию о текущем окне.
Перейдем к практике :) Добавьте следующие строки в файл ~/.screenrc
caption string “%w”
hardstatus alwayslastline “This is a test…”
Откройте сессию screen и вы увидите две строки внизу окна: одна отображает количество открытых окон, вторая просто показывает заданную строку.
Как быть, если вы не хотите постоянно видеть строку состояния? Нет проблем:
#
# Toggle ‘fullscreen’ or not.
#
bind f eval “caption splitonly” “hardstatus ignore”
bind F eval “caption always” “hardstatus alwayslastline”
Теперь “ctrl-a f ” уберет строку состояния, а “ctrl-a F” вернет их на место.
Еще одна полезная область применения для строки состояния - это отображение вывода команд. В следующем примере я покажу, как показать вывод uptime в строке “Статус”. Для этого необходимо сделать две вещи:
- Определить команду для запуска и период обновления
- Определить место отображения в нужно строке
Это делается так:
backtick 1 5 5 uptime
hardstatus alwayslastline “%1`”
Здесь мы определили команду с ID = 1, которая действительна 5 секунд и через 5 секунд должна обновиться. Сама команда - uptime. Также мы добавили строку %1` в соответствующей части строки состояния. Она будет заменена на результат работы команды с ID 1.
Важно отметить, что мы включили команду с выводом результатов в одну строку. Это обязательное условие.
Ну и напоследок еще несколько советов по более тонкой настройке строки состояния.
Screen поддерживает условные обозначения, которые при выводе заменяются на их актуальные значения. Вот пример такой строки в .screenrc
#
# look and feel for the bottom two lines.
#
caption always “%{+b rk}%H%{gk} |%c %{yk}%d.%m.%Y | %72=Load: %l %{wk}”
hardstatus alwayslastline “%?%{yk}%-Lw%?%{wb}%n*%f %t%?(%u)%?%?%{yk}%+Lw%?”
Ниже приводится список сокращений, фактически один-в-один скопированный из man-страницы screen. Экранирующий символ - % с одним только исключением: внутри строки “Статус” (Hardstatus) экранирующим символом является ‘^%’
% the escape character itself
a время суток ‘am’ или ‘pm’
A время суток ‘AM’ или ‘PM’
c текущее время HH:MM в 24-часовом формате
C текущее время HH:MM в 12-ти часовом формате
d порядковый номер дня
D имя дня недели
f флаги окна
F устанавливает %? в значение “true” если окно получает фокус
h Статус окна
H Имя хоста
l Текущая загрузка системы
m Номер месяца
M Название месяца
n Номер окна
s Секунды
t Заголовок окна
u Все другие пользователи в этом окне
w Номера и имена всех окон. С квантификатором ‘-’: включая текущее окно; с квантификатором ‘+’: начиная с текущего окна
W Имена и номера всех окон, исключая текущее
y Последние две цифры года
Y Полный порядковый номер года
С этим спискм вы сможете значительно разнообразить и сделать более информативным окно screen. Например, отображение текущей даты, времени и загрузки системы выглядит так:
hardstatus alwayslastline “Host: %H Date: %D-%M-%Y: Load: %l “
Вы можете эксперементировать с различными опциями и добавить значительно больше разнообразия в строку состояния (например выравнивание или раскрашивание вывода). За подробностями я рекомендую обратиться к man-странице GNU Screen (к секции STRING ESCAPES):
$ man screen
Оригинал:
[…] Юникс и другие » Blog Archive » Еще немного о screen Добавьте следующие строки в файл ~/.screenrc […]
а можно сделать так чтоб хардстатус выводился в несколько строк, а то уж больно много окон открыто