Wie kann ich die farbige Ausgabe für OSX Diff aktivieren?

33

Ich muss zwei Dateien unterscheiden (nicht zwei Versionen derselben Datei, sie werden jedoch von git verfolgt, aber das hat nichts damit zu tun) und ich möchte eine farbige Ausgabe, wie kann ich das erreichen?

$ diff file_1 file_2

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

$ 

Der obige Code zeigt mir den Unterschied zwischen diesen Dateien, jedoch ohne Farben. Für längere Unterschiede ist das schwer zu lesen.


Alternativ gibt es eine Möglichkeit für Git (mit der ich eine schöne Farbausgabe habe), zwei verschiedene Dateien zu unterscheiden (keine Änderungen an einer Datei)?

OSX (10.7.5)

miphe
quelle

Antworten:

39

Perl hat einen glanzlosen Colordiff- Wrapper für diff, aber ich bevorzuge grc (generischer Colorizer) .

Mit grc (generic colorizer) können Sie Ihre eigenen Wrapper für verschiedene Arten von Befehlen oder Eingaben schreiben (wenn Sie so etwas mögen).

Unten grcläuft dagegen /var/log/syslog(in der Konfiguration ist diese Datei auf ein bestimmtes Farbschema eingestellt), wo sie Prozesse, Pids, IPs und "Verbindungen" hervorhebt.

Natürlich wird empfohlen, einen Alias ​​zu verwenden, damit Sie Folgendes nicht vergessen:

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

grc läuft gegen syslog


Wenn Sie Git haben, möchten Sie vielleicht nur das verwenden, was eine sehr robuste diffArbeit auch über Zweige hinweg ermöglicht.

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

Sie müssen nicht git diffin einem Repository verwendet werden, sondern können es nur für reguläre Dateien verwenden.Bildbeschreibung hier eingeben

git diff old.txt new.txt

Wie immer können Sie alias difffür einfache Bedienung.

alias diff="git diff"
jnovack
quelle
6
yay for git diff
chrismarx
8
git diffsollte ganz oben auf Ihrer Antwort stehen! +1 für den Hinweis, dass es auch außerhalb eines Repositorys funktioniert.
Lucio Paiva
4
'git diff' funktioniert nicht bei generischen Dateien, daher kann das Aliasing von diff als 'git diff' schädlich sein
Anton Chikin
1
Das funktioniert bei mir nicht ... echo one > foo; echo two > bar; git diff foo barproduziert keine Ausgabe, während diff foo barproduziert 1c1 < one --- > two (mit der richtigen Formatierung natürlich)
LarsR
git difffunktioniert zB nicht für Pfeifen
Piotr Findeisen
34

Beim Vergleichen von Dateien verwende ich fast immer vim:

vim -d file_1 file_2

Es werden nicht nur Farben verwendet, sondern die Dateien werden in einer Linie angeordnet, sodass die hinzugefügten / entfernten Linien besser erkennbar sind.

Philip Kearns
quelle
Wow ... Vim ist eine schöne Sache.
Weston Ganger
@ WestonGanger Vim ist in der Tat erstaunlich, hört nie auf, mich zu beeindrucken
Philip Kearns
1
vim funktioniert auch mit git patch files (zeigt farbiges diff)!
Ryanman
6

Auf der bewährten Antwort aufbauen : grc funktioniert hier hervorragend. Es kann mit brew installiert werden und färbt eine Reihe von Terminalbefehlen sofort ein, darunter auch diff. So...

brew install grc

... installiert grc auf Ihrem System. Dann müssen Sie Ihre Aliase einrichten, die Brühwarnung bietet eine Lösung. Fügen Sie einfach die folgende Zeile zu Ihrer .bashrcoder einer ähnlichen hinzu.

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

Dadurch werden derzeit die folgenden Aliase hinzugefügt:

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'
Mattias Bäcklund
quelle