อัปเดต:ฉันได้เพิ่มperl
วิธีการโดยใช้โมดูล HTML :: FromANSI จาก CPAN .. หากต้องการติดตั้งเพียงแยกไปยังไดเรกทอรีและเรียกใช้ในฐานะรูท: 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:
นี่คือวิธีการใช้สคริปต์ elisp-shell emacs ... ตัวอย่างเช่นเรียกว่าhtmlize ... Emacs ไม่จำเป็นต้องทำงาน
ฉันเดิมทดสอบบนพื้นหลังสีดำ แต่ผมสังเกตเห็นว่าด้วยเหตุผลบางพื้นหลังสีขาวไม่ได้เล่นได้ดีกับหนึ่งในรหัสหนีแนะนำ\e[K
ซึ่งดูเหมือนว่าจะเป็น ERASE_LINE (ลบบรรทัดปัจจุบันของการส่งออก Terminal) ฉันได้เพิ่มบรรทัดเพื่อลบรหัสการยกเว้นนี้ ตอนนี้มันใช้งานได้สำหรับพื้นหลังสีขาว
นี่คือตัวอย่างของการแสดงสีที่ไฮไลต์จาก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"))
นี่คือตัวอย่างของเอาต์พุต html ใน Firefox ... ถ้าฉันมีเวลาฉันจะดูเพิ่มเติมเกี่ยวกับปัญหารหัส ANSI ที่ซ้อนทับ ที่สีแดงk
ทับซ้อนกับชื่อไฟล์สีเขียว แต่นั่นเป็นเพราะการทดสอบ regex สำหรับ grep \e[K
...