suckless unix tools
Go to file
Wolfgang Corcoran-Mathe 00883efc16 join: fix typo 2015-05-09 20:29:52 +01:00
libutf
libutil libutil/getlines: fix potential crash 2015-05-08 16:38:06 +01:00
LICENSE
Makefile add which 2015-04-27 16:58:42 +01:00
README Refactor and audit which(1) 2015-04-27 19:33:57 +01:00
TODO
arg.h
basename.1
basename.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
cal.1
cal.c
cat.1
cat.c
chgrp.1
chgrp.c
chmod.1
chmod.c
chown.1
chown.c
chroot.1
chroot.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
cksum.1
cksum.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
cmp.1
cmp.c
col.1
col.c
cols.1
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
date.c
dirname.1
dirname.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
du.1
du.c include stdint.h for SIZE_MAX 2015-04-29 22:25:03 +01:00
echo.1
echo.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
env.1
env.c
expand.1
expand.c
expr.1
expr.c expr: Don't interpret any arguments 2015-04-21 17:09:20 +01:00
false.1
false.c
find.1
find.c
fold.1
fold.c
fs.h
grep.1
grep.c
head.1
head.c
hostname.1
hostname.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
join.1 join manpage: Fix spelling 2015-05-05 10:53:42 +01:00
join.c join: fix typo 2015-05-09 20:29:52 +01:00
kill.1
kill.c kill: Include strings.h for strcasecmp() 2015-04-29 16:42:49 +01:00
link.1
link.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
ln.1
ln.c ln: exit non-zero when errors accured 2015-05-08 10:06:58 +01:00
logger.1
logger.c
logname.1
logname.c
ls.1
ls.c Convert humansize() to accept a size_t instead of a double 2015-04-25 11:43:14 +01:00
md5.h
md5sum.1
md5sum.c
mkdir.1
mkdir.c Move mkdirp() to libutil 2015-04-20 18:04:08 +01:00
mkfifo.1
mkfifo.c
mktemp.1
mktemp.c
mv.1
mv.c
nice.1
nice.c
nl.1
nl.c
nohup.1
nohup.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
paste.1
paste.c
printenv.1
printenv.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
printf.1
printf.c Add flag support to printf(1) 2015-04-27 19:33:57 +01:00
pwd.1
pwd.c
queue.h
readlink.1
readlink.c
renice.1
renice.c
rm.1
rm.c
rmdir.1
rmdir.c
sed.1
sed.c
seq.1
seq.c
setsid.1
setsid.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
sha1.h
sha1sum.1
sha1sum.c
sha256.h
sha256sum.1
sha256sum.c
sha512.h
sha512sum.1
sha512sum.c
sleep.1
sleep.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
sort.1
sort.c sort: reuse buffer in columns() 2015-05-07 18:18:35 +01:00
split.1
split.c
sponge.1
sponge.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
strings.1
strings.c
sync.1
sync.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
tail.1
tail.c
tar.1 Clarify that compression is now supported in tar.1 2015-05-08 15:56:21 +01:00
tar.c tar: ignore more crazy GNU PAX header crap 2015-05-08 21:36:40 +01:00
tee.1
tee.c
test.1
test.c
text.h
time.1
time.c
touch.1
touch.c
tr.1
tr.c tr: Fix -c option when translating 2015-04-27 17:16:37 +01:00
true.1
true.c
tty.1
tty.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
uname.1
uname.c Update putword() to accept a FILE * 2015-04-21 18:00:47 +01:00
unexpand.1
unexpand.c
uniq.1
uniq.c
unlink.1
unlink.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
utf.h
util.h Use off_t in humansize() as it is more descriptive and applicable 2015-04-29 16:42:49 +01:00
uudecode.1
uudecode.c
uuencode.1
uuencode.c
wc.1
wc.c
which.1 Refactor and audit which(1) 2015-04-27 19:33:57 +01:00
which.c which: Add LICENSE header 2015-04-27 19:33:57 +01:00
xargs.1
xargs.c xargs: Don't print trailing spaces when -t is set 2015-04-21 18:00:48 +01:00
yes.1
yes.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00

README

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

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

The following tools are implemented:

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

     UTILITY     MISSING FLAGS
     -------     -------------
=*|o basename    .
=*|o cal         .
=*|o cat         .
=*|o chgrp       .
=*|o chmod       .
=*|o chown       .
=*|x chroot      .
=*|o cksum       .
=*|o cmp         .
#*|x cols        .
#*|x col         .
=*|o comm        .
=*|o cp          (-i)
=*|x cron        .
#*|o cut         .
=*|o date        .
=*|o dirname     .
=*|o du          .
=*|o echo        .
=*|o env         .
#*|o expand      .
#*|o expr        .
=*|o false       .
=    find        .
#*|o fold        .
=* o grep        .
=*|o head        .
=*|x hostname    .
=* o join        .
=*|o kill        .
=*|o link        .
=*|o ln          .
=*|o logger      .
=*|o logname     .
#* o ls          (-C, -k, -m, -p, -s, -x)
=*|x md5sum      .
=*|o mkdir       .
=*|o mkfifo      .
=*|x mktemp      .
=*|o mv          (-i)
=*|o nice        .
#*|o nl          .
=*|o nohup       .
#*|o paste       .
=*|x printenv    .
#*|o printf      .
=*|o pwd         .
=*|x readlink    .
=*|o renice      .
=*|o rm          (-i)
=*|o rmdir       .
#    sed         .
=*|x seq         .
=*|x setsid      .
=*|x sha1sum     .
=*|x sha256sum   .
=*|x sha512sum   .
=*|o sleep       .
     sort        -d, -f, -i
=*|o split       .
=*|x sponge      .
#*|o strings     .
=*|x sync        .
=*|o tail        .
=*|x tar         .
=*|o tee         .
=*|o test        .
=*|o time        .
=*|o touch       .
#*|o tr          .
=*|o true        .
=*|o tty         .
=*|o uname       .
#*|o unexpand    .
=*|o uniq        .
=*|o unlink      .
=*|o uudecode    .
=*|o uuencode    .
#*|o wc          .
=*|x which       .
=*|o xargs       (-p)
=*|x yes         .

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.

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