我通过 fish fzf 插件插件使用它,因此我可以搜索命令历史记录或快速打开文件。这是可以每天为我节省不少时间的一个非常棒的工具。
https://github.com/jethrokuan/fzf
下载地址:https://github.com/junegunn/fzf
5、fd
上面动图是 find 命令(左)和 fd 命令(右)的使用对比。
类似于系统自带的 find
命令,但使用起来更简单,查找速度更快,并且具有良好的默认设置。
不管你想找到一个名为“invoice”的文件,但是不确定文件的扩展名,还是查找一个存放所有 invoice 的目录,而不单是一个文件。你可以撸起袖子,开始为 find 命令编写那些复杂的正则表达式,也可以直接命令行运行 fd invoice
。反正对我来说,我只选择最简单的那个。
默认情况下,fd 会忽略隐藏的以及在.gitignore
列出的文件和目录。大多数时候,这也是我们想要的,但是在极少数特殊情况下,如果需要禁用此功能时,我会给该命令设置一个别名:fda='fd -IH'
。
你会发现,fd 命令输出的颜色配置很漂亮,而且根据基准测试(上述 GIF),它的执行速度甚至比find 命令
的还要快。
下载地址:https://github.com/sharkdp/fd
6、ripgrep
上图为 grep(左)与 rg(右)命令执行时的对比。
与上述fd
指令类似,ripgrep
是grep
命令的替代方法, 不过ripgrep
的执行速度更快,而且具有健全的默认配置以及丰富的彩色输出。
它同样会跳过被.gitignore
忽略以及隐藏的文件,因此如果有特殊需要,我们可以设置指令别名:rga ='rg -uuu'
。它会禁用所有智能筛选,并使ripgrep
的表现与标准的 grep 指令一致。
下载地址:https://github.com/BurntSushi/ripgrep
7、htop 和 glances
在 Linux 或 Mac 上显示进程运行状态信息最常用工具是我们熟悉的top
,它是每位系统管理员的好帮手。而且,即使是像我一样主要从事网络开发,查看计算机的运行状况也很有用。你知道,只是看一下当前到底是 Docker 进程还是 Chrome 进程吃掉了你所有的 RAM,应该如何做吗?
htop
工具是top
工具的绝佳替代品。
top
工具是非常基础的监控工具,提供的功能有限,因此很多人转去使用 htop。htop
比起top
,优势很明显——除了功能更加完善以外,它的色彩搭配也很丰富,整体上使用起来更加友好。
借助 glances,还可以让你一目了然地快速了解系统当前状态。
glances 是htop
的补充工具。除了列出所有进程及其 CPU 和内存使用情况之外,它还可以显示有关系统的其他信息,比如:
- 网络及磁盘使用情况
- 文件系统已使用的空间和总空间
- 来自不同传感器(例如电池)的数据
- 以及最近消耗过多资源的进程列表
我选择使用htop
来筛选和终止进程,因为对我来讲,效率提高了不少,我也使用 glances
可以快速浏览一下计算机的运行状况。它提供 API 接口、Web UI 以及支持各种导出格式,因此你可以将系统监视提高到一个新 Level。因此我在这里强烈推荐一波!
htop 下载地址:https://hisham.hm/htop/
glances 下载地址:
https://nicolargo.github.io/glances/
8、virtualenv 和 virtualfish
Virtualenv 是用于在 Python 中创建虚拟环境的工具(比起内置的venv
模块,我更喜欢 Virtualenv)。
VirtualFish 是 Fish Shell 的虚拟环境管理器(如果你不使用 Fish Shell,请查看 virtualenvwrapper)。它提供了许多命令来执行快速创建、列出或删除虚拟环境等操作。
virtualenv 下载地址:
https://pypi.org/project/virtualenv/
virtualfish 下载地址:
https://github.com/justinmayer/virtualfish
9、pyenv、nodenv 和 rbenv
pyenv 可以轻松实现 Python 版本的切换。
Pyenv、nodenv 和 rubyenv 是用于管理计算机上不同版本的 Python、Node 和 Ruby 的工具。
假设你要在计算机上安装两个版本的 Python。比如,你正在从事两个不同的 Python 项目,或者因为特殊情况仍然需要使用 Python2。不同 Python 版本在电脑上管理很复杂。你需要确保不同的项目具有正确版本的软件依赖包。如果你不小心的话,很容易弄乱这种脆弱的配置并被其他软件包使用的二进制文件所覆盖。
该工具为版本管理提供了很多帮助,并将这一噩梦变得易于管理。它可以全局或“按文件夹”切换 Python 版本,而且每个版本都是相互隔离的。
我最近找到了一种名为 asdf 的工具,该工具可以将 pyenv、nodenv、rbenv 及其他 env 进行统一管理。它提供了几乎所有编程语言的版本管理,下次我需要为编程语言设置版本管理器时,一定会尝试使用一下。
pyenv 下载地址:https://github.com/pyenv/pyenv
nodenv 下载地址:https://github.com/nodenv/nodenv
rbenv 下载地址:https://github.com/rbenv/rbenv
10、pipx
Virtualenv 解决了 Python 程序包管理中的许多问题,但是还有一个方案可以解决。如果我想在全局环境下安装 Python 软件包(比如它是一个独立的工具,正如前面提到的glances
工具),那么我会遇到全局安装带来的问题。在虚拟环境之外安装软件包不是一个好主意,将来可能会导致意想不到的问题。另一方面,如果我决定使用虚拟环境,那么每次我要运行程序时都需要激活该虚拟环境。这也不是最方便的解决方案。
事实证明,pipx
工具可以解决上面提到的问题。它将 Python 软件依赖包安装到单独的环境中(因此不会存在依赖项冲突的问题)。与此同时,这些工具提供的 CLI 命令在全局环境内也可用。因此,我无需激活任何环境——pipx
会帮我完成这个操作!
如果你想了解有关 Python 工具的更多信息并想了解如何使用它们,我为 PyCon 2020 会议制作了一个名为“现代 Python 开发人员工具包”的视频。
这是一个长达两个小时的视频教程,内容涉及如何设置 Python 开发环境,要使用的工具以及如何从头开始制作 TODO 应用程序(包括测试和文档)。你可以在 YouTube 上进行观看。
https://www.youtube.com/watch?v=WkUBx3g2QfQ
pipx 下载地址:
https://github.com/pipxproject/pipx
11、ctop 和 lazydocker
ctop 的实时监控示例
当你使用 Docker 并对其监控时,这两个工具会很有帮助。ctop
是 Docker 容器的顶级接口。它可以为你:
- 展示正在运行和已停止的容器列表。
- 展示统计信息,例如内存、CPU 使用率以及针对每个容器的其他详细信息窗口(例如绑定的端口等其他信息)。
- 提供快捷菜单,方便快速停止、杀掉指定容器进程或显示给定容器的日志。
这比你尝试从docker ps
命令中找出所有这些信息要方便多了。
lazydocker
是我最喜欢的 Docker 工具
如果你认为ctop
很酷,请你尝试使用 lazydocker 后再做决定!它是一个非常成熟的拥有终端 UI 界面的工具,提供了非常丰富的功能用于管理 Docker。这是我最喜欢的 Docker 管理工具!
ctop 下载地址:https://github.com/bcicen/ctop
lazydocker 下载地址:
https://github.com/jesseduffield/lazydocker
低频 CLI 工具推荐
除了几乎每天都在使用的工具以外,我多年来还收集了一些给力的工具,这些工具对于一些特定需求非常好用。比如有的终端工具可以用来将终端操作记录成 GIF(并且可以让你在 GIF 中暂停和复制文本!),还有的终端工具可以用于列出目录结构、连接数据库等,下面我会一一介绍。
12、Homebrew
如果你使用的是 Mac,那我就无需再介绍 Homebrew 了。它是 macOS 上被业界普遍认可的软件包管理器。对了,它还有一个称为 Cakebrew 的 GUI 版本软件,如果感兴趣你可以尝试一下。
下载地址:https://brew.sh/
13、asciinema
asciinema
是可用于记录终端会话的工具。但是,与录制 GIF 不同,它可以让用户选择并复制这些录制中的代码!
这对于录制编码教程来说十分好用。你应该遇到那种尴尬的情况——当你准备跟着视频教程在终端中敲巨长的命令,但是讲师并为你提供这个代码段,你不得不花费很长的时间去整理这些冗长的命令。asciinema
录制的内容,支持直接复制,十分给力。
14、colordiff 和 diff-so-fancy
我很少在终端中使用diff
操作(比较两个文件之间的差异),但是如果你需要执行这个操作,可以放弃使用diff
命令,而是使用 colordiff
。colordiff
输出可以高亮显示,因此在查看文件差异内容时要方便得多,而不是在diff
命令输出内容下,费力地查看所有的“ <”和“>”符号来对比文件差异。
如果你觉得还不够,那么我推荐给你 diff-so-fancy。它是比colordiff
更友好的一个差异对比工具。
它通过以下方式进一步改善了文件内容差异展示的外观:
- 突出显示每一行中差异的单词,而不是整行
- 简化变更文件的标题
- 去除 + 和 - 符号(颜色差异展示就够了)
- 清楚地指出新行和删除的空行
colordiff 下载地址:https://www.colordiff.org/
diff-so-fancy 下载地址:https://github.com/so-fancy/diff-so-fancy
15、tree
你可以通过brew install tree
安装该工具。如果要查看给定目录的内容,那么 tree 是执行此操作的必备工具。它能以漂亮的树状结构显示所有子目录及文件:
$ tree . • 1
16、bat
类似于在终端中常用的用于显示文件内容的cat
命令,但是bat
效果更佳。
它增加了语法高亮显示,git gutter 标记(如果适用),自动分页(如果文件很大)等功能,并且使得输出的内容阅读起来更加友好。
bat 下载地址:https://github.com/sharkdp/bat