优秀的命令行工具整理 (一)

10 篇文章 0 订阅
8 篇文章 0 订阅

原文作者: Darren Burns
翻译:weakish@LeanCloud
原文链接:https://url.leanapp.cn/darren

我打算写一系列文章,展示下近些年发现的一些很棒的非标准命令行工具,这是第一篇。如果你用命令行,那么这些工具中大概至少有一个能让你的生活更舒心。

z跳转

现代浏览器地址栏可以智能模糊搜索,节省了大量时间。想要刷下推特?只需在地址栏输入「tw」然后回车。

相比之下,在命令行下使用 cd访问文件系统,方式就太陈旧了。谢天谢地,z 给命令行带来了浏览器风格的导航。

短暂的学习期之后,z能让你从任意位置跳转到一个目录,只需输入目标目录名的子字符串。z会跳转到哪个目录取决于你提供的字符串参数、访问目录的频繁程度、访问目录的最近时间。这称为「频近度 (frecency)」。

z不仅提高了速度,还降低了认知负担。使用 cd时,你需要准确回忆目标目录在目录树的位置,并计算到达目录的路径。有了 z,只需知道目录的名称。

z也已经移植到了其他 shell (例如 fish 和 zsh)。类似的项目有 autojump

安装 z
  • 在 macOS 上使用 Homebrew 安装 bash版本:brew install z
  • 在 macOS 上使用 Fisher 安装fish 版本:fisher add jethrokuan/z
fzf快速模糊搜寻器

安装 fzf 后,在命令行的任何地方按下 Ctrl + T,就可以开启交互式模糊搜索界面,递归搜索当前目录下的文件。输入搜索项后,上、下键选择结果,回车上屏:

在上面的例子中,我输入了 bat(还可以是其他任何命令,例如 lesscd等),接着按下 Ctrl + T。接着输入 five,回车,插入路径 src/five.rs至光标所在处,而不必先输入 src,再按 tab 键,再输入 fi,再按 tab 键——路径很长或者不好记的时候,这样很麻烦。

安装 fzf
  • macOS (Homebrew): brew install fzf
  • fish绑定: fisher add jethrokuan/fzf
bat带语法高亮的文件查看

bat 助你快速查看文件,有语法高亮。bat可以无缝替换 cat

如果输出过大(如上面的例子所示),bat会将输出传给 less,自动分页。

安装 bat
  • macOS (Homebrew): brew install bat
bench代码性能测试

bench 是极为有用的测试代码性能的工具。它是用 Haskell 写的,从这点上说,算是这篇文章中最酷的。任何可以在终端中运行的命令都可以传给它(加引号),bench 会重复运行该命令,测量执行时间。测试完成后,bench 会输出有用的统计数据。

衡量代码执行时间,相比系统内置的 time命令,bench 更为强大。

类似的工具有 hyperfine ,是用 Rust 编写的。

安装 bench
  • macOS (Homebrew): brew install bench
asciinemasvg-term录制终端为 SVG 动画

这篇文章中的终端剪辑实际上是 SVG 动画!使用 SVG 而不是视频文件有不小的优势:

  • 任意缩放 ?
  • 可以像其他图像一样嵌入 Markdown 文件 ?
  • 文件较小 ?
  • SVG 动画比视频酷太多 ?

我使用 asciinema 录制终端。输入 asciinema rec即可开始录制。完成后按 Ctrl+D,选择本地保存或上传 asciinema.org

svg-term 可以根据 asciinema 录制文件生成 SVG 动画。如果你将录制文件上传到了 asciinema,需要访问 asciinema 链接将其设为公开。

转换录制文件为 SVG 动画,需要提供录制 ID (公开 asciinema 页面后可以在 URL 中找到 ID),输出文件名,还有其他一些可选参数。例如,我使用如下命令将上面例子中的终端录制 (https://asciinema.org/a/219486) 转换为 SVG 文件:

svg-term --cast=219486 --out ~/somewhere/out.svg --padding 18 --height 8 --width 80

或者,如果你不想把录制文件上传到 asciinema,你也可以直接使用 svg-term 转换本地录制文件(感谢 svg-term-cli 的作者 Mario Nebl 指出这一点):

asciinema rec cast.json
cat cast.json | svg-term-cli
安装 asciinemasvg-term
  • 在 macOS 上安装 asciinemabrew install asciinema
  • 在 macOS 上安装 svg-termnpm install -g svg-term-cli
wrk 测试 HTTP API 性能

wrk 是个方便的小工具,可以测试 API 性能。为了演示它的用法,我在本地的 8001 端口运行了一个最小化的 Python HTTP API 服务器,它只有一个端点(/hello)。用 wrk 测试它的性能(5 秒内,使用 12 个线程发起 200 个连接):

调整线程数、连接数、时长可以测试不同负载下 API 的表现。它不能代替 Locust 和 JMeter 这样的性能测试工具,但很轻量,在许多场景下够用。

很不幸,基于 wrk 的命令行接口发起 POST 请求很笨拙:需要用 Lua 编写一个小脚本,作为参数传给命令(详见文档)。

安装 wrk
  • macOS (Homebrew): brew install wrk
exa 替代 ls

exals 的现代替代品,其彩色输出更为易读,并提供了更多控制输出如何呈现的选项。

加上 --git-ignore 参数会根据 .gitignore 忽略对应文件,使用 -T 参数则能以树型结构列出目录。

安装 exa
  • macOS (Homebrew): brew install exa
fd 查找文件和目录

通常使用 find 命令基于正则表达式查找文件或目录。fd 是用 Rust 编写的 find 替代品。使用合理的默认值,提供更方便的界面,速度也更快。

fd 遵循 .gitignore 文件,也支持并行命令执行。并行命令执行可以在搜索返回的每个文件和目录上(并行)执行命令。fd 文档中的一个例子是找出所有 .jpg 文件,并行转换为 .png 文件(使用 convert 命令):

fd -e jpg -x convert {} {.}.png
安装 fd
rg (ripgrep) 查找文件中的字符串

rg 是 grep 的替代品,它比 grep 快很多。

rg 是用 Rust 编写的,VS Code 编辑器的搜索功能其实是通过调用 rg 实现的。在性能评测中,rg 一贯超过类似工具。

安装 ripgrep
  • macOS (Homebrew): brew install ripgrep
结语

我希望你在这篇文章中发现了有用的工具!我打算让这篇文章成为及时更新的工具库,收罗有用的替代性命令行工具,所以我可能会时不时更新这篇文章。

如果你对更多类似内容感兴趣,欢迎在 Twitter 上关注我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值