10 个增强命令行功能的工具
这篇文章是我近年来发现的一些最佳非标准命令行工具系列文章的第一篇。如果你曾经使用过命令行,你可能会发现本页至少有一项工具能让你的工作更轻松。
z
,跳来跳去
现代网络浏览器中最棒、最普遍的省时功能之一,就是地址栏的模糊智能搜索功能。想快速访问 Twitter?在地址栏中输入“tw”并按下回车键或许就足够了。
相比之下,通过命令行(使用 )浏览文件系统的标准方式似乎cd
已经过时了。值得庆幸的是,z
GitHub将这种浏览器风格的导航功能引入了命令行。
经过短暂的学习,你只需使用目标目录名称的子字符串,z
就能从任意位置z
跳转到某个目录。跳转到哪个目录取决于你传入的字符串参数、你访问该目录的频率以及你最近访问该目录的时间。他们称之为“频率”。
z
它不仅提高了文件系统的导航速度,还减轻了导航的认知负担。使用 时cd
,您需要精确地记住目标目录在树中的位置,并找出到达那里的路径。使用 时z
,只需知道目录名称即可。
z
其他 shell(例如 fish 和 zsh)的移植也很容易获得。 autojump
(GitHub)是一个类似的项目。
安装z
- 在 macOS 上安装
bash
版本(Homebrew):brew install z
- 在 macOS ( Fisher ) 上安装
fish
shell版本:fisher add jethrokuan/z
fzf
,快速模糊查找器
安装fzf
( GitHub ) 后,您可以Ctrl + T
随时按下 来打开交互式模糊搜索界面,该界面将以递归方式搜索当前目录中的文件。您可以输入搜索词,然后按向上/向下键在结果中移动。如果按下 Enter 键,所选结果将插入到您的终端中:
在上面的例子中,我输入了bat
(但这可以是任何命令,例如less
、cd
等),然后按下Ctrl + T
。我输入five
,按回车键,路径就插入到我的光标位置了。这省去了(大致的)输入,按 Tab 键,输入,按 Tab 键src/five.rs
的麻烦,因为这种做法不适合长路径或难记的路径。src
fi
安装fzf
- 在 macOS ( Homebrew ) 上:
brew install fzf
- 绑定
fish
:fisher add jethrokuan/fzf
bat
,使用语法高亮显示来查看文件
如果您想快速查看具有完整语法高亮显示的源文件,bat
(GitHub)就是您的好帮手。bat
可以用作的直接替代品cat
。
如果输出足够大(如上例所示),bat
将通过管道将其输出到less
,这意味着我们可以免费获得分页!
安装bat
- 在 macOS ( Homebrew ) 上:
brew install bat
bench
,用于对代码进行基准测试
bench
(GitHub)是一款非常有用的代码基准测试工具。它用 Haskell 编写,这使其成为本页最酷的工具。您可以将任何可以在终端运行的命令传递给它(用引号括起来),它会通过重复运行该命令来测量执行时间。完成后,它会将有用的统计信息输出到您的终端。
与内置time
命令相比,这是一种更为强大的测量代码执行时间的方法。
hyperfine
(GitHub)是用 Rust 编写的替代方案bench
,您可能也会对此感兴趣。
安装bench
- 在 macOS 上使用Homebrew:
brew install bench
asciinema
& svg-term
,用于将终端录制为 SVG 动画
我个人博客上这篇文章的终端剪辑版本是 SVG 动画(可惜 dev.to 不支持 SVG 上传)!你会发现它们比本页的 GIF 动图清晰得多。使用 SVG 而不是视频格式或 GIF 动图有几个巨大的好处:
- 无论缩放多少,画质都完美🔍
- 我们可以像其他图像一样将它们放入 Markdown 文件中😱
- 与视频格式和 gif 相比,文件大小更小🧐
- SVG 动画比视频酷多了🔥
为了录制终端,我使用asciinema
。使用 开始录制asciinema rec
。完成后,按,然后您将看到将录音保存在本地或将其上传到asciinema.orgCtrl+D
的选项。
svg-term
如果您想使用(GitHub )从您的录音中生成 SVG 动画,并且您将您的录音上传到 asciinema,您必须通过访问结果链接将其公开。
要将录音转换为 SVG 动画,您可以提供演员阵容的 ID(公开后可在 asciinema 页面上找到 - ID 位于 URL 中)、输出文件以及许多其他可选参数。例如,为了将https://asciinema.org/a/219486上的终端录音保存为上例中所示的 SVG 文件,我使用了以下参数:
svg-term --cast=219486 --out ~/somewhere/out.svg --padding 18 --height 8 --width 80
或者,如果您不想将录音上传到 asciinema,您可以直接提供本地演员表文件svg-term
(感谢作者 Mario Neblsvg-term
向我指出这一点):
asciinema rec cast.json
cat cast.json | svg-term-cli
安装asciinema
&svg-term
- 在 macOS 上安装
asciinema
:brew install asciinema
- 在 macOS 上安装
svg-term
:npm install -g svg-term-cli
wrk
,用于对 HTTP API 进行基准测试
这是一个方便的小工具,可以用来测试 API 的性能。为了演示,我GET /hello
在本地机器的 8001 端口上运行了一个包含单个端点( )的极简 Python HTTP API 服务器。我们可以/hello
用以下代码检查该端点的性能wrk
(12 个线程,200 个连接,持续 5 秒):
您可以调整线程数、连接数和测试时长,以检查不同负载下的性能。它不能替代 Locust 和 JMeter 等性能测试工具,但它轻量级,在许多情况下都能满足需求。
遗憾的是,命令行界面使得wrk
执行 POST 请求变得有些不方便。如果要执行 POST 请求,您需要编写一个小的 Lua 脚本并将其作为参数传递给命令(更多信息请参阅文档)。
安装wrk
- 在 macOS 上使用Homebrew:
brew install wrk
exa
,替代ls
exa
是一种现代化的替代品,ls
它采用颜色编码输出,看起来更美观,并且有更多选项可以控制输出的呈现方式。
它支持多种功能,例如通过标志位来忽略.gitignore--git-ignore
文件,以及
使用标志位将目录打印为树形结构-T
(参见上文)。它甚至还能显示文件的 git 状态!
安装exa
- 在 macOS 上使用Homebrew:
brew install exa
fd
,用于查找文件和目录
如果您正在寻找文件或目录,通常会使用find
命令根据正则表达式执行搜索。fd
(GitHub)是用 Rust 编写的替代方案,find
它通过使用合理的默认值提供了更方便的界面,并且启动速度更快!
它会尊重你的.gitignore文件,并支持并行命令执行,让你可以对搜索返回的每个文件或目录并行执行终端命令。例如(摘自fd
文档),要使用 Unix 命令并行查找所有 .jpg 文件并将其转换为 .png 文件convert
,你可以运行:
fd -e jpg -x convert {} {.}.png
安装fd
- 在 macOS 上使用Homebrew:
brew install fd
rg
(ripgrep),用于在文件中查找字符串
rg
(GitHub) 是一个更快的替代方案grep
。
rg
它用 Rust 编写,为 VS Code 文本编辑器中的搜索功能提供支持。它在基准测试中的表现始终优于同类工具。
安装 ripgrep
- 在 macOS 上使用Homebrew:
brew install ripgrep
结论
希望这篇文章能对你有所帮助!如果你对更多类似的内容感兴趣,请在Twitter和DEV上关注我。
这篇文章最初发表在我的博客上。
文章来源:https://dev.to/_darrenburns/10-tools-to-power-up-your-command-line-4id4