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

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

如何执行原生的命令

我的以为即将介绍的命令很好用,彻底能够替代原生命令,也设置了大量的 alias 语句来替代原生命令,不过每一个人的习惯不同,若是你以为即将介绍的命令用得不习惯 ,想用回原生的命令也能够,按相似如下的操做便可node

\cat # 忽略全部 alias 为 cat 的命令 - explanation: https://stackoverflow.com/a/16506263/22617
#
command cat # 忽略全部函数和 aliases
复制代码

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

bat > cat

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

  • 自动识别文件扩展名并进行高亮显示
  • 显示行号
  • 文件内容过长时自动分页
  • 若是文件内容过长,还能够用 / 来搜索相关的内容 功能演示以下
    image

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

alias cat='bat'
复制代码

💾 点击这里可安装 batbash

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 有关,我能够这么搜 ui

image
固然若是你不须要模糊搜索也能够关掉

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

image

💾 点击这里可安装 fzf

htop > top

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

  • 显示每一个 CPU 的负载状况,若是 CPU 是四核八线程的,会显示每一个线程的负载状况,并且不一样的指标用颜色区分开来,更直观,对用户更友好

    image

  • 交互式

    1. 能够左右滑动显示此进程的全部信息与对应的 COMMAND,也能够上下滑动显示全部的进程信息,而 top 只能最消耗资源的进程列表
    2. 能够以树状图的方式查看进程对应的多个子线程或进程占用的文件
      image
    3. 方便追踪进程的运行状况,若是咱们要观察某个进程的运行状况,使用 top 无法定位某个进程,进程在屏幕上的显示会忽上忽下,每次 top 刷新咱们都必须去用肉眼追踪咱们正在观察的进程,很不方便(全部进程的颜色都同样),而用 htop 就简单了,咱们能够按下空格键标记咱们想要的进程,被标记的进程会高亮展现,同时按 F 能够保证被标记的进程出如今屏幕里
    4. 用 htop 能够直接给多个进程发信号,这样能很方便地实现像 kill 进程之类的操做,通常咱们要 kill 掉某个进程要通过两个步骤: 一、输入 top 得到咱们想要 kill 线程的 pid. 二、退出 top 输入 kill PID,因为 top 命令不能执行搜索功能,光是找 PID 这一步就够呛, 而用 htop 能够很轻易地作到,输入 htop 后,按 F3 输入进程名称进行查找,而后换空格选中此进程(也能够选中多个进程),再换 F9 选中左边的 SIGKILL 便可将选中的进程 kill 掉,以 kill 掉 htop 进程为例,操做以下
      image
      能够看到效率上比 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
相关文章
相关标签/搜索