从 Mac OS X 终端复制彩色输出

Woj*_*ski 45 colors terminal.app macos

我在终端中看到了一个漂亮的彩色输出。

终端有一个“导出文本为”命令,但它保存了一个没有颜色的纯文本文件。与复制粘贴相同。

您知道一种保存终端输出(包括颜色)的方法吗?

Woj*_*ski 51

令人惊讶的是,发布一个问题可以提高一个人的创造力。

我可以打开“打印”对话框并保存为 PDF,然后从 PDF 复制彩色输出。

iTerm2 终端应用程序也有一个快捷方式CMDOPTC,可以复制格式。

  • 如果您从 iTerm2 中按“⌘ + ⌥ + C”,打开 Keynote 并粘贴它,它会将其导入为表格数据。我还没有完全弄清楚如何以有用的方式格式化数据,但那里有潜力。 (2认同)

Max*_*asy 15

看起来,如果您在终端中选择文本,然后将其复制,然后将其粘贴到支持富文本的应用程序(例如邮件、文本编辑、Word)中,则文本颜色将被保留。

看来Mail和TextEdit中也粘贴了终端的背景色;在 Word 中,它不是。我不确定如何解释这种差异。


aki*_*ira 8

您可以尝试将彩色输出粘贴到剪贴板,如下所示:

% command_which_produces_colors | pbcopy -prefer rtf
Run Code Online (Sandbox Code Playgroud)

它将一些 rtf(可能是彩色和格式化的)东西放入 macos 的粘贴板中。然后,您可以使用任何其他理解富文本的方式来访问剪贴板。

这显然与“用鼠标选择它”不同,但也许值得一试。

  • 当我尝试这个时,如果`command_which_produces_colors` 产生ANSI 代码,那么`pbcopy -Prefer rtf` 只复制包含ANSI 代码的文本(例如它复制`[0;34mText` 表示蓝色`Text`)。似乎可能需要将 ANSI 代码转换为 RTF 作为中间步骤。 (3认同)

Max*_*asy 8

根据@akira 的回答,我想出了以下内容:

  1. 下载源包ansifilter(也可以通过被安装brew install ansifilter
  2. 按照 INSTALL 下的说明构建和安装 ansifilter
  3. <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • 您可能需要传递参数以<command that produces colors>强制它产生颜色,即使它的输出是通过管道传输的,例如,ls --color=always而不是仅仅ls
  4. 然后您可以粘贴到支持富文本的应用程序中(例如邮件、文本编辑、Word)