主要观点:多数人习惯向终端发送特定颜色/格式代码,如多数终端模拟器支持[ANSI 颜色转义码],但 xterm 已支持 256 色输出且多数终端模拟器也支持此扩展;假设终端支持 ANSI 颜色码是个坏主意,原因包括输出的文件描述符可能不是终端(stdout 重定向时常见),会使常见操作变难,如破坏grep
程序,在less
中导致奇怪现象;即使文件描述符是终端,也不是所有终端都支持 ANSI 转义码,如 1960 年代的电传打字机或某些古老终端;若要输出颜色,应使用[isatty(3)]检查文件描述符是否为终端,多数语言有原生绑定,如 Python 的[os.isatty]、bash 的test -t
,若要更严谨可通过[termcap/terminfo]检查终端设备输出能力。
关键信息:多数终端相关特性及问题、isatty 检查、不同语言的相关操作及更严谨检查方式
重要细节:xterm 支持 256 色输出时间约十年、stdout 重定向时可能出现问题、不同语言中 isatty 的使用、termcap/terminfo 的作用等
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。