Skip to content

Instantly share code, notes, and snippets.

@draplater
Created August 2, 2023 08:55
Show Gist options
  • Save draplater/b42e3863ed30a673a5cf364b7c14fa33 to your computer and use it in GitHub Desktop.
Save draplater/b42e3863ed30a673a5cf364b7c14fa33 to your computer and use it in GitHub Desktop.
让diff更加好看: 加入颜色的魔力

让diff更加好看: 加入颜色的魔力

draplater: 史蒂夫乔布丝,偶今天用diff看看两个文件的不同,可是输出的结果一片混乱,没颜色,怎么办呢(囧rz)?

史蒂夫乔布丝:啊,drapl,咱们可以用 sed来帮你给diff的输出加上颜色哦~试试这个命令怎么样:

diff -u installed_packages.txt nas_installed_packages.txt | sed -e "s/^+/\x1b[32m&/g" -e "s/^-/\x1b[31m&/g" -e "s/^@/\x1b[34m&/g" -e 's/$/\x1b[0m/'

这个命令里面:

  • \x1bESC字符的表示方法,它是颜色代码的开始。
  • 32m31m34m分别代表绿色、红色和蓝色。
  • 所有的行结束都被替换成了\x1b[0m,它是颜色代码的结束,能恢复到默认的颜色。

draplater: 诶嘿,谢谢你!不过偶在网上找到一个更简单的办法,直接用 vim 来看 diff 的输出,不用替换就有颜色了:

diff -u installed_packages.txt nas_installed_packages.txt | vim -R -

史蒂夫乔布丝:那真是个好主意,drapl !你真是个小聪明鬼~~~ (狂笑) 这个方法真的很简单方便呢!不过,你知道有个叫做colordiff的工具专门用来显示有颜色的diff输出么?

draplater: colordiff?偶没有听说过耶,是什么鬼东西呢(小声BB)?

史蒂夫乔布丝: colordiff其实就是一个包装过的diff,它会为diff的输出添加颜色。只要在你的系统中安装了它,就可以直接使用啦:

colordiff -u installed_packages.txt nas_installed_packages.txt | less -R

draplater: 耶~好酷哦!偶现在就去试试看~~ (跳跳)

史蒂夫乔布丝:好哒,期待你的好消息哦~~~

以上就是偶们今天关于如何让diff命令输出有颜色的讨论啦,希望对大家有帮助。欢迎大家留言讨论,我们下次再见~~(挥手^_^)


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment