作为开发人员,我们在终端上花费了大量时间。有很多有用的 CLI 工具,它们可以让您在命令行中的生活更轻松、更快速,而且通常更有趣。
这篇文章概述了我最依赖的 50 个必备 CLI 工具。如果我遗漏了什么 - 请在评论中告诉我 :)
在本文的结尾,我包含了一些脚本来帮助您在各种系统/发行版上自动安装和更新这些工具。
工具
thefuck- 自动更正错误输入的命令
thefuck 是那些你一旦尝试过就离不开的实用程序之一。每当您输入错误的命令并出现错误时,只需运行fuck 它就会自动更正它。使用向上/向下选择一个修正,或者只是运行fuck --yeah 以立即执行最有可能的。
动图
zoxide- 轻松导航(更好的 CD)
z 让您跳转到任何目录而无需记住或指定其完整路径。它会记住您访问过的目录,因此您可以快速跳转——您甚至不需要键入完整的文件夹名称。它还有一个交互式选择选项,使用它fzf 你可以实时过滤目录结果
动图
tldr- 社区维护的文档(更好man)
tldr 是社区维护的手册页的巨大集合。与传统的手册页不同,它们进行了总结,包含有用的用法示例,并且颜色很好,便于阅读
动图
scc- 计算代码行数(更好cloc)
scc 为您提供针对特定目录以每种语言编写的代码行数的细分。它还显示了一些有趣的统计数据,例如估计的开发成本和复杂性信息。它的速度非常快,非常准确,并且支持多种语言
exa- 列出文件(更好ls)
exa 是基于 Rust 的现代命令替代ls 命令,用于列出文件。它可以显示文件类型图标、颜色、文件/文件夹信息,并有多种输出格式——树、网格或列表
duf- 磁盘使用(更好df)
duf 非常适合显示有关已安装磁盘的信息和检查可用空间。它产生清晰多彩的输出,并包括用于排序和自定义结果的选项。
aria2- 下载实用程序(更好wget)
aria2 是一个轻量级、多协议、用于 HTTP/HTTPS、FTP、SFTP、BitTorrent 和 Metalink 的恢复下载实用程序,支持通过 RPC 接口进行控制。它的 功能非常丰富 ,并且有大量的 选项 。还有 ziahamza/webui-aria2 - 一个不错的网络界面伴侣。
bat- 阅读文件(更好cat)
bat 是cat 语法高亮和 git 集成的克隆。它是用 Rust 编写的,性能非常好,并且有多个用于自定义输出和主题的选项。支持自动管道和文件连接
diff-so-fancy- 文件比较(更好diff)
diff-so-fancy 为比较字符串、文件、目录和 git 更改提供更好看的差异。更改突出显示使发现更改变得更加容易,并且您可以自定义输出布局和颜色
entr- 注意变化
entr 允许您在文件更改时运行任意命令。您可以传递一个文件、目录、符号链接或正则表达式来指定它应该监视哪些文件。它对于自动重建项目、响应日志、自动化测试等非常有用。与类似项目不同,它使用 kqueue(2) 或 inotify(7) 来避免轮询,并提高性能
exiftool- 读取+写入元数据
ExifTool 是一个方便的实用程序,用于读取、写入、剥离和创建各种文件类型的元信息。再次分享照片时不要不小心泄露您的位置!
fdupes- 重复文件查找器
jdupes 用于识别和/或删除指定目录中的重复文件。当您有两个或更多相同的文件时,它对于释放磁盘空间很有用
fzf- 模糊文件查找器(更好find)
fzf 是一个功能极其强大且易于使用的模糊文件查找器和过滤工具。它允许您跨文件搜索字符串或模式。fzf 也有适用于大多数 shell 和 IDE 的 插件 ,用于在搜索时显示即时结果。Alexey Samoshkin 的这篇 文章重点介绍了它的一些用例。
动图
hyperfine- 命令基准测试
hyperfine 可以轻松准确地对任意命令或脚本进行基准测试和比较。它负责预热运行、清除缓存以获得准确的结果并防止来自其他程序的干扰。它还可以将结果导出为原始数据并生成图表。
just- 现代命令运行器(更好make)
just 类似于make 但有一些不错的补充。它让您可以将项目命令分组到副本中,这些副本可以轻松列出和运行。支持别名、位置参数、不同的 shell、dot env 集成、字符串插入以及几乎所有您可能需要的东西
jq- JSON处理器
jq 就像sed ,但对于 JSON - 您可以使用它轻松地切片、过滤、映射和转换结构化数据。它可用于编写复杂的查询以提取或操作 JSON 数据。还有一个 jq 游乐场 ,您可以用来尝试,或通过实时反馈制定查询
most- 多窗口滚动寻呼机(最好少)
most 是一个寻呼机,用于读取长文件或命令输出。most 支持多窗口并且可以选择不换行
procs- 进程查看器(更好的ps)
procs 是一个易于导航的流程查看器,它具有彩色突出显示,使流程的排序和搜索变得容易,具有树视图和实时更新
动图
rip- 删除工具(更好的rm)
rip 是一种安全、符合人体工程学和高性能的删除工具。它让您直观地删除文件和目录,并轻松恢复已删除的文件
ripgrep- 在文件中搜索(更好grep)
ripgrep 是一个面向行的搜索工具,它递归地在当前目录中搜索正则表达式模式。它可以忽略.gitignore 和跳过二进制文件的内容。它能够在压缩档案中搜索,或只搜索特定的扩展名,并使用各种编码方法理解文件
rsync- 快速、增量文件传输
rsync 允许您在本地或向远程主机或外部驱动器复制大文件或从远程主机或外部驱动器复制大文件。它可用于保持多个位置的文件同步,非常适合创建、更新和恢复备份
sd- 查找和替换(更好sed)
sd 是一个简单、快速和直观的查找和替换工具,基于字符串文字。它可以在文件、整个目录或任何管道文本上执行
tre- 目录层次结构(更好tree)
tre 输出当前目录或指定目录的树形文件列表,并带有颜色。使用该-e 选项运行时,它会为每个项目编号,并创建一个临时别名,您可以使用该别名快速跳转到该位置
xsel- 访问剪贴板
xsel 让我们通过命令行读取和写入 X Selection 剪贴板。它对于将命令输出通过管道传输到剪贴板或将复制的数据传输到命令中很有用
CLI 监控和性能应用程序
bandwhich- 带宽利用率监视器
实时显示带宽使用情况、连接信息、传出主机和 DNS 查询
ctop- 容器指标和监控
与 类似top ,但用于监视正在运行的(Docker 和 runC)容器的资源使用情况。它显示实时 CPU、内存和网络带宽以及每个容器的名称、状态和 ID。还有一个内置的日志查看器和管理(停止、启动、执行等)容器的选项
动图
bpytop- 资源监控(更好htop)
bpytop 是一个快速、交互式、可视化的资源监视器。它显示了最热门的运行进程、最近的 CPU、内存、磁盘和网络历史记录。您可以从界面中导航、排序和搜索——还支持自定义颜色主题
动图
glances- 资源监控器+网络和API
glances 是另一个资源监视器,但具有不同的功能集。它包括一个完全响应的 Web 视图、一个 REST API 和历史监控。它易于扩展,并且可以与其他服务集成
动图
gping- 交互式 ping 工具(更好ping)
gping 可以在多个主机上运行 ping 测试,同时以实时图形显示结果。--cmd 当与标志一起使用时,它还可以用于监视执行时间
动图
dua-cli- 磁盘使用分析器和监视器(更好du)
dua-cli 让您以交互方式查看每个已安装驱动器的已用和可用磁盘空间,并轻松释放存储空间
动图
speedtest-cli- 命令行速度测试工具
speedtest-cli 只需通过 speedtest.net 运行互联网速度测试 - 但直接从终端 :)
动图
dog - DNS 查找客户端(更好dig)
dog 是一个易于使用的 DNS 查找客户端,支持 DoT 和 DoH,漂亮的彩色输出和发出 JSON 的选项
CLI 生产力应用程序
上网冲浪、播放音乐、查看电子邮件、管理日历、阅读新闻等等,无需离开终端!
browsh- CLI 网络浏览器
browsh 是一个完全交互的、实时的、现代的基于文本的浏览器,呈现给 TTY 和浏览器。它同时支持鼠标和键盘导航,并且对于纯基于终端的应用程序来说功能丰富得令人吃惊。它还缓解了困扰现代浏览器的电池耗尽问题,并且通过对 MoSH 的支持,由于带宽减少,您可以体验更快的加载时间
动图
buku- 书签管理器
buku 是一个基于终端的书签管理器,具有大量的配置、存储和使用选项。还有一个可选的 网络用户界面 和 浏览器插件 ,用于在终端之外访问您的书签
cmus- 音乐浏览器/播放器
cmus 是终端音乐播放器,由键盘快捷键控制。它支持广泛的音频格式和编解码器,并允许将曲目组织到播放列表中并应用播放设置
cointop- 跟踪加密货币价格
cointop 显示当前的加密货币价格,并跟踪您的投资组合的价格历史记录。支持价格提醒、历史图表、货币换算、模糊搜索等。您可以通过网络在 cointop.sh 上尝试演示,或者通过运行ssh cointop.sh
ddgr- 从终端搜索网络
ddgr 就像 googler ,但对于 DuckDuckGo。它快速、干净、简单,支持即时回答、搜索完成、搜索 bangs 和高级搜索。它默认尊重您的隐私,也有 HTTPS 代理支持,并与 Tor 一起工作
micro- 代码编辑器(更好nano)
micro 是一个易于使用、快速且可扩展的代码编辑器,支持鼠标。由于它被打包成一个二进制文件,安装非常简单curl https://getmic.ro | bash
khal- 日历客户端
khal 是一个终端日历应用程序,它显示即将发生的事件、月份和议程视图。您可以将它与任何 CalDAV 日历同步,并直接添加、编辑和删除事件
mutt- 电子邮件客户端
mut 是一个经典的、基于终端的邮件客户端,用于发送、阅读和管理电子邮件。它支持所有主流电子邮件协议和邮箱格式,允许附件、密件抄送/抄送、线程、邮件列表和传递状态通知
newsboat- RSS / ATOM 新闻阅读器
newsboat 是一个 RSS 提要阅读器和聚合器,用于直接从终端阅读新闻、博客和后续更新
rclone- 管理云存储
rclone 是一个方便的实用程序,用于将文件和文件夹同步到各种云存储提供商。它可以直接从命令行调用,也可以轻松集成到脚本中以替代繁重的桌面同步应用程序
taskwarrior- 待办事项+任务管理
task 是一个 CLI 任务管理/待办事项应用程序。它既简单又不引人注目,但也非常强大和可扩展,内置高级组织和查询功能。还有很多(700 多个!)额外的 插件 用于扩展它的功能并与第三方服务集成
tuir- Reddit 的终端用户界面
tuir 如果您想在实际浏览 Reddit 的同时看起来像在工作,这是一个很棒的选择!它具有直观的键绑定、自定义主题,还可以呈现图像和多媒体内容。还有 haxor 黑客新闻
CLI 开发套件
httpie- HTTP / API测试测试客户端
httpie 是一个 HTTP 客户端,用于测试、调试和使用 API。它支持您所期望的一切——HTTPS、代理、身份验证、自定义标头、持久会话、JSON 解析。具有表达语法和彩色输出的用法很简单。与其他 HTTP 客户端(Postman、Hopscotch、Insomnia 等)一样,HTTPie 也包含一个 Web UI
lazydocker- 完整的 Docker 管理应用程序
lazydocker 是一个 Docker 管理应用程序,可让您查看所有容器和图像、管理它们的状态、读取日志、检查资源使用情况、重新启动/重建、分析层、修剪未使用的容器、图像和卷等等。它使您无需记住、键入和链接多个 Docker 命令。
lazygit- 完整的 Git 管理应用程序
lazygit 是一个可视化的 git 客户端,在命令行上。轻松添加、提交和推送文件、解决冲突、比较差异、管理日志以及执行压缩和倒带等复杂操作。一切都有键绑定,颜色,而且很容易配置和扩展
kdash- Kubernetes 仪表板应用程序
kdash 是一个一体化的 Kubernetes 管理工具。查看节点指标、观察资源、流容器日志、分析上下文和管理节点、pod 和命名空间
gdp-dashboard- 可视化 GDP 调试器
gdp-dashboard 向 GNU 调试器添加一个可视元素,用于调试 C 和 C++ 程序。轻松分析内存、单步执行断点和查看寄存器
CLI 外部服务
ngrok- 共享本地主机的反向代理
ngrok 安全* 将您的本地主机暴露在唯一 URL 后面的互联网上。这使您可以与远程同事实时共享您的工作。使用 非常简单 ,但它也有很多高级功能,例如身份验证、webhooks、防火墙、流量检查、自定义/通配符域等等
tmate- 通过互联网共享终端会话
tmate 让您立即与世界其他地方的人分享实时终端会话。跨系统工作,支持访问控制/授权,可自托管,具备Tmux的所有特性
asciinema- 录制+分享终端会话
asciinema 对于轻松记录、共享和嵌入终端会话非常有用。非常适合展示您构建的内容,或展示教程的命令行步骤。与屏幕录制视频不同,用户可以复制粘贴内容、动态更改主题和控制播放
https://asciinema.org/a/335480/iframe?
navi- 交互式备忘单
navi 允许您浏览备忘单并执行命令。参数的建议值动态显示在列表中。减少输入,减少错误,让自己不必记住数千条命令。它与 tldr 和 cheat.sh 集成以获取内容,但您也可以导入其他备忘单,甚至编写自己的备忘单
https://asciinema.org/a/406461/iframe?
transfer.sh- 快速文件共享
transfer 直接从命令行上传和共享文件真的很容易。它是免费的,支持加密,为您提供唯一的 URL,也可以自行托管。
我写了一个 Bash 辅助函数来使使用更容易一些,你可以 在这里找到它 或者通过运行来尝试bash <(curl -L -s https://alicia.url.lol/transfer)
surge- 在几秒钟内部署站点
surge 是一个免费的静态托管服务提供商,您可以通过一个命令直接从终端部署到它,只需surge 在您的dist 目录中运行即可!它支持自定义域、自动 SSL 证书、pushState 支持、跨域资源支持——而且是免费的!
wttr.in- 检查天气
wttr.in 是一种以易于在命令行中消化的格式显示天气的服务。只需运行curl wttr.in 或curl wttr.in/London 尝试一下。有 URL 参数来自定义返回的数据以及格式
CLI 乐趣
cowsay- 让 ASCII 母牛说出您的信息
cowsay 是一个可配置的会说话的牛。它基于Tony Monroe的 原作
figlet- 将文本输出为大 ASCII 艺术文本
figlet 将文本输出为 ASCII 艺术
lolcat- 使控制台输出彩虹色
lolcat 使任何传递给它的文本变成彩虹色
neofetch- 显示系统数据和 ditstro 信息
neofetch 打印发行版和系统信息(这样你就可以灵活地在 r/unixporn 上使用 Arch btw)
例如,我正在使用cowsay、figlet和创建一个自定义的基于时间的 MOTD lolcat,neofetch在用户首次登录时显示给他们。它通过他们的名字问候他们,显示服务器信息和时间、日期、天气和 IP。这是源代码。
安装和管理
我们大多数人都有一套核心的 CLI 应用程序和我们所依赖的实用程序。设置一台新机器并单独安装每个程序很快就会让人厌烦。因此,安装和更新终端应用程序的任务非常适合自动化。以下是我编写的一些示例脚本,可以轻松将其放入您的点文件中或独立运行以确保您永远不会错过任何应用程序。
对于 MacOS 用户,最简单的方法是使用Homebrew。只需创建一个 Brewfile(使用touch ~/.Brewfile),然后列出您的每个应用程序,然后运行brew bundle. 您可以通过将其放入 Git 存储库来备份您的包列表。这是一个示例,让您入门:https ://github.com/Lissy93/Brewfile
在 Linux 上,您通常希望使用本机包管理器(例如pacman,apt)。例如,这是在 Arch Linux 系统上安装上述应用程序的脚本
Linux 上的桌面应用程序可以通过 Flatpak 以类似的方式进行管理。同样,这是一个示例脚本:)
结论
...就是这样 - 一个方便的 CLI 应用程序列表,以及一种在您的系统中安装和保持它们最新的方法。
希望其中一些对你们中的一些人有用:)
我很想知道您最喜欢的 CLI 应用程序是什么,请在下面的评论中告诉我!