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命令列表(checkout
、commit
、log
、...)。多次按下<tab>
,我们可以浏览命令,直到找到所需的命令,然后只需点击<enter>
进行验证(例如git checkout
),这时fish就展现了它的魔力:它能够自动补全你仓库的 git 分支列表!当然,它也能与 git 以外的许多其他工具兼容。
两个框架可以增强鱼的功能:oh-my-fish和fisherman。
它们都允许安装提示和插件的主题。
💲 提示
乍一看,自定义他的提示似乎没用,但如果 CLI 是您的主要 UI,那么它就变得强制性了。
它允许了解git的以下内容:
- 你在哪个分支
- 如果你有提交到远程/从远程拉取
- 您的索引是否干净,是否有未提交或未跟踪的文件
- ...
但是也:
- 你在哪个文件夹中
- 最后一个命令的状态是什么
- 最后一个命令的响应时间
- ...
有几十个提示符可供选择,每个人都可以根据自己的喜好进行选择。我选择了其中两个:bobthefish和neolambda,你可以使用oh-my-fish安装它们:omf install bobthefish
。
第一个高度可视化,基于powerline ,这是Vim的状态行,包含许多模式和符号,使其更加用户友好:
第二个更加时尚,功能较少,但却很有趣(omf install neolambda
):
除了提示之外,许多插件还可以增强用户体验,特别是:
-
colorman为手册页添加了语法高亮显示(
omf install colorman
) -
grc为许多 Unix 命令添加了语法高亮显示:tail、ping、cat、ps、df,...(安装方法:
fisher grc
)- 以ping为例:
-
pj是一个可以快速从一个项目切换到另一个项目的插件,无论是在你的终端还是在你的编辑器中(
omf install pj
) -
g2是一个简化git使用的包装器。
💄 美化我的终端!
-
colorls (
gem install colorls
) —— 这个ls
包装器绝对是必备的。它能为标准输出着色;它使用颜色强度来强调当前目录文件的修改日期;它使文件大小易于阅读;最重要的是,它显示当前文件/文件夹的git状态!
🌈 给我的木头涂上颜色!
如果您像我一样是一名开发人员或 DevOps 工程师,那么可视化日志就是您工作中的一项重复任务,并且必须拥有良好的工具才能提高工作效率。
现代 IDE 并不适合查看日志,因为它们已经被你的源文件压垮了,而且,巨大的文件大小可能会严重影响编辑器的性能。我在Atom中遇到的情况就是如此,只要文件大小超过 10MB 就会出现这种情况。
解决方案:使用您的终端来跟踪日志,同时利用可用的工具来自动格式化它们,启用语法突出显示并执行搜索。
根据日志类型,我使用两种不同的工具:
-
ccze用于传统日志(Apache、syslog、php等)
-
jq用于 JSON 日志
jq的优势在于,除了 JSON 语法高亮显示之外,它还能自动格式化日志,方便阅读。因此,如果你有一行用于 ELK 或任何其他数据分析堆栈的压缩 JSON 日志,jq 可以帮你解压日志,使其更易于阅读。
jq是一个功能更强大的工具,值得用一篇文章来描述它,因为它实际上是一个 JSON 解析器,具有自己的查询描述语言,与 XML 的xpath相同,但具有 JSON 的简单性。
tail -f
因此,通过在专用术语中跟踪每个日志文件,并根据类型将 stdout 传送到jq或ccze,您将能够快速访问所需的信息,并以优雅的方式格式化。
👾 其他很棒的 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:分别用于Slack和Mattermost 的CLI
- toot( ): mastodon
pip install toot
的 CLI - dockly( ):从你的终端
npm install -g dockly
监控你的容器和Docker镜像 - wunderline ( ) : Wunderlist
npm 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