我正在进行大量测试,输出显示在终端上,但我希望将其存储起来以供阅读、搜索以供进一步使用。有什么方法可以让它重定向并显示颜色吗?我可以随时复制到任何富文本编辑器/Word/Google Docs,但我想将其直接重定向到文件。
答案1
没有简单、标准或内置的方法来实现您想要的效果。
一些命令行工具(包括基于终端的应用程序)会查看当前终端仿真器应用程序声称是哪种类型的终端,如果它声称是某种彩色终端(例如“xterm-color”),这些命令行工具会发送旧的终端控制代码,这些代码应该会导致该特定型号的终端以不同的颜色显示文本。这些终端控制代码也称为“转义代码”或“转义序列”,因为它们通常以“转义”字符(ASCII 27,0x1b)开头。
执行此操作的工具通常足够智能,在重定向到文本文件时会停止执行终端颜色代码,因为文本文件不是终端,因此当存储在纯 ASCII 文本文件中时,终端颜色代码变得毫无意义。将转义字符或任何不可打印的低 ASCII“控制字符”(大多数低于 32 的 ASCII 值)放入纯文本文件中也被认为是不正确的形式。
纯文本文件没有存储颜色信息的标准方法。最接近的可能是富文本格式 (.rtf),但传统的 Unix 命令行环境并未集成 RTF 支持;它只支持纯文本。
在终端中以彩色输出内容的工具几乎肯定是选择在输出到文本文件时忽略颜色代码的工具。阅读其手册,看看它是否为您提供了在重定向到文本文件时保留嵌入式终端颜色代码的选项。然后,如果您将该文本文件“cat”到相同(模拟)型号的彩色终端,它可能会以彩色显示。您甚至可以编写脚本来解释这些转义代码并将它们转换为 RTF 颜色序列或其他东西。
当您从终端复制并粘贴到具有样式文本功能的文字处理器或其他应用程序时,颜色会保留,原因是您的终端仿真器应用程序在将其复制到剪贴板时会动态将其转换为 RTF(或任何操作系统的本机样式文本格式)。