web-dev-qa-db-fra.com

Comment puis-je activer la sortie couleur pour OSX diff?

Je dois diff deux fichiers (pas deux versions du même fichier, ils sont cependant suivis par git, mais ce n'est pas lié) et je voudrais une sortie colorée, comment puis-je y parvenir?

$ diff file_1 file_2

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

$ 

Le code ci-dessus me montre la différence entre ces fichiers, mais sans aucune couleur. Pour les diffs plus longs, c'est difficile à lire.


Sinon, y a-t-il un moyen pour que git (avec lequel j'ai une sortie couleur Nice) diffe deux fichiers différents (ne modifie pas un fichier)?

OSX (10.7.5)

33
miphe

Perl a une couche terne colordiff wrapper pour diff, mais je préfère grc (coloriseur générique) .

Avec grc (colorizer générique) , vous pouvez écrire vos propres wrappers pour différents types de commandes ou d’entrées (si vous aimez ce genre de chose).

Ci-dessous, grc est exécuté sur /var/log/syslog (dans la configuration, ce fichier est défini sur un certain jeu de couleurs), où il met en surbrillance les processus, les pids, les IP et les connexions.

Bien sûr, il est recommandé d'utiliser un alias pour ne pas oublier:

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

grc running against syslog


Si vous avez git, vous voudrez peut-être simplement l’utiliser, ce qui permet un nom diffing très robuste, même d’une branche à l’autre.

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

Vous n’êtes pas obligé d’utiliser git diff dans un référentiel, vous pouvez l’utiliser uniquement pour des fichiers normaux . enter image description here

git diff old.txt new.txt

Comme toujours, vous pouvez alias diff pour faciliter l’utilisation.

alias diff="git diff"
37
jnovack

Lorsque je diffère des fichiers, j'utilise presque toujours vim:

vim -d file_1 file_2

Non seulement il utilise des couleurs, mais il aligne les fichiers pour faciliter la visualisation des lignes ajoutées/supprimées.

33
Philip Kearns

Vous pouvez obtenir git to diff deux fichiers différents :

git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
7
Colin Pickard

Pour compléter la réponse approuvée: grc fonctionne très bien pour cela. Il est installable avec infusion et colorise un certain nombre de commandes terminales prêtes à l'emploi, le diff étant l'une d'entre elles. Alors...

brew install grc

... installe grc sur votre système. Ensuite, vous devez configurer vos alias, l’avertissement de brassage fournit une solution. Ajoutez simplement la ligne suivante à votre .bashrc ou similaire.

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

Cela ajoutera actuellement les alias suivants:

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