gpt4 book ai didi

linux - 显示带有转义颜色代码的文件 - 来自引导日志守护程序的引导消息

转载 作者:IT王子 更新时间:2023-10-28 23:57:49 25 4
gpt4 key购买 nike

我有一个包含颜色代码的文件:

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 才能正确显示文件。但是,因为有一个陷阱,守护进程还在消息前面添加了一个日期戳,而不改变光标重新定位序列的坐标。因此,okfail 等消息会覆盖部分日期戳。不好。

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 等......

关于linux - 显示带有转义颜色代码的文件 - 来自引导日志守护程序的引导消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com