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

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

工欲善其事,必先利其器,作为一名手艺人, 我们应该利用好工具,以便将我们的时间用在更有效率的事情上,类 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 有关,我可以这么搜



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


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



💾  点击这里可安装 fzf


htop > top



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


  • 显示每个 CPU 的负载情况,如果 CPU 是四核八线程的,会显示每个线程的负载情况,而且不同的指标用颜色区分开来,更直观,对用户更友好

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



💾  点击这里可安装配置 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"
复制代码


效果如下



💾  点击这里可安装配置 ncdu


原文链接点击这里

相关文章
|
4月前
|
网络协议 Linux 网络安全
curl(http命令行工具):Linux下最强大的网络数据传输工具
curl(http命令行工具):Linux下最强大的网络数据传输工具
145 0
|
4月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
53 0
|
3天前
|
运维 监控 Linux
深入理解Linux系统运维:命令行工具的力量
【9月更文挑战第14天】在Linux的世界里,命令行工具是系统管理员的瑞士军刀。本文将带你领略命令行的魅力,从基础操作到高级技巧,让你的运维工作更加高效和精准。准备好了吗?让我们一起开启这段探索之旅!
|
26天前
|
Ubuntu 安全 Unix
在Linux中,有哪几种linux/unix发行版本?
在Linux中,有哪几种linux/unix发行版本?
|
28天前
|
Ubuntu Unix Linux
在Linux中,Unix和Linux之间的关系是什么?
在Linux中,Unix和Linux之间的关系是什么?
|
30天前
|
Unix Linux 程序员
Unix:Linux的“逗趣祖师爷”与它的不凡传承
在科技长河中,Unix犹如一颗恒星,既是历史见证者也是未来的启发者。1969年,因程序员肯·汤普森想在他的PDP-7上玩“Space Travel”游戏,意外创造了Unix,以简洁优雅的代码改变了操作系统的世界。进入90年代,林纳斯·托瓦兹受Unix启发,开发了开源免费的Linux,像是Unix调皮的孙子,不仅继承其精髓还增添了开放共享的精神。Unix与Linux之间的传承,就像是智者与追蝶孩童的故事,充满了岁月的智慧与新生的活力,提醒我们科技传奇往往源于不起眼的小事。下次使用Linux时,不妨会心一笑吧!
36 0
|
1月前
|
开发框架 Unix Linux
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
32 0
|
3月前
|
存储 安全 Java
Linux 命令行工具
`pk12util`是Linux下的命令行工具,用于处理PKCS#12文件,适用于证书和私钥管理。它跨平台,基于Java,支持创建、列出、导入和导出操作,便于脚本自动化。例如,用`pk12util encode`命令可创建受密码保护的PKCS#12文件,而`list`命令则用于查看文件内容。使用时务必注意安全,使用强密码,并备份重要文件。在实际操作前,应在安全环境中测试命令。
|
3月前
|
Unix Linux 应用服务中间件
Linux 命令行工具:lsof 入门指南
`lsof` 命令详解:用于列出系统中打开的文件,包括进程、网络连接、管道等。通过 `-p` 查看指定进程文件,`-u` 查看用户文件,`-i` 查看网络连接。还能定位占用端口的进程,显示已删除但仍在使用的文件,以及分析程序如何操作文件。是Linux用户问题定位和性能优化的得力助手。学习并熟练运用 `lsof` 可提升工作效率。
52 2
|
3月前
|
Linux 网络安全 Perl
Linux命令:探索强大的命令行工具
探索Linux命令行工具,了解CLI基本结构:命令名、选项和参数。本文概述常用命令,如文件和目录操作(ls, cd, mkdir)、文本处理(cat, grep, sed)和系统管理(top, df, free)。学习技巧,如Tab补全、通配符和使用管道符、重定向。掌握命令,提升Linux使用效率。