uutils is an attempt at writing universal (as in cross-platform) CLI utils in Rust. This repo is to aggregate the GNU coreutils rewrites.
Many GNU, Linux and other utils are pretty awesome, and obviousl 8000 y some effort has been spent in the past to port them to Windows. However, those projects are either old, abandoned, hosted on CVS, written in platform-specific C, etc.
Rust provides a good, platform-agnostic way of writing systems utils that are easy to compile anywhere, and this is as good a way as any to try and learn it.
NOTE: This currently requires the most current nightly build.
To simply build all available utilities:
make
(on Windows use MinGW/MSYS or Cygwin
make and make sure you have rustc
in PATH
)
To build all but a few of the available utilities:
make SKIP_UTILS='UTILITY_1 UTILITY_2'
To build only a few of the available utilities:
make UTILS='UTILITY_1 UTILITY_2'
To install all available utilities:
make install
To install all but a few of the available utilities:
make SKIP_UTILS='UTILITY_1 UTILITY_2' install
To install only a few of the available utilities:
make UTILS='UTILITY_1 UTILITY_2' install
To install every program with a prefix (e.g. uu-echo uu-cat):
make PROG_PREFIX=PREFIX_GOES_HERE install
To install the multicall binary:
make MULTICALL=y install
Set install parent directory (default value is /usr/local):
make PREFIX=/my/path install
To uninstall all utilities:
make uninstall
To uninstall every program with a set prefix:
make PROG_PREFIX=PREFIX_GOES_HERE uninstall
To uninstall the multicall binary:
make MULTICALL=y uninstall
To uninstall from a custom parent directory:
make PREFIX=/my/path uninstall
To simply test all available utilities:
make test
To test all but a few of the available utilities:
make SKIP_UTILS='UTILITY_1 UTILITY_2' test
To test only a few of the available utilities:
make UTILS='UTILITY_1 UTILITY_2' test
This testing functionality is only available on *nix operating systems
To run busybox's tests for all utilities for which busybox has tests
make busytest
To run busybox's tests for a few of the available utilities
make UTILS='UTILITY_1 UTILITY_2' busytest
To pass an argument like "-v" to the busybox test runtime
make UTILS='UTILITY_1 UTILITY_2' RUNTEST_ARGS='-v' busytest
To contribute to coreutils, please see CONTRIBUTING.
- chcon
- chgrp
- chown
- copy
- cp (not much done)
- csplit
- date
- dd
- df
- dircolors
- expr (almost done, no regular expressions)
- getlimits
- install
- join
- ls
- mknod
- mktemp (almost done, some options are not working)
- mv (almost done, one more option)
- numfmt
- od (in progress, needs lots of work)
- pathchk
- pinky
- pr
- printf
- remove
- runcon
- setuidgid
- sort (a couple of options implemented)
- split (a couple of missing options)
- stat
- stty
- tail (not all features implemented)
- test (not all features implemented)
- uniq (a couple of missing options)
- who
uutils is licensed under the MIT License - see the LICENSE
file for details