Minor doc fix. Added several bugs to the todo list. Fixed the way init
[oweals/busybox.git] / docs / busybox.pod
index d189ce577919dcf3bd17bda39a0fe1f943410004..d6b475c99f12faeca61876b28d83e44913fe01db 100644 (file)
+# vi: set sw=4 ts=4:
+
 =head1 NAME
 
-busybox - I am BusyBox of borg.  Unix will be assimilated.
+BusyBox - The Swiss Army Knife of Embedded Linux
+
+=head1 SYNTAX
+
+ BusyBox <function> [arguments...]  # or
+
+ <function> [arguments...]         # if symlinked
+
+=head1 DESCRIPTION
+
+BusyBox combines tiny versions of many common UNIX utilities into a single
+small executable. It provides minimalist replacements for most of the utilities
+you usually find in fileutils, shellutils, findutils, textutils, grep, gzip,
+tar, etc.  BusyBox provides a fairly complete POSIX environment for any small
+or emdedded system.  The utilities in BusyBox generally have fewer options then
+their full featured GNU cousins; however, the options that are included provide
+the expected functionality and behave very much like their GNU counterparts.  
+
+BusyBox has been written with size-optimization and limited resources in mind.
+It is also extremely modular so you can easily include or exclude commands (or
+features) at compile time.  This makes it easy to customize your embedded
+systems.  To create a working system, just add a kernel, a shell (such as ash),
+and an editor (such as elvis-tiny or ae).
+
+=head1 USAGE
+
+When you create a link to BusyBox for the function you wish to use, when BusyBox
+is called using that link it will behave as if the command itself has been invoked.
+
+For example, entering
+
+       ln -s ./BusyBox ls
+       ./ls
+
+will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
+into BusyBox).  
+
+You can also invoke BusyBox by issuing the command as an argument on the
+command line.  For example, entering
+
+       ./BusyBox ls
+
+will also cause BusyBox to behave as 'ls'. 
+
+=head1 COMMON OPTIONS
+
+Most BusyBox commands support the B<--help> option to provide a
+terse runtime description of their behavior. 
+
+=head1 COMMANDS
+
+Currently defined functions include:
+
+basename, cat, chgrp, chmod, chown, chroot, clear, chvt, cp, cut, date, dd, df,
+dirname, dmesg, du, dutmp, echo, false, fbset, fdflush, find, free,
+freeramdisk, deallocvt, fsck.minix, grep, gunzip, gzip, halt, head, hostid,
+hostname, id, init, kill, killall, length, ln, loadacm, loadfont, loadkmap,
+logger, logname, ls, lsmod, makedevs, math, mkdir, mkfifo, mkfs.minix, mknod,
+mkswap, mktemp, nc, more, mount, mt, mv, nslookup, ping, poweroff, printf, ps,
+pwd, reboot, rm, rmdir, rmmod, sed, setkeycodes, sh, sfdisk, sleep, sort, sync,
+syslogd, swapon, swapoff, tail, tar, test, tee, touch, tr, true, tty, umount,
+uname, uniq, update, uptime, usleep, wc, whoami, yes, zcat, [
+
+-------------------------------
+
+=over 4
+
+=item basename
+
+Usage: basename FILE [SUFFIX]
+
+Strips directory path and suffixes from FILE.
+If specified, also removes any trailing SUFFIX.
+
+Example: 
+
+       $ basename /usr/local/bin/foo
+       foo
+       $ basename /usr/local/bin/
+       bin
+       $ basename /foo/bar.txt .txt
+       bar
+
+-------------------------------
+
+=item cat  
+
+Usage: cat [FILE ...]
+
+Concatenates FILE(s) and prints them to the standard output.
+
+Example:
+
+       $ cat /proc/uptime
+       110716.72 17.67
+
+-------------------------------
+
+=item chgrp
+
+Usage: chgrp [OPTION]... GROUP FILE...
+
+Change the group membership of each FILE to GROUP.
+
+Options:
+
+       -R      change files and directories recursively
+
+Example:
+
+       $ ls -l /tmp/foo
+       -r--r--r--    1 andersen andersen        0 Apr 12 18:25 /tmp/foo
+       $ chgrp root /tmp/foo
+       $ ls -l /tmp/foo
+       -r--r--r--    1 andersen root            0 Apr 12 18:25 /tmp/foo
+
+-------------------------------
+
+=item chmod
+
+Usage: chmod [B<-R>] MODE[,MODE]... FILE...
+
+Changes file access permissions for the specified FILE(s) (or directories).
+Each MODE is defined by combining the letters for WHO has access to the file,
+an OPERATOR for selecting how the permissions should be changed, and a
+PERISSION for FILE(s) (or directories).
+
+WHO may be chosen from
+
+       u       User who owns the file
+       g       Users in the file's Group
+       o       Other users not in the file's group
+       a       All users
+
+OPERATOR may be chosen from
+
+       +       Add a permission
+       -       Remove a permission
+       =       Assign a permission
+PERMISSION may be chosen from
+
+       r       Read
+       w       Write
+       x       Execute (or access for directories)
+       s       Set user (or group) ID bit
+       t       Stickey bit (for directories prevents removing files by non-owners)
+
+Alternately, permissions can be set numerically where the first three
+numbers are calculated by adding the octal values, such as
+
+       4       Read
+       2       Write
+       1       Execute
+
+An optional fourth digit can also be used to specify
+
+       4       Set user ID
+       2       Set group ID
+       1       Stickey bit
+
+Options:
+
+       -R      Change files and directories recursively.
+Example:
+
+       $ ls -l /tmp/foo
+       -rw-rw-r--    1 root     root            0 Apr 12 18:25 /tmp/foo
+       $ chmod u+x /tmp/foo
+       $ ls -l /tmp/foo
+       -rwxrw-r--    1 root     root            0 Apr 12 18:25 /tmp/foo*
+       $ chmod 444 /tmp/foo
+       $ ls -l /tmp/foo
+       -r--r--r--    1 root     root            0 Apr 12 18:25 /tmp/foo
+
+-------------------------------
+
+=item chown
+
+Usage: chown [OPTION]...  OWNER[<.|:>[GROUP] FILE...
+
+Changes the owner and/or group of each FILE to OWNER and/or GROUP.
+
+Options:
+
+       -R      Changes files and directories recursively
+
+Example:
+
+       $ ls -l /tmp/foo
+       -r--r--r--    1 andersen andersen        0 Apr 12 18:25 /tmp/foo
+       $ chown root /tmp/foo
+       $ ls -l /tmp/foo
+       -r--r--r--    1 root     andersen        0 Apr 12 18:25 /tmp/foo
+       $ chown root.root /tmp/foo
+       ls -l /tmp/foo
+       -r--r--r--    1 root     root            0 Apr 12 18:25 /tmp/foo
+
+-------------------------------
+
+=item chroot
+
+Usage: chroot NEWROOT [COMMAND...]
+
+Run COMMAND with root directory set to NEWROOT.
+Example:
+
+       $ ls -l /bin/ls
+       lrwxrwxrwx    1 root     root          12 Apr 13 00:46 /bin/ls -> /BusyBox
+       $ mount /dev/hdc1 /mnt -t minix
+       $ chroot /mnt
+       $ ls -l /bin/ls
+       -rwxr-xr-x    1 root     root        40816 Feb  5 07:45 /bin/ls*
+
+-------------------------------
+
+=item clear
+
+Clears the screen.
+
+-------------------------------
+
+=item chvt
+
+Usage: chvt N
+
+Changes the foreground virtual terminal to /dev/ttyN
+
+-------------------------------
+
+=item cp
+
+Usage: cp [OPTION]... SOURCE DEST
+
+   or: cp [OPTION]... SOURCE... DIRECTORY
+
+Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
+
+Options:
+
+        -a      Same as -dpR
+        -d      Preserves links
+        -p      Preserves file attributes if possable
+        -R      Copies directories recursively
+
+-------------------------------
+
+=item cut
+
+Usage: cut [OPTION]... [FILE]...
+
+Prints selected fields from each input FILE to standard output.
+
+Options:
+
+        -b LIST Output only bytes from LIST
+        -c LIST Output only characters from LIST
+        -d DELIM        Use DELIM instead of tab as the field delimiter
+        -f N    Print only these fields
+        -n      Ignored
+
+Example:
+
+       $ echo "Hello world" | cut -f 1 -d ' '
+       Hello
+       $ echo "Hello world" | cut -f 2 -d ' '
+       world
+
+
+-------------------------------
+
+=item date
+
+Usage: date [OPTION]... [+FORMAT]
+
+  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
+
+Displays the current time in the given FORMAT, or sets the system date.
+
+Options:
+
+        -R      Outputs RFC-822 compliant date string
+        -s      Sets time described by STRING
+        -u      Prints or sets Coordinated Universal Time
+
+Example:
+
+       $ date
+       Wed Apr 12 18:52:41 MDT 2000
+
+-------------------------------
+
+=item dd
+
+Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n]
+
+Copy a file, converting and formatting according to options
+
+       if=FILE read from FILE instead of stdin
+       of=FILE write to FILE instead of stdout
+       bs=n    read and write n bytes at a time
+       count=n copy only n input blocks
+       skip=n  skip n input blocks
+       seek=n  skip n output blocks
+
+Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)
+Example:
+
+       $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
+       4+0 records in
+       4+0 records out
+
+-------------------------------
+
+=item df
+
+Usage: df [filesystem ...]
+
+Prints the filesystem space used and space available.
+
+Example:
+
+       $ df
+       Filesystem           1k-blocks      Used Available Use% Mounted on
+       /dev/sda3              8690864   8553540    137324  98% /
+       /dev/sda1                64216     36364     27852  57% /boot
+       $ df /dev/sda3
+       Filesystem           1k-blocks      Used Available Use% Mounted on
+       /dev/sda3              8690864   8553540    137324  98% /
+
+-------------------------------
+
+=item dirname
+
+Usage: dirname NAME
+
+Strip non-directory suffix from file name
+
+Example:
+
+       $ dirname /tmp/foo
+       /tmp
+       $ dirname /tmp/foo/
+       /tmp
+
+-------------------------------
+
+=item dmesg
+
+Usage: dmesg [B<-c>] [B<-n> level] [B<-s> bufsize]
+Print or controls the kernel ring buffer.
+
+-------------------------------
+
+=item du
+
+Usage: du [OPTION]... [FILE]...
+
+Summarize disk space used for each FILE and/or directory.
+Disk space is printed in units of 1k (i.e. 1024 bytes).
+
+Options:
+
+       -l      count sizes many times if hard linked
+       -s      display only a total for each argument
+
+Example:
+
+       $ ./BusyBox du
+       16      ./CVS
+       12      ./kernel-patches/CVS
+       80      ./kernel-patches
+       12      ./tests/CVS
+       36      ./tests
+       12      ./scripts/CVS
+       16      ./scripts
+       12      ./docs/CVS
+       104     ./docs
+       2417    .
+        
+-------------------------------
+
+=item dutmp
+
+Usage: dutmp [FILE]
+
+Dump utmp file format (pipe delimited) from FILE
+or stdin to stdout.
+
+Example:
+
+       $ dutmp /var/run/utmp
+       8|7||si|||0|0|0|955637625|760097|0
+       2|0|~|~~|reboot||0|0|0|955637625|782235|0
+       1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
+       8|125||l4|||0|0|0|955637629|998367|0
+       6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
+       6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
+       7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
+        
+-------------------------------
+
+=item echo
+
+Usage: echo [-neE] [ARG ...]
+
+Prints the specified ARGs to stdout
+
+Options:
+
+       -n      suppress trailing newline
+       -e      interpret backslash-escaped characters (i.e. \t=tab etc)
+       -E      disable interpretation of backslash-escaped characters
+
+Example:
+
+       $ echo "Erik is cool"
+       Erik is cool
+       $  echo -e "Erik\nis\ncool"
+       Erik
+       is
+       cool
+       $ echo "Erik\nis\ncool"
+       Erik\nis\ncool
+        
+-------------------------------
+
+=item false
+
+Returns an exit code of FALSE (1)
+
+Example:
+
+       $ false
+       $ echo $?
+       1
+
+-------------------------------
+
+=item fbset
+
+Usage: fbset [options] [mode]
+
+Show and modify frame buffer device settings
+
+Options:
+
+       -h
+       -fb
+       -db
+       -a
+       -i
+       -g
+       -t
+       -accel
+       -hsync
+       -vsync
+       -laced
+       -double
+
+Example:
+
+       $ fbset
+       mode "1024x768-76"
+                       # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
+                       geometry 1024 768 1024 768 16
+                       timings 12714 128 32 16 4 128 4
+                       accel false
+                       rgba 5/11,6/5,5/0,0/0
+       endmode
+
+-------------------------------
+
+=item fdflush
+
+Usage: fdflush device
+
+Force floppy disk drive to detect disk change
+
+-------------------------------
+
+=item find
+
+Usage: find [PATH...] [EXPRESSION]
+
+Search for files in a directory hierarchy.  The default PATH is
+the current directory; default EXPRESSION is '-print'
+
+
+EXPRESSION may consist of:
+
+       -follow                 Dereference symbolic links.
+       -name PATTERN   File name (leading directories removed) matches PATTERN.
+       -print                  print the full file name followed by a newline to stdout.
+
+Example:
+
+       $ find / -name /etc/passwd
+       /etc/passwd
+
+-------------------------------
+
+=item free
+
+Usage: free
+
+Displays the amount of free and used system memory.
+
+Example:
+
+       $ free
+                                 total         used         free       shared      buffers
+         Mem:       257628       248724         8904        59644        93124
+        Swap:       128516         8404       120112
+       Total:       386144       257128       129016
+
+-------------------------------
+
+=item freeramdisk
+
+Usage: freeramdisk DEVICE
+
+Frees all memory used by the specified ramdisk.
+
+Example:
+
+       $ freeramdisk /dev/ram2
+
+-------------------------------
+
+=item deallocvt
+
+Usage: deallocvt N
+
+Deallocates unused virtual terminal /dev/ttyN
+
+-------------------------------
+
+=item fsck.minix
+
+Usage: fsck.minix [B<-larvsmf>] /dev/name
+
+Performs a consistency check for MINIX filesystems.
+
+OPTIONS:
+
+       -l      Lists all filenames
+       -r      Perform interactive repairs
+       -a      Perform automatic repairs
+       -v      verbose
+       -s      Outputs super-block information
+       -m      Activates MINIX-like "mode not cleared" warnings
+       -f      Force file system check.
+
+-------------------------------
+
+=item grep
+
+Usage: grep [OPTIONS]... PATTERN [FILE]...
+
+Search for PATTERN in each FILE or standard input.
+
+OPTIONS:
+
+       -h      suppress the prefixing filename on output
+       -i      ignore case distinctions
+       -n      print line number with output lines
+       -q      be quiet. Returns 0 if result was found, 1 otherwise
+       -v      select non-matching lines
+
+This version of grep matches full regular expresions.
+
+Example:
+
+       $ grep root /etc/passwd
+       root:x:0:0:root:/root:/bin/bash
+       $ grep ^[rR]oo. /etc/passwd
+       root:x:0:0:root:/root:/bin/bash
+
+-------------------------------
+
+=item gunzip
+
+Usage: gunzip [OPTION]... FILE
+
+Uncompress FILE (or standard input if FILE is '-').
+
+Options:
+
+        -c      Write output to standard output
+        -t      Test compressed file integrity
+
+Example:
+
+       $ ls -la /tmp/BusyBox*
+       -rw-rw-r--    1 andersen andersen   557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
+       $ gunzip /tmp/BusyBox-0.43.tar.gz
+       $ ls -la /tmp/BusyBox*
+       -rw-rw-r--    1 andersen andersen  1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
+
+-------------------------------
+
+=item gzip
+
+Usage: gzip [OPTION]... FILE
+
+Compress FILE with maximum compression.
+When FILE is '-', reads standard input.  Implies B<-c>.
+
+Options:
+
+        -c      Write output to standard output instead of FILE.gz
+
+Example:
+
+       $ ls -la /tmp/BusyBox*
+       -rw-rw-r--    1 andersen andersen  1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
+       $ gzip /tmp/BusyBox-0.43.tar
+       $ ls -la /tmp/BusyBox*
+       -rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
+
+
+-------------------------------
+
+=item halt
+
+Usage: halt
+
+This comand halts the system.
+
+-------------------------------
+
+=item head
+
+Usage: head [OPTION] [FILE]...
+
+Print first 10 lines of each FILE to standard output.
+With more than one FILE, precede each with a header giving the
+file name. With no FILE, or when FILE is -, read standard input.
+
+Options:
+
+       -n NUM          Print first NUM lines instead of first 10
+
+Example:
+
+       $ head -n 2 /etc/passwd
+       root:x:0:0:root:/root:/bin/bash
+       daemon:x:1:1:daemon:/usr/sbin:/bin/sh
+
+-------------------------------
+
+=item hostid
+
+Usage: hostid
+
+Prints out a unique  32-bit  identifier  for  the  current
+machine.   The  32-bit identifier is intended to be unique
+among all UNIX systems in existence. 
+
+-------------------------------
+
+=item hostname
+
+Usage: hostname [OPTION] {hostname | B<-F> file}
+
+Get or set the hostname or DNS domain name. If a hostname is given
+(or a file with the B<-F> parameter), the host name will be set.
+
+Options:
+
+       -s              Short
+       -i              Addresses for the hostname
+       -d              DNS domain name
+       -F FILE         Use the contents of FILE to specify the hostname
+
+Example:
+
+       $ hostname
+       slag 
+
+-------------------------------
+
+=item id
+
+Print information for USERNAME or the current user
+
+Options:
+
+        -g      prints only the group ID
+        -u      prints only the user ID
+        -r      prints the real user ID instead of the effective ID (with -ug)
+
+Example:
+
+       $ id
+       uid=1000(andersen) gid=1000(andersen)
+
+-------------------------------
+
+=item init
+
+Usage: init
+
+Init is the parent of all processes.
+
+This version of init is designed to be run only by the kernel.
+
+BusyBox init doesn't support multiple runlevels.  The runlevels field of
+the /etc/inittab file is completely ignored by BusyBox init. If you want 
+runlevels, use sysvinit.
+
+BusyBox init works just fine without an inittab.  If no inittab is found, 
+it has the following default behavior:
+
+       ::sysinit:/etc/init.d/rcS
+       ::askfirst:/bin/sh
+
+if it detects that /dev/console is _not_ a serial console, it will also run:
+
+       tty2::askfirst:/bin/sh
+
+If you choose to use an /etc/inittab file, the inittab entry format is as follows:
+
+       <id>:<runlevels>:<action>:<process>
+
+       <id>: 
+
+               WARNING: This field has a non-traditional meaning for BusyBox init!
+               The id field is used by BusyBox init to specify the controlling tty for
+               the specified process to run on.  The contents of this field are
+               appended to "/dev/" and used as-is.  There is no need for this field to
+               be unique, although if it isn't you may have strange results.  If this
+               field is left blank, it is completely ignored.  Also note that if
+               BusyBox detects that a serial console is in use, then all entries
+               containing non-empty id fields will _not_ be run.  BusyBox init does
+               nothing with utmp.  We don't need no stinkin' utmp.
+
+       <runlevels>: 
+
+               The runlevels field is completely ignored.
+
+       <action>: 
+
+               Valid actions include: sysinit, respawn, askfirst, wait, 
+               once, and ctrlaltdel.
+
+               askfirst acts just like respawn, but before running the specified
+               process it displays the line "Please press Enter to activate this
+               console." and then waits for the user to press enter before starting
+               the specified process.
+
+               Unrecognised actions (like initdefault) will cause init to emit
+               an error message, and then go along with its business.
+
+       <process>: 
+
+               Specifies the process to be executed and it's command line.
+
+
+Example /etc/inittab file:
+
+       # This is run first except when booting in single-user mode.
+       #
+       ::sysinit:/etc/init.d/rcS
+
+       # /bin/sh invocations on selected ttys
+       #
+       # Start an "askfirst" shell on the console (whatever that may be)
+       ::askfirst:/bin/sh
+       # Start an "askfirst" shell on /dev/tty2
+       tty2::askfirst:/bin/sh
+
+       # /sbin/getty invocations for selected ttys
+       #
+       tty4::respawn:/sbin/getty 38400 tty4
+       tty5::respawn:/sbin/getty 38400 tty5
+
+
+       # Example of how to put a getty on a serial line (for a terminal)
+       #
+       #ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
+       #ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
+       #
+       # Example how to put a getty on a modem line.
+       #ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
+
+       # Stuff to do before rebooting
+       ::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
+       ::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
+
+-------------------------------
+
+=item kill
+
+Usage: kill [B<-signal>] process-id [process-id ...]
+
+Send a signal (default is SIGTERM) to the specified process(es).
+
+Options:
+
+       -l      List all signal names and numbers.
+
+Example:
+
+       $ ps | grep apache
+       252 root     root     S [apache]
+       263 www-data www-data S [apache]
+       264 www-data www-data S [apache]
+       265 www-data www-data S [apache]
+       266 www-data www-data S [apache]
+       267 www-data www-data S [apache]
+       $ kill 252
+
+-------------------------------
+
+=item killall
+
+Usage: killall [B<-signal>] process-name [process-name ...]
+
+Send a signal (default is SIGTERM) to the specified process(es).
+
+Options:
+
+        -l      List all signal names and numbers.
+
+Example:
+
+       $ killall apache
+
+-------------------------------
+
+=item length
+
+Usage: length STRING
+
+Prints out the length of the specified STRING.
+
+Example:
+
+       $ length "Hello"
+       5
+
+-------------------------------
+
+=item ln
+
+Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY
+
+Create a link named LINK_NAME or DIRECTORY to the specified TARGET
+Options:
+
+       -s      make symbolic links instead of hard links
+       -f      remove existing destination files
+Example:
+
+    $ ln -s BusyBox /tmp/ls
+    $ ls -l /tmp/ls
+    lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -> BusyBox*
+
+-------------------------------
+
+=item loadacm
+
+Usage: loadacm
+
+Loads an acm from standard input.
+
+Example:
+
+       $ loadacm < /etc/i18n/acmname
+
+-------------------------------
+
+=item loadfont
+
+Usage: loadfont
+
+Loads a console font from standard input.
+
+Example:
+
+       $ loadfont < /etc/i18n/fontname
+
+-------------------------------
+
+=item loadkmap
+
+Usage: loadkmap
+
+Loads a binary keyboard translation table from standard input.
+
+Example:
+
+       $ loadkmap < /etc/i18n/lang-keymap
+
+-------------------------------
+
+=item logger
+
+Usage: logger [OPTION]... [MESSAGE]
+
+Write MESSAGE to the system log.  If MESSAGE is '-', log stdin.
+
+Options:
+
+        -s      Log to stderr as well as the system log.
+        -t      Log using the specified tag (defaults to user name).
+        -p      Enter the message with the specified priority.
+                This may be numerical or a ``facility.level'' pair.
+
+Example:
+
+               $ logger "hello"
+
+-------------------------------
+
+=item logname
+
+Usage: logname
+
+Print the name of the current user.
+
+Example:
+
+       $ logname
+       root
+
+-------------------------------
+
+=item ls
+
+Usage: ls [B<-1acdelnpuxACF>] [filenames...]
+
+Options:
+
+       -a      do not hide entries starting with .
+       -c      with  -l:  show ctime (the time of last
+               modification of file status information)
+       -d      list directory entries instead of contents
+       -e      list both full date and full time
+       -l      use a long listing format
+       -n      list numeric UIDs and GIDs instead of names
+       -p      append indicator (one of /=@|) to entries
+       -u      with -l: show access time (the time of last
+               access of the file)
+       -x      list entries by lines instead of by columns
+       -A      do not list implied . and ..
+       -C      list entries by columns
+       -F      append indicator (one of */=@|) to entries
+
+-------------------------------
+
+=item lsmod
+
+Usage: lsmod
+
+Shows a list of all currently loaded kernel modules.
+
+-------------------------------
+
+=item makedevs
+
+Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]
+
+Creates a range of block or character special files
+
+TYPEs include:
+
+        b:      Make a block (buffered) device.
+        c or u: Make a character (un-buffered) device.
+        p:      Make a named pipe. MAJOR and MINOR are ignored for named pipes.
+
+FIRST specifies the number appended to NAME to create the first device.
+LAST specifies the number of the last item that should be created.
+If 's' is the last argument, the base device is created as well.
+
+Example:
+
+       $ makedevs /dev/ttyS c 4 66 2 63
+       [creates ttyS2-ttyS63]
+       $ makedevs /dev/hda b 3 0 0 8 s
+       [creates hda,hda1-hda8]
+
+-------------------------------
+
+=item math
+
+Usage: math expression ...
+
+This is a Tiny RPN calculator that understands the
+following operations: +, -, /, *, and, or, not, eor.
+
+Example:
+
+       $ math 2 2 add
+       4
+       $ math 8 8 \* 2 2 + /
+       16
+       $ math 0 1 and
+       0
+       $ math 0 1 or
+       1
+
+-------------------------------
+
+=item mkdir
+
+Usage: mkdir [OPTION] DIRECTORY...
+
+Create the DIRECTORY(ies), if they do not already exist
+
+Options:
+
+       -m      set permission mode (as in chmod), not rwxrwxrwx - umask
+       -p      no error if dir exists, make parent directories as needed
+
+Example:
+
+       $ mkdir /tmp/foo
+       $ mkdir /tmp/foo
+       /tmp/foo: File exists
+       $ mkdir /tmp/foo/bar/baz
+       /tmp/foo/bar/baz: No such file or directory
+       $ mkdir -p /tmp/foo/bar/baz
+
+-------------------------------
+
+=item mkfifo
+
+Usage: mkfifo [OPTIONS] name
+
+Creates a named pipe (identical to 'mknod name p')
+
+Options:
+
+        -m      create the pipe using the specified mode (default a=rw)
+
+-------------------------------
+
+=item mkfs.minix
+
+Usage: mkfs.minix [B<-c> | B<-l> filename] [B<-nXX>] [B<-iXX>] /dev/name [blocks]
+
+Make a MINIX filesystem.
+
+OPTIONS:
+
+       -c              Check the device for bad blocks
+       -n [14|30]      Specify the maximum length of filenames
+       -i              Specify the number of inodes for the filesystem
+       -l FILENAME     Read the bad blocks list from FILENAME
+       -v              Make a Minix version 2 filesystem
+
+-------------------------------
+
+=item mknod
+
+Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR
+
+Create a special file (block, character, or pipe).
+
+Options:
+
+        -m      create the special file using the specified mode (default a=rw)
+
+TYPEs include:
+        b:      Make a block (buffered) device.
+        c or u: Make a character (un-buffered) device.
+        p:      Make a named pipe. MAJOR and MINOR are ignored for named pipes.
+
+Example:
+
+       $ mknod /dev/fd0 b 2 0 
+       $ mknod -m 644 /tmp/pipe p
+
+-------------------------------
+
+=item mkswap
+
+Usage: mkswap [B<-c>] [B<-v0>|B<-v1>] device [block-count]
+
+Prepare a disk partition to be used as a swap partition.
+
+Options:
+
+       -c              Check for read-ability.
+       -v0             Make version 0 swap [max 128 Megs].
+       -v1             Make version 1 swap [big!] (default for kernels > 2.1.117).
+       block-count     Number of block to use (default is entire partition).
+
+-------------------------------
+
+=item mktemp
+
+Usage: mktemp [B<-q>] TEMPLATE
+
+Creates a temporary file with its name based on TEMPLATE.
+TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).
+
+Example:
+
+       $ mktemp /tmp/temp.XXXXXX
+       /tmp/temp.mWiLjM
+       $ ls -la /tmp/temp.mWiLjM
+       -rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM
+
+-------------------------------
+
+=item nc
+
+Usage: nc [IP] [port]
+
+Netcat opens a pipe to IP:port
+
+Example:
+
+       $ nc foobar.somedomain.com 25
+       220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
+       help
+       214-Commands supported:
+       214-    HELO EHLO MAIL RCPT DATA AUTH
+       214     NOOP QUIT RSET HELP
+       quit
+       221 foobar closing connection
+-------------------------------
+
+=item more
+
+Usage: more [file ...]
+
+More is a filter for paging through text one screenful at a time.
+
+Example:
+
+       $ dmesg | more
+
+-------------------------------
+
+=item mount
+
+Usage:  mount [flags]
+        mount [flags] device directory [B<-o> options,more-options]
+
+Flags:
+
+       -a:             Mount all file systems in fstab.
+       -o option:      One of many filesystem options, listed below.
+       -r:             Mount the filesystem read-only.
+       -t fs-type:     Specify the filesystem type.
+       -w:             Mount for reading and writing (default).
+
+Options for use with the "B<-o>" flag:
+
+       async/sync:     Writes are asynchronous / synchronous.
+       atime/noatime:  Enable / disable updates to inode access times.
+       dev/nodev:      Allow use of special device files / disallow them.
+       exec/noexec:    Allow use of executable files / disallow them.
+       loop:           Mounts a file via loop device.
+       suid/nosuid:    Allow set-user-id-root programs / disallow them.
+       remount:        Re-mount a currently-mounted filesystem, changing its flags.
+       ro/rw:          Mount for read-only / read-write.
+       There are EVEN MORE flags that are specific to each filesystem.
+       You'll have to see the written documentation for those.
+
+Example:
+
+       $ mount
+       /dev/hda3 on / type minix (rw)
+       proc on /proc type proc (rw)
+       devpts on /dev/pts type devpts (rw)
+       $ mount /dev/fd0 /mnt -t msdos -o ro
+       $ mount /tmp/diskimage /opt -t ext2 -o loop
+
+-------------------------------
+
+=item mt
+
+Usage: mt [B<-f> device] opcode value
+
+Control magnetic tape drive operation
+
+-------------------------------
+
+=item mv
+
+Usage: mv SOURCE DEST
+
+   or: mv SOURCE... DIRECTORY
+
+Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
+
+Example:
+
+       $ mv /tmp/foo /bin/bar
+
+-------------------------------
+
+=item nslookup
+
+Usage: nslookup [HOST]
+
+Queries the nameserver for the IP address of the given HOST
+
+Example:
+
+       $ nslookup localhost
+       Server:     default
+       Address:    default
+
+       Name:       debian
+       Address:    127.0.0.1
+
+-------------------------------
+
+=item ping
+
+Usage: ping [OPTION]... host
+
+Send ICMP ECHO_REQUEST packets to network hosts.
+
+Options:
+
+       -c COUNT        Send only COUNT pings.
+       -q              Quiet mode, only displays output at start
+                        and when finished.
+Example:
+
+       $ ping localhost
+       PING slag (127.0.0.1): 56 data bytes
+       64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
+
+       --- debian ping statistics ---
+       1 packets transmitted, 1 packets received, 0% packet loss
+       round-trip min/avg/max = 20.1/20.1/20.1 ms
+
+-------------------------------
+
+=item poweroff
+
+Shuts down the system, and requests that the kernel turn off power upon halting.
+
+-------------------------------
+
+=item printf
 
-=head1 SYNOPSIS
+Usage: printf format [argument...]
 
-busybox <command> [options...]
+Formats and prints the given data in a manner similar to the C printf command.
 
-=head1 DESCRIPTION
+Example:
+
+       $ printf "Val=%d\n" 5
+       Val=5
+
+-------------------------------
+
+=item ps
+
+Usage: ps
+
+Report process status
+
+This version of ps accepts no options.
+
+Example:
+
+       $ ps
+  PID  Uid      Gid State Command
+    1 root     root     S init
+    2 root     root     S [kflushd]
+    3 root     root     S [kupdate]
+    4 root     root     S [kpiod]
+    5 root     root     S [kswapd]
+  742 andersen andersen S [bash]
+  743 andersen andersen S -bash
+  745 root     root     S [getty]
+ 2990 andersen andersen R ps
+
+-------------------------------
+
+=item pwd
+
+Prints the full filename of the current working directory.
+
+Example:
+
+       $ pwd
+       /root
+
+-------------------------------
+
+=item reboot
+
+Instructs the kernel to reboot the system.
+
+-------------------------------
+
+=item rm
+
+Usage: rm [OPTION]... FILE...
+
+Remove (unlink) the FILE(s).
+
+Options:
+
+        -f              remove existing destinations, never prompt
+        -r or -R        remove the contents of directories recursively
+
+Example:
+
+       $ rm -rf /tmp/foo
+
+-------------------------------
+
+=item rmdir
+
+Usage: rmdir [OPTION]... DIRECTORY...
+
+Remove the DIRECTORY(ies), if they are empty.
+
+Example:
+
+       # rmdir /tmp/foo
+
+-------------------------------
+
+=item rmmod
+
+Usage: rmmod [OPTION]... [MODULE]...
+
+Unloads the specified kernel modules from the kernel.
+
+Options:
+
+        -a      Try to remove all unused kernel modules.
+
+Example:
+
+       $ rmmod tulip
+
+-------------------------------
+
+=item sed
+
+Usage: sed [B<-n>] B<-e> script [file...]
+
+Allowed sed scripts come in the following form:
+
+       'ADDR [!] COMMAND'
+
+       where address ADDR can be:
+         NUMBER    Match specified line number
+         $         Match last line
+         /REGEXP/  Match specified regexp
+         (! inverts the meaning of the match)
+
+       and COMMAND can be:
+         s/regexp/replacement/[igp]
+                which attempt to match regexp against the pattern space
+                and if successful replaces the matched portion with replacement.
+
+         aTEXT
+                which appends TEXT after the pattern space
+
+Options:
+
+       -e      add the script to the commands to be executed
+       -n      suppress automatic printing of pattern space
+
+This version of sed matches full regular expresions.
+
+Example:
+
+       $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
+       bar
+
+-------------------------------
+
+=item setkeycodes
+
+Usage: setkeycodes SCANCODE KEYCODE ...
+
+Set entries into the kernel's scancode-to-keycode map,
+allowing unusual keyboards to generate usable keycodes.
+
+SCANCODE may be either xx or e0xx (hexadecimal),
+and KEYCODE is given in decimal
+
+Example:
+
+       # setkeycodes e030 127
+
+-------------------------------
+
+=item sh
+
+Usage: sh
+
+lash -- the BusyBox LAme SHell (command interpreter)
+
+This command does not yet have proper documentation.  
+
+Use lash just as you would use any other shell.  It properly handles pipes,
+redirects, job control, can be used as the shell for scripts (#!/bin/sh), and
+has a sufficient set of builtins to do what is needed.  It does not (yet)
+support Bourne Shell syntax.  If you need things like "if-then-else", "while",
+and such, use ash or bash.  If you just need a very simple and extremely small
+shell, this will do the job.
+
+-------------------------------
+
+=item sfdisk
+
+Usage: sfdisk [options] device ...
+
+device: something like /dev/hda or /dev/sda
+
+useful options:
+
+    -s [or --show-size]: list size of a partition
+    -c [or --id]:        print or change partition Id
+    -l [or --list]:      list partitions of each device
+    -d [or --dump]:      idem, but in a format suitable for later input
+    -i [or --increment]: number cylinders etc. from 1 instead of from 0
+    -uS, -uB, -uC, -uM:  accept/report in units of sectors/blocks/cylinders/MB
+    -T [or --list-types]:list the known partition types
+    -D [or --DOS]:       for DOS-compatibility: waste a little space
+    -R [or --re-read]:   make kernel reread partition table
+    -N# :                change only the partition with number #
+    -n :                 do not actually write to disk
+    -O file :            save the sectors that will be overwritten to file
+    -I file :            restore these sectors again
+    -v [or --version]:   print version
+    -? [or --help]:      print this message
+
+dangerous options:
+
+    -g [or --show-geometry]: print the kernel's idea of the geometry
+    -x [or --show-extended]: also list extended partitions on output
+
+                             or expect descriptors for them on input
+    -L  [or --Linux]:      do not complain about things irrelevant for Linux
+    -q  [or --quiet]:      suppress warning messages
+    You can override the detected geometry using:
+    -C# [or --cylinders #]:set the number of cylinders to use
+    -H# [or --heads #]:    set the number of heads to use
+    -S# [or --sectors #]:  set the number of sectors to use
+
+You can disable all consistency checking with:
+
+    -f  [or --force]:      do what I say, even if it is stupid
+
+-------------------------------
+
+=item sleep
+
+Usage: sleep N
+
+Pause for N seconds.
+
+Example:
+
+       $ sleep 2
+       [2 second delay results]
+
+-------------------------------
+
+=item sort
+
+Usage: sort [B<-n>] [B<-r>] [FILE]...
+
+Sorts lines of text in the specified files
+
+Example:
+
+       $ echo -e "e\nf\nb\nd\nc\na" | sort
+       a
+       b
+       c
+       d
+       e
+       f
+
+-------------------------------
+
+=item sync
+
+Usage: sync
+
+Write all buffered filesystem blocks to disk.
+
+-------------------------------
+
+=item syslogd
+
+Usage: syslogd [OPTION]...
+
+Linux system and kernel (provides klogd) logging utility.
+Note that this version of syslogd/klogd ignores /etc/syslog.conf.
+
+Options:
+
+        -m      Change the mark timestamp interval. default=20min. 0=off
+        -n      Do not fork into the background (for when run by init)
+        -K      Do not start up the klogd process (by default syslogd spawns klogd).
+        -O      Specify an alternate log file.  default=/var/log/messages
+
+-------------------------------
+
+=item swapon
+
+Usage: swapon [OPTION] [device]
+
+Start swapping virtual memory pages on the given device.
+
+Options:
+
+        -a      Start swapping on all swap devices
+
+-------------------------------
+
+=item swapoff
+
+Usage: swapoff [OPTION] [device]
+
+Stop swapping virtual memory pages on the given device.
+
+Options:
+
+        -a      Stop swapping on all swap devices
+
+-------------------------------
+
+=item tail
+
+Usage: tail [OPTION] [FILE]...
+
+Print last 10 lines of each FILE to standard output.
+With more than one FILE, precede each with a header giving the
+file name. With no FILE, or when FILE is -, read standard input.
+
+Options:
+
+        -n NUM          Print last NUM lines instead of first 10
+        -f              Output data as the file grows.  This version
+                        of 'tail -f' supports only one file at a time.
+
+Example:
+
+       $ tail -n 1 /etc/resolv.conf
+       nameserver 10.0.0.1
+
+-------------------------------
+
+=item tar
+
+Usage: tar -[cxtvO] [B<--exclude> File] [B<-f> tarFile] [FILE] ...
+
+Create, extract, or list files from a tar file.  Note that
+this version of tar treats hard links as separate files.
+
+Main operation mode:
+
+        c               create
+        x               extract
+        t               list
+
+File selection:
+
+        f               name of tarfile or "-" for stdin
+        O               extract to stdout
+        --exclude       file to exclude
+
+Informative output:
+
+        v               verbosely list files processed
 
-BusyBox is a multi-call binary that combines many common Unix utilities into
-a single executable.  This is a size optimization.
+Example:
+
+       $ zcat /tmp/tarball.tar.gz | tar -xf -
+       $ tar -cf /tmp/tarball.tar /usr/local
+
+-------------------------------
+
+=item test, [
+
+Usage: test EXPRESSION
+or   [ EXPRESSION ]
+
+Checks file types and compares values returning an exit
+code determined by the value of EXPRESSION.
+
+Example:
+
+       $ test 1 -eq 2
+       $ echo $?
+       1
+       $ test 1 -eq 1
+       $ echo $?
+       0
+       $ [ -d /etc ]
+       $ echo $?
+       0
+       $ [ -d /junk ]
+       $ echo $?
+       1
+
+-------------------------------
+
+=item tee
+
+Usage: tee [OPTION]... [FILE]...
+
+Copy standard input to each FILE, and also to standard output.
+
+Options:
+
+        -a      append to the given FILEs, do not overwrite
+
+Example:
+
+       $ echo "Hello" | tee /tmp/foo
+       $ cat /tmp/foo
+       Hello
+
+-------------------------------
+
+=item touch
+
+Usage: touch [B<-c>] file [file ...]
+
+Update the last-modified date on (or create) the selected file[s].
+
+Example:
+
+       $ ls -l /tmp/foo
+       /bin/ls: /tmp/foo: No such file or directory
+       $ touch /tmp/foo
+       $ ls -l /tmp/foo
+       -rw-rw-r--    1 andersen andersen        0 Apr 15 01:11 /tmp/foo
+
+-------------------------------
+
+=item tr
+
+Usage: tr [-cds] STRING1 [STRING2]
+
+Translate, squeeze, and/or delete characters from
+standard input, writing to standard output.
+
+Options:
+
+       -c      take complement of STRING1
+       -d      delete input characters coded STRING1
+       -s      squeeze multiple output characters of STRING2 into one character
+
+Example:
+
+       $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
+       hello world
+
+-------------------------------
+
+=item true
+
+Returns an exit code of TRUE (0)
+
+Example:
+
+       $ true
+       $ echo $?
+       0
+
+-------------------------------
+
+=item tty
+
+Usage: tty
+
+Print the file name of the terminal connected to standard input.
+
+Options:
+
+        -s      print nothing, only return an exit status
+
+Example:
+
+       $ tty
+       /dev/tty2
+
+-------------------------------
+
+=item umount
+
+Usage: umount [flags] filesystem|directory
+
+Flags:
+
+               -a:     Unmount all file systems
+               -r:     Try to remount devices as read-only if mount is busy
+               -f:     Force filesystem umount (i.e. unreachable NFS server)
+               -l:     Do not free loop device (if a loop device has been used)
+
+Example:
+
+       $ umount /dev/hdc1 
+
+-------------------------------
+
+=item uname
+
+Usage: uname [OPTION]...
+
+Print certain system information.  With no OPTION, same as B<-s>.
+
+Options:
+
+        -a      print all information
+        -m      the machine (hardware) type
+        -n      print the machine's network node hostname
+        -r      print the operating system release
+        -s      print the operating system name
+        -p      print the host processor type
+        -v      print the operating system version
+
+Example:
+
+       $ uname -a
+       Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
+
+-------------------------------
+
+=item uniq
+
+Usage: uniq [OPTION]... [INPUT [OUTPUT]]
+
+Discard all but one of successive identical lines from INPUT
+(or standard input), writing to OUTPUT (or standard output).
+
+Example:
+
+       $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
+       a
+       b
+       c
+
+-------------------------------
+
+=item update
+
+Usage: update [options]
+
+Periodically flushes filesystem buffers.
+
+Options:
+
+        -S      force use of sync(2) instead of flushing
+        -s SECS call sync this often (default 30)
+        -f SECS flush some buffers this often (default 5)
+
+-------------------------------
+
+=item uptime
+
+Usage: uptime
+
+Tells how long the system has been running since boot.
+
+Example:
+
+       $ uptime
+         1:55pm  up  2:30, load average: 0.09, 0.04, 0.00
+
+-------------------------------
+
+=item usleep
+
+Usage: usleep N
+
+Pauses for N microseconds.
+
+Example:
+
+       $ usleep 1000000
+       [pauses for 1 second]
+
+-------------------------------
+
+=item wc
+
+Usage: wc [OPTION]... [FILE]...
+
+Print line, word, and byte counts for each FILE, and a total line if
+more than one FILE is specified.  With no FILE, read standard input.
+
+Options:
+
+        -c      print the byte counts
+        -l      print the newline counts
+        -L      print the length of the longest line
+        -w      print the word counts
+
+Example:
+
+       $ wc /etc/passwd
+            31      46    1365 /etc/passwd
+
+-------------------------------
+
+=item whoami
+
+Usage: whoami
+
+Prints the user name associated with the current effective user id.
+
+Example:
+
+       $ whoami
+       andersen
+
+-------------------------------
+
+=item yes
+
+Usage: yes [OPTION]... [STRING]...
+
+Repeatedly outputs a line with all specified STRING(s), or `y'.
+
+-------------------------------
+
+=item zcat
+
+This is essentially an alias for invoking "gunzip B<-c>", where 
+it decompresses the file inquestion and send the output to stdout. 
+
+-------------------------------
+
+=back
+
+=head1 LIBC NSS
+
+GNU Libc uses the Name Service Switch (NSS) to configure the behavior of the C
+library for the local environment, and to configure how it reads system data,
+such as passwords and group information.  BusyBox has made it Policy that it
+will never use NSS, and will never use and libc calls that make use of NSS.
+This allows you to run an embedded system without the need for installing an
+/etc/nsswitch.conf file and without and /lib/libnss_* libraries installed.
+
+If you are using a system that is using a remote LDAP server for authentication
+via GNU libc NSS, and you want to use BusyBox, then you will need to adjust the
+BusyBox source.  Chances are though, that if you have enough space to install
+of that stuff on your system, then you probably want the full GNU utilities.
 
 =head1 SEE ALSO
 
@@ -17,20 +1869,57 @@ textutils(1), shellutils(1), etc...
 
 =head1 MAINTAINER
 
-Erik Andersen <erik@lineo.com>
+Erik Andersen <andersee@debian.org> <andersen@lineo.com>
 
 =head1 AUTHORS
 
-=over 4
+The following people have contributed code to BusyBox whether
+they know it or not.
 
-=item Bruce Perens <perens@technocrat.net>
+Erik Andersen <andersee@debian.org>
 
-=item Erik Andersen <erik@lineo.com>
+=for html <br>
 
-=item Randolph Chung <rchung@debian.org>
+John Beppu <beppu@lineo.com>
 
-=item John Beppu <beppu@lineo.com>
+=for html <br>
 
-=back
+Brian Candler <B.Candler@pobox.com>
+
+=for html <br>
+
+Randolph Chung <tausq@debian.org>
+
+=for html <br>
+
+Dave Cinege <dcinege@psychosis.com>    
+
+=for html <br>
+
+Karl M. Hegbloom <karlheg@debian.org>
+
+=for html <br>
+
+John Lombardo <john@deltanet.com>      
+
+=for html <br>
+
+Bruce Perens <bruce@perens.com>
+
+=for html <br>
+
+Linus Torvalds <torvalds@transmeta.com>
+
+=for html <br>
+
+Charles P. Wright <cpwright@villagenet.com>
+
+=for html <br>
+
+Enrique Zanardi <ezanardi@ull.es>
+
+=for html <br>
 
 =cut
+
+# $Id: busybox.pod,v 1.31 2000/05/13 05:36:13 erik Exp $