Linux

來自bash的日誌文件中的奇怪字元+如何避免它們?

  • January 22, 2018

我不明白為什麼我們在輸出日誌中有以下奇怪的字元

例子 -

^[[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,

正如ilkkachu評論的那樣,您將其輸出重定向到日誌文件的程序旨在寫入格式化為文本控制台顯示的狀態,而不是用於登錄文件。

這是用於設置顯示屬性(前景色或背景色、粗體、下劃線等)的ANSI 控制程式碼序列^[[1m的範例。這是 ASCII 控製字元的典型表示,在這種情況下,Escape (Esc) 在相關的 ANSI 標準中用作控制序列引入器 (CSI)。^[

因此,這種行為會融入您正在使用的任何程序中。您可能會嘗試誤導該程序連接到哪種類型的輸出設備,從而欺騙它不發出這些程式碼。許多程序使用一個稱為curses使用環境變數值的庫TERM

常見的 shell 允許您臨時更改單個命令的環境變數的值,而不會影響後續命令:

TERM=dumb programname options

引用自:https://unix.stackexchange.com/questions/418837