Command-Line
如何讓 tail -f 顯示彩色輸出
我希望能夠跟踪包含以下消息的伺服器日誌文件的輸出:
INFO SEVERE
等,如果是
SEVERE
,則以紅色顯示該行;如果是INFO
,則為綠色。tail
我可以為可以幫助我執行此操作的命令設置什麼樣的別名?
試試multitail ¹。這是 的超泛化
tail -f
。您可以在單獨的視窗中觀看多個文件,根據內容突出顯示行等。multitail -c /path/to/log
顏色是可配置的。如果預設配色方案不適合您,請在配置文件中編寫您自己的配色方案。例如,
multitail -cS amir_log /path/to/log
使用以下內容呼叫~/.multitailrc
:colorscheme:amir_log cs_re:green:INFO cs_re:red:SEVERE
如果您在不方便安裝非標準工具的伺服器上,另一種解決方案是結合
tail -f
sed 或 awk 來添加顏色選擇控制序列。這需要tail -f
立即刷新其標準輸出,即使其標準輸出是管道,我不知道是否所有實現都這樣做。tail -f /path/to/log | awk ' /INFO/ {print "\033[32m" $0 "\033[39m"} /SEVERE/ {print "\033[31m" $0 "\033[39m"} '
或與sed
tail -f /path/to/log | sed --unbuffered \ -e 's/\(.*INFO.*\)/\o033[32m\1\o033[39m/' \ -e 's/\(.*SEVERE.*\)/\o033[31m\1\o033[39m/'
如果您的 sed 不是 GNU sed,請用
\o033
文字轉義字元替換並刪除--unbuffered
.另一種可能性是
tail -f
在Emacs shell 緩衝區中執行並使用 Emacs 的語法著色功能。