컬러 출력을 HTML로 변환


58

컬러 출력을 제공하는 도구가 있습니다.

dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...

문제는 임의의 프로그램의 컬러 출력을 컬러 HTML 파일로 변환하는 방법 입니다.

다른 출력 형식도 적합 할 수 있습니다 (LaTeX가 좋습니다). HTML을 다른 형식으로 쉽게 변환 할 수 있기 때문에 html이 좋은 출발점이라고 생각합니다.

(단자 색상 코드를 유지하는 방법에 대한 궁금한 사항은 https://unix.stackexchange.com/a/10832/9689- ... | unbuffer command_with_colours arg1 arg2 | ... 도구 버퍼 해제예상의 일부 임 ) 를 따르십시오.


1
dwdiff를 좋아한다면 diff의 출력을 채색하는 래퍼 인 colordiff를 좋아할 수도 있습니다. 나는 수년간 diff = colordiff의 별칭을 지정했지만 아무런 문제가 없었습니다.
Jonathan Hartley

답변:


34

에 대한 대답 이 질문은 당신이 원하는 아마.

찾고있는 변환을 수행하는 다음 도구에 연결됩니다.


3
ahaUbuntu에서도 사용 가능 sudo apt install aha합니다. 그러나 일부 명령은 출력이 파이프 일 때 색상을 억제합니다. 따라서 출력을 aha로 보낼 때 명령에 옵션을 추가해야 할 수도 있습니다. 대한 ls또는 grep이 될 것이다 --color=always.
mivk

19

유닉스 및 리눅스 스택 교환에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
slm

5

당신이 시도 할 수 vimAnsiEsc.vim의 다음에 표준 출력 리디렉션, 이스케이프 코드를 통해 ANSI 색상을 볼 플러그인 vim -(당신이 활성화했는지 확인 :syntax on). 그런 다음 vim 명령을 사용하여 파일을 HTML로 변환하십시오 :TOhtml. 생성 된 HTML 파일은 컬러 출력이어야합니다.


비 대화식으로 소스 코드를 html로 변환하려면 다음 명령을 시도하십시오.

vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c

출처 : :help g:html_no_progress(의 일부 :help TOhtml).

참고 : -대신 myfile.c표준 입력에서 코드를 변환 할 수 있습니다 .


이것은 나를 위해 작동하지 않았습니다. 명령을 설명하면 도움이 될 것입니다.
켄 잉그램

이 명령에 의해 확인, 빔 설명서에 설명 된 :help TOhtml:help g:html_no_progress.
kenorb

당신이 쓴 방식은 혼란 스럽습니다. AnsiEsc.vim 플러그인을 사용하십시오. : syntax on으로 활성화하면 ANSI 형식으로 텍스트 스타일이 올바르게 표시됩니까? 그런 다음 : TOhtml?을 사용하여 파일을 html로 저장하십시오.
Ken Ingram

1
단계를 개선하는 방법에 대한 제안이 있으면 언제든지 개선하십시오.
kenorb

2
나는 내 의견에 그들을 제안했다. 내가 지시를 올바르게 이해했다면. 나는 당신이 대답을 편집 할 것을 제안한다고 생각합니까? 어느 것이 좋습니다. 나는 그걸 할 수있어.
Ken Ingram

4

vim을 사용할 수 있습니다. 이것은 diff 출력을 HTML로 변환하는 데 사용하는 스크립트의 일부입니다.

vim -n \
    -c ':%s%^+  %+++    ' \
    -c ':%s%^-  %---    ' \
    -c ':%s%^   %       ' \
    -c ':set nu' \
    -c ':let html_use_css=1' \
    -c ':so $VIMRUNTIME/syntax/2html.vim' \
    -c ':wq' -c ':qa!' $input > /dev/null 2> /dev/null

그런 다음 sed를 실행하여 CSS와 제목을 내가 원하는대로 변경했습니다.

* 편집 : 색상을 얻으려면 구문 강조를 설정해야한다고 언급 했어야합니다. 내 .vimrc 에서이 작업을 수행하지만 여기에 추가하려면 다음과 같은 행이됩니다.

-c ':syntax on' \

승인. 그래서 임의의 프로그램의 출력을 어떻게 변환하고 싶습니까? : grep?
Grzegorz Wierzowiecki

1
좋아, 나는 처음에는 이해하지 못했다. ANSI 색상 코드를 변환하려면 여기에 대한 대답 이 원하는 것입니다. 빠른 해킹이 필요한 경우 ANSI 코드를 HTML로 바꾸는 여러 줄로 sed 스크립트를 작성하면 효과가 있습니다. 's, ^ [\ [31m, <span style ='color : red '>, gs, ^ [\ [m, </ span>, g'와 같은 것은 빠르고 더럽지 만 충분할 수 있습니다.
user17591

@ user17591이 링크를 하나 더 답변으로 넣을 수 있습니까? 내 질문에 대한 답변으로 선택하고 귀하의 명성을 높이고 싶습니다.
Grzegorz Wierzowiecki

승인. 나는 모든 후속 사용자가 하나의 낮은 수준의 간접적으로 찾을 수 있고 속성에 대한 원래 질문 / 답변에 대한 링크를 찾을 수 있도록 Perl 모듈에 직접 링크를 추가했습니다.
user17591

@ user17591, 좋은 해결책! (+1) 방금 솔루션의 2 년 된 vimshell 후속 버전을 추가했습니다!
JJoao

3

pypi의 ansi2html

lolcat 을 통해 일반 쉘 출력을 파이핑 한 다음 ansi2html을 통해 파이핑을 통해 즐거움을 얻을 수 있습니다 . 같은 것 :

… | lolcat -f | ansi2html -ip

LaTeX 출력의 경우 +1 lolcat아이디어만으로는 +1을 주지만 너무 바빠서 웃습니다.
Neil Mayhew

fyi, 데비안의 colorized-logs 패키지는 호환되지 않는 ansi2html바이너리 실행 파일을 설치합니다
scruss

1

업데이트 : CPAN의 HTML :: FromANSI 모듈을perl 사용하여 메소드를 추가했습니다 . 설치하려면 디렉토리로 추출한 다음 해당 디렉토리에서 루트로 실행하십시오 . 요청에 맞는 특정 기능은이라는 스크립트 입니다. 흥미롭게도, elisp-shell 스크립트 와 마찬가지로 파일 이름에 겹쳐진 후 동일한 색상 손실을 보여줍니다 ... 사용법 예는 다음과 같습니다. perl -MCPAN -e 'install HTML::FromANSI'ansi2htmlk

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를 실행할 필요는 없습니다.

원래는 검정색 배경에 그것을 테스트,하지만 난 어떤 이유로, 흰색 배경이 도입 탈출 코드 중 하나가, 잘 재생되지 않는 것으로 나타났습니다 \e[K, ERASE_LINE 것으로 보인다 (단자 출력의 현재 행을 삭제) . 이 이스케이프 코드를 제거하는 줄을 추가했습니다. 이제 흰색 배경에서 작동합니다.

다음은 추가 색상 강조 lsgrep위해 파이프 에서 출력 된 색상 강조 출력의 예입니다 .

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은 녹색 파일 이름과 겹치지 만 grep에 대해 서둘러 선택한 테스트 정규식 때문입니다 ... (아마 뭔가 \e[K영향을 줄 수 있습니다 ...

여기에 이미지 설명을 입력하십시오


좋은 소리. 이 작업을위한 더 작은 도구가 있다면 좋을 것입니다 (emacs는 ~ 100MB 소요).
Grzegorz Wierzowiecki

1

파이프 출력에 색상이 전혀 없다는 가정 (예 : 일부 테스트 프레임 워크)으로 작성된 명령이있는 사용자는 먼저 스크립트 유틸리티를 사용하여 ansi 출력을 저장하는 것이 유용 할 수 있습니다. 그런 다음 aha 또는 언급 된 다른 유틸리티로 푸시 할 수 있습니다.


1

이것은 @ user17591 솔루션-vim 스크립팅 의 후속 작업입니다 .

#!/usr/bin/vim -ns
:%s%^+  %+++
:%s%^-  %---
:%s%^   %
:set nu
:let html_use_css=1
:so $VIMRUNTIME/syntax/2html.vim
:wq
:qa!

chmod 그것과

사용법 : htmlvim file(file.html 생성)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.