suckless unix tools
Go to file
Mattias Andrée d9c85a2d79 Makefile: add sbase-box-uninstall rule
Signed-off-by: Mattias Andrée <maandree@kth.se>
2016-02-15 09:49:54 +00:00
libutf Add mkrunetype.awk 2015-02-23 20:36:47 +01:00
libutil Check argv0 in xvprintf() 2015-12-21 14:13:36 +00:00
LICENSE Add Eivind Uggedal to LICENSE 2016-02-15 09:42:59 +00:00
Makefile Makefile: add sbase-box-uninstall rule 2016-02-15 09:49:54 +00:00
README New command with corresponding man page. Includes the flags: 2016-02-15 09:41:58 +00:00
TODO New command with corresponding man page. Includes the flags: 2016-02-15 09:41:58 +00:00
arg.h
basename.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
basename.c
cal.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cal.c cal: Highlight current day 2015-11-21 10:20:07 +00:00
cat.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cat.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
chgrp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chgrp.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
chmod.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chmod.c
chown.1 chown: fix user:group option parsing 2015-12-21 19:07:51 +00:00
chown.c chown: fix user:group option parsing 2015-12-21 19:07:51 +00:00
chroot.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chroot.c
cksum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cksum.c
cmp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cmp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
cols.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cols.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
comm.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
comm.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
compat.h
config.mk Use -D_FILE_OFFSET_BITS=64 by default 2015-11-13 11:01:00 +00:00
cp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
cron.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cron.c Sync cron with latest scron 2015-11-06 11:01:00 +00:00
crypt.h
cut.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cut.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
date.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
date.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
dirname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
dirname.c
du.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
du.c Fix type mismatches 2015-11-26 10:35:46 +00:00
echo.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
echo.c
ed.1 Add ed(1) - the standard text editor 2015-12-14 12:14:52 +00:00
ed.c Do not try to rematch patterns with ^ or $ 2016-01-23 08:38:03 +00:00
env.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
env.c env: Check unsetenv() return value 2015-11-06 10:52:49 +00:00
expand.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
expand.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
expr.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
expr.c
false.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
false.c
find.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
find.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
flock.1 Implement -o for flock(1) to close fd before exec 2015-10-26 11:55:41 +00:00
flock.c flock: Check for waitpid() error 2015-12-21 14:13:36 +00:00
fold.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
fold.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
fs.h
getconf.1 getconf.1: fix: end list (El) 2015-10-10 01:18:24 +02:00
getconf.c Fix getconf(1) usage 2015-12-15 08:45:39 +00:00
getconf.sh No need for using a sub-shell in getconf.sh 2015-12-15 09:46:06 +00:00
grep.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
grep.c grep: Change match any pattern to "^" 2016-01-20 17:27:35 +00:00
head.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
head.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
hostname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
hostname.c
join.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
join.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
kill.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
kill.c
link.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
link.c
ln.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
ln.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
logger.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
logger.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
logname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
logname.c
ls.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
ls.c ls: fix time handling by augmenting time resolution 2015-11-01 17:29:39 +00:00
md5.h
md5sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
md5sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mkdir.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mkdir.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mkfifo.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mkfifo.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mktemp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mktemp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mv.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mv.c mv: Ensure stat is initialized when we prune a tree 2015-11-13 14:21:07 +00:00
nice.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nice.c Check if PRIO_MIN and PRIO_MAX are defined 2015-12-15 17:05:21 +00:00
nl.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nl.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
nohup.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nohup.c
od.1 od: document skip (-j) option 2015-11-06 10:18:56 +00:00
od.c od: document skip (-j) option 2015-11-06 10:18:56 +00:00
paste.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
paste.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
pathchk.1 Fix pathchk manpage regarding exit status 2016-02-11 10:09:38 +00:00
pathchk.c Fix pathchk manpage regarding exit status 2016-02-11 10:09:38 +00:00
printenv.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
printenv.c
printf.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
printf.c
pwd.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
pwd.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
queue.h
readlink.1 readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
readlink.c readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
renice.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
renice.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
rm.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
rm.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
rmdir.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
rmdir.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sed.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sed.c fix problems in sed 2016-02-14 15:05:18 +00:00
seq.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
seq.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
setsid.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
setsid.c
sha1.h
sha1sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sha1sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sha256.h
sha256sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sha256sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sha512.h
sha512sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sha512sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sleep.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sleep.c
sort.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sort.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
split.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
split.c Fix type mismatch in split(1) 2015-11-26 10:35:46 +00:00
sponge.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sponge.c
strings.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
strings.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sync.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sync.c
tail.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tail.c tail: Fix operation with +n argument 2015-11-02 21:09:36 +00:00
tar.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tar.c tar: don't change modes for hardlinks on extraction 2016-02-15 09:41:58 +00:00
tee.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tee.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
test.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
test.c
text.h
tftp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tftp.c Include sys/time.h for timeval structure 2015-11-13 11:32:11 +00:00
time.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
time.c Fix type mismatches 2015-11-26 10:35:46 +00:00
touch.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
touch.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
tr.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tr.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
true.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
true.c
tty.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tty.c
uname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uname.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
unexpand.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
unexpand.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
uniq.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uniq.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
unlink.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
unlink.c
utf.h
util.h
uudecode.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uudecode.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
uuencode.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uuencode.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
wc.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
wc.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
which.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
which.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
whoami.1 Add whoami(1) 2015-12-14 10:14:07 +00:00
whoami.c Fix style issue in whoami which broke the sbase-box target 2015-12-14 11:59:48 +00:00
xargs.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
xargs.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
xinstall.1 install: bsd make compatibility 2016-02-15 09:41:58 +00:00
xinstall.c install: bsd make compatibility 2016-02-15 09:41:58 +00:00
yes.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
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:

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

     UTILITY     MISSING
     -------     -------
=*|o basename    .
=*|o cal         .
=*|o cat         .
=*|o chgrp       .
=*|o chmod       .
=*|o chown       .
=*|x chroot      .
=*|o cksum       .
=*|o cmp         .
#*|x cols        .
=*|o comm        .
=*|o cp          (-i)
=*|x cron        .
#*|o cut         .
=*|o date        .
=*|o dirname     .
=*|o du          .
=*|o echo        .
   o ed          .
=*|o env         .
#*|o expand      .
#*|o expr        .
=*|o false       .
=    find        .
=* x flock       .
#*|o fold        .
=*|o getconf     (-v)
=*|o grep        .
=*|o head        .
=*|x hostname    .
=*|x install     .
=* 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 od          .
#* o pathchk     .
#*|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       .
#*|o sort        (-d, -f, -i)
=*|o split       .
=*|x sponge      .
#*|o strings     .
=*|x sync        .
=*|o tail        .
=*|x tar         .
=*|o tee         .
=*|o test        .
=*|x tftp        .
=*|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       .
=*|x whoami      .
=*|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/