如何更改终端中 dmesg 输出的颜色?

如何更改终端中 dmesg 输出的颜色?

dmesg 输出中有一些令人讨厌的颜色。如何改变这个?查看 .Xresources 和 .bashrc,那里定义的颜色没有与我正在搜索的颜色相匹配。

答案1

dmesg颜色可以使用定制terminal-colors.d文件。您可以dmesg通过创建名为 的文件来禁用颜色/etc/terminal-colors.d/dmesg.disable,或者通过创建名为 的文件(/etc/terminal-colors.d/dmesg.scheme每个颜色定义包含一行)来构建您自己的配色方案,例如

subsys red

将子系统前缀设置为红色。

如果您没有terminal-colors.d目录,请先创建它:

sudo mkdir /etc/terminal-colors.d

中的“颜色”部分man dmesg有关支持的颜色名称列表,以及中的方案描述man terminal-colors.d获取可用于颜色的值。要查看dmesg默认颜色是什么,您必须查看其源代码,当前的默认值是:

static const struct dmesg_color colors[] =
{
    [DMESG_COLOR_SUBSYS]    = { "subsys",   UL_COLOR_BROWN },
    [DMESG_COLOR_TIME]  = { "time",     UL_COLOR_GREEN },
    [DMESG_COLOR_TIMEBREAK] = { "timebreak",UL_COLOR_GREEN UL_COLOR_BOLD },
    [DMESG_COLOR_ALERT] = { "alert",    UL_COLOR_REVERSE UL_COLOR_RED },
    [DMESG_COLOR_CRIT]  = { "crit",     UL_COLOR_BOLD UL_COLOR_RED },
    [DMESG_COLOR_ERR]       = { "err",      UL_COLOR_RED },
    [DMESG_COLOR_WARN]  = { "warn",     UL_COLOR_BOLD },
    [DMESG_COLOR_SEGFAULT]  = { "segfault", UL_COLOR_HALFBRIGHT UL_COLOR_RED }
};

答案2

对于许多已无故着色的工具,取消它们着色的最简单方法是将它们通过管道传输cat

$ dmesg | cat

相关内容