2015-07-23 00:46:58 +00:00
|
|
|
uutils coreutils
|
2013-08-02 17:24:20 +00:00
|
|
|
================
|
|
|
|
|
2016-01-10 21:42:32 +00:00
|
|
|
[![License](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/uutils/coreutils/blob/master/LICENSE)
|
2015-07-23 00:46:58 +00:00
|
|
|
[![Build Status](https://api.travis-ci.org/uutils/coreutils.svg?branch=master)](https://travis-ci.org/uutils/coreutils)
|
2016-01-10 21:42:32 +00:00
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/787ltcxgy86r20le?svg=true)](https://ci.appveyor.com/project/Arcterus/coreutils)
|
2017-07-27 02:43:21 +00:00
|
|
|
[![LOC](https://tokei.rs/b1/github/uutils/coreutils?category=code)](https://github.com/Aaronepower/tokei)
|
2015-07-23 00:46:58 +00:00
|
|
|
|
2013-08-02 17:24:20 +00:00
|
|
|
uutils is an attempt at writing universal (as in cross-platform) CLI
|
2014-06-12 21:59:12 +00:00
|
|
|
utils in [Rust](http://www.rust-lang.org). This repo is to aggregate the GNU
|
2013-08-02 17:24:20 +00:00
|
|
|
coreutils rewrites.
|
|
|
|
|
|
|
|
Why?
|
|
|
|
----
|
|
|
|
|
2014-02-19 01:52:47 +00:00
|
|
|
Many GNU, Linux and other utils are pretty awesome, and obviously
|
2013-08-02 17:24:20 +00:00
|
|
|
[some](http://gnuwin32.sourceforge.net) [effort](http://unxutils.sourceforge.net)
|
2014-02-19 01:52:47 +00:00
|
|
|
has been spent in the past to port them to Windows. However, those projects
|
2014-02-06 05:18:03 +00:00
|
|
|
are either old, abandoned, hosted on CVS, written in platform-specific C, etc.
|
2013-08-02 17:24:20 +00:00
|
|
|
|
2014-02-19 01:52:47 +00:00
|
|
|
Rust provides a good, platform-agnostic way of writing systems utils that are easy
|
2013-08-02 17:24:20 +00:00
|
|
|
to compile anywhere, and this is as good a way as any to try and learn it.
|
|
|
|
|
2017-12-04 14:22:41 +00:00
|
|
|
Rust Version
|
|
|
|
------------
|
|
|
|
|
2017-12-08 20:13:50 +00:00
|
|
|
uutils follows Rust's release channels and is tested against stable, beta and nightly.
|
2017-12-11 03:14:56 +00:00
|
|
|
The current oldest supported version of the Rust compiler is `1.22.0`, but `1.20.0` is
|
|
|
|
known to work as well (test failures when compiling with `1.20.0` are due to the tests
|
|
|
|
themselves being broken by a change in the compiler).
|
2017-12-04 14:22:41 +00:00
|
|
|
|
2017-12-11 03:14:56 +00:00
|
|
|
On both Windows and Redox, only the nightly version is tested currently.
|
2017-12-04 14:22:41 +00:00
|
|
|
|
2013-12-27 21:32:56 +00:00
|
|
|
Build Instructions
|
|
|
|
------------------
|
|
|
|
|
|
|
|
To simply build all available utilities:
|
|
|
|
```
|
|
|
|
make
|
|
|
|
```
|
|
|
|
|
2014-10-26 04:54:37 +00:00
|
|
|
(on Windows use [MinGW/MSYS](http://www.mingw.org/wiki/MSYS) or `Cygwin` make and make sure you have `rustc` in `PATH`)
|
|
|
|
|
2013-12-27 21:32:56 +00:00
|
|
|
To build all but a few of the available utilities:
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make SKIP_UTILS='UTILITY_1 UTILITY_2'
|
2013-12-27 21:32:56 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
To build only a few of the available utilities:
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make UTILS='UTILITY_1 UTILITY_2'
|
2014-07-20 08:27:47 +00:00
|
|
|
```
|
|
|
|
|
2014-06-13 02:14:56 +00:00
|
|
|
Installation Instructions
|
|
|
|
-------------------------
|
|
|
|
|
|
|
|
To install all available utilities:
|
|
|
|
```
|
|
|
|
make install
|
|
|
|
```
|
|
|
|
|
|
|
|
To install all but a few of the available utilities:
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make SKIP_UTILS='UTILITY_1 UTILITY_2' install
|
2014-06-13 02:14:56 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
To install only a few of the available utilities:
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make UTILS='UTILITY_1 UTILITY_2' install
|
2014-06-13 02:14:56 +00:00
|
|
|
```
|
|
|
|
|
2015-12-24 04:14:55 +00:00
|
|
|
To install every program with a prefix (e.g. uu-echo uu-cat):
|
2014-06-13 02:14:56 +00:00
|
|
|
```
|
|
|
|
make PROG_PREFIX=PREFIX_GOES_HERE install
|
|
|
|
```
|
|
|
|
|
2014-07-01 08:07:16 +00:00
|
|
|
To install the multicall binary:
|
|
|
|
```
|
2015-12-24 04:14:55 +00:00
|
|
|
make MULTICALL=y install
|
|
|
|
```
|
|
|
|
|
|
|
|
Set install parent directory (default value is /usr/local):
|
|
|
|
```
|
2015-12-25 07:03:36 +00:00
|
|
|
make PREFIX=/my/path install
|
2014-07-01 08:07:16 +00:00
|
|
|
```
|
|
|
|
|
2014-06-13 02:14:56 +00:00
|
|
|
Uninstallation Instructions
|
|
|
|
---------------------------
|
|
|
|
|
2014-06-13 02:49:00 +00:00
|
|
|
To uninstall all utilities:
|
|
|
|
```
|
|
|
|
make uninstall
|
|
|
|
```
|
|
|
|
|
2014-06-25 16:47:34 +00:00
|
|
|
To uninstall every program with a set prefix:
|
2014-06-13 02:49:00 +00:00
|
|
|
```
|
|
|
|
make PROG_PREFIX=PREFIX_GOES_HERE uninstall
|
|
|
|
```
|
2014-06-13 02:14:56 +00:00
|
|
|
|
2014-07-01 08:07:16 +00:00
|
|
|
To uninstall the multicall binary:
|
|
|
|
```
|
2015-12-24 04:14:55 +00:00
|
|
|
make MULTICALL=y uninstall
|
|
|
|
```
|
|
|
|
|
|
|
|
To uninstall from a custom parent directory:
|
|
|
|
```
|
2015-12-25 07:03:36 +00:00
|
|
|
make PREFIX=/my/path uninstall
|
2014-07-01 08:07:16 +00:00
|
|
|
```
|
|
|
|
|
2013-12-27 21:32:56 +00:00
|
|
|
Test Instructions
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
To simply test all available utilities:
|
|
|
|
```
|
|
|
|
make test
|
|
|
|
```
|
|
|
|
|
|
|
|
To test all but a few of the available utilities:
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make SKIP_UTILS='UTILITY_1 UTILITY_2' test
|
2013-12-27 21:32:56 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
To test only a few of the available utilities:
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make UTILS='UTILITY_1 UTILITY_2' test
|
2013-12-27 21:32:56 +00:00
|
|
|
```
|
|
|
|
|
2016-02-15 23:08:37 +00:00
|
|
|
To include tests for unimplemented behavior:
|
|
|
|
```
|
|
|
|
make UTILS='UTILITY_1 UTILITY_2' SPEC=y test
|
|
|
|
```
|
|
|
|
|
2015-12-21 00:48:52 +00:00
|
|
|
Run busybox tests
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
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
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make UTILS='UTILITY_1 UTILITY_2' busytest
|
2015-12-21 00:48:52 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
To pass an argument like "-v" to the busybox test runtime
|
|
|
|
```
|
2016-01-12 19:17:28 +00:00
|
|
|
make UTILS='UTILITY_1 UTILITY_2' RUNTEST_ARGS='-v' busytest
|
2015-12-21 00:48:52 +00:00
|
|
|
```
|
|
|
|
|
2013-11-30 23:07:22 +00:00
|
|
|
Contribute
|
|
|
|
----------
|
|
|
|
|
2015-12-03 05:16:04 +00:00
|
|
|
To contribute to coreutils, please see [CONTRIBUTING](CONTRIBUTING.md).
|
2013-11-30 23:07:22 +00:00
|
|
|
|
2017-07-27 07:51:36 +00:00
|
|
|
Utilities
|
|
|
|
---------
|
|
|
|
|
|
|
|
| Done | Semi-Done | To Do |
|
|
|
|
|-----------|-----------|--------|
|
|
|
|
| arch | cp | chcon |
|
2017-10-01 17:06:28 +00:00
|
|
|
| base32 | expr | csplit |
|
2017-08-06 18:54:18 +00:00
|
|
|
| base64 | install | dd |
|
|
|
|
| basename | ls | df |
|
|
|
|
| cat | more | join |
|
|
|
|
| chgrp | od (`--strings` and 128-bit data types missing) | numfmt |
|
|
|
|
| chmod | printf | pr |
|
|
|
|
| chown | sort | runcon |
|
|
|
|
| chroot | split | stty |
|
|
|
|
| cksum | tail | |
|
2017-07-27 07:51:36 +00:00
|
|
|
| comm | test | |
|
2017-08-06 18:54:18 +00:00
|
|
|
| cut | date | |
|
2017-07-27 07:51:36 +00:00
|
|
|
| dircolors | | |
|
|
|
|
| dirname | | |
|
|
|
|
| du | | |
|
|
|
|
| echo | | |
|
|
|
|
| env | | |
|
|
|
|
| expand | | |
|
|
|
|
| factor | | |
|
|
|
|
| false | | |
|
|
|
|
| fmt | | |
|
|
|
|
| fold | | |
|
|
|
|
| groups | | |
|
|
|
|
| hashsum | | |
|
|
|
|
| head | | |
|
|
|
|
| hostid | | |
|
|
|
|
| hostname | | |
|
|
|
|
| id | | |
|
|
|
|
| kill | | |
|
|
|
|
| link | | |
|
|
|
|
| ln | | |
|
|
|
|
| logname | | |
|
|
|
|
| ~~md5sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/master/src/hashsum/hashsum.rs)) | |
|
|
|
|
| ~~sha1sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/master/src/hashsum/hashsum.rs)) | |
|
|
|
|
| ~~sha224sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/master/src/hashsum/hashsum.rs)) | |
|
|
|
|
| ~~sha256sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/master/src/hashsum/hashsum.rs)) | |
|
|
|
|
| ~~sha384sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/master/src/hashsum/hashsum.rs)) | |
|
|
|
|
| ~~sha512sum~~ (replaced by [hashsum](https://github.com/uutils/coreutils/blob/master/src/hashsum/hashsum.rs)) | |
|
|
|
|
| mkdir | | |
|
|
|
|
| mkfifo | | |
|
|
|
|
| mknod | | |
|
|
|
|
| mktemp | | |
|
|
|
|
| mv | | |
|
|
|
|
| nice | | |
|
|
|
|
| nl | | |
|
|
|
|
| nohup | | |
|
|
|
|
| nproc | | |
|
|
|
|
| paste | | |
|
|
|
|
| pathchk | | |
|
|
|
|
| pinky | | |
|
|
|
|
| printenv | | |
|
|
|
|
| ptx | | |
|
|
|
|
| pwd | | |
|
|
|
|
| readlink | | |
|
|
|
|
| realpath | | |
|
|
|
|
| relpath | | |
|
|
|
|
| rm | | |
|
|
|
|
| rmdir | | |
|
|
|
|
| seq | | |
|
|
|
|
| shred | | |
|
|
|
|
| shuf | | |
|
|
|
|
| sleep | | |
|
|
|
|
| stat | | |
|
|
|
|
| stdbuf | | |
|
|
|
|
| sum | | |
|
|
|
|
| sync | | |
|
|
|
|
| tac | | |
|
|
|
|
| tee | | |
|
|
|
|
| timeout | | |
|
|
|
|
| touch | | |
|
|
|
|
| tr | | |
|
|
|
|
| true | | |
|
|
|
|
| truncate | | |
|
|
|
|
| tsort | | |
|
|
|
|
| tty | | |
|
|
|
|
| uname | | |
|
|
|
|
| unexpand | | |
|
|
|
|
| uniq | | |
|
|
|
|
| unlink | | |
|
|
|
|
| uptime | | |
|
|
|
|
| users | | |
|
|
|
|
| wc | | |
|
|
|
|
| who | | |
|
|
|
|
| whoami | | |
|
|
|
|
| yes | | |
|
2013-08-02 17:24:20 +00:00
|
|
|
|
|
|
|
License
|
|
|
|
-------
|
|
|
|
|
2014-02-16 20:44:50 +00:00
|
|
|
uutils is licensed under the MIT License - see the `LICENSE` file for details
|