ডিফার্ট আউটপুট কীভাবে রঙ করবেন?


18

আমি ইউনিক্স ফাইলগুলি শর্তাধীন ফর্ম্যাট করতে চেয়েছিলাম, আমি বর্তমানে diffকমান্ডে কাজ করছি এবং diffকমান্ড আউটপুটটির পাঠ্য বিন্যাস করা সম্ভব কিনা তা জানতে চেয়েছিলাম ।

উদাহরণ:

মিলিত মানগুলি সবুজতে প্রদর্শিত হওয়া উচিত।
মিলহীন মানগুলি লাল রঙে প্রদর্শিত হবে।

ধরুন আমার কাছে দুটি ফাইল আছে file1এবং file2এবং আমার কমান্ডটি diff file1 file2

এখন আমি চেয়েছিলাম যে ধরুন আউটপুটে 5 টি মিল নেই তবে সেই অমিলটি লাল রঙে প্রদর্শিত হবে। কীভাবে এটি ইউনিক্স ব্যবহার করে অর্জন করবেন?

সংক্ষেপে "যে মিলগুলি মিলছে না তার জন্য পৃথক কমান্ডের আউটপুটটির জন্য রঙকে লালতে পরিবর্তন করুন"


2
সম্ভাব্য সদৃশ এই
FloHimself

"ম্যাচ" এবং "বিবিধ" শব্দগুলি কিছুটা বিভ্রান্তিকর। যাইহোক, - কালার বিকল্পটি এখন 3.4 এবং তার পরে পৃথক রয়েছে।
গেরি লুফওয়ানসায়

উত্তর:


24

diff --color বিকল্পটি জিএনইউ ডিফিউটিলেটস যোগ করা হয়েছিল 3.4 (2016-08-08)

এটি diffবেশিরভাগ ডিস্ট্রোজে ডিফল্ট বাস্তবায়ন, যা শীঘ্রই এটি পেয়ে যাবে।

3.5 এ এটির মতো দেখাচ্ছে:

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

সঙ্গে:

diff --color -u \
  <(seq 6 | sed 's/$/ a/') \
  <(seq 8 | grep -Ev '^(2|3)$' | sed 's/$/ a/')

আমি শব্দের স্তরের পার্থক্যটিও অনুরোধ করেছি diff-highlight: [ডিফিউটিস-ডেভেল] গিটের ডিফ-এইচের মতো রঙিন আউটপুট উত্পাদন করতে একটি পতাকা যুক্ত করুন | lists.gnu.org

দৃশ্যত কমিট c0fa19fe92da71404f809aafb5f51cfd99b1bee2 (মার্চ 2015) এ যুক্ত হয়েছে।


1
অসাধারণ! এটি ডিফল্টরূপে সক্ষম করতে: alias diff='diff --color=auto'
টম হেল

1
এখানে ডকুমেন্টেশন দেওয়া আছে।
অ্যালেক্সি

19

আপনার যদি জিএনইউতে অ্যাক্সেস থাকে তবে কোনও অতিরিক্ত সরঞ্জাম ছাড়াই আপনি সেগুলি পেতে diffতার --X-group-formatবিকল্পগুলি ব্যবহার করতে পারেন :

diff --old-group-format=$'\e[0;31m%<\e[0m' \
     --new-group-format=$'\e[0;31m%>\e[0m' \
     --unchanged-group-format=$'\e[0;32m%=\e[0m' \
     file1 file2

এটি লাল এবং সবুজ পেতে এএনএসআই রঙের পালানোর কোডগুলি ব্যবহার করে, পালিয়ে যাওয়া লোকদের অ্যাক্সেসের জন্য শেলটিতে এএনএসআই-সি উদ্ধৃতি দিয়ে\e

--old-group-formatএবং --new-group-formatঅ-মিল লাইন শনাক্ত ও তাদের ব্যবহার লাল এবং রঙ রিসেট কোড মধ্যে সন্নিবেশ %<এবং %>, যখন --unchanged-group-formatসবুজ এবং রিসেট কোড মধ্যে লাইন মিলে টিপে।

আপনি এটিও করতে পারেন ব্যবহার--old-line-format যে লাইনে, (ইত্যাদি) অপ্রয়োজনীয় রঙ বেরিয়ে ব্যয় হয়: --old-line-format=$'\e[0;31m%L\e[0m'


যখন আমি এটি চালিত করি তা পৃথক: 0653-821 অবৈধ বিকল্প দেয় - - পার্থক্য: 0653-821 অবৈধ বিকল্প - ও ডিফ: 0653-821 অবৈধ বিকল্প - ডিফ: 0653-821 অবৈধ বিকল্প - - পার্থক্য: 0653-821 অবৈধ বিকল্প - জি ডিফ: 0653-821 অবৈধ বিকল্প - ও ত্রুটির মতো।
আমান

হরমার যখন আমি আপনার আদেশগুলি এক লাইনের মতো চালিয়ে যাচ্ছি তখন এটি নতুন লাইনে কোনও আউটপুট দিচ্ছে না -বাশ-৪.২ $ - নতুন-গ্রুপ-ফর্ম্যাট = $ '\ ই [0; 31 মি%> \ ই [0 মি' \ >
আমান

আমি ডিফল্টরূপে এটি কনফিগার করতে পারি?
ইউজেন কনকভ

@ ইউজেনকনকোভ আপনি এটির জন্য চালানোর জন্য আপনার শেলটিতে একটি নাম বা ফাংশন সেট আপ করতে পারেন diff
মাইকেল হোমার

এটি আমাকে এটির কাজ করে দেওয়ার চেষ্টা করে কিছুটা কষ্ট দিয়েছে। অপরিবর্তিত জিনিসগুলি যোগ হিসাবে প্রদর্শিত হচ্ছে ... ছেড়ে দেওয়া হয়েছে এবং কলর্ডিফ ইনস্টল করা হয়েছে
ব্রায়ান পিটারসন

9

চেষ্টা colordiff file1 file2

আপনার লিনাক্স / বিএসডি বিতরণ সহ কলর্ডিফের উপলভ্যতা

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

( Http://www.colordiff.org/ এর উদ্ধৃতি )


1
পারফেক্ট। আমার জন্য, diff --color=autoকেবল লাইনের চিহ্নিতকারীগুলি এবং প্রতিটি +/ -বিভাগের প্রথম লাইন ছিল our less -SRসহজ ব্রাউজিংয়ের জন্য পাইপিং ।
ওয়াল্ফ

4

রঙিন, শব্দ-স্তরের diff আউটপুট

আপনি নীচের স্ক্রিপ্ট এবং আলাদা-হাইলাইট দিয়ে কি করতে পারেন তা এখানে :

রঙিন ডিফ স্ক্রিনশট

#!/bin/sh -eu

# Use diff-highlight to show word-level differences

diff -U3 --minimal "$@" |
  sed 's/^-/\x1b[1;31m-/;s/^+/\x1b[1;32m+/;s/^@/\x1b[1;34m@/;s/$/\x1b[0m/' |
  diff-highlight

(ক্রেডিট @ retracile এর উত্তর জন্য sedহাইলাইট)


1

hlগিথুব: git clone http://github.com/mbornet-hl/hl এবং এ: http://www.flashnux.com/notes/page_000022_US.html এ উপলব্ধ কমান্ডটি আপনার কাছে পাওয়া উচিত

hlসি-তে লিখিত একটি লিনাক্স কমান্ড, বিশেষত একটি পাঠ্য ফাইল বা কমান্ডের আউটপুট রঙ করার জন্য ডিজাইন করা। আপনি একসাথে ৪২ টি রং ব্যবহার করতে পারেন এবং কমান্ড লাইনগুলি সরল করতে একটি কনফিগারেশন ফাইল ব্যবহার করতে পারেন। আপনি প্রতিটি কমান্ডের আউটপুট রঙিন করতে পারেন যা অন্য একটিতে পাইপ করা যায়। এবং আপনি যদি নিয়মিত প্রকাশগুলি কী তা জানেন তবে এটি আপনার পক্ষে ব্যবহার করা খুব সহজ। আপনি manকীভাবে এটি ব্যবহার করবেন তা বোঝার জন্য পৃষ্ঠাটি ব্যবহার করতে পারেন ।
hlব্যবহার এবং কনফিগার করা খুব সহজ। আপনি এমনকি তাদের সিনট্যাক্সটি পরিবর্তন না করে কমান্ড আউটপুট রঙিন করতে hl_generic স্ক্রিপ্টটি ব্যবহার করতে পারেন ।
উদাহরণস্বরূপ, আপনি diffকমান্ডের আউটপুটটিকে আপনার সাধারণ কমান্ডটি টাইপ করে রঙিন করতে পারেন :

diff file1 file2

আপনার যদি কিছু সাহায্যের প্রয়োজন হয় তবে কেবল আমাকে একটি ইমেল প্রেরণ করুন।
শুভেচ্ছা।


1

ডেকে আনা মুহুর্তে গিথুবতে অজগর দিয়ে নির্মিত একটি সত্যই ঝরঝরে সরঞ্জাম রয়েছে icdiff। সুন্দর রঙিন আউটপুট উত্পাদন করে যা "তীব্রতা" সচেতন। আমি এটি সব সময় ব্যবহার করি, ভাল করে দেখুন worth


1

আপনি যদি ভিএম ইনস্টল করে থাকেন তবে আপনি এটি করতে পারেন diff file1 file2 | vim -

ভিম ডিফের ফর্ম্যাটটি সনাক্ত করবে এবং এটিকে যথাযথ রঙ দেবে। শেষে ড্যাশটি হ'ল ডিফ ডিমান্ড থেকে ইনপুট গ্রহণ করতে দেওয়া।


'ভিউ' (ভিএম-তে কেবল পঠনযোগ্য শর্টকাট) এই উদ্দেশ্যে আরও উপযুক্ত।
অনুপম শ্রীবাস্তব


0

হয় আপনি ব্যবহার করতে পারেন

1।diff --color=auto file1 file2

2।colordiff file1 file2

3. আমার প্রিয়: git diff file1 file2নীচে হিসাবে বাস্তবায়িত:

আমি বর্তমানে ব্যবহার এবং সুপারিশ হ'ল হয় এর সাহায্যে এর আউটপুটটি ব্যবহার করে git diff বা পাইপিং colordiffকরে:

diff() { git diff --no-index "$1" "$2" | colordiff; }


আমি git diff --no-indexখুব পছন্দ করি তবে আমি মনে করি ফাইলগুলি সন্ধানযোগ্য হওয়া দরকার। (কমপক্ষে, আমার জন্য বাশ প্রক্রিয়া প্রতিস্থাপনের সাথে কাজ করে না)
কার্ল

@ কার্ল চিত্রটি নিজেকে আলাদা করে দেয়, সম্ভবত এখানে একটি টার্মিনাল সেটিংস রয়েছে যা এটি (বা) অন্য কোনও উপায়ে এটি অনুসন্ধানযোগ্য করে তুলবে। আমি git diffদীর্ঘদিন থেকে ব্যবহার করে আসছি এবং ফাইলটি আমার জন্য সন্ধানযোগ্য, অন্যথায় এটি সঠিকভাবে করার জন্য আমার কোনও ব্যবহার হবে না।
হিমানশাক্সড

2
সম্ভবত আমি খুব পরিষ্কার ছিল না। একটি (নির্বোধ) উদাহরণ হিসাবে, এটি আমার পক্ষে কাজ করে diff --color <(ls | head -n+3) <(ls | tail -n +5)তবে সাথে নয় git diff। স্বীকার করা, সাধারণ ঘটনা নয় বা খুব বেশি পরিশ্রম করা খুব কঠিন নয়।
কার্ল

0

কেবলমাত্র একটি নোট: "পাশাপাশি" আপনার আউটপুট পেতে "- রঙ = সর্বদা"। আপনি এটিকে কম দিয়েও প্যাগিনেট করতে পারেন এবং রঙিন আউটপুট ধরে রাখতে পারেন:

diff -y --color=always file1 file2 | less -R

এবং আরও একটি ইঙ্গিত: শেষে "--color = সর্বদা" স্যুইচ রাখার চেষ্টা করুন। কারণ? ইউজার-লিনাক্স ২.২27.১ থেকে ডেমসগ সহ:

dmesg --human --color=always | less -R    # works
dmesg --color=always --human | less -R    # doesn't work

0

এই স্ক্রিপ্টটি স্ট্যান্ডার্ড প্রাক-সংস্করণ 3.4 ডিফ ব্যবহার করে (এটি কোনও ডিফের কোনও সংস্করণের সাথে কাজ করা উচিত) এবং কোনও উপায়ে আউটপুট বিন্যাস পরিবর্তন না করে আউটপুটকে রঙিন করে। এটি আরএইচএল (7.5 সংস্করণ) এর সর্বশেষ সংস্করণে কাজ করে যার জিএনইউ ডিফ সংস্করণ 3.3 রয়েছে। কেবল এটি আপনার bin / বিন ডিরেক্টরিতে বা আপনার পথের যে কোনও জায়গায় রেখে দিন (আমি এটিকে "সিডিফ" বলার পরামর্শ দিই)।

#!/bin/bash
file1color="$(tput setaf 1)"
file2color="$(tput setaf 2)"
sepcolor="$(tput setaf 6)"
reset="$(tput sgr0)"
diff $* |sed -e "s/^\\(<.*\$\\)/$file1color\\1$reset/;s/^\\(>.*\$\\)/$file2color\\1$reset/;s/^\\(---\$\\)/$sepcolor\\1$reset/"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.