2015-02-19 9 views
0

Я пишу пользовательскую команду в качестве псевдонима, использующего выход awk для печати в разных цветах.Цвет Awk не отображается в Xterm

Небольшой фрагмент, который я придумал, отлично работает в KDE Konsole, но не в xterm или gnome-terminal.

Моя оболочка является BASH на SLES11 и терминал установлен в XTERM

[email protected]:~> 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-terminal вместо этого не отображают его правильно. В Xterm никакого цвета вообще не отображается, в gnome-terminal отображается только цвет шрифта, нет фона.

любая идея или альтернативные способы повсеместного раскрашивания вывода awk? Спасибо, Roberto

+0

Это действительно сложно проверить без репрезентативного ввода образца. Не могли бы вы предоставить некоторые из них или, возможно, скрыть сценарий до минимума, который пытается раскрасить любой случайный фрагмент текста? – tripleee

+0

Не выполняйте управляющие последовательности жесткого кода. Используйте 'tput' или аналогичный запрос терминалу для последовательности, используемой для текущего типа терминала. Я собираюсь предположить, что эти последовательности просто неверны для xterm или gnome-terminal. Я знаю, что, по крайней мере, в поддерживаемых цветах «Konsole» предположительно имеет гораздо более широкую поддержку того, какие цвета доступны (какой-либо произвольный цвет, на самом деле я считаю). –

+0

Если я правильно помню, вам нужно установить TERM на xterm-color или что-то подобное, чтобы получить цвета в xterm, попробуйте посмотреть http://stackoverflow.com/questions/10003136/what-is-the-difference-between-xterm -color-xterm-256color – rasmusm

ответ

1

Сниппет использует RGB аромат «2» в управляющей последовательности, которая должна работать с XTerm после patch #282 (который, кажется, немного старый, но SLSE 11 составляет несколько месяцев старше, чем).

Если вы должны жестко закодировать вещи, аромат RGB «5» более портативен. Но портативные приложения используют что-то вроде tput, а не полагаются на константы.

"2", упомянутый в этой строке (повторяется несколько раз):

\033[1;37;48;2;0;0;128m 
      ^

и упоминается в XTerm Control Sequences в пункте обсуждения ISO-8613-6.

 Смежные вопросы

  • Нет связанных вопросов^_^