Stdout
為什麼在 *nix 系統上管道 stdout/stderr 時不顯示顏色(控製字元)?
為什麼在 *nix 系統上管道 stdout/stderr 時不顯示顏色(控製字元)?
當我做:
foo | bar
如果
foo
將顏色編碼的字元串(帶有控製字元)寫入標準輸出,它們將不會顯示在欄中 - 有沒有辦法讓它們顯示出來?
為什麼在 *nix 系統上管道 stdout/stderr 時不顯示顏色(控製字元)?
正如jimij評論的那樣,它們確實出現了。
然而,一些程序(可能是大多數輸出ANSI 轉義碼的程序)通過使用isatty(3)來檢測它們的輸出不是 tty,例如 as
isatty(STDOUT_FILENO)
;這是一個很好的功能,因為當你不想要它們時處理管道中的逃逸是一種痛苦。幾個程序記錄了一種強制方法,例如ls(1)有
--color=always
所以閱讀相關命令的文件。