Stdout

為什麼在 *nix 系統上管道 stdout/stderr 時不顯示顏色(控製字元)?

  • October 14, 2017

為什麼在 *nix 系統上管道 stdout/stderr 時不顯示顏色(控製字元)?

當我做:

foo | bar

如果foo將顏色編碼的字元串(帶有控製字元)寫入標準輸出,它們將不會顯示在欄中 - 有沒有辦法讓它們顯示出來?

為什麼在 *nix 系統上管道 stdout/stderr 時不顯示顏色(控製字元)?

正如jimij評論的那樣,它們確實出現了。

然而,一些程序(可能是大多數輸出ANSI 轉義碼的程序)通過使用isatty(3)來檢測它們的輸出不是 tty,例如 as isatty(STDOUT_FILENO);這是一個很好的功能,因為當你不想要它們時處理管道中的逃逸是一種痛苦。

幾個程序記錄了一種強制方法,例如ls(1)--color=always

所以閱讀相關命令的文件。

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