Динамическое изменение заголовков окон в screen |
[исправить] |
Как известно, screen умеет динамически менять заголовки окон, исследуя каждую
выводимую строку приложения на наличие esc-k. Вот этого в .bashrc достаточно,
чтобы научить screen менять заголовок в зависимости от запущенного приложения:
if [[ "$TERM" == "screen" ]]; then
SCREENTITLE='\[\ek\e\\\]'
PS1="${SCREENTITLE}${PS1}"
fi
Однако, очень хотелось заставить screen менять заголовок окна в зависимости от
того, на какой сервер/железку я зашел с помощью ssh или telnet. Сделал это
парой скриптов (оберток) для ssh и telnet, сохранил их в каталоге ~/.scripts и
добавил этот каталог в начало окружения PATH.
.scripts/telnet
#!/bin/bash
echo -ne "\ek->`echo $@|awk 'BEGIN{opts="-l-n-e"}
{for(i=1;i<=NF;i++){if(substr($(i),1,1)=="-")
{if(index(opts,$(i))!=0)i++;continue;}break;}print $(i);}'`\e\\" /usr/bin/telnet $@ < `tty` > `tty`
.scripts/ssh
#!/bin/bash
echo -ne "\ek->`echo $@ | awk 'BEGIN{opts="-b-c-D-e-F-I-i-L-l-m-O-o-p-R-S-W-w"}
{for(i=1;i<=NF;i++){if(substr($(i),1,1)=="-")
{if(index(opts,$(i))!=0)i++;continue;}break;}print $(i);}'`\e\\" /usr/bin/ssh $@ < `tty` > `tty`
|
|
|
|
Раздел: Корень / Пользователю / Работа в консоли |
|
|
|
2.4, default (??), 12:35, 28/06/2010 [^] [ответить] [к модератору]
| +/– |
Действительно, учитывая размер скриптов, лучше это дело реализовать в виде wrapper-функций шелла. Спасиб.
|  | |
2.5, Аноним (3), 12:48, 28/06/2010 [^] [ответить] [к модератору]
| +/– |
В моем примерчике, кстати, стираются опции с аргументами к ним не только в заголовке, но и при запуске самой команды. Поправить это просто, но я оставлю это как домашнее задание. ;)
|  | |
|
1.6, Аноним (-), 03:05, 30/06/2010 [ответить] [к модератору]
| +/– |
>>if [[ "$TERM" == "screen" ]]; then
if [ "$TERM" = "screen" ]; then
короче и посиксно. Зачем так увлекаться башем? ;)
|  | |
|
|
Ваш комментарий |
|
|