suckless unix tools
Go to file
Hiltjo Posthuma 318ed94f63 chown.1, strings.1: fix date 2015-02-28 13:43:29 +01:00
libutf Add mkrunetype.awk 2015-02-23 20:36:47 +01:00
libutil
LICENSE
Makefile make rule: sbase-box-install 2015-02-28 13:30:06 +01:00
README add time. do not mark complete/POSIX compliant as exit status is wrong. 2015-02-27 21:39:50 +00:00
TODO Remove tabs(1) from TODO 2015-02-26 10:36:55 +01:00
arg.h
basename.1
basename.c
cal.1
cal.c
cat.1
cat.c
chgrp.1
chgrp.c
chmod.1
chmod.c
chown.1 chown.1, strings.1: fix date 2015-02-28 13:43:29 +01:00
chown.c
chroot.1
chroot.c
cksum.1
cksum.c
cmp.1
cmp.c
cols.1
cols.c
comm.1
comm.c
compat.h
config.mk Add info about NetBSD to config.mk 2015-02-20 16:24:17 +00:00
cp.1
cp.c
cron.1
cron.c
crypt.h
cut.1
cut.c
date.1
date.c
dirname.1
dirname.c
du.1
du.c
echo.1
echo.c
env.1
env.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
expand.1
expand.c
expr.1
expr.c Don't break the coding-style 2015-02-26 19:07:02 +01:00
false.1
false.c
find.c a bunch of cleanup 2015-02-25 10:11:55 +00:00
fold.1
fold.c
fs.h
grep.1
grep.c Include strings.h for strcasecmp() 2015-02-20 16:00:58 +00:00
head.1
head.c
hostname.1
hostname.c
kill.1
kill.c Include strings.h for strcasecmp() 2015-02-20 16:00:58 +00:00
link.1
link.c
ln.1
ln.c
logger.1
logger.c Include strings.h for strcasecmp() 2015-02-20 16:00:58 +00:00
logname.1
logname.c
ls.1 ls: add -n option 2015-02-22 12:30:47 +00:00
ls.c ls: add -n option 2015-02-22 12:30:47 +00:00
md5.h
md5sum.1
md5sum.c
mkdir.1
mkdir.c
mkfifo.1
mkfifo.c
mktemp.1
mktemp.c
mv.1
mv.c
nice.1
nice.c
nl.1 Implement nl -n format 2015-02-20 14:12:48 +00:00
nl.c Implement nl -n format 2015-02-20 14:12:48 +00:00
nohup.1
nohup.c
paste.1
paste.c
printenv.1
printenv.c
printf.1
printf.c
pwd.1
pwd.c
queue.h
readlink.1
readlink.c
renice.1
renice.c
rm.1
rm.c
rmdir.1
rmdir.c
sed.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
seq.1
seq.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
setsid.1
setsid.c
sha1.h
sha1sum.1
sha1sum.c
sha256.h
sha256sum.1
sha256sum.c
sha512.h
sha512sum.1
sha512sum.c
sleep.1
sleep.c
sort.1
sort.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
split.1
split.c
sponge.1
sponge.c
strings.1 chown.1, strings.1: fix date 2015-02-28 13:43:29 +01:00
strings.c
sync.1
sync.c
tail.1
tail.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
tar.1
tar.c
tee.1
tee.c
test.1
test.c re-typedef Test, use NOTREACHED comment instead of comma operator, both as per style guide 2015-02-25 21:08:35 +00:00
text.h
time.c time(1) cleanup 2015-02-27 21:43:11 +00:00
touch.1
touch.c
tr.1
tr.c
true.1
true.c
tty.1
tty.c
uname.1
uname.c
unexpand.1
unexpand.c
uniq.1
uniq.c
unlink.1
unlink.c
utf.h
util.h
uudecode.1
uudecode.c uudecode: fix no newline before EOF 2015-02-20 14:36:50 +01:00
uuencode.1
uuencode.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
wc.1
wc.c
xargs.1
xargs.c
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 following tools are implemented ('*' == finished, '#' == UTF-8 support,
'=' == implicit UTF-8 support):

   UTILITY         POSIX 2008 COMPLIANT         MISSING OPTIONS
   -------         --------------------         ---------------
=* basename        yes                          none
=* cal             yes                          none
=* cat             yes                          none
=* chgrp           yes                          none
=* chmod           yes                          none
=* chown           yes                          none
=* chroot          non-posix                    none
=* cksum           yes                          none
=* cmp             yes                          none
#* cols            non-posix                    none
=* comm            yes                          none
=  cp              yes                          none (-i)
=* cron            non-posix                    none
#* cut             yes                          none
=* date            yes                          -u
=* dirname         yes                          none
=* du              yes                          none
=* echo            yes                          none
=* env             yes                          none
#* expand          yes                          none
#* expr            yes                          none
=* false           yes                          none
=  find            yes                          none
#* fold            yes                          none
=* grep            yes                          none
=* head            yes                          none
=* hostname        non-posix                    none
=* kill            yes                          none
=* link            yes                          none
=* ln              yes                          none
=* logger          yes                          none
=* logname         yes                          none
=  ls              no                           (-C), -S, -f, -m, -s, -x
=* md5sum          non-posix                    none
=* mkdir           yes                          none
=* mkfifo          yes                          none
=* mktemp          non-posix                    none
=* mv              yes                          none (-i)
=* nice            yes                          none
=  nl              no                           -d, -f, -h, -l, -p
=* nohup           yes                          none
#* paste           yes                          none
=* printenv        non-posix                    none
#* printf          yes                          none
=* pwd             yes                          none
=  readlink        non-posix                    none
=* renice          yes                          none
=* rm              yes                          none (-i)
=* rmdir           yes                          none
#  sed
   seq             non-posix                    none
=* setsid          non-posix                    none
=  sha1sum         non-posix                    none
=  sha256sum       non-posix                    none
=  sha512sum       non-posix                    none
=* sleep           yes                          none
   sort            no                           -m, -o, -d, -f, -i
=* split           yes                          none
=* sponge          non-posix                    none
#* strings         yes                          none
=* sync            non-posix                    none
=* tail            yes                          none
=* tar             non-posix                    none
=* tee             yes                          none
=* test            yes                          none
=  time            no                           none (incorrect exit status)
=* touch           yes                          none
#* tr              yes                          none
=* true            yes                          none
=* tty             yes                          none
=* uname           yes                          none
#* unexpand        yes                          none
=* uniq            yes                          none
=* unlink          yes                          none
=* uudecode        yes                          none
=* uuencode        yes                          none
#* wc              yes                          none
=  xargs           no                           -I, -L, -p, -s, -t, -x
=* yes             non-posix                    none

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.

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/