← 返回首页

exch命令解决文件交换的原子操作

发布时间: 2026-06-05 15:58(北京时间)

摘要: 作者针对文件交换的原子操作需求,介绍了util-linux包中的exch命令,并分享了在旧版本系统上编译该命令的过程。内容实用,语气冷静。

标签: 文件交换, 原子操作, Linux命令, 实用技巧, 编译

字数: 777

原文链接: /7402396589/R2IvCyuQZ

群友的原问题是:“如果我要交换 ~/.claude/settings.json{,.bak} 这两个文件,在 bash 里有没有什么骚操作?”

最容易想到的 mv settings.json settings.json.tmp && mv settings.json.bak settings.json && mv settings.json.tmp settings.json.bak 肯定算不上什么骚操作,而且这还不是原子操作。

前段时间我也有过这样的需求,我想着应该有什么命令可以优雅实现我的需求。后来就找到了在 util-linux package 下的 exch 命令。( 见 h__ps://man7.org/linux/man-pages/man1/exch.1.html )

我看到就下意识在群里回了个 exch,然后想着去ARM板上演示一下,但ssh上去后发现 util-linux 卡在了一个比较尴尬的旧版本,而 exch 是在 util-linux 2.40 新引入的。

❯ lsblk —version
lsblk from util-linux 2.39.3

为了演示只好拉 util-linux 的源码下来,只编译 exch
./autogen.sh
./configure —disable-all-programs —enable-exch
make exch

编之后拷贝到 /usr/local/bin/ 下就能用。
现在管理Agent的配置或者.env之类的可能经常用到,有需要的朋友也可以编译一下 exch 出来用。以后想交换settings.json和settings.json.bak就只需要:exch settings.json{,.bak} 就完事了(如图2)。

image

image