32

Мне нужно проверить два файла (не две версии одного и того же файла, они, однако, отслеживаются git, но это не имеет отношения), и я хотел бы получить цветной вывод, как мне этого добиться?

$ diff file_1 file_2

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

$ 

Приведенный выше код показывает мне разницу между этими файлами, однако без каких-либо цветов. Для более длинных различий, которые трудно прочитать.


В качестве альтернативы, есть ли способ для git (с помощью которого у меня есть хороший вывод цвета) для сравнения двух разных файлов (не изменений в файл)?

OSX (10.7.5)

4 ответа4

35

Perl имеет тусклую оболочку colordiff для diff, но я предпочитаю grc (универсальный colorizer).

С grc (универсальный colorizer), вы можете написать свои собственные обертки для различных типов команд или входов (если вам нравится такая вещь).

Ниже grc работает с /var/log/syslog (в конфиге этот файл настроен на определенную цветовую схему), где он выделяет процессы, pids, IP-адреса и "connect".

Конечно, рекомендуется использовать псевдоним, чтобы вы не забыли:

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

GRC работает против системного журнала


Если у вас есть git, вы можете просто использовать это, что позволяет очень diff даже по веткам.

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

Вам не нужно использовать git diff в репозитории, вы можете использовать его только для обычных файлов.

git diff old.txt new.txt

Как всегда, вы можете использовать псевдоним diff для простоты использования.

alias diff="git diff"
31

При проверке файлов я почти всегда использую vim:

vim -d file_1 file_2

Он не только использует цвета, но и выстраивает в линию файлы, чтобы было легче видеть добавленные / удаленные строки.

6

Вы можете получить git для сравнения двух разных файлов:

git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
5

Основываясь на утвержденном ответе: grc отлично подходит для этого. Он устанавливается вместе с brew и раскрашивает несколько терминальных команд из коробки, одной из которых является diff. Так...

brew install grc

... устанавливает GRC в вашу систему. Затем вам нужно настроить свои псевдонимы, bave caveat предлагает решение. Просто добавьте следующую строку в ваш .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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .