Ada alat yang memberikan keluaran berwarna:
dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
Pertanyaannya adalah: Bagaimana cara mengubah keluaran berwarna dari program sewenang-wenang menjadi file html berwarna?
Format output lain mungkin cocok juga (LaTeX akan bagus). Saya pikir html adalah titik awal yang baik, karena mudah untuk mengubahnya ke format lain.
(Untuk yang penasaran bagaimana menjaga kode warna terminal, silakan ikuti jawaban:
https://unix.stackexchange.com/a/10832/9689
... | unbuffer command_with_colours arg1 arg2 | ...
- alat unbuffer adalah bagian dari harapan )
Jawaban:
Jawaban atas pertanyaan ini mungkin yang Anda inginkan.
Ini tautan ke alat-alat ini, yang melakukan konversi yang Anda cari:
Paket Perl HTML :: FromANSI
aha , program bahasa-C ( github repo )
sumber
aha
juga tersedia di Ubuntu:sudo apt install aha
. Tetapi perhatikan bahwa beberapa perintah akan menekan warna saat output berupa pipa. Jadi saat mengirim output ke aha, Anda mungkin perlu menambahkan opsi ke perintah Anda. Untukls
ataugrep
itu akan terjadi--color=always
.Atau hanya skrip shell
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Detail lebih lanjut dari skrip ini http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
sumber
Anda dapat mencoba
vim
dengan plugin AnsiEsc.vim untuk melihat warna ANSI melalui kode melarikan diri, kemudian mengarahkan kembali ke output standar kevim -
(pastikan Anda telah mengaktifkan:syntax on
). Kemudian mengkonversi file ke HTML dengan perintah vim::TOhtml
. File HTML yang dihasilkan harus memiliki output berwarna.Untuk mengonversi kode sumber menjadi non-interaktif ke html, coba perintah berikut:
Sumber:
:help g:html_no_progress
(bagian dari:help TOhtml
).Catatan: Anda dapat menggunakan
-
alih-alihmyfile.c
, untuk mengkonversi kode dari input standar.sumber
:help TOhtml
atau:help g:html_no_progress
.Anda dapat menggunakan vim. Ini adalah bagian dari skrip yang saya gunakan untuk mengonversi keluaran berbeda ke HTML.
Setelah ini, saya menjalankan sed untuk mengubah CSS dan judul menjadi persis seperti yang saya inginkan.
* Sunting: Seharusnya saya menyebutkan bahwa untuk mendapatkan warna, Anda harus mengaktifkan penyorotan sintaks. Saya melakukannya di .vimrc saya, tetapi jika Anda ingin menambahkannya di sini hanya akan menjadi baris lain seperti
sumber
ansi2html , di pypi.
Seseorang dapat memperoleh jumlah kenikmatan yang tidak moderat dari piping output shell biasa melalui lolcat kemudian melalui ansi2html. Sesuatu seperti:
sumber
lolcat
gagasan itu sendiri, tetapi saya terlalu sibuk tertawa.ansi2html
executable biner yang tidak kompatibelPembaruan: Saya telah menambahkan
perl
metode, menggunakan modul HTML :: FromANSI dari CPAN .. Untuk menginstalnya, cukup ekstrak ke direktori, dan jalankan, sebagai root:perl -MCPAN -e 'install HTML::FromANSI'
dari direktori itu. Fitur khusus yang sesuai dengan permintaan Anda adalah skrip yang disebutansi2html
. Yang cukup menarik, ini menunjukkan hilangnya warna yang sama setelah overlayk
pada nama file, seperti halnya skrip elisp-shell ... Berikut adalah contoh penggunaan:Ini adalah output html. seperti yang terlihat di Firefox:
Berikut adalah metode menggunakan skrip emacs elisp-shell ... misalnya, yang disebut htmlize ... Emacs tidak perlu dijalankan.
Saya awalnya mengujinya pada latar belakang hitam, tetapi saya perhatikan bahwa karena alasan tertentu, latar belakang putih tidak cocok dengan salah satu Kode Escape yang diperkenalkan
\e[K
, yang tampaknya ERASE_LINE (Hapus garis keluaran terminal saat ini) . Saya telah menambahkan baris untuk menghapus Kode Escape ini. Sekarang berfungsi untuk latar belakang putih.Berikut adalah contoh keluaran yang disorot warna dari
ls
yang disalurkan kegrep
untuk penyorotan warna lebih lanjut.ini
elsip-shell
skripnya.Berikut adalah contoh dari output html, di Firefox ... Jika saya punya waktu, saya akan melihat lebih jauh ke masalah kode ANSI overlay. di mana merah
k
tumpang tindih dengan nama file hijau, tapi itu hanya ada karena tes regex yang dipilih dengan tergesa-gesa untuk grep ... (mungkin itu adalah sesuatu yang\e[K
mempengaruhi ...sumber
Bagi mereka yang memiliki perintah yang ditulis dengan asumsi bahwa output yang disalurkan tidak akan pernah berwarna (misalnya beberapa kerangka kerja pengujian), Anda mungkin merasa berguna untuk menggunakan utilitas skrip untuk menyimpan output ansi terlebih dahulu. Ini kemudian dapat didorong ke aha atau utilitas lain yang disebutkan.
sumber
Ini hanya tindak lanjut dari solusi @ user17591 - skrip vim :
chmod itu dan
Penggunaan:
htmlvim file
(untuk menghasilkan file.html)sumber