Linux学习之路我用 LinuxLinux

linux/unix 上那些炫酷的命令行工具(一)

2019-02-10  本文已影响4人  谢kun

工欲善其事,必先利其器,作为一名手艺人, 我们应该利用好工具,以便将我们的时间用在更有效率的事情上,类 Linux 上很多原生的如 catgrep 等命令给我们带来了很多便利,但其实都或多或少有可以改进的地方,市面上其实出现了大量的第三方开发者开发的对这些原生做了很大改进的命令,比原生的命令更好用,今天就给大家推荐这些命令,大部分可以说是秒杀原生命令了,能让你事半功倍,强烈推荐

如何执行原生的命令

个人觉得即将介绍的命令很好用,完全可以替代原生命令,也设置了大量的 alias 语句来替代原生命令,不过每个人的习惯不一样,如果你觉得即将介绍的命令用得不习惯 ,想用回原生的命令也可以,按类似以下的操作即可

\cat # 忽略所有 alias 为 cat 的命令 - explanation: https://stackoverflow.com/a/16506263/22617
# 或
command cat # 忽略所有函数和 aliases

废话不说,让我们看看哪此命令足以替代原生命令吧

bat > cat

原生的 cat 命令只是简单地打印某个文件的内容,但 bat 命令在此基础上还可以做到以下功能

推荐用 alias 命令将 cat 设置成 bat

alias cat='bat'

💾 点击这里可安装 bat

fzf > ctrl+r

什么是 fzf 呢

It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.

它是一款使用 GO 语言编写的交互式的 Unix 命令行工具。可以用来查找任何列表内容、文件、历史命令、 本机绑定的host、 进程、 Git 分支、进程等。所有的命令行工具可以生成列表输出的都可以再通过管道 pipe 到 fzf 上进行搜索和查找

我们简单介绍一下它的查找历史命令的功能,查看历史输入的终端命令我们一般用 ctrl+r,在这方面,fzf 可以说是秒杀 ctrl+r 了,ctrl+r 只能呼出最近一条包含输入字符串的历史命令,而且只能做精确匹配,而安装了 fzf 后,当呼出 ctrl+r 会显示所有包含输入字符串的命令(默认匹配最近一条符合搜索条件的命令),按上下箭头即可自由选择你想要的命令,而且支持模糊搜索,这个特性针对那些常常只是隐约记得历史命令的人特别有用,比如如果我隐约记得有个命令和 gitfinance 有关,我可以这么搜

image
当然如果你不需要模糊搜索也可以关掉

fzf 的功能远不止于此,与其他命令结合让你的效率飞速提升,自动补全功能完全秒杀默认的 tab 功能,再安装一个具有预览功能的 highlight 插件,好用到爆炸,不信看以下功能展示

image

💾 点击这里可安装 fzf

htop > top

top 命令可以说是查看进程与系统运行的利器了,不过 htop 不仅具备 top 的所有功能,还有一些 top 不具备但很实用的功能,简单列举几个

我们可以设置 top 的 alias 以便利用 htop 的强大功能

alias top="sudo htop" # alias top and fix high sierra bug

💾 点击这里可安装 htop

diff-so-fancy > diff

默认的 git diff 显示不太友好,也不支持定制配色方案,而且仅能支持行级别的 diff, diff-so-fancy 默认的配色方案不仅是 human readable,而且支持字符级别的 diff,所以推荐 git diffdiff-so-fancy,默认的 diff 和 diff-so-fancy 对比如下

image
💾 点击这里可安装配置 diff-so-fancy

fd > find

默认的 find 命令不太好用,查找命令比较复杂冗余,考虑以下三种情形

  1. 查找所有扩展名为 md 的后缀
  2. 查找所有文件名包含 cli 的文件
  3. 查找所有包含 cli 的文件中的单词数
    我们来看下分别用 find 和 fd 的对比
// use find
find . -type f -name "*.md"
find . -name '*cli*'
find ./ -type f -name "*php*" -exec wc -w {} +

// use fd
fd -e md 
fd md # all with .md extension
fd cli -x wc -w 

可以看到,用 fd 命令极简,更关键的是在文件多的情况下 fd 还有另一大优势:性能!fd 的搜索效率可以达到 find 的 20 倍以上
💾 点击这里可安装配置 fd

ncdu > du

ncdu 可以理解为是交互式的 du。我们一般用 du 来查找某个目录占用了多少磁盘空间,但如果我们需要查看这个目录下的子目录/文件占用了多少空间并对其进行排序 du 就无能为力了,而用 ncdu 的话我们只要在目录输入此命令即可显示按空间大小降序排序的所有文件/目录

而且比较方便的一点是 ncdu 是交互式的,如果我们还想看子目录里的文件/目录大小,只需要按上下箭头选中相关目录按回车即可查看子目录详情的空间占用情况,速度极快!另外也可删除文件,可以在选中子目录时执行相当于 cd 到此子目录的命令(此时会退出ncdu, 并 cd 到此子目录)。还有一个比较骚的功能是点击 cmd + 选中的目录/文件可以打开当前目录/文件
我们可以为 du 设置 ncdu 的 alias,配上主题优雅很多

// --color 设置主题,--rr 只读模式,防止执行 ncdu 时删除文件以及 cd 到某个子目录 
alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"

效果如下

image
💾 点击这里可安装配置 ncdu

个人公众号: 码农蜕变之路,定期分享各种 IT 技能,欢迎交流


image
上一篇下一篇

猜你喜欢

热点阅读