程序员在从事开发的时候,使用终端CLI工具是必不可少的,终端CLI工具往往是生产力工具,为大家推荐一些有用的终端工具,建议清单如下。
高频 CLI 工具推荐
1、fish shell
毫无疑问,在终端工具中,Shell是使用频率最高、最重要的工具。以前我用的是Bash和Z Shell,但是现在,这个Fish Shell也是一个优秀的终端Shell工具,有很多开箱即用的功能,比如自动语法推荐和补全、语法高亮或者用快捷键在最近访问过的文件夹之间来回切换。
下载地址:fish shell
2、Starship
如果要我从这篇文章中选择一个我最喜欢的终端工具——那就是Starship。星舰可以适用于任何贝壳。您只需要安装它,然后将一行配置添加到相应的配置文件中.bashrc/.zshrc/config.fish添加一行配置,剩下的工作交给它来完成就好了。
它可以做到:
- 根据您是否添加新文件、修改文件、临时存储文件等。在代码仓库中,使用相应的符号来表示git仓库的状态。
- 根据您的Python项目目录显示Python版本号,这也适用于其他编程语言环境,如Go/Node/Rust/Elm。
- 显示最后一个命令执行所用的时间,指令运行时间必须以毫秒为单位。
- 如果最后一个命令执行失败,将显示相应的错误提示。
还有无数其他信息可以展示。然而,它能以更友好的形式智能地呈现给你!例如,如果您不在git存储库中,它将隐藏git信息。如果您不在Python项目中,将不会有Python版本信息,因为显示它没有意义。它永远不会向你展示多余的信息,永远保持终端美观、优雅、简洁。
下载地址:Starship: Cross-Shell Prompt
3、z
“z” 可以让你快速地在文件目录之间跳转。它会记住你访问的历史文件夹,经过短暂的学习后,你就可以使用z path_of_the_folder_name命令在目录之间跳转了。
比如,如果我经常访问 ~/work/src/projects,我只需要运行 z pro ,就可以立马跳转到那里。z 的原理参考了 frecency 算法——一个基于统计 frequency 和 recency 进行分析的算法。如果它存储了您不想使用的路径文件夹,您可以随时手动删除它。它提高了在不同常用文件路径之间频繁切换的效率,帮助我节省了击键次数和大量的路径内存。
下载地址:github.com/rupa/z
4、fzf
fzf — fuzzy finder,也就是模糊查找器。它是一个通用工具,允许你使用模糊搜索来查找文件、历史命令、进程、git提交等。如果您键入一些字母,它将尝试匹配结果列表中的任何字母。输入的字母越多,结果就越准确。
下载地址:GitHub - junegunn/fzf: A command-line fuzzy finder
5、fd
类似于系统附带的find命令,但使用更简单,查找更快,并且具有良好的默认设置。
例如,如果你想找到一个名为“invoice”的文件,但你不确定文件的扩展名,你应该找到一个目录来存储所有的发票,而不仅仅是一个文件。您可以卷起袖子,开始为find命令编写复杂的正则表达式,也可以直接从命令行运行fd invoice。
默认情况下,fd 会忽略隐藏的以及在.gitignore列出的文件和目录。大多数情况下,这是我们想要的,但在极少数情况下,如果我们需要禁用此功能,我会给命令取一个别名:fda='fd -IH '。
你会发现fd命令输出的颜色配置很漂亮,根据基准测试(上述GIF),它的执行速度甚至比find命令还要快。
6、ripgrep
与上述fd指令类似,ripgrep是grep命令的替代方法, 不过ripgrep的执行速度更快,而且具有健全的默认配置以及丰富的彩色输出。
7、htop 和 glances
在Linux或Mac上显示进程运行状态信息最常用工具是熟悉的top,它是每个系统管理员的好帮手。
htop工具是top工具的绝佳替代品。
Top tool是一个非常基础的监控工具,功能有限,所以很多人求助于htop。与top相比,h top有着明显的优势——除了功能更加完善之外,配色也更加丰富,整体使用起来也更加友好。
借助 glances,还可以让你一目了然地快速了解系统当前状态。
glances 是htop的补充工具。除了列出所有进程及其CPU和内存使用情况之外,它还可以显示有关系统的其他信息,例如:
- 网络及磁盘使用情况
- 文件系统的已用空间和总空间
- 来自不同传感器(如电池)的数据
- 以及最近消耗了太多资源的进程列表。
htop 下载地址:hisham.hm/htop/\ glances 下载地址:Glances - An Eye on your system
8、pyenv、nodenv 和 rbenv
pyenv 可以轻松实现 Python 版本的切换。
Pyenv、nodenv 和 rubyenv 是用于管理计算机上不同版本的 Python、Node 和 Ruby 的工具。
假设您想在计算机上安装两个版本的Python。例如,您正在处理两个不同的Python项目,或者由于特殊情况,您仍然需要使用Python2。不同的Python版本在计算机上管理起来非常复杂。您需要确保不同的项目有正确版本的软件依赖包。如果不小心,很容易混淆这种脆弱的配置。
这个工具为版本管理提供了很多帮助,让这个噩梦变得容易管理。它可以全局或按文件夹切换Python版本,每个版本之间是相互隔离的。
pyenv 下载地址:github.com/pyenv/pyenv… nodenv 下载地址:github.com/nodenv/node… rbenv 下载地址:github.com/rbenv/rbenv
9、virtualenv 和 virtualfish
Virtualenv 是用于在 Python 中创建虚拟环境的工具。
VirtualFish 则是 Fish Shell 的虚拟环境管理器。它提供了许多命令来快速创建、列出或删除虚拟环境。
virtualenv 下载地址:pypi.org/project/vir… virtualfish 下载地址:github.com/justinmayer…
10、pipx
Virtualenv解决了Python包管理中的很多问题,但是还有另外一个解决方案。如果我想在全局环境下安装Python包(比如它是一个独立的工具,正如前面提到的glances 工具),那么我会遇到全局安装带来的问题。在虚拟环境之外安装软件包不是一个好主意,这可能会导致未来出现意想不到的问题。另一方面,如果我决定使用虚拟环境,我需要在每次运行程序时激活虚拟环境。这不是最方便的解决办法。
事实证明,pipx工具可以解决上述问题。它将Python软件依赖包安装到单独的环境中(因此不存在依赖冲突问题)。同时,这些工具提供的CLI命令也可以在全局环境中使用。因此,我不需要激活任何环境——pipx会帮我做到这一点!
pipx 下载地址:github.com/pipxproject…
11、Homebrew
如果使用的是 Mac,那就无需再多介绍 Homebrew 了。它是 macOS 上被业界普遍认可的软件包管理器。
下载地址:The Missing Package Manager for macOS (or Linux) — Homebrew
12、ctop 和 lazydocker
当您使用Docker并对其进行监控时,这两个工具将非常有用。Ctop是Docker容器的顶层接口。它可以帮助你:
- 显示运行和停止的容器列表。
- 显示每个容器的统计信息,如内存、CPU使用情况和其他详细信息窗口(如绑定端口等其他信息)。
- 提供快捷菜单来快速停止、终止给定容器的进程或显示给定容器的日志。
这比试图从docker ps命令中找到所有这些信息要方便得多。
Lazydocker也是一个非常有用的docker工具。
Lazydocker是一个非常成熟的工具,具有终端UI界面,为管理docker提供了丰富的功能。
ctop 下载地址:github.com/bcicen/ctop… lazydocker 下载地址:github.com/jesseduffie…
13、asciinema
Asciinema是一个可以用来记录终端会话的工具。但是,与录制GIF不同,它允许用户选择和复制这些录制中的代码!这对于录制编码教程非常有用。asciinema录制的内容支持直接复制,非常强大。
下载地址:asciinema - Record and share your terminal sessions, the right way
14、colordiff 和 diff-so-fancy
如果您想在终端中使用diff操作(比较两个文件之间的差异),您可以放弃diff命令,改用colordiff。Colordiff输出可以高亮显示,这样检查文件差异的内容就方便多了,而不是在diff命令输出的内容下费力的检查所有“ <”和“>”符号来对比文件差异。
如果你认为这还不够,那就推荐 diff-so-fancy。它是比colordiff更友好的一个差异对比工具。
- 它通过以下方式进一步改善了文档内容差异显示的外观:
- 突出每行的不同单词,而不是整行。
- 简化变更文档的标题
- 移除+和-符号(色差显示就足够了)
- 明确指出新行和删除的空行。
colordiff 下载地址:www.colordiff.org/\ diff-so-fancy 下载地址:github.com/so-fancy/di…
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
类似于终端常用的cat命令显示文件内容,但bat效果更好。
它增加了语法高亮显示,git gutter 标记(如果适用),自动分页(如果文件很大)等功能,并使输出内容更易于阅读。
bat 下载地址:github.com/sharkdp/bat
17、httpie
如果你需要发送一些HTTP请求,但是发现使用curl不够直观,可以试试httpie。这是一个非常容易使用的卷曲替换工具。合理的默认配置和简洁的语法让它更容易使用,命令返回也是彩色输出。
httpie 下载地址:HTTPie – API testing client that flows you
18、tldr
命令帮助手册的简化版本。
“man pages”中显示的信息过于全面,但经常使用tldr可以帮助您更快地找到特定信息,这才是用户真正想要的。
tldr 下载地址:tldr pages
19、exa
Exa是ls命令的替代命令。
它色彩丰富,还可以显示git状态等其他信息,自动将文件大小转换为方便人们阅读的单位,所有这些都保持了与ls几乎相同的执行速度。
exa 下载地址:exa · a modern replacement for ls
20、litecli 和 pgcli
这是SQLite和PostgreSQL CLI的解决方案。在自动提示和语法突出显示的帮助下,它们比默认的sqlite3和psql工具好得多。
litecli 下载地址:litecli.com/\ pgcli 下载地址:www.pgcli.com/
21、mas
Mas是一个命令行界面工具,用于从应用商店安装软件。
mas 下载地址:github.com/mas-cli/mas
22、ncdu
这是一个用在终端进行磁盘分析的工具,使用简单快捷。当你需要释放一些硬盘空间时,你可以使用这个工具。
ncdu 下载地址:dev.yorhel.nl/ncdu