1
0
Fork 0
mirror of git://git.suckless.org/sbase synced 2025-12-11 16:59:44 +01:00
suckless unix tools
Find a file
Roberto E. Vargas Caballero ec8218c93b bc: Keep happy the compiler
2025-12-11 08:57:02 +01:00
libutf libutf: add some const's 2023-04-12 21:22:28 -07:00
libutil libutil: Fix buffer overflows in 224-bit SHA 2025-11-03 19:01:03 +01:00
make make: Add initial version 2025-10-08 09:11:26 +02:00
scripts sbase-box: Don't show xinstall in the usage 2025-11-13 12:44:25 +01:00
tests tests: Fix 0007-ed.sh 2025-12-08 18:20:07 +01:00
.gitignore bc: Initial version 2025-11-22 11:54:31 +01:00
arg.h arg.h: fixed argv checks order 2016-02-20 08:23:57 +00:00
basename.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
basename.c basename: fix case: basename "" "" 2025-11-06 08:09:47 +01:00
bc.library bc: Fix indentation in bc.library 2025-11-25 17:25:53 +01:00
bc.y bc: Keep happy the compiler 2025-12-11 08:57:02 +01:00
cal.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
cal.c cal: Centre month and year above calendar 2019-04-28 14:10:38 -07:00
cat.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
cat.c concat: Use plain read/write instead of buffered stdio 2017-07-14 07:50:47 +02:00
chgrp.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
chgrp.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chmod.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
chmod.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chown.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
chown.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chroot.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
chroot.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
cksum.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
cksum.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
cmp.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
cmp.c cmp: Make output of error message POSIX compliant 2023-04-12 21:37:04 -07:00
cols.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cols.c Use the UTF8_POINT macro in cols(1) 2016-03-10 08:48:09 +00:00
comm.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
comm.c Rename struct linebufline to struct line and add linecmp() 2016-03-10 08:48:09 +00:00
compat.h Add compat.h 2014-11-17 15:46:28 +00:00
config.mk bc: Adapt sbase style 2025-11-22 11:54:31 +01:00
cp.1 cp.1: swap .St mdoc macro with text 2025-04-24 23:16:42 +02:00
cp.c cp: add -i flag 2025-04-20 09:20:11 +02:00
cron.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cron.c Sync cron with latest scron 2015-11-06 11:01:00 +00:00
crypt.h Don't use buffered IO (fread) when not appropriate 2017-07-03 21:04:14 +02:00
cut.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
cut.c Support NUL containing lines in cut(1) 2016-03-10 08:48:09 +00:00
date.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
date.c date: Fix default format string 2019-04-12 19:40:34 -07:00
dd.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
dd.c dd: Consider block count in inner read loop 2023-04-12 20:47:34 -07:00
dirname.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
dirname.c dirname: support -- 2018-07-07 12:16:15 +01:00
du.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
du.c du: Dedup hardlinks 2025-03-19 21:51:05 +01:00
echo.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
echo.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
ed.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
ed.c ed: Accept no address in k command 2025-12-08 18:03:44 +01:00
env.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
env.c env: Check unsetenv() return value 2015-11-06 10:52:49 +00:00
expand.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
expand.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
expr.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
expr.c expr: tonum: handle case where result was previously calculated 2024-01-31 05:00:51 +01:00
false.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
false.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
find.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
find.c find: Fix -exec return value 2025-03-26 20:08:20 +01:00
flock.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
flock.c flock: Check for waitpid() error 2015-12-21 14:13:36 +00:00
fold.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
fold.c fold: fix handling of -s 2020-10-14 15:03:20 -07:00
fs.h rm: Add -i and cleanup rm() 2025-04-24 09:27:59 +02:00
getconf.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
getconf.c getconf: Add an explicit return at the end of main 2020-03-01 16:40:01 -08:00
grep.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
grep.c grep: Minor stylistic changes 2025-11-07 11:39:48 +01:00
head.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
head.c Support NUL containing lines in head(1) 2016-03-10 08:48:09 +00:00
hostname.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
hostname.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
join.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
join.c Support NUL containing lines in join(1) 2016-03-10 08:48:09 +00:00
kill.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
kill.c kill: handle TRAP signal 2024-12-17 11:46:32 +01:00
LICENSE Fix LICENSE name 2022-03-22 17:20:51 -07:00
link.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
link.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
ln.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
ln.c ln: Only fail if same inode without -f flag 2016-07-09 10:17:16 +01:00
logger.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
logger.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
logname.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
logname.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
ls.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
ls.c sbase-box: Reduce bss size using dynamic memory 2025-12-08 18:19:29 +01:00
Makefile bc: Add support for the bc library 2025-11-23 11:42:10 +01:00
md5.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
md5sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
md5sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
mkdir.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
mkdir.c mkdir: Fix created directory permissions 2017-07-03 21:03:11 +02:00
mkfifo.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
mkfifo.c mkfifo: Simplify -m handling 2019-06-13 13:45:37 -07:00
mknod.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mknod.c mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mktemp.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mktemp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mv.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
mv.c rm: Add -i and cleanup rm() 2025-04-24 09:27:59 +02:00
nice.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
nice.c Check if PRIO_MIN and PRIO_MAX are defined 2015-12-15 17:05:21 +00:00
nl.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
nl.c Support NUL containing lines in nl(1) and reuse the line-buffer(!) 2016-03-10 08:48:09 +00:00
nohup.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
nohup.c nohup: Open nohup.out WRONLY 2021-10-23 16:17:20 -07:00
od.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
od.c od: fix for -t option 2025-10-08 13:13:00 +02:00
paste.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
paste.c paste: Minor style tweaks 2020-04-15 16:13:22 -07:00
pathchk.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
pathchk.c Remove unnecessary ';' after ARGEND 2019-06-29 18:39:07 -07:00
printenv.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
printenv.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
printf.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
printf.c printf: Fix string format string length calculation 2025-11-20 18:31:59 +01:00
pwd.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
pwd.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
queue.h Use queue.h in grep(1) 2014-11-16 12:39:15 +00:00
readlink.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
readlink.c readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
README make: Add initial version 2025-10-08 09:11:26 +02:00
renice.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
renice.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
rev.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
rev.c rev, tail: replace hardcoded code by UTF8_POINT macro 2025-03-21 08:44:35 +01:00
rm.1 rm.1: swap .St mdoc macro with text 2025-04-24 23:20:13 +02:00
rm.c rm: Fix regression from b278710 2025-05-02 10:41:35 +02:00
rmdir.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
rmdir.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sed.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
sed.c sed: Include filename in error message 2020-02-20 21:49:11 -08:00
seq.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
seq.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
setsid.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
setsid.c setsid: fix usage information for -f flag 2022-06-20 12:39:59 +02:00
sha1.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
sha1sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha1sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha224.h add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha224sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha224sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha256.h Add sha256sum(1) 2013-07-20 13:20:16 -04:00
sha256sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha256sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha384.h add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha384sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha384sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512-224.h add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-224sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha512-224sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512-256.h add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha512-256sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512.h Add sha512sum(1) 2013-08-04 11:00:34 -04:00
sha512sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha512sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sleep.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
sleep.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
sort.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
sort.c sort: Keep the "cap" field updated 2025-10-09 11:12:53 +02:00
split.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
split.c Fix type mismatch in split(1) 2015-11-26 10:35:46 +00:00
sponge.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sponge.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
strings.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
strings.c strings: Rename len to min 2021-01-14 21:46:30 -08:00
sync.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sync.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
tail.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
tail.c rev, tail: replace hardcoded code by UTF8_POINT macro 2025-03-21 08:44:35 +01:00
tar.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
tar.c tar: man page update, and more robust & descriptive errors 2025-06-02 09:18:29 +02:00
tee.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
tee.c Don't use buffered IO (fread) when not appropriate 2017-07-03 21:04:14 +02:00
test.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
test.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
text.h concat: Use plain read/write instead of buffered stdio 2017-07-14 07:50:47 +02:00
tftp.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tftp.c Include sys/time.h for timeval structure 2015-11-13 11:32:11 +00:00
time.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
time.c Fix type mismatches 2015-11-26 10:35:46 +00:00
TODO doc: Remove fixed printf(1) bug 2025-11-13 12:44:52 +01:00
touch.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
touch.c touch: Avoid unnecessary call to stat 2016-07-09 10:17:16 +01:00
tr.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
tr.c tr: improving checking flags and allowed number of arguments 2025-11-06 08:09:47 +01:00
true.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
true.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
tsort.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
tsort.c Remove unnecessary ';' after ARGEND 2019-06-29 18:39:07 -07:00
tty.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
tty.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
uname.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
uname.c uname: check that no operands are specified 2018-09-24 13:04:06 -07:00
unexpand.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
unexpand.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
uniq.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
uniq.c uniq: always store previous line length 2016-03-11 15:38:36 +00:00
unlink.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
unlink.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
utf.h paste: Support -d '\0' 2020-04-15 16:11:12 -07:00
util.h libutil: add confirm() prompt 2025-04-20 09:20:02 +02:00
uudecode.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
uudecode.c Revert "fix length after '\' getline string termination" 2016-03-01 15:24:32 +00:00
uuencode.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
uuencode.c uuencode: style: just use pointer *b 2016-03-01 15:24:32 +00:00
wc.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
wc.c wc: Removing output padding 2019-12-21 20:19:08 -08:00
which.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
which.c which: check AT_EACCESS 2019-07-30 07:40:35 -07:00
whoami.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
whoami.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
xargs.1 sbase: improve man pages and some warnings. 2025-09-19 09:16:25 +02:00
xargs.c sbase-box: Reduce bss size using dynamic memory 2025-12-08 18:19:29 +01:00
xinstall.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
xinstall.c install: Unlink destination file on failure 2020-05-24 20:58:36 -07:00
yes.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
yes.c yes: Simplify, only support one argument 2019-10-31 18:14:18 -07:00

sbase - suckless unix tools
===========================

sbase is a collection of unix tools that are inherently portable across
UNIX and UNIX-like systems.

The complement of sbase is ubase[1] which is Linux-specific and provides
all the non-portable tools. Together they are intended to form a base
system similar to busybox but much smaller and suckless.

Building
--------

To build sbase, simply type make. You may have to fiddle with config.mk
depending on your system.

You can also build sbase-box, which generates a single binary containing
all the required tools. You can then symlink the individual tools to
sbase-box or run: make sbase-box-install

To run the tools for sbase-box directly use: sbase-box cmd [args]

Ideally you will want to statically link sbase. If you are on Linux we
recommend using musl-libc[2].

Portability
-----------

sbase has been compiled on a variety of different operating systems,
including Linux, *BSD, OSX, Haiku, Solaris, SCO OpenServer and others.

Various combinations of operating systems and architectures have also
been built.

You can build sbase with gcc, clang, tcc, nwcc and pcc.

Status
------

The following tools are implemented:

'#'  -> UTF-8 support, '=' -> Implicit UTF-8 support, '*' -> Finished,
'|'  -> Audited,       'o' -> POSIX 2013 compliant,   'x' -> Non-POSIX,
'0'  -> NUL handling,  '()' -> Petty flag

      UTILITY         MISSING
      -------         -------
0=*|o basename        .
0=*|o cal             .
0=*|o cat             .
0=*|o chgrp           .
0=*|o chmod           .
0=*|o chown           .
0=*|x chroot          .
0=*|o cksum           .
0=*|o cmp             .
0#*|x cols            .
0=*|o comm            .
0=*|o cp              .
0=*|x cron            .
0#*|o cut             .
0=*|o date            .
0=*|o dd              .
0=*|o dirname         .
0=*|o du              .
0=*|o echo            .
    o ed              .
0=*|o env             .
0#*|o expand          .
0#*|o expr            .
0=*|o false           .
0=    find            .
0=* x flock           .
0#*|o fold            .
0=*|o getconf         (-v)
 =*|o grep            .
0=*|o head            .
0=*|x hostname        .
0=*|x install         .
0=* o join            .
0=*|o kill            .
0=*|o link            .
0=*|o ln              .
0=*|o logger          .
0=*|o logname         .
0#* o ls              (-C, -k, -m, -p, -s, -x)
  * o make            (-j)
0=*|x md5sum          .
0=*|o mkdir           .
0=*|o mkfifo          .
0=*|x mknod           .
0=*|x mktemp          .
0=*|o mv              (-i)
0=*|o nice            .
0#*|o nl              .
0=*|o nohup           .
0=*|o od              .
 #*|o paste           .
0#* o pathchk         .
0=*|x printenv        .
0#*|o printf          .
0=*|o pwd             .
0=*|x readlink        .
0=*|o renice          .
0#* x rev             .
0=*|o rm              .
0=*|o rmdir           .
 #    sed             .
0=*|x seq             .
0=*|x setsid          .
0=*|x sha1sum         .
0=* x sha224sum       .
0=*|x sha256sum       .
0=* x sha384sum       .
0=*|x sha512sum       .
0=* x sha512-224sum   .
0=* x sha512-256sum   .
0=*|o sleep           .
0#*|o sort            .
0=*|o split           .
0=*|x sponge          .
0#*|o strings         .
0=*|x sync            .
0=*|o tail            .
0=*|x tar             .
0=*|o tee             .
0=*|o test            .
0=*|x tftp            .
0=*|o time            .
0=*|o touch           .
0#*|o tr              .
0=*|o true            .
0=* o tsort           .
0=*|o tty             .
0=*|o uname           .
0#*|o unexpand        .
0=*|o uniq            .
0=*|o unlink          .
0=*|o uudecode        .
0=*|o uuencode        .
0#*|o wc              .
0=*|x which           .
0=*|x whoami          .
0=*|o xargs           .
0=*|x yes             .

[1] http://git.suckless.org/ubase/
[2] http://www.musl-libc.org/