suckless unix tools
Go to file
Roberto E. Vargas Caballero 8ca12835a5 build: Remove .gitignore rule
It is not needed because it is just easier to maintain
the gitignore file.
2023-09-27 06:37:38 +02:00
libutf libutf: add some const's 2023-04-12 21:22:28 -07:00
libutil libutil: Remove free() from strnsub() 2023-09-22 11:44:58 +02:00
.gitignore Add implementation of dd(1) 2020-05-12 19:58:21 -07:00
LICENSE Fix LICENSE name 2022-03-22 17:20:51 -07:00
Makefile build: Remove .gitignore rule 2023-09-27 06:37:38 +02:00
README README: Add dd(1) to tool list 2021-06-17 19:09:25 -07:00
TODO ed: Deal signals in a reliable way 2023-09-26 11:33:45 +02:00
arg.h
basename.1
basename.c
cal.1
cal.c
cat.1
cat.c
chgrp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
chgrp.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chmod.1 chmod: Remove -HLP flags, and ignore symlinks during traversal 2020-03-05 00:45:44 -08:00
chmod.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chown.1
chown.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chroot.1
chroot.c
cksum.1
cksum.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
cmp.1
cmp.c cmp: Make output of error message POSIX compliant 2023-04-12 21:37:04 -07:00
cols.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cols.c
comm.1
comm.c
compat.h
config.mk
cp.1
cp.c
cron.1
cron.c
crypt.h
cut.1
cut.c
date.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
date.c
dd.1 Add implementation of dd(1) 2020-05-12 19:58:21 -07:00
dd.c dd: Consider block count in inner read loop 2023-04-12 20:47:34 -07:00
dirname.1
dirname.c
du.1
du.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
echo.1
echo.c
ed.1
ed.c ed: Deal signals in a reliable way 2023-09-26 11:33:45 +02:00
env.1
env.c
expand.1
expand.c
expr.1
expr.c
false.1
false.c
find.1
find.c find: insert -a in before open parens as well 2022-10-21 18:31:52 -07:00
flock.1
flock.c
fold.1
fold.c fold: fix handling of -s 2020-10-14 15:03:20 -07:00
fs.h libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
getconf.1
getconf.c getconf: Add an explicit return at the end of main 2020-03-01 16:40:01 -08:00
getconf.sh getconf.sh: remove unnecessary use of cat(1) 2020-03-01 16:47:15 -08:00
grep.1 refer to re_format(7) for BSDs 2023-04-12 21:16:30 -07:00
grep.c
head.1
head.c
hostname.1
hostname.c
join.1
join.c
kill.1
kill.c
link.1
link.c
ln.1
ln.c
logger.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
logger.c
logname.1
logname.c
ls.1
ls.c
md5.h
md5sum.1
md5sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
mkdir.1
mkdir.c
mkfifo.1
mkfifo.c
mknod.1 mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mknod.c mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mktemp.1
mktemp.c
mv.1
mv.c mv: Move on to other files if rename fails with something other than EXDEV 2021-07-30 12:24:32 -07:00
nice.1
nice.c
nl.1 refer to re_format(7) for BSDs 2023-04-12 21:16:30 -07:00
nl.c
nohup.1
nohup.c nohup: Open nohup.out WRONLY 2021-10-23 16:17:20 -07:00
od.1
od.c
paste.1
paste.c paste: Minor style tweaks 2020-04-15 16:13:22 -07:00
pathchk.1
pathchk.c
printenv.1
printenv.c
printf.1
printf.c printf: allow flags for the %s format string aswell 2021-07-26 20:10:09 +02:00
pwd.1
pwd.c
queue.h
readlink.1
readlink.c
renice.1
renice.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
rev.1
rev.c
rm.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
rm.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
rmdir.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
rmdir.c
sed.1
sed.c
seq.1
seq.c
setsid.1 setsid: add optional -f to force fork() 2020-07-25 13:48:46 -07:00
setsid.c setsid: fix usage information for -f flag 2022-06-20 12:39:59 +02:00
sha1.h
sha1sum.1
sha1sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha224.h
sha224sum.1
sha224sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha256.h
sha256sum.1
sha256sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha384.h
sha384sum.1
sha384sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512-224.h
sha512-224sum.1
sha512-224sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512-256.h
sha512-256sum.1
sha512-256sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512.h
sha512sum.1
sha512sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sleep.1
sleep.c
sort.1 sort.1: fix typo 2023-04-12 21:01:30 -07:00
sort.c
split.1
split.c
sponge.1
sponge.c
strings.1
strings.c strings: Rename `len` to `min` 2021-01-14 21:46:30 -08:00
sync.1
sync.c
tail.1
tail.c
tar.1
tar.c tar: check if allocation failed 2021-07-18 10:53:51 -07:00
tee.1
tee.c
test.1
test.c
text.h
tftp.1
tftp.c
time.1
time.c
touch.1
touch.c
tr.1
tr.c tr: fix behavior of cflag when using character classes 2023-09-21 15:27:01 +02:00
true.1
true.c
tsort.1
tsort.c
tty.1
tty.c
uname.1
uname.c
unexpand.1
unexpand.c
uniq.1
uniq.c
unlink.1
unlink.c
utf.h paste: Support -d '\0' 2020-04-15 16:11:12 -07:00
util.h xargs: add replace string flag (-I) 2023-09-22 10:34:36 +02:00
uudecode.1
uudecode.c
uuencode.1
uuencode.c
wc.1
wc.c
which.1
which.c
whoami.1
whoami.c
xargs.1 xargs: Update the man page about -I 2023-09-22 10:54:08 +02:00
xargs.c xargs: Read full lines is -I 2023-09-22 14:19:36 +02:00
xinstall.1
xinstall.c install: Unlink destination file on failure 2020-05-24 20:58:36 -07:00
yes.1
yes.c

README

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

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              (-i)
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)
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              .
0#* o pathchk         .
 #*|o paste           .
0=*|x printenv        .
0#*|o printf          .
0=*|o pwd             .
0=*|x readlink        .
0=*|o renice          .
0#* x rev             .
0=*|o rm              (-i)
0=*|o rmdir           .
 #    sed             .
0=*|x seq             .
0=*|x setsid          .
0=*|x sha1sum         .
0=* x sha224sum       .
0=*|x sha256sum       .
0=* x sha238sum       .
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           (-p)
0=*|x yes             .

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