使用 in-cli 保持有序

发布: (2026年2月2日 GMT+8 03:12)
3 分钟阅读
原文: Dev.to

Source: Dev.to

管理大量仓库的问题

我们都“喜欢”微服务——至少在理论上是这样。实际上,当你需要在 15 个不同的仓库中升级依赖、执行构建或 git pull 时,这个过程会很快变得痛苦。

“标签页囤积者”策略

手动打开 15 个终端标签页,cd 进入每一个,执行命令,并祈祷没有遗漏。

“Unix 魔法师”策略

尝试构造一行代码遍历目录:

find . -maxdepth 1 -type d -exec sh -c 'cd "{}" && git pull' \;

它能工作,但是串行执行,速度慢。改用 xargs 并行:

ls -d */ | xargs -P 4 -I {} bash -c "cd {} && pnpm update"

现在又遇到另一个难题:xargs 在目录名含空格时会出错。要修复它需要在 find 上加 -print0,在 xargs 上加 -0,把原本简短的一行代码变成了难以阅读的 80 字符混乱。

介绍 in‑cli 🚀

GitHub – in‑cli

in-cli 是一个零依赖的 Bash CLI,能够在每个目录中快速运行命令。它消除了复杂管道和标志的需求——只需告诉它要做什么。

基本用法

in [OPTIONS] [DIRECTORIES...] [--] COMMAND...

实际场景

场景 1:晨间例行任务

更新 ~/work 文件夹下的所有 20 个仓库:

# 更新 ~/work/ 目录中的每个仓库
in ~/work/* git pull

场景 2:“关键修复”部署

并行触发所有服务的构建脚本:

# 在所有子目录中并行运行 'make build'
in -P 8 ~/work/* make build

场景 3:依赖地狱

因为 CVE 更新每个服务中的 lodash,然后提交并推送:

in ~/work/* 'pnpm update lodash && git commit -am "updating lodash" && git push'

你可以在项目附带的 EXAMPLES.md 文件中找到 +50 其他示例。

为什么使用 in‑cli

  • 速度: 并行运行命令,无需额外标志。
  • 简洁: 不必记住复杂的 find | xargs 流水线。
  • 可移植性: 纯 Bash,实现零外部依赖。
  • 安全性: 开箱即用地处理带空格和特殊字符的目录名。

如果你在管理一个单体仓库或一堆微服务文件夹,别再写临时脚本了。试试 in‑cli,并告诉作者它是否为你省下了几次敲键(以及你的理智)。

祝使用愉快!

Back to Blog

相关文章

阅读更多 »