用 Rust 重写的 Coreutils,跨平台更强大!

0 阅读2分钟

如果你熟悉 Linux 系统命令行,比如 lscatcprm,那你用过的其实是 GNU coreutils 提供的一套基础工具。而 uutils 社区的 coreutils 是一个使用 Rust 语言从零实现的同类项目,目标是 跨平台、高性能、更安全地重现这些核心命令行工具

Github地址: github.com/uutils/core…

image.png

核心特性

  • 跨平台支持:uutils 可以在 Linux、macOS、Windows 和其他 Rust 支持的平台上运行。
  • Drop-in 替代:uutils 力求成为 GNU Coreutils 的直接替代品,任何与 GNU 行为不同的地方都被视为 bug。
  • Rust 实现:利用 Rust 的内存安全和性能优势,构建高效、可靠的命令行工具。
  • 多模式构建:支持构建单个工具包(coreutils)或多个功能不同的可执行程序(例如:ls、cp)。
  • 完善的文档:提供了用户和开发者文档,方便使用和贡献代码。
  • Shell 补全和 Manpage 支持:支持 Bash、Fish、Zsh、PowerShell、Elvish 等 shell 的自动补全,并可生成 manpages。

安装方法

方法一、使用 Cargo 安装

cargo install coreutils

安装完成后,二进制文件将位于 ~/.cargo/bin/coreutils

方法二、使用源码构建

  1. 克隆仓库

    git clone https://github.com/uutils/coreutils
    cd coreutils
    
  2. 使用 Cargo 构建

    构建默认核心工具集,将在 target/release 目录中生成 coreutils 可执行程序:

    cargo build --release
    

    构建特定平台的扩展功能(例如 macOS):

    cargo build --release --features macos
    

    构建单个工具,将在 target/release 目录中生成 cat 可执行程序:

    cargo build --release -p uu_cat
    

使用方法

安装完成后,你可以像使用 GNU Coreutils 一样使用这些命令。例如:

coreutils cat filename.txt
coreutils ls -l
coreutils rm file.txt

如果你安装的是单个工具(如 uu_cat),则可以直接调用:

cat filename.txt

目前官方已经提供了 ls、mv、cp 等高达 91 个工具,0.0.30版本支持的工具集如下:

arch, b2sum, b3sum, base32, base64, basename, basenc, cat, cksum, comm, cp, csplit, cut,
date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt,
fold, hashsum, head, hostname, join, link, ln, ls, md5sum, mkdir, mktemp, more, mv, nl,
nproc, numfmt, od, paste, pr, printenv, printf, ptx, pwd, readlink, realpath, rm, rmdir,
seq, sha1sum, sha224sum, sha256sum, sha3-224sum, sha3-256sum, sha3-384sum, sha3-512sum,
sha384sum, sha3sum, sha512sum, shake128sum, shake256sum, shred, shuf, sleep, sort, split,
sum, sync, tac, tail, tee, test, touch, tr, true, truncate, tsort, uname, unexpand, uniq,
unlink, vdir, wc, whoami, yes