Як я можу включити кольоровий вихід для OSX diff?


33

Мені потрібно відрізняти два файли (не дві версії одного файлу; вони проте відслідковуються git, але це не пов'язано), і я хотів би отримати кольоровий вихід, як я можу цього досягти?

$ diff file_1 file_2

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

$ 

Наведений вище код показує мені різницю між цими файлами, однак без жодних кольорів. Для довших відмінностей важко читати.


Крім того, чи існує спосіб, коли git (з яким у мене є гарний кольоровий вихід) відрізняє два різні файли (не змінюється у файлі)?

OSX (10.7.5)

Відповіді:


39

Perl має нестабільну кольорову оболонку для відмінності, але я віддаю перевагу grc (загальний колоризатор) .

За допомогою grc (загальний колоризатор) ви можете написати власні обгортки для різних типів команд чи входів (якщо вам подобається така штука).

Внизу grcпрацює проти /var/log/syslog(у налаштуваннях цей файл встановлений у певній кольоровій гамі), де він висвітлює процеси, pids, IP та "підключення" s.

Звичайно, рекомендується використовувати псевдонім, щоб ви не забували:

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

grc працює проти syslog


Якщо у вас є 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"

6
yay for git diff
chrismarx

8
git diffмає бути у верхній частині вашої відповіді! +1 - вказати, що він працює навіть поза сховищем.
Lucio Paiva

4
'git diff' не працює на загальних файлах, тому псевдонім diff до 'git diff' може бути шкідливим
Антон Чикін

1
Це не працює для мене ... echo one > foo; echo two > bar; git diff foo barне дає результатів, тоді як diff foo barвиробляє 1c1 < one --- > two (звичайно, правильне форматування)
LarsR

git diffне працює, наприклад, труби
Piotr Findeisen

34

При різниці файлів я майже завжди використовую vim:

vim -d file_1 file_2

Він не тільки використовує кольори, але вишикує файли, щоб було легше бачити додані / видалені рядки.


Нічого ... Вім - красива річ.
Вестон Гангер

@WestonGanger vim справді дивовижний, ніколи не перестає вражати мене
Філіп Кірнс

1
vim теж працює на файлах git patch (показує кольорові відмінності)!
ryanman


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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.