22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

可莉
• 阅读 550

点击上方“ 逆锋起笔 ”, 公众号回复 pdf

领取大佬们推荐的学习资料

作者:OOM

toutiao.com/i6889277470386848267/

程序员在搞开发时,终端CLI工具的使用必不可少.

终端CLI 最重要的是什么?

生产力 ? 错, 是颜值. 高颜值的终端工具, 让 UI 小妹妹都爱上了学编程, 真的, 每天下班都嚷着让我叫她写代码, 烦 ...

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

高频 CLI 工具推荐

1、fish shell

毋庸置疑,在终端工具中,Shell 是使用最频繁也最重要的工具。过去,我曾经使用过 Bash 和 Z Shell,而如今,这个Fish Shell,也是一个非常优秀的终端 Shell 工具,拥有许多开箱即用的功能,例如语法自动推荐补全、语法高亮显示或使用快捷键在最近访问的文件夹之间来回切换。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

2、Starship

如果必须要从本篇文章中选择一个我最喜欢的终端工具——那非 Starship 莫属。Starship 可以适用于任何 Shell。你只需要安装它,然后在相应的配置文件.bashrc/.zshrc/config.fish添加一行配置,剩下的工作交给它来完成就好了。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

它可以做到:

  • 根据你是否在代码仓库中添加了新文件、是否修改了文件、是否暂存了文件等情况,用相应的符号表示 git 仓库的状态。

  • 根据你所在的 Python 项目目录,展示 Python 的版本号,这也适用于 Go/Node/Rust/Elm 等其他编程语言环境。

  • 展示上一个命令执行所用的时间,指令运行时间必须在毫秒级别。

  • 如果上一个命令执行失败,会展示相应的错误提示符。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

还有不计其数的其他信息可以展示。但是,它能以更加友好的形式智能地给你呈现!比如,如果你不在 git 存储库中,它将隐藏 git 信息。如果您不在 Python 项目中,则不会有 Python 版本信息,因为显示它没有什么意义。它永远不会给你展示多余信息,始终保持终端的美观,优雅和简约。

3、z

“z” 可以让你快速地在文件目录之间跳转。它会记住你访问的历史文件夹,经过短暂的学习后,你就可以使用z path_of_the_folder_name命令在目录之间跳转了。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

比如,如果我经常访问 ~/work/src/projects,我只需要运行 z pro ,就可以立马跳转到那里。z 的原理参考了 frecency 算法——一个基于统计 frequency 和 recency 进行分析的算法。如果它存储了你不想使用的路径文件夹,你随时可以手动将其删除。它提高了我在常用的不同文件路径之间频繁切换的效率,帮我节省了键盘击键次数以及大量的路径记忆。

4、fzf

fzf — fuzzy finder,即模糊查找器。它是一种通用工具,可让你使用模糊搜索来查找文件、历史命令、进程、git 提交等。你键入一些字母,它会尝试匹配结果列表中任何位置的字母。输入的字母越多,结果也就越准确。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

5、fd

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

上面动图是 find 命令(左)和 fd 命令(右)的使用对比。

类似于系统自带的 find 命令,但使用起来更简单,查找速度更快,并且具有良好的默认设置。

比如你想找一个名为“invoice”的文件,但是不确定文件的扩展名,还是查找一个存放所有 invoice 的目录,而不单是一个文件。你可以撸起袖子,开始为 find 命令编写那些复杂的正则表达式,也可以直接命令行运行 fd invoice。

默认情况下,fd 会忽略隐藏的以及在.gitignore列出的文件和目录。大多数时候,这也是我们想要的,但是在极少数特殊情况下,如果需要禁用此功能时,我会给该命令设置一个别名:fda='fd -IH'。

你会发现,fd 命令输出的颜色配置很漂亮,而且根据基准测试(上述 GIF),它的执行速度甚至比find 命令的还要快。

6、ripgrep

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

这22款高颜值的终端工具,点燃了萌妹对编程的热爱

上图为 grep(左)与 rg(右)命令执行时的对比。

与上述fd指令类似,ripgrep是grep命令的替代方法, 不过ripgrep的执行速度更快,而且具有健全的默认配置以及丰富的彩色输出。

7、htop 和 glances

在 Linux 或 Mac 上显示进程运行状态信息最常用工具是我们熟悉的top,它是每位系统管理员的好帮手。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

htop工具是top工具的绝佳替代品。

top工具是非常基础的监控工具,提供的功能有限,因此很多人转去使用 htop。htop比起top,优势很明显——除了功能更加完善以外,它的色彩搭配也很丰富,整体上使用起来更加友好。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

借助 glances,还可以让你一目了然地快速了解系统当前状态。

glances 是htop的补充工具。除了列出所有进程及其 CPU 和内存使用情况之外,它还可以显示有关系统的其他信息,比如:

  • 网络及磁盘使用情况

  • 文件系统已使用的空间和总空间

  • 来自不同传感器(例如电池)的数据

  • 以及最近消耗过多资源的进程列表

8、virtualenv 和 virtualfish

Virtualenv 是用于在 Python 中创建虚拟环境的工具。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

VirtualFish 则是 Fish Shell 的虚拟环境管理器。它提供了许多命令来执行快速创建、列出或删除虚拟环境等操作。

9、pyenv、nodenv 和 rbenv

pyenv 可以轻松实现 Python 版本的切换。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

Pyenv、nodenv 和 rubyenv 是用于管理计算机上不同版本的 Python、Node 和 Ruby 的工具。

假设你要在计算机上安装两个版本的 Python。比如,你正在从事两个不同的 Python 项目,或者因为特殊情况仍然需要使用 Python2。不同 Python 版本在电脑上管理很复杂。你需要确保不同的项目具有正确版本的软件依赖包。如果不小心,很容易弄乱这种脆弱的配置。

该工具为版本管理提供了很多帮助,并将这一噩梦变得易于管理。它可以全局或“按文件夹”切换 Python 版本,而且每个版本都是相互隔离的。

10、pipx

Virtualenv 解决了 Python 程序包管理中的许多问题,但是还有一个方案可以解决。如果我想在全局环境下安装 Python 软件包(比如它是一个独立的工具,正如前面提到的glances 工具),那么我会遇到全局安装带来的问题。在虚拟环境之外安装软件包不是一个好主意,将来可能会导致意想不到的问题。另一方面,如果我决定使用虚拟环境,那么每次我要运行程序时都需要激活该虚拟环境。这也不是最方便的解决方案。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

事实证明,pipx工具可以解决上面提到的问题。它将 Python 软件依赖包安装到单独的环境中(因此不会存在依赖项冲突的问题)。与此同时,这些工具提供的 CLI 命令在全局环境内也可用。因此,我无需激活任何环境——pipx会帮我完成这个操作!

11、ctop 和 lazydocker

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

ctop 的实时监控示例

当你使用 Docker 并对其监控时,这两个工具会很有帮助。ctop是 Docker 容器的顶级接口。它可以为你:

  • 展示正在运行和已停止的容器列表。

  • 展示统计信息,例如内存、CPU 使用率以及针对每个容器的其他详细信息窗口(例如绑定的端口等其他信息)。

  • 提供快捷菜单,方便快速停止、杀掉指定容器进程或显示给定容器的日志。

这比你尝试从docker ps命令中找出所有这些信息要方便多了。关注公众号 逆锋起笔,回复 pdf,下载你需要的各种学习资料。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

lazydocker也是一个非常好用的 Docker 工具

lazydocker它是一个非常成熟的拥有终端 UI 界面的工具,提供了非常丰富的功能用于管理 Docker。

12、Homebrew

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

如果使用的是 Mac,那就无需再多介绍 Homebrew 了。它是 macOS 上被业界普遍认可的软件包管理器。

13、asciinema

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

asciinema是可用于记录终端会话的工具。但是,与录制 GIF 不同,它可以让用户选择并复制这些录制中的代码!这对于录制编码教程来说十分好用。asciinema录制的内容,支持直接复制,十分给力。

下载地址:https://asciinema.org/

14、colordiff 和 diff-so-fancy

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

如果想在终端中使用diff操作(比较两个文件之间的差异),可以放弃使用diff命令,而是使用 colordiff。colordiff输出可以高亮显示,因此在查看文件差异内容时要方便得多,而不是在diff命令输出内容下,费力地查看所有的“ <”和“>”符号来对比文件差异。

如果你觉得还不够,那么推荐 diff-so-fancy。它是比colordiff更友好的一个差异对比工具。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

它通过以下方式进一步改善了文件内容差异展示的外观:

  • 突出显示每一行中差异的单词,而不是整行

  • 简化变更文件的标题

  • 去除 + 和 - 符号(颜色差异展示就够了)

  • 清楚地指出新行和删除的空行

15、tree

可以通过brew install tree安装该工具。如果要查看给定目录的内容,那么 tree 是执行此操作的必备工具。它能以漂亮的树状结构显示所有子目录及文件:

$ tree .  .  ├── recovery.md  ├── README.md  ├── archive  ├── automator  │   ├── Open\ Iterm2.workflow  │   │   └── Contents  │   │       ├── Info.plist  │   │       ├── QuickLook  │   │       │   └── Thumbnail.png  │   │       └── document.wflow  │   └── Start\ Screen\ Saver.workflow  ├── brew-cask.sh  

16、bat

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

类似于在终端中常用的用于显示文件内容的cat命令,但是bat效果更佳。

它增加了语法高亮显示,git gutter 标记(如果适用),自动分页(如果文件很大)等功能,并且使得输出的内容阅读起来更加友好。

17、httpie

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

如果你需要发送一些 HTTP 请求,但发现使用curl不够直观,那么可以尝试一下httpie。这是一款非常好用的curl替代工具。合理的默认配置以及简洁的语法使它更易于使用,命令返回也是彩色输出。

18、tldr

简化版的命令帮助手册。

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

“man pages”展示的信息太全面了,但是很多时候使用tldr可以更快地帮你找到特定信息,这才是用户真正想要的。

19、exa

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

exa是ls命令的一个可替代方案。

它色彩艳丽,还可以显示 git 状态等其他信息,自动将文件大小转换为方便人们阅读的单位,并且所有这些都保持与ls几乎相同的执行速度。

20、litecli 和 pgcli

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

这是SQLite 和 PostgreSQL CLI 的解决方案。借助自动提示和语法突出显示,它们比默认的sqlite3和psql工具要好用很多。

21、mas

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

mas是一个用于从 App Store 安装软件的 CLI 工具。

22、ncdu

22 款高颜值的终端工具,点燃了小姐姐对编程的热爱!

这是在终端进行磁盘分析时使用的工具,它使用起来简单快捷。当需要释放一些硬盘空间时,可以使用这款工具。

               更多精彩👇 
               
              
             
           
   
          
          
          
  
         
         
         
 
        
        
        

       
       
       

       
       
       
 
        
        
        Linux 终端最全推荐(建议收藏)
 
        
        
        

       
       
       

       
       
       
 
        
        
        Chrome 开发者工具的11 个高级使用技巧
 
        
        
        

       
       
       

       
       
       
 
        
        
        Linux 后台开发常用调试工具
 
        
        
        

       
       
       

       
       
       
 
        
        
        如何诊断 Linux 服务器的性能?10个工具助力你
 
        
        
        

       
       
       

       
       
       
 
        
        
        干货!程序员常用工具和网站集合(舍不得分享的)
 
        
        
        

       
       
       

       
       
       
 
        
        
        

       
       
       

       
       
       
 
        
        
        点个『在看』支持下 
 
        
        
        

       
       
       

本文分享自微信公众号 - 逆锋起笔(readdot)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这