更新:我添加了一个perl
使用CPAN的HTML :: FromANSI模块的方法。要安装它,只需将其提取到一个目录中,然后以root用户身份perl -MCPAN -e 'install HTML::FromANSI'
从该目录运行即可。满足您要求的特定功能是一个名为的脚本ansi2html
。有趣的是,k
在文件名中覆盖后,它会显示出相同的颜色损失,就像elisp-shell脚本一样……这是一个示例用法:
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
这是html输出。如Firefox中所示:
这是一种使用emacs elisp-shell脚本的方法 ...例如,称为htmlize ... Emacs不需要运行。
我最初是在黑色背景上进行测试的,但我注意到由于某种原因,白色背景无法与引入的Escape代码之一配合使用,该代码\e[K
似乎是ERASE_LINE (擦除当前的终端输出行)。我添加了一行以删除此转义代码。现在,它适用于白色背景。
这是从ls
管道传输到以grep
进行进一步颜色突出显示的颜色突出显示输出的示例。
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
这是elsip-shell
脚本。
#!/bin/sh
":"; exec /usr/bin/emacs -Q --script "$0" -- "$@" # -*-emacs-lisp-*-
(require 'ansi-color) (require 'htmlize)
(find-file (setq path-in (cadr argv)))
(ansi-color-apply-on-region (point-min) (point-max))
(switch-to-buffer (buffer-name (htmlize-buffer)))
(write-file (concat path-in ".html"))
这是Firefox中html输出的示例...如果时间允许,我将进一步研究ANSI代码覆盖问题。红色k
s与绿色文件名重叠的地方,但这仅是因为为grep匆忙选择了测试正则表达式...(也许这会\e[K
影响...