mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-09-16 03:36:18 +00:00
README: rewrite description
- Remove "attempt", I think we're good enough to call it more than an attempt - Make it more specifically about the GNU coreutils.
This commit is contained in:
parent
c83f6eeadd
commit
04c7d2f60d
1 changed files with 135 additions and 131 deletions
266
README.md
266
README.md
|
@ -20,10 +20,9 @@
|
||||||
<!-- markdownlint-disable commands-show-output no-duplicate-heading -->
|
<!-- markdownlint-disable commands-show-output no-duplicate-heading -->
|
||||||
<!-- spell-checker:ignore markdownlint ; (options) DESTDIR RUNTEST UTILNAME manpages -->
|
<!-- spell-checker:ignore markdownlint ; (options) DESTDIR RUNTEST UTILNAME manpages -->
|
||||||
|
|
||||||
uutils is an attempt at writing universal (as in cross-platform) CLI
|
uutils coreutils is a cross-platform reimplementation of the GNU coreutils in
|
||||||
utilities in [Rust](http://www.rust-lang.org).
|
[Rust](http://www.rust-lang.org). While all programs have been implemented, some
|
||||||
While all programs have been implemented, some options might be missing
|
options might be missing or different behavior might be experienced.
|
||||||
or different behavior might be experienced.
|
|
||||||
|
|
||||||
To install it:
|
To install it:
|
||||||
|
|
||||||
|
@ -33,13 +32,15 @@ cargo install coreutils
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line MD026 -->
|
<!-- markdownlint-disable-next-line MD026 -->
|
||||||
## Why?
|
|
||||||
|
|
||||||
uutils aims to work on as many platforms as possible, to be able to use the
|
## Goals
|
||||||
same utils on Linux, Mac, Windows and other platforms. This ensures, for
|
|
||||||
example, that scripts can be easily transferred between platforms. Rust was
|
uutils aims to be a drop-in replacement for the GNU utils. Differences with GNU
|
||||||
chosen not only because it is fast and safe, but is also excellent for
|
are treated as bugs.
|
||||||
writing cross-platform code.
|
|
||||||
|
uutils aims to work on as many platforms as possible, to be able to use the same
|
||||||
|
utils on Linux, Mac, Windows and other platforms. This ensures, for example,
|
||||||
|
that scripts can be easily transferred between platforms.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
@ -48,10 +49,11 @@ uutils has both user and developer documentation available:
|
||||||
- [User Manual](https://uutils.github.io/user/)
|
- [User Manual](https://uutils.github.io/user/)
|
||||||
- [Developer Documentation](https://uutils.github.io/dev/coreutils/)
|
- [Developer Documentation](https://uutils.github.io/dev/coreutils/)
|
||||||
|
|
||||||
Both can also be generated locally, the instructions for that can be found in the
|
Both can also be generated locally, the instructions for that can be found in
|
||||||
[coreutils docs](https://github.com/uutils/uutils.github.io) repository.
|
the [coreutils docs](https://github.com/uutils/uutils.github.io) repository.
|
||||||
|
|
||||||
<!-- ANCHOR: build (this mark is needed for mdbook) -->
|
<!-- ANCHOR: build (this mark is needed for mdbook) -->
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Rust (`cargo`, `rustc`)
|
- Rust (`cargo`, `rustc`)
|
||||||
|
@ -59,13 +61,13 @@ Both can also be generated locally, the instructions for that can be found in th
|
||||||
|
|
||||||
### Rust Version
|
### Rust Version
|
||||||
|
|
||||||
uutils follows Rust's release channels and is tested against stable, beta and nightly.
|
uutils follows Rust's release channels and is tested against stable, beta and
|
||||||
The current Minimum Supported Rust Version (MSRV) is `1.64.0`.
|
nightly. The current Minimum Supported Rust Version (MSRV) is `1.64.0`.
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
There are currently two methods to build the uutils binaries: either Cargo
|
There are currently two methods to build the uutils binaries: either Cargo or
|
||||||
or GNU Make.
|
GNU Make.
|
||||||
|
|
||||||
> Building the full package, including all documentation, requires both Cargo
|
> Building the full package, including all documentation, requires both Cargo
|
||||||
> and Gnu Make on a Unix platform.
|
> and Gnu Make on a Unix platform.
|
||||||
|
@ -79,8 +81,8 @@ cd coreutils
|
||||||
|
|
||||||
### Cargo
|
### Cargo
|
||||||
|
|
||||||
Building uutils using Cargo is easy because the process is the same as for
|
Building uutils using Cargo is easy because the process is the same as for every
|
||||||
every other Rust program:
|
other Rust program:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cargo build --release
|
cargo build --release
|
||||||
|
@ -89,9 +91,9 @@ cargo build --release
|
||||||
This command builds the most portable common core set of uutils into a multicall
|
This command builds the most portable common core set of uutils into a multicall
|
||||||
(BusyBox-type) binary, named 'coreutils', on most Rust-supported platforms.
|
(BusyBox-type) binary, named 'coreutils', on most Rust-supported platforms.
|
||||||
|
|
||||||
Additional platform-specific uutils are often available. Building these
|
Additional platform-specific uutils are often available. Building these expanded
|
||||||
expanded sets of uutils for a platform (on that platform) is as simple as
|
sets of uutils for a platform (on that platform) is as simple as specifying it
|
||||||
specifying it as a feature:
|
as a feature:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cargo build --release --features macos
|
cargo build --release --features macos
|
||||||
|
@ -102,18 +104,18 @@ cargo build --release --features unix
|
||||||
```
|
```
|
||||||
|
|
||||||
If you don't want to build every utility available on your platform into the
|
If you don't want to build every utility available on your platform into the
|
||||||
final binary, you can also specify which ones you want to build manually.
|
final binary, you can also specify which ones you want to build manually. For
|
||||||
For example:
|
example:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cargo build --features "base32 cat echo rm" --no-default-features
|
cargo build --features "base32 cat echo rm" --no-default-features
|
||||||
```
|
```
|
||||||
|
|
||||||
If you don't want to build the multicall binary and would prefer to build
|
If you don't want to build the multicall binary and would prefer to build the
|
||||||
the utilities as individual binaries, that is also possible. Each utility
|
utilities as individual binaries, that is also possible. Each utility is
|
||||||
is contained in its own package within the main repository, named
|
contained in its own package within the main repository, named "uu_UTILNAME". To
|
||||||
"uu_UTILNAME". To build individual utilities, use cargo to build just the
|
build individual utilities, use cargo to build just the specific packages (using
|
||||||
specific packages (using the `--package` [aka `-p`] option). For example:
|
the `--package` [aka `-p`] option). For example:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cargo build -p uu_base32 -p uu_cat -p uu_echo -p uu_rm
|
cargo build -p uu_base32 -p uu_cat -p uu_echo -p uu_rm
|
||||||
|
@ -157,10 +159,12 @@ Likewise, installing can simply be done using:
|
||||||
cargo install --path . --locked
|
cargo install --path . --locked
|
||||||
```
|
```
|
||||||
|
|
||||||
This command will install uutils into Cargo's *bin* folder (*e.g.* `$HOME/.cargo/bin`).
|
This command will install uutils into Cargo's _bin_ folder (_e.g._
|
||||||
|
`$HOME/.cargo/bin`).
|
||||||
|
|
||||||
This does not install files necessary for shell completion or manpages.
|
This does not install files necessary for shell completion or manpages. For
|
||||||
For manpages or shell completion to work, use `GNU Make` or see `Manually install shell completions`/`Manually install manpages`.
|
manpages or shell completion to work, use `GNU Make` or see
|
||||||
|
`Manually install shell completions`/`Manually install manpages`.
|
||||||
|
|
||||||
### Install with GNU Make
|
### Install with GNU Make
|
||||||
|
|
||||||
|
@ -213,8 +217,8 @@ be generated; See `Manually install shell completions`.
|
||||||
|
|
||||||
### Manually install shell completions
|
### Manually install shell completions
|
||||||
|
|
||||||
The `coreutils` binary can generate completions for the `bash`, `elvish`, `fish`, `powershell`
|
The `coreutils` binary can generate completions for the `bash`, `elvish`,
|
||||||
and `zsh` shells. It prints the result to stdout.
|
`fish`, `powershell` and `zsh` shells. It prints the result to stdout.
|
||||||
|
|
||||||
The syntax is:
|
The syntax is:
|
||||||
|
|
||||||
|
@ -222,8 +226,8 @@ The syntax is:
|
||||||
cargo run completion <utility> <shell>
|
cargo run completion <utility> <shell>
|
||||||
```
|
```
|
||||||
|
|
||||||
So, to install completions for `ls` on `bash` to `/usr/local/share/bash-completion/completions/ls`,
|
So, to install completions for `ls` on `bash` to
|
||||||
run:
|
`/usr/local/share/bash-completion/completions/ls`, run:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cargo run completion ls bash > /usr/local/share/bash-completion/completions/ls
|
cargo run completion ls bash > /usr/local/share/bash-completion/completions/ls
|
||||||
|
@ -232,12 +236,12 @@ cargo run completion ls bash > /usr/local/share/bash-completion/completions/ls
|
||||||
### Manually install manpages
|
### Manually install manpages
|
||||||
|
|
||||||
To generate manpages, the syntax is:
|
To generate manpages, the syntax is:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo run manpage <utility>
|
cargo run manpage <utility>
|
||||||
```
|
```
|
||||||
|
|
||||||
So, to install the manpage for `ls` to `/usr/local/share/man/man1/ls.1`
|
So, to install the manpage for `ls` to `/usr/local/share/man/man1/ls.1` run:
|
||||||
run:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo run manpage ls > /usr/local/share/man/man1/ls.1
|
cargo run manpage ls > /usr/local/share/man/man1/ls.1
|
||||||
|
@ -245,8 +249,8 @@ cargo run manpage ls > /usr/local/share/man/man1/ls.1
|
||||||
|
|
||||||
## Un-installation
|
## Un-installation
|
||||||
|
|
||||||
Un-installation differs depending on how you have installed uutils. If you used
|
Un-installation differs depending on how you have installed uutils. If you used
|
||||||
Cargo to install, use Cargo to uninstall. If you used GNU Make to install, use
|
Cargo to install, use Cargo to uninstall. If you used GNU Make to install, use
|
||||||
Make to uninstall.
|
Make to uninstall.
|
||||||
|
|
||||||
### Uninstall with Cargo
|
### Uninstall with Cargo
|
||||||
|
@ -309,98 +313,98 @@ Please note that this is not fully accurate:
|
||||||
See <https://github.com/uutils/coreutils/issues/3336> for the main meta bugs
|
See <https://github.com/uutils/coreutils/issues/3336> for the main meta bugs
|
||||||
(many are missing).
|
(many are missing).
|
||||||
|
|
||||||
| Done | WIP |
|
| Done | WIP |
|
||||||
|-----------|-----------|
|
| ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------- |
|
||||||
| arch | cp |
|
| arch | cp |
|
||||||
| base32 | date |
|
| base32 | date |
|
||||||
| base64 | dd |
|
| base64 | dd |
|
||||||
| basename | df |
|
| basename | df |
|
||||||
| basenc | expr |
|
| basenc | expr |
|
||||||
| cat | install |
|
| cat | install |
|
||||||
| chcon | ls |
|
| chcon | ls |
|
||||||
| chgrp | more |
|
| chgrp | more |
|
||||||
| chmod | numfmt |
|
| chmod | numfmt |
|
||||||
| chown | od (`--strings` and 128-bit data types missing) |
|
| chown | od (`--strings` and 128-bit data types missing) |
|
||||||
| chroot | pr |
|
| chroot | pr |
|
||||||
| cksum | printf |
|
| cksum | printf |
|
||||||
| comm | sort |
|
| comm | sort |
|
||||||
| csplit | split |
|
| csplit | split |
|
||||||
| cut | tac |
|
| cut | tac |
|
||||||
| dircolors | test |
|
| dircolors | test |
|
||||||
| dirname | dir |
|
| dirname | dir |
|
||||||
| du | vdir |
|
| du | vdir |
|
||||||
| echo | stty |
|
| echo | stty |
|
||||||
| env | |
|
| env | |
|
||||||
| expand | |
|
| expand | |
|
||||||
| factor | |
|
| factor | |
|
||||||
| false | |
|
| false | |
|
||||||
| fmt | |
|
| fmt | |
|
||||||
| fold | |
|
| fold | |
|
||||||
| groups | |
|
| groups | |
|
||||||
| hashsum | |
|
| hashsum | |
|
||||||
| head | |
|
| head | |
|
||||||
| hostid | |
|
| hostid | |
|
||||||
| hostname | |
|
| hostname | |
|
||||||
| id | |
|
| id | |
|
||||||
| join | |
|
| join | |
|
||||||
| kill | |
|
| kill | |
|
||||||
| link | |
|
| link | |
|
||||||
| ln | |
|
| ln | |
|
||||||
| logname | |
|
| logname | |
|
||||||
| ~~md5sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
| ~~md5sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
||||||
| ~~sha1sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
| ~~sha1sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
||||||
| ~~sha224sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
| ~~sha224sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
||||||
| ~~sha256sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
| ~~sha256sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
||||||
| ~~sha384sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
| ~~sha384sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
||||||
| ~~sha512sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
| ~~sha512sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/main/src/uu/hashsum/src/hashsum.rs)) | |
|
||||||
| mkdir | |
|
| mkdir | |
|
||||||
| mkfifo | |
|
| mkfifo | |
|
||||||
| mknod | |
|
| mknod | |
|
||||||
| mktemp | |
|
| mktemp | |
|
||||||
| mv | |
|
| mv | |
|
||||||
| nice | |
|
| nice | |
|
||||||
| nl | |
|
| nl | |
|
||||||
| nohup | |
|
| nohup | |
|
||||||
| nproc | |
|
| nproc | |
|
||||||
| paste | |
|
| paste | |
|
||||||
| pathchk | |
|
| pathchk | |
|
||||||
| pinky | |
|
| pinky | |
|
||||||
| printenv | |
|
| printenv | |
|
||||||
| ptx | |
|
| ptx | |
|
||||||
| pwd | |
|
| pwd | |
|
||||||
| readlink | |
|
| readlink | |
|
||||||
| realpath | |
|
| realpath | |
|
||||||
| relpath | |
|
| relpath | |
|
||||||
| rm | |
|
| rm | |
|
||||||
| rmdir | |
|
| rmdir | |
|
||||||
| runcon | |
|
| runcon | |
|
||||||
| seq | |
|
| seq | |
|
||||||
| shred | |
|
| shred | |
|
||||||
| shuf | |
|
| shuf | |
|
||||||
| sleep | |
|
| sleep | |
|
||||||
| stat | |
|
| stat | |
|
||||||
| stdbuf | |
|
| stdbuf | |
|
||||||
| sum | |
|
| sum | |
|
||||||
| sync | |
|
| sync | |
|
||||||
| tail | |
|
| tail | |
|
||||||
| tee | |
|
| tee | |
|
||||||
| timeout | |
|
| timeout | |
|
||||||
| touch | |
|
| touch | |
|
||||||
| tr | |
|
| tr | |
|
||||||
| true | |
|
| true | |
|
||||||
| truncate | |
|
| truncate | |
|
||||||
| tsort | |
|
| tsort | |
|
||||||
| tty | |
|
| tty | |
|
||||||
| uname | |
|
| uname | |
|
||||||
| unexpand | |
|
| unexpand | |
|
||||||
| uniq | |
|
| uniq | |
|
||||||
| unlink | |
|
| unlink | |
|
||||||
| uptime | |
|
| uptime | |
|
||||||
| users | |
|
| users | |
|
||||||
| wc | |
|
| wc | |
|
||||||
| who | |
|
| who | |
|
||||||
| whoami | |
|
| whoami | |
|
||||||
| yes | |
|
| yes | |
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue