Bash:彩色复制/粘贴

Ake*_*etO 14 bash

和大家一样,我的 bash 中有一些彩色输出。例如,我想在将摘录复制到 HTML 编辑器时保留彩色语法。有没有办法处理这个?

谢谢。

Dmi*_*rov 20

如果你正在谈论的一些命令行实用工具,比如彩色输出lsgrepcmakegit diff,等,请注意,它不具有GNU Bash的任何关系。

无论如何,有几种工具可以将使用 ANSI 转义序列着色的输出转换为 HTML:

  • aha 来自同名包
  • ansi2html来自HTML::FromANSI Perl 模块(未打包在 Ubuntu repo 中,可以从 CPAN 安装)
  • ansi2html.shby pixelb(未打包,从git下载)

所有这些的用法都相当简单:它们从 .html 读取终端转义序列stdin并将 HTML 放入stdout. 但请注意:如果不进入终端,大多数实用程序不会对输出进行着色。您必须命令它们显式地生成彩色输出。例如:

$ ls --color=always | aha | xsel -i -b
Run Code Online (Sandbox Code Playgroud)

xsel -i -b 这里将把 HTML 复制到剪贴板。

  • 啊哈——太棒了!这对我来说几乎是完美的。为了能够复制格式化文本,我适应路由到 tmp,在浏览器中打开,然后像其他站点一样复制/粘贴:`git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html` ...是的,我知道 OP 想要 html,但我们中的许多人会在这里绊倒一般想要格式。 (3认同)

job*_*bin -4

为此,您需要使用 javascript 库,不能直接复制/粘贴并保持颜色不变。一些流行的库是:

资料来源:SO 上的类似问题

  • 这个问题根本不相似,这些实用程序不会做OP想要的事情。 (2认同)