bash 日志文件中的奇怪字符+如何避免它们?

bash 日志文件中的奇怪字符+如何避免它们?

我不明白为什么我们在日志中出现以下奇怪的字符

例子 -

 ^[[1m  

或者

 ^[(B^ 

或者

 ^[[1m  

或者

 ^[(B^[[

或者

 ^[[1m

来自日志:(示例)

STATUS OF SERVICES

^[(B^[[mAMBARI_METRICS...... STARTED
HDFS................ STARTED
YARN................ STARTED
ZOOKEEPER........... STARTED
^[[1m
STATUS OF COMPONENTS

^[(B^[[mAPP_TIMELINE_SERVER. STARTED,
DATANODE............ STARTED,

答案1

作为伊尔卡丘注释,您将其输出重定向到日志文件的程序旨在写入格式化用于文本控制台显示的状态,而不是用于登录到文件中。

^[[1m是一个例子用于设置显示属性的 ANSI 控制代码序列(前景色或背景色、粗体、下划线等)。这^[是 ASCII 控制字符的典型表示,在本例中为转义符 (Esc),它在相关 ANSI 标准中用作控制序列引入符 (CSI)。

因此,这种行为会融入到您正在使用的任何程序中。您可能会尝试误导该程序关于它连接到哪种类型的输出设备,从而愚弄它不发出这些代码。许多程序使用一个名为 的库,curses该库使用环境变量的值TERM

常见的 shell 允许您临时更改单个命令的环境变量的值,而不影响后续命令:

TERM=dumb programname options

相关内容