У меня есть общий домашний каталог, который автоматически монтируется через NFS на всех серверах UNIX, на которых я вхожу. Я хотел бы иметь один .screenrc, который (например) помещает имя хоста в строке hardstatus другим цветом, чтобы указывать, когда я вошел в рабочую версию по сравнению с разработкой; наши имена хостов таковы, что это легко сделать с помощью сопоставления с шаблоном.
Есть ли способ поместить условные операторы в .screenrc? Быстрый просмотр справочной страницы, кажется, не раскрывает ничего очевидного.
РЕДАКТИРОВАТЬ:
Чтобы уточнить, у меня уже есть пользовательская жесткая строка состояния; Я хочу изменить некоторые цвета / поля, отображаемые на основе имени хоста, на котором вызывается экран. У меня уже есть что-то подобное для моей PS1, однако я предпочел бы сделать это в строке состояния экрана, когда я прыгаю с этих хостов на маршрутизаторы / коммутаторы, которые не позволяют мне выполнять какую-либо быструю расцветку. Таким образом, у меня может быть одно окно для производства и одно для разработки, причем цвет строки состояния экрана говорит мне, какое окно я вижу с первого взгляда.
источник
Ответы:
Я вижу два способа сделать это, первый - создать файл .screenrc на хосте.
Например
.screenrc_serverA
,.screenrc_serverB
...В вашем скрипте запуска оболочки задайте для SCREENRC что-то вроде этого.
.screenrc_`hostname`
Конечно, вы можете использовать исходную команду экрана, чтобы включить что-то похожее
.screenrc_default
в каждый пользовательский файл .screenrc_… так, чтобы они содержали только строку заголовка / hardstatus, а не Вся конфигурация каждый раз.Вторым способом было бы выполнить команды наподобие
screen -X hardstatus lastline ...
(используя if тесты для выполнения команды с другим значением для ... в зависимости от имени хоста) в вашем скрипте запуска оболочки. Когда вы войдете на сервер, screen -X ничего не будет делать, потому что screen еще не будет запущен, но каждый раз, когда вы открываете новые окна на экране, hardstatus будет обновляться.Конечно, первое решение лучше, потому что второе обновляет строку hardstatus каждый раз, когда вы открываете окно новостей, которое, вероятно, бесполезно, поскольку имя хоста не изменится.
источник
hostname
". У меня есть проблема, чтобы включить `в пост@radius очень занят с SCREENRC, но это был не очень полный ответ, поэтому я уточню…
~ / .Bashrc
* Всегда используйте новые тесты !
Слово о побегах
Правильный способ включить цвета в сценарии - использовать tput, а не экранирующие символы. Ваши escape-символы относятся к вашему терминалу. Команда tput работает с терминалом. Я написал это для тех случаев, когда мне нужно стать модным в своих сценариях:
~ / Bin / COLORS.sh
Я также сделал скрипт для демонстрации использования tput. Вы можете получить это из этой сути.
См .:
http://www.ibm.com/developerworks/aix/library/au-learningtput/?S_TACT=105AGY06
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html
источник
setaf
используется, хотя это должно бытьsetab
( b вместо f ), а во-вторых, что использование9
по умолчанию не работает для меня, возможно, потому что tput-версия не является стандартной (либо в его дело или мое, я просто не знаю, и это не имеет большого значения)Просто установите его в вашем .screenrc как переменную hardstatus. Пока вы используете переменную типа% H для имени хоста, она будет меняться в соответствии с любым именем хоста, с которым вы работаете.
Даст вам строку состояния внизу, которая выглядит как
имя хоста - красное на черном, время - зеленым на черном, дата - желтым на черном. окно, помеченное *, является текущим окном, показанным синим текстом на белом фоне. Окно, помеченное - это ранее активное окно, показанное белым текстом на черном. вышеприведенное окно 1 не является ни текущим, ни предыдущим, и будет отображаться белым по черному. другие возможности покажут вам других пользователей, прикрепленных к окнам, белым на черном и помеченных знаком +.
Отображение времени также помогает сохранять живые данные, если вы используете ssh на удаленных серверах для запуска экрана, так как время, изменяющееся каждую минуту, будет поддерживать ваш сеанс в активном состоянии, даже если оболочка простаивает на удаленной стороне.
источник
Вы можете покрасить строку состояния из скрипта с обратной связью, напечатав
\005{..r}
или подобный (r
для красного и т. Д., Как и внутри самого.screenrc
себя), так что вы можете либо хэшировать имя хоста для получения числа, либо просто иметь набор условных операторов для установки цвет. В качестве примера, вот скрипт для изменения цвета и печати имени хоста для использования на экране:Затем вы добавляете запись для этого скрипта в
.screenrc
и ссылаетесь на нее в hardstatus или заголовке как% 4`:Это предполагает, что имя хоста вряд ли изменится, следовательно, время ожидания и срок действия 1 час (3600 секунд); биты, окружающие вызов самого обратного удара, просто помещают дату в начало строки и время после имени хоста.
Вы даже можете использовать этот механизм для окрашивания вывода скрипта в зависимости от значения уровня заряда батареи, нагрузки на систему или температуры, при условии, что у вас есть доступ к соответствующим значениям из скрипта оболочки.
источник
screen
escape\005
- таким образом, все условное форматирование может быть помещено в гораздо более читаемый сценарий оболочки вместо тех, которые уже трудно анализировать,caption
соответственно.hardstatus
директивы экрана.Если вы хотите избежать большого количества сценариев, вы можете попробовать это:
grep будет печатать имя хоста только в том случае, если оно совпадает с «prod», так что вы можете подключить его к обратному коду и
%?
конструкции. Виола!источник