我需要比较两个文件(不是同一个文件的两个版本,虽然它们被 git 跟踪,但这并不相关)并且我想要一些彩色的输出,我该如何实现?
$ diff file_1 file_2
1,9d0
< <script ... >
< // more code
< </script>
$
上面的代码显示了这些文件之间的差异,但是没有任何颜色。对于较长的差异,很难阅读。
或者,有没有办法让 git (我确实有很好的颜色输出) 来比较两个不同的文件(而不是对文件的更改)?
OSX (10.7.5)
答案1
Perl 有一个乏善可陈的颜色差异不同的包装器,但我更喜欢grc (通用着色器)。
和grc (通用着色器),您可以为不同类型的命令或输入编写自己的包装器(如果您喜欢这种东西)。
下面,grc
正在运行/var/log/syslog
(在配置中,此文件设置为特定的颜色方案),其中突出显示进程、pid、IP 和“连接”。
当然,建议使用别名,这样你就不会忘记:
alias diff="/usr/bin/grc /usr/bin/diff"
如果您有 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"
答案2
当比较文件差异时我几乎总是使用 vim:
vim -d file_1 file_2
它不仅使用颜色,还将文件排列起来,以便更容易看到添加/删除的行。
答案3
基于已批准的答案:格鲁吉亚非常适合这个。它可以通过 brew 安装,并且可以开箱即用地为许多终端命令着色,diff 就是其中之一。所以...
brew install grc
...将 grc 安装到您的系统中。然后您需要设置别名,brew 警告提供了一个解决方案。只需将以下行添加到您的.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'
答案4
你可以使用 git区分两个不同的文件:
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt