<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Динамическое изменение заголовков о...</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html</link>
    <description>Как известно, screen умеет динамически менять заголовки окон, исследуя каждую выводимую строку приложения на наличие esc-k. Вот этого в .bashrc достаточно, чтобы научить screen менять заголовок в зависимости от запущенного приложения:&lt;br&gt;&lt;br&gt;   if &#091;&#091; &quot;$TERM&quot; == &quot;screen&quot; &#093;&#093;; then&lt;br&gt;       SCREENTITLE=&apos;&#092;&#091;&#092;ek&#092;e&#092;&#092;&#092;&#093;&apos;&lt;br&gt;       PS1=&quot;$&#123;SCREENTITLE&#125;$&#123;PS1&#125;&quot;&lt;br&gt;   fi&lt;br&gt;&lt;br&gt;Однако, очень хотелось заставить screen менять заголовок окна в зависимости от того, на какой сервер/железку я зашел с помощью ssh или telnet. Сделал это парой скриптов (оберток) для ssh и telnet, сохранил их в каталоге ~/.scripts и добавил этот каталог в начало окружения PATH.&lt;br&gt;&lt;br&gt;.scripts/telnet&lt;br&gt;&lt;br&gt;   #!/bin/bash&lt;br&gt;&lt;br&gt;   echo -ne &quot;&#092;ek-&amp;gt;&#096;echo $&#064;&amp;#124;awk &apos;BEGIN&#123;opts=&quot;-l-n-e&quot;&#125;&lt;br&gt;   &#123;for(i=1;i&amp;lt;=NF;i++)&#123;if(substr($(i),1,1)==&quot;-&quot;)&lt;br&gt;   &#123;if(index(opts,$(i))!=0)i++;continue;&#125;break;&#125;print $(i);&#125;&apos;&#096;&#092;e&#092;&#092;&quot;&lt;br&gt;/usr/bin/telnet $&#064; &amp;lt; &#096;tty&#096; &amp;gt; &#096;tty&#096;&lt;br&gt;&lt;br&gt;.scripts/ssh&lt;br&gt;&lt;br&gt;   #!/bin/bash&lt;br&gt;&lt;br&gt;   echo -ne &quot;&#092;ek-&amp;gt;&#096;echo $&#064; &amp;#124; awk &apos;BEGIN&#123;opts=&quot;-b-c-D-e-F-I-i-L-l-m-O-o-p-R-S-W-w&quot;&#125;&lt;br&gt;   &#123;for(i=1</description>

<item>
    <title>Динамическое изменение заголовков окон в screen (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#9</link>
    <pubDate>Mon, 05 Jul 2010 08:55:30 GMT</pubDate>
    <description>bash, gawk и tty кросплатформенны. А вот /usr/bin/ssh - нет, нет никакой гарантии что ssh будет находится в /usr/bin; тоже самое с /bin/bash. Первое решается с помощью встроенной команды command, второе с помощью популярного хака - #! /usr/bin/env bash&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (splat_pack)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#8</link>
    <pubDate>Fri, 02 Jul 2010 11:32:43 GMT</pubDate>
    <description>не кросплатформенно ни разу&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#7</link>
    <pubDate>Wed, 30 Jun 2010 05:14:21 GMT</pubDate>
    <description>&amp;gt;короче и посиксно. Зачем так увлекаться башем? ;) &lt;br&gt;&lt;br&gt;Угу, в .bashrc посиксность и переносимость -- Первое Дело! B*)&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#6</link>
    <pubDate>Tue, 29 Jun 2010 23:05:13 GMT</pubDate>
    <description>&amp;gt;&amp;gt;if &#091;&#091; &quot;$TERM&quot; == &quot;screen&quot; &#093;&#093;; then&lt;br&gt;&lt;br&gt;if &#091; &quot;$TERM&quot; = &quot;screen&quot; &#093;; then&lt;br&gt;&lt;br&gt;короче и посиксно. Зачем так увлекаться башем? ;)&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#5</link>
    <pubDate>Mon, 28 Jun 2010 08:48:00 GMT</pubDate>
    <description>В моем примерчике, кстати, стираются опции с аргументами к ним не только в заголовке, но и при запуске самой команды. Поправить это просто, но я оставлю это как домашнее задание. ;)&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (default)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#4</link>
    <pubDate>Mon, 28 Jun 2010 08:35:26 GMT</pubDate>
    <description>Действительно, учитывая размер скриптов, лучше это дело реализовать в виде wrapper-функций шелла. Спасиб.&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#3</link>
    <pubDate>Mon, 28 Jun 2010 08:26:15 GMT</pubDate>
    <description>Вместо /usr/bin/ssh можно написать просто &#096;command ssh&apos;. А вместо отдельных скриптов, кои запускают новый процесс лучше избавиться от awk&apos;а и tty (юзать getopts/case/$TTY), сделать чистые функции и сорсить их из ~/.bashrc.&lt;br&gt;&lt;br&gt;Просто судя по тому, что у автора в скрипте, ему хватит и POSIX shell&apos;а. Стоит лишь заменить &#091;&#091; blah &#093;&#093; на &#091; blah &#093;. Можно было вообще обойтись одним awk&apos;ом или одним sh.&lt;br&gt;&lt;br&gt;Например, на zsh это бы выглядело так&lt;br&gt;&lt;br&gt;    typeset -A wrap_cmds&lt;br&gt;&lt;br&gt;    # telnet/main.c&lt;br&gt;    wrap_cmds+=(telnet 468EKLNS:X:acde:fFk:l:n:rs:uxy)&lt;br&gt;    # openssh/ssh.c&lt;br&gt;    wrap_cmds+=(ssh 1246ab:c:e:fgi:kl:m:no:p:qstvxACD:F:I:KL:MNO:PR:S:TVw:W:XYy)&lt;br&gt;&lt;br&gt;    set-title() echo &quot;&#092;ek$*&#092;e&#092;&#092;&quot;&lt;br&gt;&lt;br&gt;    () &#123; local fun; for fun ($&#123;(k)wrap_cmds&#125;) $fun() &#123;&lt;br&gt;        local opt OPTIND OPTARG&lt;br&gt;&lt;br&gt;        # erase options and their arguments from argv&#091;&#093;&lt;br&gt;        while getopts $wrap_cmds&#091;$0&#093; opt; do done&lt;br&gt;        shift $((OPTIND - 1))&lt;br&gt;&lt;br&gt;        set-title &quot;$0 $*&quot;&lt;br&gt;        command $0 &quot;$&#064;&quot;&lt;br&gt;    &#125;&#125;&lt;br&gt;&lt;br&gt;Потом из ~/.zshrc можно делать &#096;source ~/.t</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (Админ Веня)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#2</link>
    <pubDate>Mon, 28 Jun 2010 06:47:39 GMT</pubDate>
    <description>tmux вроде умеет изкаропки&lt;br&gt;</description>
</item>

<item>
    <title>Динамическое изменение заголовков окон в screen (default)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/68262.html#1</link>
    <pubDate>Mon, 28 Jun 2010 05:53:25 GMT</pubDate>
    <description>&quot;оттабили&quot; неудачно. последние команды, вызывающие telnet и ssh являются частью скриптов.&lt;br&gt;</description>
</item>

</channel>
</rss>
