मैं OSX भिन्न के लिए रंगीन आउटपुट कैसे सक्षम कर सकता हूं?


33

मुझे दो फ़ाइलों को अलग करने की आवश्यकता है (एक ही फ़ाइल के दो संस्करण नहीं हैं, हालांकि उन्हें गिट द्वारा ट्रैक किया जाता है, लेकिन यह असंबंधित है) और मुझे कुछ रंगीन आउटपुट चाहिए, मैं इसे कैसे प्राप्त कर सकता हूं?

$ diff file_1 file_2

1,9d0
< <script ... >
<     // more code
< </script>

$ 

उपरोक्त कोड मुझे उन फ़ाइलों के बीच का अंतर दिखाता है, हालांकि बिना किसी रंग के। लंबे समय तक अलग है कि पढ़ने के लिए मुश्किल है।


वैकल्पिक रूप से, क्या गिट के लिए एक तरीका है (जिसके साथ मेरे पास अच्छा रंग आउटपुट है) दो अलग-अलग फ़ाइलों को अलग करने के लिए (फ़ाइल में परिवर्तन नहीं)?

OSX (10.7.5)

जवाबों:


39

पर्ल के पास अंतर के लिए एक कमी कोलॉर्फिफ़ रैपर है, लेकिन मुझे grc (जेनेरिक कलराइज़र) पसंद है ।

साथ GRC (सामान्य colorizer) , आप (यदि आप बात की इस प्रकार की तरह) आज्ञा या आदानों के विभिन्न प्रकार के लिए अपने स्वयं के रैपर लिख सकते हैं।

नीचे, के grcखिलाफ चल रहा है /var/log/syslog(कॉन्फ़िगरेशन में, यह फ़ाइल एक निश्चित रंग योजना के लिए सेट है), जहां यह प्रक्रियाओं, ग्रिड, आईपी और "कनेक्ट" को हाइलाइट करता है।

बेशक, यह एक उपनाम का उपयोग करने की सिफारिश की जाती है ताकि आप भूल न जाएं:

alias diff="/usr/bin/grc /usr/bin/diff"

syslog के खिलाफ चल रहा है


यदि आपके पास गिट है, तो आप बस उसी का उपयोग करना चाहते हैं, जो बहुत मजबूत diffआईएनजी की अनुमति देता है , यहां तक ​​कि शाखाओं में भी।

git diff master:cogs/foo.txt branch:widgets/bar.txt

आपको git diffरिपॉजिटरी के भीतर उपयोग करने की आवश्यकता नहीं है , आप इसे केवल नियमित फ़ाइलों के लिए उपयोग कर सकते हैं।यहाँ छवि विवरण दर्ज करें

git diff old.txt new.txt

हमेशा की तरह, आप diffउपयोग में आसानी के लिए उपनाम कर सकते हैं।

alias diff="git diff"

6
yit for git diff
chrismarx

8
git diffआपके उत्तर के शीर्ष पर होना चाहिए! +1 यह इंगित करने के लिए कि यह रिपॉजिटरी के बाहर भी काम करता है।
लुसियो पाइवा

4
'git diff' जेनेरिक फ़ाइलों पर काम नहीं करता है, इसलिए aliasing 'git diff' होना हानिकारक हो सकता है
Anton Chikin

1
यह मेरे लिए काम नहीं करता है ... echo one > foo; echo two > bar; git diff foo barकोई उत्पादन नहीं करता है, जबकि diff foo barउत्पादन 1c1 < one --- > two (उचित स्वरूपण के साथ, निश्चित रूप से)
LarsR

git diffजैसे पाइप के लिए काम नहीं करता है
Piotr Findeisen

34

फ़ाइलों को अलग करते समय मैं लगभग हमेशा विम का उपयोग करता हूं:

vim -d file_1 file_2

यह न केवल रंगों का उपयोग करता है, यह फाइलों को भी लाइन करता है इसलिए इसमें जोड़े गए / हटाए गए लाइनों को देखना आसान है।


वाह ... विम एक खूबसूरत चीज है।
वेस्टन गैंगर

@WestonGanger विम वास्तव में आश्चर्यजनक है, मुझे प्रभावित करने के लिए कभी नहीं छोड़ता
फिलिप

1
vit पैच पैच फ़ाइलों पर भी काम करता है (रंगीन अंतर दिखाता है)!
27


6

स्वीकृत उत्तर पर निर्माण करने के लिए: grc इसके लिए बहुत अच्छा काम करता है। यह काढ़ा के साथ स्थापित करने योग्य है और बॉक्स से बाहर कई टर्मिनल कमांड को रंगीन करता है, उनमें से एक को अलग करें। इसलिए...

brew install grc

... आपके सिस्टम में grc स्थापित करता है। फिर आपको अपने उपनामों को स्थापित करने की आवश्यकता है, काढ़ा एक समाधान प्रदान करता है। बस अपने .bashrcया समान के लिए निम्न पंक्ति जोड़ें ।

source "`brew --prefix`/etc/grc.bashrc"

यह वर्तमान में निम्नलिखित उपनाम जोड़ देगा:

alias colourify="$GRC -es --colour=auto"
alias configure='colourify ./configure'
alias diff='colourify diff'
alias make='colourify make'
alias gcc='colourify gcc'
alias g++='colourify g++'
alias as='colourify as'
alias gas='colourify gas'
alias ld='colourify ld'
alias netstat='colourify netstat'
alias ping='colourify ping'
alias traceroute='colourify /usr/sbin/traceroute'
alias head='colourify head'
alias tail='colourify tail'
alias dig='colourify dig'
alias mount='colourify mount'
alias ps='colourify ps'
alias mtr='colourify mtr'
alias df='colourify df'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.