Istnieją narzędzia zapewniające kolorowe wydruki:
dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
Pytanie brzmi: jak przekonwertować kolorowe wyjście dowolnego programu na kolorowy plik HTML?
Inne formaty wyjściowe również mogą być odpowiednie (LaTeX byłby świetny). Myślę, że HTML jest dobrym punktem wyjścia, ponieważ łatwo przekonwertować go na inne formaty.
(Aby dowiedzieć się, jak zachować kody kolorów terminali, postępuj zgodnie z odpowiedzią:
https://unix.stackexchange.com/a/10832/9689
... | unbuffer command_with_colours arg1 arg2 | ...
- rozpakowywanie narzędzi jest częścią oczekiwań )
Odpowiedzi:
Odpowiedź na to pytanie jest prawdopodobnie tym, czego chcesz.
Odsyła do tych narzędzi, które dokonują konwersji, której szukasz:
Pakiet Perla HTML :: FromANSI
aha , program w języku C ( repozytorium github )
źródło
aha
Jest również dostępny w Ubuntu:sudo apt install aha
. Pamiętaj jednak, że niektóre polecenia pomijają kolory, gdy wyjście jest potokiem. Wysyłając dane wyjściowe do aha, może być konieczne dodanie opcji do poleceń. Zals
lubgrep
byłoby--color=always
.Lub po prostu skrypt powłoki
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Więcej szczegółów tego skryptu http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
źródło
Można spróbować
vim
z AnsiEsc.vim wtyczki aby zobaczyć kolory ANSI poprzez kody ucieczki, a następnie przekierować standardowe wyjście dovim -
(upewnij się, że aktywna:syntax on
). Następnie przekonwertować plik HTML poleceniem vim::TOhtml
. Wygenerowany plik HTML powinien mieć kolorowe wyjście.Aby przekonwertować kod źródłowy nieinteraktywnie na HTML, spróbuj wykonać następujące polecenie:
Źródło:
:help g:html_no_progress
(część:help TOhtml
).Uwaga: Można użyć
-
zamiastmyfile.c
do konwersji kodu ze standardowego wejścia.źródło
:help TOhtml
lub:help g:html_no_progress
.Możesz użyć vima. Jest to część skryptu, którego używam do konwersji wyjściowego pliku różnicowego na HTML.
Następnie uruchamiam sed, aby zmienić CSS i tytuł, aby były dokładnie takie, jakie chcę.
* Edycja: Powinienem wspomnieć, że aby uzyskać kolor, musisz włączyć podświetlanie składni. Robię to w moim .vimrc, ale jeśli chcesz go dodać tutaj, byłby to po prostu inny wiersz
źródło
ansi2html , na pypi .
Można czerpać niezmiernie dużo przyjemności z przesyłania regularnych wyników powłoki przez lolcat, a następnie przez ansi2html. Coś jak:
źródło
lolcat
sam pomysł, ale jestem zbyt zajęty śmiechem.ansi2html
Aktualizacja: Dodałem
perl
metodę, używając modułu HTML :: FromANSI z CPAN .. Aby zainstalować, po prostu wypakuj go do katalogu i uruchom jako root:perl -MCPAN -e 'install HTML::FromANSI'
z tego katalogu. Szczególną cechą odpowiadającą twojemu żądaniu jest skrypt o nazwieansi2html
. Co ciekawe, wykazuje taką samą utratę koloru po nałożeniuk
w nazwach plików, jak skrypt elisp-shell ... Oto przykład użycia:Oto wynik HTML. jak widać w przeglądarce Firefox:
Oto metoda wykorzystująca skrypt emacs elisp-shell ... na przykład o nazwie htmlize ... Emacs nie musi być uruchomiony.
Początkowo testowałem go na czarnym tle, ale zauważyłem, że z jakiegoś powodu białe tło nie gra dobrze z jednym z wprowadzonych kodów ucieczki
\e[K
, który wydaje się być ERASE_LINE (Usuń bieżącą linię wyjścia terminala) . Dodałem linię do usunięcia tego kodu ucieczki. Teraz działa na białym tle.Oto przykład wyjściowego podświetlenia kolorów z
ls
potoku dogrep
dalszego podświetlania kolorów.to jest
elsip-shell
skrypt.Oto przykładowy wynik HTML w Firefoksie ... Jeśli będę mieć czas, przyjrzę się dalszemu problemowi nakładania się kodów ANSI. gdzie czerwone
k
s pokrywają się z zielonymi nazwami plików, ale dzieje się tak tylko z powodu pośpiesznie wybranego wyrażenia testowego dla grep ... (może to coś\e[K
wpływa na ...źródło
Dla tych, którzy mają polecenie napisane przy założeniu, że dane wyjściowe w potoku nigdy nie będą miały koloru (np. Niektóre ramy testowe), może okazać się przydatne użycie narzędzia skryptowego do pierwszego zapisania danych wyjściowych ansi. Można to następnie przekazać do aha lub innych wymienionych narzędzi.
źródło
To tylko kontynuacja rozwiązania @ user17591 - vim scripting :
chmod to i
Użycie:
htmlvim file
(do utworzenia pliku.html)źródło