0

我正在编写一个用户命令作为别名,它使用不同颜色的 awk 打印输出。

我想出的小片段在 KDE Konsole 中运行良好,但在 xterm 或 gnome-terminal 中却不行。

我的 shell 是 SLES11 上的 BASH,终端设置为 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-terminal 都不能正确显示。在 Xterm 中根本没有显示颜色,在 gnome-terminal 中只显示字体颜色,没有背景。

任何想法或替代方法来普遍着色 awk 输出?谢谢,罗伯托

4

1 回答 1

1

该片段在转义序列中使用了 RGB 风格“2”,它应该在补丁 #282之后与 xterm 一起使用(这似乎有点旧,但 SLSE 11 比这早几个月)。

如果你必须硬编码,RGB 风格的“5”更便携。但是可移植应用程序使用类似tput的东西,而不是依赖常量。

所指的“2”在此字符串中(重复多次):

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

并在XTerm 控制序列中讨论 ISO-8613-6 的段落中提到。

于 2015-02-21T22:01:36.500 回答