命令行增强版
参考文章:CLI: improved
https://remysharp.com/2018/08/23/cli-improved
bat > cat
cat 用于打印文件的内容,如果你平时用命令行很多的话,例如语法高亮之类的功能会非常有用。我首先发现了 ccat[1] 这个有语法高亮功能的工具,然后我发现了 bat[2],它的功能有语法高亮、分页、行号和 git 集成。
bat 命令也能让我在(多于一屏的)输出里使用 / 搜索(和用 less 搜索功能一样)。
bat网站:
https://github.com/sharkdp/bat
ubuntu安装
sudo apt install bacula-console-qt
快捷键
alias cat='bat'
prettyping > ping
ping 非常有用,当我碰到“糟了,是不是 X 挂了?/我的网不通了?”这种情况下我最先想到的工具就是它了。但是 prettyping(“prettyping” 可不是指“pre typing”)在 ping 的基础上加了友好的输出,这可让我感觉命令行友好了很多呢。
安装方法:
https://linux.cn/article-10067-1.html
快捷键:
alias ping='prettyping --nolegend'
执行
sh prettyping www.baidu.com
输出:
htop > top
top 是当我想快速诊断为什么机器上的 CPU 跑的那么累或者风扇为什么突然呼呼大做的时候首先会想到的工具。我在生产环境也会使用这个工具。讨厌的是 Mac 上的 top 和 Linux 上的 top 有着极大的不同(恕我直言,应该是差的多)。
不过,htop 是对 Linux 上的 top 和 Mac 上蹩脚的 top 的极大改进。它增加了包括颜色输出,键盘热键绑定以及不同的视图输出,这对理解进程之间的父子关系有极大帮助。
一些很容易上手的热键:
-
P —— 按 CPU 使用率排序
-
M —— 按内存使用排序
-
F4 —— 用字符串过滤进程(例如只看包括 node 的进程)
-
space —— 锚定一个单独进程,这样我能观察它是否有尖峰状态
执行:
htop
diff-so-fancy > diff
我非常确定我是几年前从 Paul Irish 那儿学来的这个技巧,尽管我很少直接使用 diff,但我的 git 命令行会一直使用 diff。diff-so-fancy 给了我代码语法颜色和更改字符高亮的功能。
在我的 ~/.gitconfig 文件里我用了下面的选项来打开 git diff 和 git show 的 diff-so-fancy 功能。
fd > find
fd 是一个很好的替代品(它的作者和 bat 的作者是同一个人)。它非常快而且对于我经常要搜索的命令非常好记。
几个上手的例子:
-
$ fd cli # 所有包含 “cli” 的文件名
-
$ fd -e md # 所有以 .md 作为扩展名的文件
-
$ fd cli -x wc -w # 搜索 “cli” 并且在每个搜索结果上运行
wc -w
安装目录:
https://github.com/sharkdp/fd/
输出:
ncdu > du
du -sh 命令是我经常会运行的命令(-sh 是指结果以“汇总”和“人类可读”的方式显示),我经常会想要深入挖掘那些占用了大量磁盘空间的目录,看看到底是什么在占用空间。
ncdu 是一个非常棒的替代品。它提供了一个交互式的界面并且允许快速的扫描那些占用了大量磁盘空间的目录和文件,它又快又准。
du别名:
alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"
tldr > man
几乎所有的命令行工具都有一个相伴的手册,它可以被 man <命令名> 来调出,但是在 man的输出里找到东西可有点让人困惑,而且在一个包含了所有的技术细节的输出里找东西也挺可怕的。
输出:
ack || ag > grep
grep 毫无疑问是一个强力的命令行工具,但是这些年来它已经被一些工具超越了,其中两个叫 ack 和 ag。
我个人对 ack 和 ag 都尝试过,而且没有非常明显的个人偏好,(也就是说它们都很棒,并且很相似)。我倾向于默认只使用 ack,因为这三个字符就在指尖,很好打。并且 ack 有大量的 ack --bar 参数可以使用!(你一定会体会到这一点。)
ack 和 ag 默认都使用正则表达式来搜索,这非常契合我的工作,我能使用类似于 --js或 --html 这种标识指定文件类型搜索。(尽管 ag 比 ack 在文件类型过滤器里包括了更多的文件类型。)
两个工具都支持常见的 grep 选项,如 -B 和 -A 用于在搜索的上下文里指代“之前”和“之后”。
因为 ack 不支持 markdown(而我又恰好写了很多 markdown),我在我的 ~/.ackrc 文件里加了以下定制语句:
1. --type-set=md=.md,.mkd,.markdown
1. --pager=less -FRX
安装:
http://conqueringthecommandline.com/book/ack_ag
无法安装成功