s6-portable-utils - skarnet.org's tiny general Unix utilities
Keywords: s6 unix administration root skarnet portable utilities tiny coreutils

Software
skarnet.org

# s6-portable-utils

## What is it ?

s6-portable-utils is a set of tiny general Unix utilities, often performing well-known tasks such as cut and grep, but optimized for simplicity and small size. They were designed for embedded systems and other constrained environments, but they work everywhere.

Other set of small utilities are usually system-specific; for instance, the (otherwise good) BusyBox project only works on Linux.

Some of s6-portable-utils' programs are a conformant implementation of a POSIX utility as determined by the Single Unix Specification, version 4; the relevant documentation pages mentions this. However, none of the s6-portable-utils programs supports internationalization.

It is now an explicit non-goal of s6-portable-utils to duplicate the work of existing projects that aim to provide a lightweight implementation of standard commands. No more rewriting of standard commands will occur in s6-portable-utils; the package is now used to host specific utilities such as `s6-uniquename`.

Prefixing the name of this package — and the names of the binaries it provides — with `s6-` was a naming mistake. It happened in the early days of the s6 project, before it grew and became an ecosystem focused on supervision, service management and init; despite sharing the same author and the same philosophy, and being designed to work with it, `s6-portable-utils` is not, stricto sensu, part of the s6 ecosystem, and if you arrived here while trying to understand what s6 is, you are on the wrong page. I apologize for the confusion.

## Installation

### Requirements

- A POSIX-compliant system with a standard C development environment
- GNU make, version 3.81 or later
- skalibs version 2.14.3.0 or later. It's a build-time requirement. It's also a run-time requirement if you link against the shared version of the skalibs library.

### Licensing

s6-portable-utils is free software. It is available under the ISC license.

### Download

- The current released version of s6-portable-utils is 2.3.0.4.
- Alternatively, you can checkout a copy of the s6-portable-utils git repository:

       git clone git://git.skarnet.org/s6-portable-utils

- There's also a GitHub mirror of the s6-portable-utils git repository.

### Compilation

- See the enclosed INSTALL file for installation details.
- Starting with version 2.3.0.0, you can use the `--enable-multicall` configure option to save disk space.

### Upgrade notes

- This page lists the differences to be aware of between the previous versions of s6-portable-utils and the current one.

## Reference

### Commands

All these commands exit 111 if they encounter a temporary error, and 100 if they encounter a permanent error - such as a misuse. They exit 127 if they're trying to execute into a program and cannot find it, and 126 if they fail to execute into a program for another reason.

(Miscellaneous tools)

- The `s6-basename` program
- The `s6-cat` program
- The `s6-chmod` program
- The `s6-chown` program
- The `s6-clock` program
- The `s6-cut` program
- The `s6-dirname` program
- The `s6-dumpenv` program
- The `s6-echo` program
- The `s6-env` program
- The `s6-expr` program
- The `s6-false` program
- The `s6-format-filter` program
- The `s6-grep` program
- The `s6-head` program
- The `s6-hiercopy` program
- The `s6-linkname` program
- The `s6-ln` program
- The `s6-ls` program
- The `s6-maximumtime` program
- The `s6-mkdir` program
- The `s6-mkfifo` program
- The `s6-nice` program
- The `s6-nuke` program
- The `s6-pause` program
- The `s6-printenv` program
- The `s6-quote-filter` program
- The `s6-quote` program
- The `s6-rename` program
- The `s6-rmrf` program
- The `s6-seq` program
- The `s6-sleep` program
- The `s6-sort` program
- The `s6-sync` program
- The `s6-tai64ndiff` program
- The `s6-tail` program
- The `s6-touch` program
- The `s6-true` program
- The `s6-uniquename` program
- The `s6-unquote-filter` program
- The `s6-unquote` program
- The `s6-update-symlinks` program
- The `seekablepipe` program

(Multicall configuration)

- The `s6-portable-utils` multicall binary

## Related resources

- `s6-portable-utils` is discussed on the skaware mailing-list.