Command-Line
當我通過管道傳輸到另一個程序時,我的 ANSI 轉義碼在哪裡?我可以保留它們嗎?
我有時想將顏色編碼的輸出傳遞給一個程序,例如。grep …但是當我將它傳送到另一個程序時,例如。sed,顏色程式碼失去了……
有什麼方法可以保持這些程式碼完整嗎?
這是一個失去彩色輸出的範例:
echo barney | grep barney | sed -n 1,$\ p
許多生成彩色輸出的程序會檢測它們是否正在寫入 TTY,如果不是,則關閉顏色。這是因為當您只想擷取文本時,顏色程式碼很煩人,因此它們會嘗試自動“做正確的事情”。
從這樣的程序擷取顏色輸出的最簡單方法是告訴它寫入顏色,即使它沒有連接到 TTY。您必須閱讀該程序的文件以了解它是否具有該選項。(例如,
grep
有--color=always
選擇權。)您還可以使用該
expect
腳本unbuffer
創建一個偽 tty,如下所示:echo barney | unbuffer grep barney | sed -n 1,$\ p