HTML में रंगीन आउटपुट परिवर्तित करना


58

रंगीन आउटपुट प्रदान करने वाले उपकरण हैं:

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

सवाल यह है: मनमाने ढंग से प्रोग्राम के अपने रंगीन आउटपुट को रंगीन HTML फ़ाइल में कैसे बदला जाए?

अन्य आउटपुट प्रारूप उपयुक्त हो सकते हैं (LaTeX महान होगा)। मुझे लगता है कि html अच्छा शुरुआती बिंदु है, क्योंकि इसे अन्य प्रारूपों में बदलना आसान है।

(टर्मिनल कलर कोड रखने के बारे में जानने के लिए, कृपया उत्तर का पालन करें: https://unix.stackexchange.com/a/10832/9689 ... | unbuffer command_with_colours arg1 arg2 | ... - टूल अनबफ़र उम्मीद का हिस्सा है )


1
यदि आप dwdiff पसंद करते हैं, तो आप colordiff भी पसंद कर सकते हैं, एक आवरण जो अलग-अलग आउटपुट को रंगीन करता है। मैंने वर्ष के लिए अलग-अलग = कॉलोर्डिफ़ किया है, कभी कोई समस्या नहीं थी।
जोनाथन हार्टले

जवाबों:


34

इस सवाल का जवाब शायद आप चाहते हैं।

यह इन टूल से लिंक करता है, जो आपके द्वारा खोजा जा रहा रूपांतरण है:


3
ahaउबंटू में भी उपलब्ध है sudo apt install aha:। लेकिन ध्यान दें कि कुछ कमांड रंगों को दबाएंगे जब आउटपुट एक पाइप होता है। इसलिए आहा में आउटपुट भेजते समय, आपको अपने कमांड में विकल्प जोड़ने की आवश्यकता हो सकती है। के लिए lsया grepयह होगा --color=always
mivk

19

या सिर्फ एक शेल स्क्रिप्ट

https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh

इस स्क्रिप्ट का अधिक विवरण http://pablomarin-garcia.blogspot.com/2011/04/converting-ans-to-html-how-to-convert.html


यूनिक्स और लिनक्स स्टैक एक्सचेंज में आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
slm

5

आप एएनएसआई रंगों को भागने के कोड के माध्यम से देखने के लिए AnsiEsc.vim प्लगइन के vimसाथ कोशिश कर सकते हैं, फिर मानक आउटपुट पर पुनर्निर्देशित कर सकते हैं (सुनिश्चित करें कि आप सक्रिय हो चुके हैं )। फिर vim कमांड द्वारा फाइल को HTML में बदलें :। उत्पन्न HTML फ़ाइल में रंगीन आउटपुट होना चाहिए।vim -:syntax on:TOhtml


स्रोत कोड को गैर-अंतःक्रियात्मक रूप से 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, के बजाय का उपयोग कर सकते हैं ।


यह मेरे लिए काम नहीं किया। यदि आप कमांड की व्याख्या करेंगे तो यह मदद करेगा।
केन इंग्राम

इस कमांड को Vim मैन्युअल, चेक बाय :help TOhtmlया में समझाया गया है :help g:html_no_progress
kenorb

जिस तरह से आपने लिखा वह भ्रामक है। AnsiEsc.vim प्लगइन का उपयोग करें। इसके साथ इसे सक्रिय करें: सिंटैक्स ऑन, और फिर आप ANSI फॉर्मेटिंग में ठीक से स्टाइल किए गए टेक्स्ट को देख सकते हैं? उसके बाद, फ़ाइल को html का उपयोग करके सहेजें: TOHTML?
केन इंग्राम

1
यदि आपको चरणों में सुधार करने के बारे में कोई सुझाव है, तो बेहिचक सुधार करें।
kenorb

2
मैंने उन्हें अपनी टिप्पणी में पेश किया। अगर मैंने निर्देश को सही ढंग से समझा। मुझे लगता है कि आप सुझाव दे रहे हैं कि मैं उत्तर संपादित करूं? जो ठीक है। मैं ऐसा कर सकता हूँ।
केन इंग्राम

4

आप विम का उपयोग कर सकते हैं। यह एक स्क्रिप्ट का हिस्सा है जिसका उपयोग मैं 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 चलाता हूं और शीर्षक वही होना चाहिए जो मैं उन्हें चाहता हूं।

* संपादित करें: मुझे उल्लेख करना चाहिए कि रंग पाने के लिए, आपको सिंटैक्स हाइलाइटिंग चालू करना होगा। मैं अपने .vimrc में ऐसा करता हूं, लेकिन अगर आप इसे यहां जोड़ना चाहते हैं तो यह सिर्फ एक और लाइन होगी

-c ':syntax on' \

ठीक। तो आप मनमाने ढंग से प्रोग्राम के आउटपुट को कैसे बदलना चाहेंगे, आइए बताते हैं: grep?
ग्रेज़गोरज़ विर्ज़ोवेकी

1
ठीक है, मुझे पहली बार में समझ नहीं आया। यदि आप एएनएसआई रंग कोड परिवर्तित करना चाहते हैं, तो यहां उत्तर शायद वही है जो आप चाहते हैं। यदि आपको बस एक त्वरित हैक की आवश्यकता है, तो एक स्क्रिप्ट को लाइनों की एक गुच्छा के साथ बनायें जो HTML के साथ ANSI कोड को बदलें। कुछ ऐसा है, ^ [[31 मीटर, <span style = 'color: red'>, gs, ^ [\ [m, </ span>, g 'त्वरित और गंदा होगा, लेकिन संभवतः पर्याप्त होगा।
15:

क्या आप @ user17591 ने इस लिंक को एक और उत्तर के रूप में रखा है? मैं इसे अपने प्रश्न के उत्तर के रूप में चुनना पसंद करूंगा, और अपनी प्रतिष्ठा को ऊंचा करूंगा।
ग्रेज़गोरज़ विर्ज़ोवेकी

ठीक। मैंने पर्ल मॉड्यूल से एक सीधा लिंक जोड़ा है ताकि बाद के किसी भी उपयोगकर्ता को अप्रत्यक्ष स्तर के एक कम स्तर के साथ मिल सके, लेकिन मूल प्रश्न / उत्तर के लिए एक लिंक भी।
14:

@ user17591, अच्छा समाधान! (+1) मैं आपके समाधान के 2 साल पुराने विमशेल फॉलोअप संस्करण को जोड़ रहा हूँ!
जोजो

3

asi2html , pypi पर।

एक के माध्यम से नियमित रूप से खोल उत्पादन पाइप से आनंद के अत्यंत मात्रा में प्राप्त कर सकते हैं हिंदी ansi2html के माध्यम से तो। कुछ इस तरह:

… | lolcat -f | ansi2html -ip

LaTeX आउटपुट के लिए +1। मैं आपको lolcatअकेले आइडिया के लिए +1 करूंगा, लेकिन मैं बहुत व्यस्त हूं।
नील मैय्यू

फ़ि, डेबियन के रंग-रूप-लॉग पैकेज एक असंगत ansi2htmlबाइनरी निष्पादन योग्य स्थापित करता है
22

1

अद्यतन: मैंने CPAN से मॉड्यूल HTML :: FromANSIperl का उपयोग करके एक विधि जोड़ी है .. इसे स्थापित करने के लिए, बस इसे एक निर्देशिका में निकालें, और रूट के रूप में चलाएं: उस निर्देशिका से। आपके अनुरोध के अनुरूप विशेष सुविधा एक स्क्रिप्ट कहलाती है । दिलचस्प रूप से पर्याप्त है, यह फिल्मनामों में ओवरलेड के बाद उसी नुकसान का रंग दिखाता है , जैसा कि एलिश-शेल स्क्रिप्ट करता है ... यहां एक उदाहरण उपयोग है: 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 आउटपुट है। जैसा कि फ़ायरफ़ॉक्स में देखा गया है:

यहाँ छवि विवरण दर्ज करें


यहाँ एक तरीका है एक emacs elisp-shell स्क्रिप्ट का उपयोग ... उदाहरण के लिए, htmlize ... Emacs को चलाने की आवश्यकता नहीं है।

मैंने मूल रूप से एक काले रंग की पृष्ठभूमि पर इसका परीक्षण किया था, लेकिन मैंने देखा कि किसी कारण से, एक सफेद पृष्ठभूमि किसी भी तरह से शुरू किए गए एस्केप कोड्स के साथ अच्छी तरह से नहीं खेलती है \e[K, जो कि ERASE_LINE (टर्मिनल आउटपुट की वर्तमान रेखा को मिटा दें) लगता है । मैंने इस एस्केप कोड को हटाने के लिए एक लाइन जोड़ी है। यह अब एक सफेद पृष्ठभूमि के लिए काम करता है।

यहाँ रंग हाइलाइटिंग 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 आउटपुट का एक नमूना दिया गया है ... अगर मुझे समय मिलता है, तो मैं आगे ANSI कोड के मुद्दे को देखूंगा। जहां लाल kहरे फाइलनामों को ओवरलैप करता है, लेकिन यह केवल वहाँ है क्योंकि grep के लिए एक जल्द से जल्द परीक्षण regex चुना ... (शायद यह कुछ \e[Kप्रभाव है ...

यहाँ छवि विवरण दर्ज करें


अच्छा लगता है। यह बहुत अच्छा होगा यदि इस कार्य के लिए छोटे उपकरण होंगे (एमएसीएस लेता है ~ 100 एमबी)।
ग्रेज़गोरज़ विएर्ज़ोवेकी

1

जिनके पास एक कमांड है जो इस धारणा पर लिखा गया है कि पाइप किए गए आउटपुट में कभी भी रंग नहीं होगा (उदाहरण के लिए कुछ टेस्टिंग फ्रेमवर्क), आपको पहले एएनआई आउटपुट को बचाने के लिए स्क्रिप्ट उपयोगिता का उपयोग करना उपयोगी हो सकता है। यह फिर आह या अन्य उपयोगिताओं के लिए धकेल दिया जा सकता है।


1

यह @ user17591 समाधान का केवल एक अनुसरण है - विम स्क्रिप्टिंग :

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

चामोद एंड

उपयोग: htmlvim file(file.html बनाने के लिए)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.