CLI 内心充满爱 ❤️

2025-06-04

CLI 内心充满爱 ❤️

鱼标志

命令行是一个强大的工具,但遗憾的是我们大多数人都抛弃了它。

这篇文章的目的是让你们中的一些人熟悉 CLI(命令行界面),无论您是否是开发人员。

在编码时,我们面临这样的选择:IDE 还是文本编辑器 + CLI?

现代 IDE 嵌入了(几乎)所有必需的开发工具:代码编辑、语法高亮、自动格式化、版本控制、编译、调试……甚至运行时环境!

那么,为什么要选择一个简单的文本编辑器呢?

就我个人而言,我做出这个选择是因为我宁愿为每个任务使用一个工具,而不是为每个任务使用一个工具。

我更喜欢学习掌握每个工具,可能比在 IDE 中更深入,即使这需要更多的时间,也比让 IDE 为我完成所有工作并在出现问题时陷入困境。

这似乎很有哲理,但在 IDE 中,我们有时可能会感到受到限制和约束,而在 CLI 中,有许多工具、脚本、框架可用于许多用例、许多环境、许多语言......并且 Unix 的强大功能允许所有这些命令的互操作性。

当然,如果你使用的是 Windows,你会遇到一些麻烦,因为终端仿真器有其局限性,但如果您对 CLI 深信不疑,那么你就会大胆地切换到 Linux(或者如果你使用的是 Windows 10,那么可能只使用 WSL :))。

🐟鱼壳

fish shell(或“fish”)是一个面向用户交互的 shell,与更注重脚本编写的Bash不同。因此,它非常适合日常交互使用。

它包括许多命令和工具的本机语法突出显示,并且自动完成功能也是本机的。

对于此类用例,Zsh是另一种可靠的替代方案。

以下是使用git自动完成的示例

自动完成

输入git,然后<tab>fish会显示git命令列表checkoutcommitlog、...)。多次按下<tab>,我们可以浏览命令,直到找到所需的命令,然后只需点击<enter>进行验证(例如git checkout),这时fish就展现了它的魔力:它能够自动补全你仓库的 git 分支列表!当然,它也能与 git 以外的许多其他工具兼容。

两个框架可以增强鱼的功能:oh-my-fishfisherman

它们都允许安装提示和插件的主题。

💲 提示

乍一看,自定义他的提示似乎没用,但如果 CLI 是您的主要 UI,那么它就变得强制性了。

它允许了解git的以下内容:

  • 你在哪个分支
  • 如果你有提交到远程/从远程拉取
  • 您的索引是否干净,是否有未提交或未跟踪的文件
  • ...

但是也:

  • 你在哪个文件夹中
  • 最后一个命令的状态是什么
  • 最后一个命令的响应时间
  • ...

有几十个提示符可供选择,每个人都可以根据自己的喜好进行选择。我选择了其中两个:bobthefishneolambda,你可以使用oh-my-fish安装它们:omf install bobthefish

第一个高度可视化,基于powerline ,这是Vim的状态行,包含许多模式和符号,使其更加用户友好

鲍勃鱼

第二个更加时尚,功能较少,但却很有趣(omf install neolambda):

新λ

除了提示之外,许多插件还可以增强用户体验,特别是:

  • colorman为手册页添加了语法高亮显示(omf install colorman

    彩色人

  • grc为许多 Unix 命令添加了语法高亮显示:tailpingcatpsdf,...(安装方法:fisher grc

    • 以ping为例

    grc_ping

  • pj是一个可以快速从一个项目切换到另一个项目的插件,无论是在你的终端还是在你的编辑器中(omf install pj

  • g2是一个简化git使用的包装器。

💄 美化我的终端!

  • colorls ( gem install colorls) —— 这个ls包装器绝对是必备的。它能为标准输出着色;它使用颜色强度来强调当前目录文件的修改日期;它使文件大小易于阅读;最重要的是,它显示当前文件/文件夹的git状态!

    颜色

🌈 给我的木头涂上颜色!

如果您像我一样是一名开发人员或 DevOps 工程师,那么可视化日志就是您工作中的一项重复任务,并且必须拥有良好的工具才能提高工作效率。

现代 IDE 并不适合查看日志,因为它们已经被你的源文件压垮了,而且,巨大的文件大小可能会严重影响编辑器的性能。我在Atom中遇到的情况就是如此,只要文件大小超过 10MB 就会出现这种情况。

解决方案:使用您的终端来跟踪日志,同时利用可用的工具来自动格式化它们,启用语法突出显示并执行搜索。

根据日志类型,我使用两种不同的工具:

  • ccze用于传统日志(Apachesyslogphp等)

    ccze

  • jq用于 JSON 日志

    杰奇

jq的优势在于,除了 JSON 语法高亮显示之外,它还能自动格式化日志,方便阅读。因此,如果你有一行用于 ELK 或任何其他数据分析堆栈的压缩 JSON 日志,jq 可以帮你解压日志,使其更易于阅读

jq是一个功能更强大的工具,值得用一篇文章来描述它,因为它实际上是一个 JSON 解析器,具有自己的查询描述语言,与 XML 的xpath相同,但具有 JSON 的简单性。

tail -f因此,通过在专用术语中跟踪每个日志文件,并根据类型将 stdout 传送到jqccze,您将能够快速访问所需的信息,并以优雅的方式格式化。

👾 其他很棒的 CLI 工具

  • ccat : cat的语法高亮
  • tig :允许增强许多已知git命令的输出(例如git log | tig
  • howdoi:如果你想知道如何在 PHP 中格式化日期,那么只需输入howdoi format date php
  • htop:显示当前进程列表
  • glances ( pip install glances) :计算机的监控控制台(进程、RAM、网络、I/O、捕获器……)
  • clog ( ) :从你的git repo 元数据cargo install clog生成 CHANGELOG
  • googler:Google CLI
  • slacker / matterhorn:分别用于SlackMattermost 的CLI
  • toot( ): mastodonpip install toot的 CLI
  • dockly( ):从你的终端npm install -g dockly监控你的容器和Docker镜像
  • wunderline ( ) : Wunderlistnpm install -g wunderline的 CLI
  • newman ( npm install -g newman) :您想将Postman集成到您的 CI/CD 管道中吗?那么newman就是为您量身打造的!
  • ttyrec / ttygif:允许从 shell 会话创建动画 GIF,例如包含在博客文章中(这就是我在本文中使用的方法)

对于上面提到的每个命令/工具,我都在括号中标出了安装命令。如果没有,您可以在包管理器中或互联网上轻松找到。

大多数这些命令都需要第三方包管理器,如pip(python)、npm(Node.js)、gem(Ruby)或cargo(Rust)。

请随意通过评论本文来分享您自己的 CLI!

文章来源:https://dev.to/biros/cli-love-inside-4lgl
PREV
我的 PHP 工具包,用于构建(相当)无框架应用程序 Slim 框架 CSRF 保护 Slim 框架 Flash 消息 Monolog - PHP 日志记录 zend-permissions-acl Guzzle,PHP HTTP 客户端 zend-xmlrpc PHPMailer - 一个功能齐全的 PHP 电子邮件创建和传输类 PHP-JWT 配置 Sclable XML Lint yaml-lint dockerfile-lint 目录快速入门 ShellCheck - 一个 shell 脚本静态分析工具 Fractal League\Flysystem 流 JSON 编码器 使用生成器的迭代原语 安全的 PHP EasyDB - 简单的数据库抽象层 Normie
NEXT
使用 Tmux 构建自定义 IDE 欢迎使用 tmux!