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.

Другие вопросы по тегам