比 cat 更好用的命令了解一下?

2018-06-04 08:46:49 +08:00
 AaronWxt

作为程序员经常使用命令行来进行一些文件的处理,比如常见的:gitvim ,以及不同语言下的一些命令等。那么这么多的命令中,相信你肯定有用过cat命令用来查看文件的内容,但是这个命令仅仅只能将文本展示出来,并不会很好的辅助我们阅读和理解里面的内容,尤其是文件中内容为 代码时,看起来就特别的痛苦了。那么这篇文章就要介绍更好命令来替代 cat命令,它就是bat命令。(不是 windows 中的那个脚本哟)

bat 介绍

bat 是一个语法高亮显示和Git集成的cat高级版本,也就是说,batcat的所有功能,且已经集成了代码高亮,和git版本管理的工具,并且会对过长的文件进行自动分页,不会像 cat 一样全部一次打印,先来看张效果图:

bat 安装

安装的方法也是超级的简单,具体安装如下:

git clone https://aur.archlinux.org/bat.git
cd bat
makepkg -si
brew install bat

安装完成后,输入bat -help 看下是否会出现相关的提示信息,来确认是否安装成功。

bat 使用

使用与 cat 类似,在 bat 后面紧跟文件 就行了, 也可以同时打开过个,但结果是以一个接一个展示出来。

如打开一个有 git 管理的文件,会展示出文件中添加与删除的部分,如下图所示:

如果需要制定文件中高亮的语言,可以使用 -l 参数来制定语言,例如: bat ./test.json -l json 则指定文件中高亮为 json 模式,当然不指定也没有问题,默认会自动识别。 总之使用还是比较简单,一点都不复杂。

总结

如果有了这个命令,我想一般都不会再用 cat命令了,但每次敲命令都习惯使用 cat 了, 那么建议将 cat 命令使用 alias cat= 'bat' 将其指定为 bat 这样就可以使用cat 命令,而达到 bat 的使用效果。

希望大家能够喜欢这篇文章,喜欢就分享出去吧。 如果你有更好的命令,欢迎留言交流。

欢迎大家关注我的公众号:

7650 次点击
所在节点    程序员
46 条回复
gongzili456
2018-06-04 17:39:04 +08:00
ccat 了解一下
param
2018-06-05 01:39:11 +08:00
@twor2 之前一直用 ccat,后来发现了 bat 就一直用 bat。还有一个毛病是,跟另一个名为 bat 的项目名冲突了。。

https://github.com/astaxie/bat

直接在 aur 安装会冲突,只好让其中一个手动下载 binary 并设 alias
Kobayashi
2018-12-05 18:33:49 +08:00
bat. A cat(1) clone with wings.

上面这句话本身就是个笑话,cat 定位是做文本拼接,例如把文件 1 的内容拼接到文件 2 后面。当只给定一个文件名作为参数时,把文件内容拼接到标准输出。cat 从来没说自己是要做文本查看、语法高亮。

而这个 bat,没有拼接功能也号称是 cat 的 clone。其实这没啥关系,bat 语法高亮显示、行号显示是做的不错。但是这个定位太 TM 尴尬,语法高亮是属于文本编辑器的工作,vim、nano、emacs、subl、vscode 哪个不行?而且 vim、nano 查看文本还不会污染终端的输出,你这 bat 把所有内容全都扔在终端给人看。

用 cat 来查看文本内容的人我真不明白你们是怎么想的,放着文本编辑器不用,非要找作文本拼接的来做文本查看。还有那个用 pygmentize 的兄弟,你也是绝了。

`cat | pygmentize`, cat 做输入,这也是 cat 标准的错误用法。内容输入,请用重定向:`pygmentize < README.md`.

给 vim、nano 配置一个语法高亮,有那么难么?有那么难么? https://github.com/scopatz/nanorc
Kobayashi
2018-12-05 18:42:47 +08:00
@jasonyang9 不符合。bat. A cat(1) clone with wings. 这句话本身就是笑话。
@SingeeKing 因为 cat 根本不是做文本查看的。cat, concatenate. 用来做文本拼接。cat 做文本查看,这是 cat 常见错误用法之一。
@yanaraika `pygmentize < filename` 了解一下。cat 做文本输入,这也是 cat 常见的错误用法之一。内容输入请用重定向。

@nekoyaki 又见一位,文本输入不要用 cat 加管道,用重定向 `<`。这样简化了过程,没必要经过 cat,浪费时间。
nekoyaki
2018-12-05 18:48:05 +08:00
@Kobayashi
“文本输入不要用 cat 加管道,用重定向 `<`。这样简化了过程,没必要经过 cat,浪费时间。”
======
理想很好,你看看现实世界的普通程序员理不理你……
nekoyaki
2018-12-05 18:51:40 +08:00
@Kobayashi
……八百年钱的帖子,没注意你不是楼主,不好意思。
我想说的是,贸然替换系统最常用的命令,很容易产生问题。你说不要用 cat 加管道,我知道这个道理,可其他写脚本的人未必遵守。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/460103

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX