Awk цвета не отображаются в Xterm
Я пишу пользовательскую команду как псевдоним, который использует вывод на печать awk разными цветами.
Небольшой фрагмент, который я придумал, прекрасно работает в KDE Konsole, но не в xterm или gnome-Terminal.
Моя оболочка BASH на SLES11, и терминал установлен в XTERM
myuser@myhost:~> env |grep -i term
TERM=xterm
COLORTERM=1
Псевдоним определяется следующим образом:
alias myCustomPS="\
awk '{ \
gsub(/\.CONTEXT/,\"\", \$11); \
split(\$11,v,\"_D\"); \
split(\$13,h,\".\"); \
if (\$1==\"usr1\")
printf \"pid [\033[1;37;48;2;0;0;128m %5s \033[0m] [\033[1;37;48;2;0;0;128m %.8s \033[0m] \033[1;37;48;2;0;0;128m %-8.10s \033[0m D%-8s\n\", \$2, \$1, h[1], v[2]; \
else if (\$1==\"usr2\") \
printf \"pid [\033[1;37;48;2;0;170;170m %5s \033[0m] [\033[1;37;48;2;0;170;170m %.8s \033[0m] \033[1;37;48;2;0;170;170m %-8.10s \033[0m D%-8s\n\", \$2, \$1, h[1], v[2]; }'"
вывод, который я получаю, отображается правильно ТОЛЬКО в Konsole.
Вместо этого и xterm, и gnome-терминал не показывают это правильно. В Xterm цвет вообще не отображается, в терминале gnome отображается только цвет шрифта, а фон отсутствует.
Любая идея, или альтернативные способы универсально раскрасить вывод awk? Спасибо роберто
1 ответ
Фрагмент использует разновидность RGB "2" в escape-последовательности, которая должна работать с xterm после патча # 282 (который кажется немного старым, но SLSE 11 на несколько месяцев старше этого).
Если вам нужно что-то жестко закодировать, аромат RGB "5" более переносим. Но переносимые приложения используют что-то вроде tput, а не полагаются на константы.
Упомянутая "2" находится в этой строке (повторяется несколько раз):
\033[1;37;48;2;0;0;128m
^
и упоминается в Последовательностях управления XTerm в параграфе, обсуждающем ISO-8613-6.