display command execute logs in html pages

有些时候需要把命令行程序的日志在页面中展示,比如这种场景。通常日志里可能含有进度的展示,比如curl的输出,这种展示依赖于\r这种控制字符来起作用。遗憾的是如果直接作为html来输出,\r会被当作换行,导致进度变成了无数行,比如这里的样子(虽然可能也不是大问题)。另外终端里也会有很多依赖转义序列来实现的带色彩的输出,比如git log的输出。题外话,有时候stdout的类型,会影响这个特性,比如git log | less当加上了管道之后,彩色输出会消失。这里有一些绕过的方法。

回到正题,我们希望带有\r的输出,只保留最后的部分,像下面这样的效果:

\r output

同时将转义序列的彩色输出,也转换成对应的html。

尝试了好久,最终通过clearransi-to-html这两个包可以比较好的做到,示例代码:

log display example