#cli #fs-file #file #command-line-tool #fs #file-content

bin+lib xch

一个用于在两个路径之间原子交换内容的 CLI 工具和 Rust 库

7 个版本 (2 个稳定版)

1.1.0 2019年10月18日
1.0.0 2019年10月17日
0.2.1 2017年9月10日
0.1.2 2017年9月9日

#1082文件系统

每月38次 下载
spotify-launcher 中使用

MIT 许可证

28KB
500

xch

一个用于交换路径内容的 Rust 库和 CLI 程序。如果可能,它将尝试原子地更改内容。

当前版本:1.1.0

注意:当前仅支持在 Windows 或使用 nightly rust 的 Linux 上进行原子交换

CLI

程序 xch 可用于交换两个路径的内容。

安装

cargo安装 xch

使用方法

USAGE:
    xch [FLAGS] <PATH1> <PATH2>

FLAGS:
    -h, --help          Prints help information
    -n, --non-atomic    Use non atomic exchange if atomic is not available
    -V, --version       Prints version information

ARGS:
    <PATH1>    One path to exchange
    <PATH2>    The other path to exchange

程序调用后,first/path 将指向 second/path 的先前内容,反之亦然。这不仅适用于文件,也适用于目录或一个文件和一个目录。

默认情况下,所有更改都是原子进行的,您无法同时观察到其中一个更改(例如,如果 first/path 指向 second/path 的旧内容,则 second/path 也指向 first/path 的旧内容)。这只适用于 Windows 和 Linux。

在其他平台(如任何 BSD 或 MacOS)上,您始终需要指定 --non-atomic 以获取结果。

平台 原子 xch 非原子 xch
windows ✔️ ✔️
linux ✔️ ✔️
其他 ✔️

此功能也作为库提供。将 xch = "1.1.0" 添加到您的 Cargo.toml。然后您需要在代码中导入此库。

use libxch;

然后,您可以开始交换文件的内容

if let Err(e) = libxch::xch("file1", "path/to/file2") {
    // Error handling here
}

这与在默认模式下运行 xch 相当,即它只适用于 Windows 和 Linux。使用 libxch::xch_non_atomic("file1", "path/to/file2") 来获取一个便携式但非原子的交换。

文档

许可证

根据 MIT 许可证 授权

未来

以下是希望未来能添加的一些缺失功能

  • 使用 ExchangeData 系统调用在 MacOS 上进行原子交换。
  • 更好的错误信息
  • 更多选项。

如果您有特定的要求,请随时提出问题

依赖项

约 285–620KB