linux – 显示带有转义颜色代码的文件 – 从bootlog守护进程引导消息

前端之家收集整理的这篇文章主要介绍了linux – 显示带有转义颜色代码的文件 – 从bootlog守护进程引导消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含颜色代码文件
Fri May 25 17:13:04 2012: [....] Starting MTA: exim4^[[?25l^[[?1c^[7^[[1G[^[[32m ok ^[[39;49m^[8^[[?25h^[[?0c.
Fri May 25 17:13:05 2012: [....] Loading cpufreq kernel  modules...^[[?25l^[[?1c^[7^[[1G[^[[32m ok ^[[39;49m^[8^[[?25h^[[?0cdone (acpi-cpufreq).

如何在linux终端上显示它着色?

解决方法

为了完整起见,包含所有这些转义序列的文件由bootlogd守护程序(debian系列中的bootlog软件包)生成,它捕获在引导过程中发送到控制台的所有彩色消息.在控制台上,这些消息首先显示如下:
[....] Starting periodic command scheduler: cron

那么当执行服务或命令时,将转发序列发送到控制台,以将光标重新定位在行的开头,并打印ok,fail,info,warn等…

[ ok ] Starting periodic command scheduler: cron.

所有这些消息都由bootlogd守护程序捕获,并写入具有所有转义序列的文件,包括重定位序列.没有问题,除了^ [必须被八进制033替换为正确显示文件.但是,因为有一个catch,守护进程还会在消息前添加一个日期戳,而不会改变光标重新定位顺序的坐标.因此,ok,fail等消息覆盖部分日期戳.不太好.

Fri May 25 17:13:01 2012: [....] Starting periodic command scheduler: cron
becomes...
[ ok ay 25 17:13:01 2012: [....] Starting periodic command scheduler: cron.

解决办法是改变光标定位顺序.通过尝试和错误我发现序列是^ [1G.以下sed命令终于完成了工作:

sed 's/\^\[/\o33/g;s/\[1G\[/\[27G\[/' /var/log/boot

在将控制台消息发送到文件之前,bootlogd守护程序应清除所有转义序列.我们可以称之为错误吗?

所有的Debian继承人,如Ubuntu,Mint等,也可能会出现这个“bug”

猜你在找的Linux相关文章