25 个版本
0.0.27 | 2024 年 6 月 22 日 |
---|---|
0.0.25 | 2024 年 3 月 23 日 |
0.0.23 | 2023 年 11 月 15 日 |
0.0.20 | 2023 年 7 月 14 日 |
0.0.0 | 2019 年 9 月 28 日 |
#10 in 命令行工具
每月 468 次下载
2.5MB
27K SLoC
包含 (ELF exe/lib, 465KB) tests/fixtures/install/helloworld_linux,(ELF exe/lib, 440KB) helloworld_android,(ELF exe/lib, 315KB) helloworld_freebsd,(Mach-o exe, 425KB) tests/fixtures/install/helloworld_macos
uutils coreutils 是 GNU coreutils 的跨平台重实现,使用 Rust 编写。虽然所有程序都已实现,但某些选项可能缺失或可能遇到不同的行为。
要安装它
cargo install coreutils
~/.cargo/bin/coreutils
目标
uutils 的目标是成为 GNU 工具的直接替代品。与 GNU 的差异被视为错误。
uutils 的目标是尽可能在更多平台上工作,以便能够在 Linux、Mac、Windows 和其他平台上使用相同的工具。这确保,例如,脚本可以轻松地在平台之间传输。
文档
uutils 提供用户和开发者文档
这两个文档也可以在本地生成,具体说明可以在 coreutils 文档 仓库中找到。
要求
- Rust (
cargo
,rustc
) - GNU Make (可选)
Rust 版本
uutils 遵循 Rust 的发布渠道,并针对稳定版、测试版和夜间版进行了测试。当前最低支持的 Rust 版本 (MSRV) 为 1.70.0
。
构建
目前有两种方法可以构建 uutils 二进制文件:Cargo 或 GNU Make。
构建完整包(包括所有文档)需要在 Unix 平台上同时使用 Cargo 和 Gnu Make。
对于任何一种方法,我们首先需要获取仓库
git clone https://github.com/uutils/coreutils
cd coreutils
Cargo
使用 Cargo 构建 uutils 很容易,因为过程与其他 Rust 程序相同
cargo build --release
此命令在大多数Rust支持的平台上构建最便携的通用核心集uutils到一个多调用(BusyBox类型)的二进制文件中,命名为“coreutils”。
通常还有额外的平台特定uutils可用。在平台上构建这些扩展的uutils集(在该平台上)就像指定它作为功能一样简单。
cargo build --release --features macos
# or ...
cargo build --release --features windows
# or ...
cargo build --release --features unix
如果您不想将平台上可用的所有工具都构建到最终二进制文件中,也可以手动指定要构建的工具。例如
cargo build --features "base32 cat echo rm" --no-default-features
如果您不想构建多调用二进制文件,而想构建独立的工具二进制文件,这也是可能的。每个工具都包含在主仓库中自己的包内,命名为“uu_UTILNAME”。要构建单个工具,请使用cargo仅构建特定的包(使用--package
[又称-p
]选项)。例如
cargo build -p uu_base32 -p uu_cat -p uu_echo -p uu_rm
GNU Make
使用make
构建也是一个简单的过程。
简单地构建所有可用的工具
make
在发布模式下
make PROFILE=release
构建除少数可用工具之外的所有工具
make SKIP_UTILS='UTILITY_1 UTILITY_2'
仅构建少数可用工具
make UTILS='UTILITY_1 UTILITY_2'
安装
使用Cargo进行安装
同样,安装也可以简单地通过以下方式完成
cargo install --path . --locked
此命令将uutils安装到Cargo的bin文件夹中(例如:$HOME/.cargo/bin
)。
这不会安装必要的文件来完成shell补全或man页面。为了使man页面或shell补全工作,请使用GNU Make
或参阅手动安装shell补全
/手动安装man页面
。
使用GNU Make安装
安装所有可用的工具
make install
要使用sudo
开关安装,必须使用-E
。
sudo -E make install
安装除少数可用工具之外的所有工具
make SKIP_UTILS='UTILITY_1 UTILITY_2' install
仅安装少数可用工具
make UTILS='UTILITY_1 UTILITY_2' install
安装带有前缀的每个程序(例如:uu-echo uu-cat)
make PROG_PREFIX=PREFIX_GOES_HERE install
安装多调用二进制文件
make MULTICALL=y install
设置安装父目录(默认值是/usr/local)
# DESTDIR is also supported
make PREFIX=/my/path install
使用make
安装将为所有已安装工具安装bash
、fish
和zsh
的shell补全。也可以生成elvish
和powershell
的补全;请参阅手动安装shell补全
。
手动安装shell补全
coreutils
二进制文件可以为bash
、elvish
、fish
、powershell
和zsh
shell生成补全。它将结果打印到标准输出。
语法是
cargo run completion <utility> <shell>
因此,要将ls
在bash
上的补全安装到/usr/local/share/bash-completion/completions/ls
,请运行
cargo run completion ls bash > /usr/local/share/bash-completion/completions/ls
手动安装man页面
生成man页面的语法是
cargo run manpage <utility>
因此,要将ls
的man页面安装到/usr/local/share/man/man1/ls.1
,请运行
cargo run manpage ls > /usr/local/share/man/man1/ls.1
卸载
卸载方式取决于您如何安装uutils。如果您使用Cargo进行安装,请使用Cargo进行卸载。如果您使用GNU Make进行安装,请使用Make进行卸载。
使用Cargo卸载
要卸载uutils
cargo uninstall uutils
使用GNU Make卸载
卸载所有工具
make uninstall
卸载带有特定前缀的每个程序
make PROG_PREFIX=PREFIX_GOES_HERE uninstall
卸载多调用二进制文件
make MULTICALL=y uninstall
从自定义父目录卸载
# DESTDIR is also supported
make PREFIX=/my/path uninstall
GNU测试套件兼容性
以下展示了 uutils 通过的 GNU 测试的演变过程。主分支的 GNU 测试结果的更详细分析可以在用户手册中找到。
请参阅https://github.com/orgs/uutils/projects/1了解主要元错误(许多已缺失)。
贡献
要为 uutils 贡献,请参阅CONTRIBUTING。
许可证
uutils 采用 MIT 许可证 - 详细内容请参阅 LICENSE
文件
GNU Coreutils 采用 GPL 3.0 或更高版本。
依赖关系
~6–37MB
~589K SLoC