k001
k001
:...

April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

k001 [userpic]
Set X terminal title

А вот ещё микрохаутушечка для линуксоида-любителя.

Есть у меня скрипт, который делает некую полезную работу, поделённую на пару десятков этапов. Каждый этап может длиться несколько минут или часов. Я запускаю скрипт в терминале, он цветной строчкой с таймстемпом оповещает о начале каждого этапа, типа:

[12:23:22] [4/21] Updating bla bla ....

Но потом эта строчка уползает вверх, и, посмотрев на терминал в произвольный момент времени, непонятно, что там происходит.

Меж тем у терминала (иксового) есть некий текст, написанный в рамке X окна. Почему бы туда не написать нам ту же строчку, что мы выводим на экран. Аналогично поступает, например, emerge из Gentoo.

Читаем мой любимый console_codes(4) и выясняем, что для этого нужно. Пишем простой код на шелле (он же показывает разноцветности в терминале):


#!/bin/bash
# Example of setting title and using colors in terminal.
# By Kir Kolyshkin <kir AT sacred DOT ru>

BF='\033[1m'            # Bold
NF='\033[0m'            # Normal
GF='\033[32m'           # Green
SET_TITLE='\033]0;'    # Set title
ST='\033\\'             # ECMA-48 string terminator

# Log to console and set terminal title as well
log() {
        local d=$(date +%H:%M:%S)
        echo -e [${GF}${d}${NF}] ${BF}$*${NF}
        echo -ne ${SET_TITLE}[$d] $*${ST}
}

# Usage example
MAX=10
for N in $(seq 1 $MAX); do
        log "Counting $N/$MAX..."
        sleep 0.7
done

Tags: ,
Comments

и ST='\033\\' у меня лишние \ добавляет в конце строки - мой вариант ST='\033'

ST — это String Terminator, состоит из ESC и \

Я это понял, но в моем случае \ оказался лишним.

Какой-то у тебя больной терминал тогда, кмк

Пишет что эмулирует xterm-color
$ env | grep TERM
TERM_PROGRAM=Apple_Terminal
TERM=xterm-color
TERM_PROGRAM_VERSION=240

$ stty
speed 9600 baud;
lflags: echoe echoke echoctl pendin
iflags: iutf8
oflags: -oxtabs
cflags: cs8 -parenb

но, видимо, ST неправильно понимает.

в console_codes(4) написано ещё, что в качестве ST можно использовать BEL (то есть \007). попробуй его

c \007 тоже работает

Я попробовал Terminal, xterm, rxvt, konsole и gnome-terminal — везде (кроме konsole) работает правильно, слеш в конце не пишет.

В konsole всё хитро — во-первых, в дефолтных настройках заголовок окна, выставляемый «изнутри», вообще никак не используется, а если настроить, чтобы он показывался (%w в Settings -> Tabs -> [Remote] tab title format), то всё равно не работает. Если же сменить ST на \007, то работает. То есть тоже ECMA ST не понимает