রঙিন আউটপুট এইচটিএমএল রূপান্তর করা


58

রঙিন আউটপুট সরবরাহ করার সরঞ্জাম রয়েছে:

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

প্রশ্নটি হল: তাদের স্বেচ্ছাসেবী প্রোগ্রামের রঙিন এইচটিএমএল ফাইলগুলিতে রূপান্তর কীভাবে?

অন্যান্য আউটপুট ফর্ম্যাটগুলিও উপযুক্ত হতে পারে (ল্যাটেক্স দুর্দান্ত হবে)। আমি মনে করি এইচটিএমএল ভাল সূচনা পয়েন্ট, কারণ এটি অন্যান্য ফর্ম্যাটে রূপান্তর করা সহজ।

( কৌতূহলের জন্য কীভাবে টার্মিনাল রঙের কোডগুলি রাখবেন, দয়া করে উত্তরটি অনুসরণ করুন: https://unix.stackexchange.com/a/10832/9689 ... | unbuffer command_with_colours arg1 arg2 | ... - সরঞ্জাম আনবুফার প্রত্যাশার অংশ )


1
আপনি যদি ডিডডিফ পছন্দ করেন তবে আপনি কলর্ডিফ পছন্দ করতে পারেন, একটি মোড়ক যা ডিফের আউটপুটকে রঙ দেয়। আমি বছরের পর বছর ধরে ডিফ = কালর্ডিফের নাম দিয়েছি, কখনও কোনও সমস্যা হয়নি।
জোনাথন হার্টলি

উত্তর:


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-ansi-to-html-how-to-convert.html


ইউনিক্স ও লিনাক্স স্ট্যাক এক্সচেঞ্জে স্বাগতম! যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
slm

5

আপনি পালানোর কোডের মাধ্যমে এএনএসআই রঙগুলি দেখতে আনসইএস.এস.ভিম প্লাগইনটির vimসাহায্যে চেষ্টা করতে পারেন , তারপরে স্ট্যান্ডার্ড আউটপুটটিতে পুনর্নির্দেশ করুন (নিশ্চিত হয়ে নিন যে আপনি সক্রিয় করেছেন )। তারপর তেজ কমান্ড অনুসারে HTML ফাইল রূপান্তর করুন: । উত্পন্ন HTML ফাইলটির রঙিন আউটপুট থাকা উচিত।vim -:syntax on:TOhtml


উত্স কোডটি অ-ইন্টারেক্টিভভাবে এইচটিএমএল রূপান্তর করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করে দেখুন:

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
কেনারব

আপনি যেভাবে লিখেছেন তা বিভ্রান্তিকর। AnsiEsc.vim প্লাগইন ব্যবহার করুন। এটি দিয়ে সক্রিয় করুন: সিনট্যাক্স চালু করুন এবং তারপরে আপনি এএনএসআই ফর্ম্যাটে সঠিকভাবে স্টাইলযুক্ত পাঠ্যটি দেখতে পাচ্ছেন? এর পরে, ফাইলটি এইচটিএমএল হিসাবে সংরক্ষণ করুন: টোহটিএমএল?
কেন ইঙ্গ্রাম

1
পদক্ষেপগুলি কীভাবে উন্নত করতে হবে সে সম্পর্কে আপনার যদি কোনও পরামর্শ থাকে তবে নির্দ্বিধায় উন্নত হন।
কেনারব

2
আমি আমার মন্তব্যে তাদের অফার। আমি যদি নির্দেশটি সঠিকভাবে বুঝতে পারি। আমার ধারণা আপনি উত্তরটি সম্পাদনা করার পরামর্শ দিচ্ছেন? যা ঠিক আছে। আমি এটা করতে পারি।
কেন ইঙ্গ্রাম

4

আপনি ভিএম ব্যবহার করতে পারেন। এটি একটি স্ক্রিপ্টের অংশ যা আমি ডিফল্ট আউটপুট এইচটিএমএল রূপান্তর করতে ব্যবহার করি।

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

এর পরে, আমি সিএসএস এবং শিরোনাম পরিবর্তনের জন্য সেগুলি চালিয়ে যাচ্ছি যা আমি তাদের হতে চাই।

* সম্পাদনা করুন: রঙটি রঙ করার জন্য আপনার সিনট্যাক্স হাইলাইটিং চালু থাকা দরকার। আমি আমার .vimrc এ এটি করি তবে আপনি যদি এটি এখানে যুক্ত করতে চান তবে এটি অন্য লাইনের মতো হবে

-c ':syntax on' \

ঠিক আছে. সুতরাং আপনি কিভাবে স্বেচ্ছাচারী প্রোগ্রামের আউটপুট রূপান্তর করতে চান, যাক বলুন: গ্রেপ?
গ্রজেগোর্জ ওয়েয়ারজোইইকি

1
ঠিক আছে, আমি প্রথমে বুঝতে পারি নি। আপনি ANSI কালার কোড রূপান্তর করতে চান, তাহলে উত্তর এখানে সম্ভবত আপনি যা চান তা নয়। আপনার যদি কেবল দ্রুত হ্যাকের প্রয়োজন হয়, তবে এইচটিএমএল সহ এএনএসআই কোডগুলি প্রতিস্থাপন করে এমন একটি লাইন দিয়ে একটি সেড স্ক্রিপ্ট তৈরি করা কাজ করবে। 'গুলি, ^ [\ [৩১ মি।, <স্প্যান শৈলী =' রঙ: লাল '>, জিএস, ^ [\ [এম, </span>, জি') এর মতো কিছু দ্রুত এবং ময়লা হতে পারে তবে সম্ভবত যথেষ্ট।
ব্যবহারকারীর 757591

আপনি কি ব্যবহারকারী 17591 এই লিঙ্কটিকে আরও একটি উত্তর হিসাবে রাখতে পারেন? আমি আমার প্রশ্নের উত্তর হিসাবে এবং আপনার খ্যাতি উচ্চতর হিসাবে এটি নির্বাচন করতে চাই।
গ্রেজগোর্জ ওয়েয়ারজোইইকি

ঠিক আছে. আমি পার্ল মডিউলটিতে একটি সরাসরি লিঙ্ক যুক্ত করেছি যাতে পরবর্তী যে কোনও ব্যবহারকারী এটি কম মাত্রার ইন্ডিরিয়ারেশন সহ খুঁজে পেতে সক্ষম হবে, তবে এটির জন্য মূল প্রশ্ন / উত্তরের একটি লিঙ্কও।
ব্যবহারকারী 17591

@ user17591, দুর্দান্ত সমাধান! (+1) আমি আপনার সমাধানের 2 বছরের পুরানো ভিমশেল ফলোআপ বৈকল্পিকটি যুক্ত করেই শেষ করছি!
জাজাও

3

piii এ , এনএসআই 2 এইচটিএমএল।

একজনের কাছ থেকে নিয়মিত শেল আউটপুট বংশীধ্বনিতুল্য থেকে রমণ অমিত পরিমাণে আহরণ করা যেতে পারে বাংলা ansi2html মাধ্যমে তারপর। কিছুটা এইরকম:

… | lolcat -f | ansi2html -ip

ল্যাটেক্স আউটপুট জন্য +1 আমি আপনাকে lolcatএকা এই ধারণার জন্য +1 দিই, তবে আমি হাসতে খুব ব্যস্ত।
নিল মেহেহে


1

আপডেট: আমি সিপিএএন থেকে মডিউল এইচটিএমএল :: ফানএএনএসআইperl ব্যবহার করে একটি পদ্ধতি যুক্ত করেছি .. এটি ইনস্টল করতে, কেবল এটি একটি ডিরেক্টরিতে এক্সট্র্যাক্ট করে মূল হিসাবে চালান: সেই ডিরেক্টরি থেকে। আপনার অনুরোধ অনুসারে বিশেষ বৈশিষ্ট্যটি হ'ল একটি স্ক্রিপ্ট । আকর্ষণীয়ভাবে যথেষ্ট, এটি এলিজিপ-শেল স্ক্রিপ্টের মতো ফাইলের নামগুলিতে ওভারলাইডের পরে একই রঙের ক্ষয়-রঙ দেখায় ... এখানে উদাহরণের ব্যবহার রয়েছে: 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

এইচটিএমএল আউটপুট এখানে। ফায়ারফক্সে যেমন দেখা গেছে:

এখানে চিত্র বর্ণনা লিখুন


এখানে একটি পদ্ধতি একটি ব্যবহার করছে Emacs elisp-শেল স্ক্রিপ্ট উদাহরণস্বরূপ বলা ... 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"))

এখানে ফায়ারফক্সে এইচটিএমএল আউটপুটের একটি নমুনা দেওয়া হয়েছে ... আমি যদি সময় পাই তবে আমি ওভারলেটিং এএনএসআই কোড ইস্যুটি আরও খতিয়ে দেখব। যেখানে লাল kগুলি সবুজ ফাইলের নামগুলি ওভারল্যাপ করে, তবে কেবলমাত্র গ্রেপের জন্য তাড়াতাড়ি নির্বাচিত পরীক্ষার রেজেক্সের কারণে এটি ঘটে ... (সম্ভবত এটি কিছু \e[Kপ্রভাব ফেলে ...

এখানে চিত্র বর্ণনা লিখুন


চমৎকার শোনাচ্ছে. এই কাজের জন্য যদি ছোট সরঞ্জাম থাকে তবে এটি দুর্দান্ত হবে (ইমাসগুলি ~ 100MB নেয়)।
গ্রেজগোর্জ ওয়েয়ারজোইইকি

1

যাঁদের কাছে একটি কমান্ড রয়েছে যা অনুমানের উপরে লেখা আছে যে পাইপ আউটপুটটির রঙ কখনও হবে না (উদাহরণস্বরূপ কিছু টেস্টিং ফ্রেমওয়ার্ক) সম্ভবত স্ক্রিপ্ট ইউটিলিটিটি ব্যবহার করার জন্য আপনাকে প্রথমে আনসি আউটপুট সংরক্ষণ করতে সুবিধাজনক হতে পারে। এরপরে এটি আহ বা অন্যান্য ইউটিলিটিগুলিতে উল্লেখ করা যেতে পারে।


1

এটি কেবলমাত্র @ ব্যবহারকারী17591 সমাধানের অনুসরণ - উইম স্ক্রিপ্টিং :

#!/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.