<HTML>
<HEAD>
<TITLE>BusyBox - The Swiss Army Knife of Embedded Linux</TITLE>
<LINK REV="made" HREF="mailto:none">
</HEAD>

<BODY>

<!-- INDEX BEGIN -->

<UL>

	<LI><A HREF="#NAME">NAME</A>
	<LI><A HREF="#SYNTAX">SYNTAX</A>
	<LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
	<LI><A HREF="#USAGE">USAGE</A>
	<LI><A HREF="#COMMON_OPTIONS">COMMON OPTIONS</A>
	<LI><A HREF="#COMMANDS">COMMANDS</A>
	<LI><A HREF="#LIBC_NSS">LIBC NSS</A>
	<LI><A HREF="#SEE_ALSO">SEE ALSO</A>
	<LI><A HREF="#MAINTAINER">MAINTAINER</A>
	<LI><A HREF="#AUTHORS">AUTHORS</A>
</UL>
<!-- INDEX END -->

<HR>
<P>
<H1><A NAME="NAME">NAME</A></H1>
<P>
BusyBox - The Swiss Army Knife of Embedded Linux

<P>
<HR>
<H1><A NAME="SYNTAX">SYNTAX</A></H1>
<P>
<PRE> BusyBox &lt;function&gt; [arguments...]  # or
</PRE>
<P>
<PRE> &lt;function&gt; [arguments...]          # if symlinked
</PRE>
<P>
<HR>
<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
<P>
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.  

<P>
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).

<P>
<HR>
<H1><A NAME="USAGE">USAGE</A></H1>
<P>
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.

<P>
For example, entering

<P>
<PRE>        ln -s ./BusyBox ls
        ./ls
</PRE>
<P>
will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
into BusyBox).  

<P>
You can also invoke BusyBox by issuing the command as an argument on the
command line. For example, entering

<P>
<PRE>        ./BusyBox ls
</PRE>
<P>
will also cause BusyBox to behave as 'ls'. 

<P>
<HR>
<H1><A NAME="COMMON_OPTIONS">COMMON OPTIONS</A></H1>
<P>
Most BusyBox commands support the <STRONG>--help</STRONG> option to provide a terse runtime description of their behavior. 

<P>
<HR>
<H1><A NAME="COMMANDS">COMMANDS</A></H1>
<P>
Currently defined functions include:

<P>
ar, 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, [

<P>
-------------------------------

<DL>
<DT><STRONG><A NAME="item_ar">ar</A></STRONG><DD>
<P>
Usage: ar [optxvV] archive [filenames]

<P>
Extract or list files from an ar archive.

<P>
Options:

<P>
<PRE>        o               preserve original dates
        p               extract to stdout
        t               list
        x               extract
        v               verbosely list files processed
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_basename">basename</A></STRONG><DD>
<P>
Usage: basename FILE [SUFFIX]

<P>
Strips directory path and suffixes from FILE. If specified, also removes
any trailing SUFFIX.

<P>
Example: 

<P>
<PRE>        $ basename /usr/local/bin/foo
        foo
        $ basename /usr/local/bin/
        bin
        $ basename /foo/bar.txt .txt
        bar
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_cat">cat</A></STRONG><DD>
<P>
Usage: cat [FILE ...]

<P>
Concatenates <CODE>FILE(s)</CODE> and prints them to the standard output.

<P>
Example:

<P>
<PRE>        $ cat /proc/uptime
        110716.72 17.67
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_chgrp">chgrp</A></STRONG><DD>
<P>
Usage: chgrp [OPTION]... GROUP FILE...

<P>
Change the group membership of each FILE to GROUP.

<P>
Options:

<P>
<PRE>        -R      change files and directories recursively
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_chmod">chmod</A></STRONG><DD>
<P>
Usage: chmod [<STRONG>-R</STRONG>] MODE[,MODE]... FILE...

<P>
Changes file access permissions for the specified <CODE>FILE(s)</CODE> (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 <CODE>FILE(s)</CODE> (or directories).

<P>
WHO may be chosen from

<P>
<PRE>        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
</PRE>
<P>
OPERATOR may be chosen from

<P>
<PRE>        +       Add a permission
        -       Remove a permission
        =       Assign a permission
 
PERMISSION may be chosen from
</PRE>
<P>
<PRE>        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)
</PRE>
<P>
Alternately, permissions can be set numerically where the first three
numbers are calculated by adding the octal values, such as

<P>
<PRE>        4       Read
        2       Write
        1       Execute
</PRE>
<P>
An optional fourth digit can also be used to specify

<P>
<PRE>        4       Set user ID
        2       Set group ID
        1       Stickey bit
</PRE>
<P>
Options:

<P>
<PRE>        -R      Change files and directories recursively.
 
Example:
</PRE>
<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_chown">chown</A></STRONG><DD>
<P>
Usage: chown [OPTION]... OWNER[&lt;.|:&gt;[GROUP] FILE...

<P>
Changes the owner and/or group of each FILE to OWNER and/or GROUP.

<P>
Options:

<P>
<PRE>        -R      Changes files and directories recursively
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_chroot">chroot</A></STRONG><DD>
<P>
Usage: chroot NEWROOT [COMMAND...]

<P>
Run COMMAND with root directory set to NEWROOT. Example:

<P>
<PRE>        $ ls -l /bin/ls
        lrwxrwxrwx    1 root     root          12 Apr 13 00:46 /bin/ls -&gt; /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*
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_clear">clear</A></STRONG><DD>
<P>
Clears the screen.

<P>
-------------------------------

<DT><STRONG><A NAME="item_chvt">chvt</A></STRONG><DD>
<P>
Usage: chvt N

<P>
Changes the foreground virtual terminal to /dev/ttyN

<P>
-------------------------------

<DT><STRONG><A NAME="item_cp">cp</A></STRONG><DD>
<P>
Usage: cp [OPTION]... SOURCE DEST

<P>
<PRE>   or: cp [OPTION]... SOURCE... DIRECTORY
</PRE>
<P>
Copies SOURCE to DEST, or multiple <CODE>SOURCE(s)</CODE> to DIRECTORY.

<P>
Options:

<P>
<PRE>        -a      Same as -dpR
        -d      Preserves links
        -p      Preserves file attributes if possable
        -R      Copies directories recursively
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_cut">cut</A></STRONG><DD>
<P>
Usage: cut [OPTION]... [FILE]...

<P>
Prints selected fields from each input FILE to standard output.

<P>
Options:

<P>
<PRE>        -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
</PRE>
<P>
Example:

<P>
<PRE>        $ echo &quot;Hello world&quot; | cut -f 1 -d ' '
        Hello
        $ echo &quot;Hello world&quot; | cut -f 2 -d ' '
        world
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_date">date</A></STRONG><DD>
<P>
Usage: date [OPTION]... [+FORMAT]

<P>
<PRE>  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
</PRE>
<P>
Displays the current time in the given FORMAT, or sets the system date.

<P>
Options:

<P>
<PRE>        -R      Outputs RFC-822 compliant date string
        -s      Sets time described by STRING
        -u      Prints or sets Coordinated Universal Time
</PRE>
<P>
Example:

<P>
<PRE>        $ date
        Wed Apr 12 18:52:41 MDT 2000
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_dd">dd</A></STRONG><DD>
<P>
Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n]

<P>
Copy a file, converting and formatting according to options

<P>
<PRE>        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
</PRE>
<P>
Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)
Example:

<P>
<PRE>        $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
        4+0 records in
        4+0 records out
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_df">df</A></STRONG><DD>
<P>
Usage: df [filesystem ...]

<P>
Prints the filesystem space used and space available.

<P>
Example:

<P>
<PRE>        $ 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% /
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_dirname">dirname</A></STRONG><DD>
<P>
Usage: dirname NAME

<P>
Strip non-directory suffix from file name

<P>
Example:

<P>
<PRE>        $ dirname /tmp/foo
        /tmp
        $ dirname /tmp/foo/
        /tmp
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_dmesg">dmesg</A></STRONG><DD>
<P>
Usage: dmesg [<STRONG>-c</STRONG>] [<STRONG>-n</STRONG> level] [<STRONG>-s</STRONG> bufsize] Print or controls the kernel ring buffer.

<P>
-------------------------------

<DT><STRONG><A NAME="item_du">du</A></STRONG><DD>
<P>
Usage: du [OPTION]... [FILE]...

<P>
Summarize disk space used for each FILE and/or directory. Disk space is
printed in units of 1k (i.e. 1024 bytes).

<P>
Options:

<P>
<PRE>        -l      count sizes many times if hard linked
        -s      display only a total for each argument
</PRE>
<P>
Example:

<P>
<PRE>        $ ./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    .
         
-------------------------------
</PRE>
<DT><STRONG><A NAME="item_dutmp">dutmp</A></STRONG><DD>
<P>
Usage: dutmp [FILE]

<P>
Dump utmp file format (pipe delimited) from FILE or stdin to stdout.

<P>
Example:

<P>
<PRE>        $ 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
         
-------------------------------
</PRE>
<DT><STRONG><A NAME="item_echo">echo</A></STRONG><DD>
<P>
Usage: echo [-neE] [ARG ...]

<P>
Prints the specified ARGs to stdout

<P>
Options:

<P>
<PRE>        -n      suppress trailing newline
        -e      interpret backslash-escaped characters (i.e. \t=tab etc)
        -E      disable interpretation of backslash-escaped characters
</PRE>
<P>
Example:

<P>
<PRE>        $ echo &quot;Erik is cool&quot;
        Erik is cool
        $  echo -e &quot;Erik\nis\ncool&quot;
        Erik
        is
        cool
        $ echo &quot;Erik\nis\ncool&quot;
        Erik\nis\ncool
         
-------------------------------
</PRE>
<DT><STRONG><A NAME="item_false">false</A></STRONG><DD>
<P>
Returns an exit code of FALSE (1)

<P>
Example:

<P>
<PRE>        $ false
        $ echo $?
        1
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_fbset">fbset</A></STRONG><DD>
<P>
Usage: fbset [options] [mode]

<P>
Show and modify frame buffer device settings

<P>
Options:

<P>
<PRE>        -h
        -fb
        -db
        -a
        -i
        -g
        -t
        -accel
        -hsync
        -vsync
        -laced
        -double
</PRE>
<P>
Example:

<P>
<PRE>        $ fbset
        mode &quot;1024x768-76&quot;
                        # 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_fdflush">fdflush</A></STRONG><DD>
<P>
Usage: fdflush device

<P>
Force floppy disk drive to detect disk change

<P>
-------------------------------

<DT><STRONG><A NAME="item_find">find</A></STRONG><DD>
<P>
Usage: find [PATH...] [EXPRESSION]

<P>
Search for files in a directory hierarchy. The default PATH is the current
directory; default EXPRESSION is '-print'

<P>
EXPRESSION may consist of:

<P>
<PRE>        -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.
</PRE>
<P>
Example:

<P>
<PRE>        $ find / -name /etc/passwd
        /etc/passwd
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_free">free</A></STRONG><DD>
<P>
Usage: free

<P>
Displays the amount of free and used system memory.

<P>
Example:

<P>
<PRE>        $ free
                                  total         used         free       shared      buffers
          Mem:       257628       248724         8904        59644        93124
         Swap:       128516         8404       120112
        Total:       386144       257128       129016
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_freeramdisk">freeramdisk</A></STRONG><DD>
<P>
Usage: freeramdisk DEVICE

<P>
Frees all memory used by the specified ramdisk.

<P>
Example:

<P>
<PRE>        $ freeramdisk /dev/ram2
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_deallocvt">deallocvt</A></STRONG><DD>
<P>
Usage: deallocvt N

<P>
Deallocates unused virtual terminal /dev/ttyN

<P>
-------------------------------

<DT><STRONG><A NAME="item_fsck">fsck.minix</A></STRONG><DD>
<P>
Usage: fsck.minix [<STRONG>-larvsmf</STRONG>] /dev/name

<P>
Performs a consistency check for MINIX filesystems.

<P>
OPTIONS:

<P>
<PRE>        -l      Lists all filenames
        -r      Perform interactive repairs
        -a      Perform automatic repairs
        -v      verbose
        -s      Outputs super-block information
        -m      Activates MINIX-like &quot;mode not cleared&quot; warnings
        -f      Force file system check.
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_grep">grep</A></STRONG><DD>
<P>
Usage: grep [OPTIONS]... PATTERN [FILE]...

<P>
Search for PATTERN in each FILE or standard input.

<P>
OPTIONS:

<P>
<PRE>        -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
</PRE>
<P>
This version of grep matches full regular expresions.

<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_gunzip">gunzip</A></STRONG><DD>
<P>
Usage: gunzip [OPTION]... FILE

<P>
Uncompress FILE (or standard input if FILE is '-').

<P>
Options:

<P>
<PRE>        -c      Write output to standard output
        -t      Test compressed file integrity
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_gzip">gzip</A></STRONG><DD>
<P>
Usage: gzip [OPTION]... FILE

<P>
Compress FILE with maximum compression. When FILE is '-', reads standard
input. Implies <STRONG>-c</STRONG>.

<P>
Options:

<P>
<PRE>        -c      Write output to standard output instead of FILE.gz
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_halt">halt</A></STRONG><DD>
<P>
Usage: halt

<P>
This comand halts the system.

<P>
-------------------------------

<DT><STRONG><A NAME="item_head">head</A></STRONG><DD>
<P>
Usage: head [OPTION] [FILE]...

<P>
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.

<P>
Options:

<P>
<PRE>        -n NUM          Print first NUM lines instead of first 10
</PRE>
<P>
Example:

<P>
<PRE>        $ head -n 2 /etc/passwd
        root:x:0:0:root:/root:/bin/bash
        daemon:x:1:1:daemon:/usr/sbin:/bin/sh
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_hostid">hostid</A></STRONG><DD>
<P>
Usage: hostid

<P>
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. 

<P>
-------------------------------

<DT><STRONG><A NAME="item_hostname">hostname</A></STRONG><DD>
<P>
Usage: hostname [OPTION] {hostname | <STRONG>-F</STRONG> file}

<P>
Get or set the hostname or DNS domain name. If a hostname is given (or a
file with the <STRONG>-F</STRONG> parameter), the host name will be set.

<P>
Options:

<P>
<PRE>        -s              Short
        -i              Addresses for the hostname
        -d              DNS domain name
        -F FILE         Use the contents of FILE to specify the hostname
</PRE>
<P>
Example:

<P>
<PRE>        $ hostname
        slag 
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_id">id</A></STRONG><DD>
<P>
Print information for USERNAME or the current user

<P>
Options:

<P>
<PRE>        -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)
</PRE>
<P>
Example:

<P>
<PRE>        $ id
        uid=1000(andersen) gid=1000(andersen)
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_init">init</A></STRONG><DD>
<P>
Usage: init

<P>
Init is the parent of all processes.

<P>
This version of init is designed to be run only by the kernel.

<P>
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.

<P>
BusyBox init works just fine without an inittab. If no inittab is found, it
has the following default behavior:

<P>
<PRE>        ::sysinit:/etc/init.d/rcS
        ::askfirst:/bin/sh
</PRE>
<P>
if it detects that /dev/console is _not_ a serial console, it will also
run:

<P>
<PRE>        tty2::askfirst:/bin/sh
</PRE>
<P>
If you choose to use an /etc/inittab file, the inittab entry format is as
follows:

<P>
<PRE>        &lt;id&gt;:&lt;runlevels&gt;:&lt;action&gt;:&lt;process&gt;
</PRE>
<P>
<PRE>        &lt;id&gt;: 
</PRE>
<P>
<PRE>                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 &quot;/dev/&quot; 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.
</PRE>
<P>
<PRE>        &lt;runlevels&gt;: 
</PRE>
<P>
<PRE>                The runlevels field is completely ignored.
</PRE>
<P>
<PRE>        &lt;action&gt;: 
</PRE>
<P>
<PRE>                Valid actions include: sysinit, respawn, askfirst, wait, 
                once, and ctrlaltdel.
</PRE>
<P>
<PRE>                askfirst acts just like respawn, but before running the specified
                process it displays the line &quot;Please press Enter to activate this
                console.&quot; and then waits for the user to press enter before starting
                the specified process.
</PRE>
<P>
<PRE>                Unrecognised actions (like initdefault) will cause init to emit
                an error message, and then go along with its business.
</PRE>
<P>
<PRE>        &lt;process&gt;: 
</PRE>
<P>
<PRE>                Specifies the process to be executed and it's command line.
</PRE>
<P>
Example /etc/inittab file:

<P>
<PRE>        # This is run first except when booting in single-user mode.
        #
        ::sysinit:/etc/init.d/rcS
</PRE>
<P>
<PRE>        # /bin/sh invocations on selected ttys
        #
        # Start an &quot;askfirst&quot; shell on the console (whatever that may be)
        ::askfirst:/bin/sh
        # Start an &quot;askfirst&quot; shell on /dev/tty2
        tty2::askfirst:/bin/sh
</PRE>
<P>
<PRE>        # /sbin/getty invocations for selected ttys
        #
        tty4::respawn:/sbin/getty 38400 tty4
        tty5::respawn:/sbin/getty 38400 tty5
</PRE>
<P>
<PRE>        # 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
</PRE>
<P>
<PRE>        # Stuff to do before rebooting
        ::ctrlaltdel:/bin/umount -a -r &gt; /dev/null 2&gt;&amp;1
        ::ctrlaltdel:/sbin/swapoff -a &gt; /dev/null 2&gt;&amp;1
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_kill">kill</A></STRONG><DD>
<P>
Usage: kill [<STRONG>-signal</STRONG>] process-id [process-id ...]

<P>
Send a signal (default is SIGTERM) to the specified
<CODE>process(es).</CODE>

<P>
Options:

<P>
<PRE>        -l      List all signal names and numbers.
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_killall">killall</A></STRONG><DD>
<P>
Usage: killall [<STRONG>-signal</STRONG>] process-name [process-name ...]

<P>
Send a signal (default is SIGTERM) to the specified
<CODE>process(es).</CODE>

<P>
Options:

<P>
<PRE>        -l      List all signal names and numbers.
</PRE>
<P>
Example:

<P>
<PRE>        $ killall apache
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_length">length</A></STRONG><DD>
<P>
Usage: length STRING

<P>
Prints out the length of the specified STRING.

<P>
Example:

<P>
<PRE>        $ length &quot;Hello&quot;
        5
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_ln">ln</A></STRONG><DD>
<P>
Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY

<P>
Create a link named LINK_NAME or DIRECTORY to the specified TARGET Options:

<P>
<PRE>        -s      make symbolic links instead of hard links
        -f      remove existing destination files
 
Example:
</PRE>
<P>
<PRE>    $ ln -s BusyBox /tmp/ls
    $ ls -l /tmp/ls
    lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -&gt; BusyBox*
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_loadacm">loadacm</A></STRONG><DD>
<P>
Usage: loadacm

<P>
Loads an acm from standard input.

<P>
Example:

<P>
<PRE>        $ loadacm &lt; /etc/i18n/acmname
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_loadfont">loadfont</A></STRONG><DD>
<P>
Usage: loadfont

<P>
Loads a console font from standard input.

<P>
Example:

<P>
<PRE>        $ loadfont &lt; /etc/i18n/fontname
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_loadkmap">loadkmap</A></STRONG><DD>
<P>
Usage: loadkmap

<P>
Loads a binary keyboard translation table from standard input.

<P>
Example:

<P>
<PRE>        $ loadkmap &lt; /etc/i18n/lang-keymap
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_logger">logger</A></STRONG><DD>
<P>
Usage: logger [OPTION]... [MESSAGE]

<P>
Write MESSAGE to the system log. If MESSAGE is '-', log stdin.

<P>
Options:

<P>
<PRE>        -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.
</PRE>
<P>
Example:

<P>
<PRE>                $ logger &quot;hello&quot;
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_logname">logname</A></STRONG><DD>
<P>
Usage: logname

<P>
Print the name of the current user.

<P>
Example:

<P>
<PRE>        $ logname
        root
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_ls">ls</A></STRONG><DD>
<P>
Usage: ls [<STRONG>-1acdelnpuxACF</STRONG>] [filenames...]

<P>
Options:

<P>
<PRE>        -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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_lsmod">lsmod</A></STRONG><DD>
<P>
Usage: lsmod

<P>
Shows a list of all currently loaded kernel modules.

<P>
-------------------------------

<DT><STRONG><A NAME="item_makedevs">makedevs</A></STRONG><DD>
<P>
Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]

<P>
Creates a range of block or character special files

<P>
TYPEs include:

<P>
<PRE>        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.
</PRE>
<P>
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.

<P>
Example:

<P>
<PRE>        $ makedevs /dev/ttyS c 4 66 2 63
        [creates ttyS2-ttyS63]
        $ makedevs /dev/hda b 3 0 0 8 s
        [creates hda,hda1-hda8]
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_math">math</A></STRONG><DD>
<P>
Usage: math expression ...

<P>
This is a Tiny RPN calculator that understands the following operations: +,
-, /, *, and, or, not, eor.

<P>
Example:

<P>
<PRE>        $ math 2 2 add
        4
        $ math 8 8 \* 2 2 + /
        16
        $ math 0 1 and
        0
        $ math 0 1 or
        1
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mkdir">mkdir</A></STRONG><DD>
<P>
Usage: mkdir [OPTION] DIRECTORY...

<P>
Create the <CODE>DIRECTORY(ies),</CODE> if they do not already exist

<P>
Options:

<P>
<PRE>        -m      set permission mode (as in chmod), not rwxrwxrwx - umask
        -p      no error if dir exists, make parent directories as needed
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mkfifo">mkfifo</A></STRONG><DD>
<P>
Usage: mkfifo [OPTIONS] name

<P>
Creates a named pipe (identical to 'mknod name p')

<P>
Options:

<P>
<PRE>        -m      create the pipe using the specified mode (default a=rw)
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mkfs">mkfs.minix</A></STRONG><DD>
<P>
Usage: mkfs.minix [<STRONG>-c</STRONG> | <STRONG>-l</STRONG> filename] [<STRONG>-nXX</STRONG>] [<STRONG>-iXX</STRONG>] /dev/name [blocks]

<P>
Make a MINIX filesystem.

<P>
OPTIONS:

<P>
<PRE>        -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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mknod">mknod</A></STRONG><DD>
<P>
Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR

<P>
Create a special file (block, character, or pipe).

<P>
Options:

<P>
<PRE>        -m      create the special file using the specified mode (default a=rw)
</PRE>
<P>
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.

<P>
Example:

<P>
<PRE>        $ mknod /dev/fd0 b 2 0 
        $ mknod -m 644 /tmp/pipe p
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mkswap">mkswap</A></STRONG><DD>
<P>
Usage: mkswap [<STRONG>-c</STRONG>] [<STRONG>-v0</STRONG>|<STRONG>-v1</STRONG>] device [block-count]

<P>
Prepare a disk partition to be used as a swap partition.

<P>
Options:

<P>
<PRE>        -c              Check for read-ability.
        -v0             Make version 0 swap [max 128 Megs].
        -v1             Make version 1 swap [big!] (default for kernels &gt; 2.1.117).
        block-count     Number of block to use (default is entire partition).
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mktemp">mktemp</A></STRONG><DD>
<P>
Usage: mktemp [<STRONG>-q</STRONG>] TEMPLATE

<P>
Creates a temporary file with its name based on TEMPLATE. TEMPLATE is any
name with six `Xs' (i.e. /tmp/temp.XXXXXX).

<P>
Example:

<P>
<PRE>        $ mktemp /tmp/temp.XXXXXX
        /tmp/temp.mWiLjM
        $ ls -la /tmp/temp.mWiLjM
        -rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_nc">nc</A></STRONG><DD>
<P>
Usage: nc [IP] [port]

<P>
Netcat opens a pipe to IP:port

<P>
Example:

<P>
<PRE>        $ 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
 
-------------------------------
</PRE>
<DT><STRONG><A NAME="item_more">more</A></STRONG><DD>
<P>
Usage: more [file ...]

<P>
More is a filter for paging through text one screenful at a time.

<P>
Example:

<P>
<PRE>        $ dmesg | more
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mount">mount</A></STRONG><DD>
<P>
Usage: mount [flags] mount [flags] device directory [<STRONG>-o</STRONG> options,more-options]

<P>
Flags:

<P>
<PRE>        -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).
</PRE>
<P>
Options for use with the ``<STRONG>-o</STRONG>'' flag:

<P>
<PRE>        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.
</PRE>
<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_mt">mt</A></STRONG><DD>
<P>
Usage: mt [<STRONG>-f</STRONG> device] opcode value

<P>
Control magnetic tape drive operation

<P>
-------------------------------

<DT><STRONG><A NAME="item_mv">mv</A></STRONG><DD>
<P>
Usage: mv SOURCE DEST

<P>
<PRE>   or: mv SOURCE... DIRECTORY
</PRE>
<P>
Rename SOURCE to DEST, or move <CODE>SOURCE(s)</CODE> to DIRECTORY.

<P>
Example:

<P>
<PRE>        $ mv /tmp/foo /bin/bar
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_nslookup">nslookup</A></STRONG><DD>
<P>
Usage: nslookup [HOST]

<P>
Queries the nameserver for the IP address of the given HOST

<P>
Example:

<P>
<PRE>        $ nslookup localhost
        Server:     default
        Address:    default
</PRE>
<P>
<PRE>        Name:       debian
        Address:    127.0.0.1
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_ping">ping</A></STRONG><DD>
<P>
Usage: ping [OPTION]... host

<P>
Send ICMP ECHO_REQUEST packets to network hosts.

<P>
Options:

<P>
<PRE>        -c COUNT        Send only COUNT pings.
        -q              Quiet mode, only displays output at start
                        and when finished.
Example:
</PRE>
<P>
<PRE>        $ 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
</PRE>
<P>
<PRE>        --- debian ping statistics ---
        1 packets transmitted, 1 packets received, 0% packet loss
        round-trip min/avg/max = 20.1/20.1/20.1 ms
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_poweroff">poweroff</A></STRONG><DD>
<P>
Shuts down the system, and requests that the kernel turn off power upon
halting.

<P>
-------------------------------

<DT><STRONG><A NAME="item_printf">printf</A></STRONG><DD>
<P>
Usage: printf format [argument...]

<P>
Formats and prints the given data in a manner similar to the C printf
command.

<P>
Example:

<P>
<PRE>        $ printf &quot;Val=%d\n&quot; 5
        Val=5
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_ps">ps</A></STRONG><DD>
<P>
Usage: ps

<P>
Report process status

<P>
This version of ps accepts no options.

<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_pwd">pwd</A></STRONG><DD>
<P>
Prints the full filename of the current working directory.

<P>
Example:

<P>
<PRE>        $ pwd
        /root
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_reboot">reboot</A></STRONG><DD>
<P>
Instructs the kernel to reboot the system.

<P>
-------------------------------

<DT><STRONG><A NAME="item_rm">rm</A></STRONG><DD>
<P>
Usage: rm [OPTION]... FILE...

<P>
Remove (unlink) the <CODE>FILE(s).</CODE>

<P>
Options:

<P>
<PRE>        -f              remove existing destinations, never prompt
        -r or -R        remove the contents of directories recursively
</PRE>
<P>
Example:

<P>
<PRE>        $ rm -rf /tmp/foo
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_rmdir">rmdir</A></STRONG><DD>
<P>
Usage: rmdir [OPTION]... DIRECTORY...

<P>
Remove the <CODE>DIRECTORY(ies),</CODE> if they are empty.

<P>
Example:

<P>
<PRE>        # rmdir /tmp/foo
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_rmmod">rmmod</A></STRONG><DD>
<P>
Usage: rmmod [OPTION]... [MODULE]...

<P>
Unloads the specified kernel modules from the kernel.

<P>
Options:

<P>
<PRE>        -a      Try to remove all unused kernel modules.
</PRE>
<P>
Example:

<P>
<PRE>        $ rmmod tulip
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_sed">sed</A></STRONG><DD>
<P>
Usage: sed [<STRONG>-n</STRONG>] <STRONG>-e</STRONG> script [file...]

<P>
Allowed sed scripts come in the following form:

<P>
<PRE>        'ADDR [!] COMMAND'
</PRE>
<P>
<PRE>        where address ADDR can be:
          NUMBER    Match specified line number
          $         Match last line
          /REGEXP/  Match specified regexp
          (! inverts the meaning of the match)
</PRE>
<P>
<PRE>        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.
</PRE>
<P>
<PRE>          aTEXT
                 which appends TEXT after the pattern space
</PRE>
<P>
Options:

<P>
<PRE>        -e      add the script to the commands to be executed
        -n      suppress automatic printing of pattern space
</PRE>
<P>
This version of sed matches full regular expresions.

<P>
Example:

<P>
<PRE>        $ echo &quot;foo&quot; | sed -e 's/f[a-zA-Z]o/bar/g'
        bar
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_setkeycodes">setkeycodes</A></STRONG><DD>
<P>
Usage: setkeycodes SCANCODE KEYCODE ...

<P>
Set entries into the kernel's scancode-to-keycode map, allowing unusual
keyboards to generate usable keycodes.

<P>
SCANCODE may be either xx or e0xx (hexadecimal), and KEYCODE is given in
decimal

<P>
Example:

<P>
<PRE>        # setkeycodes e030 127
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_sh">sh</A></STRONG><DD>
<P>
Usage: sh

<P>
lash -- the BusyBox LAme SHell (command interpreter)

<P>
This command does not yet have proper documentation.  

<P>
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.

<P>
-------------------------------

<DT><STRONG><A NAME="item_sfdisk">sfdisk</A></STRONG><DD>
<P>
Usage: sfdisk [options] device ...

<P>
device: something like /dev/hda or /dev/sda

<P>
useful options:

<P>
<PRE>    -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
</PRE>
<P>
dangerous options:

<P>
<PRE>    -g [or --show-geometry]: print the kernel's idea of the geometry
    -x [or --show-extended]: also list extended partitions on output
</PRE>
<P>
<PRE>                             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
</PRE>
<P>
You can disable all consistency checking with:

<P>
<PRE>    -f  [or --force]:      do what I say, even if it is stupid
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_sleep">sleep</A></STRONG><DD>
<P>
Usage: sleep N

<P>
Pause for N seconds.

<P>
Example:

<P>
<PRE>        $ sleep 2
        [2 second delay results]
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_sort">sort</A></STRONG><DD>
<P>
Usage: sort [<STRONG>-n</STRONG>] [<STRONG>-r</STRONG>] [FILE]...

<P>
Sorts lines of text in the specified files

<P>
Example:

<P>
<PRE>        $ echo -e &quot;e\nf\nb\nd\nc\na&quot; | sort
        a
        b
        c
        d
        e
        f
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_sync">sync</A></STRONG><DD>
<P>
Usage: sync

<P>
Write all buffered filesystem blocks to disk.

<P>
-------------------------------

<DT><STRONG><A NAME="item_syslogd">syslogd</A></STRONG><DD>
<P>
Usage: syslogd [OPTION]...

<P>
Linux system and kernel (provides klogd) logging utility. Note that this
version of syslogd/klogd ignores /etc/syslog.conf.

<P>
Options:

<P>
<PRE>        -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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_swapon">swapon</A></STRONG><DD>
<P>
Usage: swapon [OPTION] [device]

<P>
Start swapping virtual memory pages on the given device.

<P>
Options:

<P>
<PRE>        -a      Start swapping on all swap devices
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_swapoff">swapoff</A></STRONG><DD>
<P>
Usage: swapoff [OPTION] [device]

<P>
Stop swapping virtual memory pages on the given device.

<P>
Options:

<P>
<PRE>        -a      Stop swapping on all swap devices
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_tail">tail</A></STRONG><DD>
<P>
Usage: tail [OPTION] [FILE]...

<P>
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.

<P>
Options:

<P>
<PRE>        -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.
</PRE>
<P>
Example:

<P>
<PRE>        $ tail -n 1 /etc/resolv.conf
        nameserver 10.0.0.1
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_tar">tar</A></STRONG><DD>
<P>
Usage: tar -[cxtvO] [<STRONG>--exclude</STRONG> File] [<STRONG>-f</STRONG> tarFile] [FILE] ...

<P>
Create, extract, or list files from a tar file. Note that this version of
tar treats hard links as separate files.

<P>
Main operation mode:

<P>
<PRE>        c               create
        x               extract
        t               list
</PRE>
<P>
File selection:

<P>
<PRE>        f               name of tarfile or &quot;-&quot; for stdin
        O               extract to stdout
        --exclude       file to exclude
</PRE>
<P>
Informative output:

<P>
<PRE>        v               verbosely list files processed
</PRE>
<P>
Example:

<P>
<PRE>        $ zcat /tmp/tarball.tar.gz | tar -xf -
        $ tar -cf /tmp/tarball.tar /usr/local
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_test">test, [</A></STRONG><DD>
<P>
Usage: test EXPRESSION or [ EXPRESSION ]

<P>
Checks file types and compares values returning an exit code determined by
the value of EXPRESSION.

<P>
Example:

<P>
<PRE>        $ test 1 -eq 2
        $ echo $?
        1
        $ test 1 -eq 1
        $ echo $?
        0
        $ [ -d /etc ]
        $ echo $?
        0
        $ [ -d /junk ]
        $ echo $?
        1
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_tee">tee</A></STRONG><DD>
<P>
Usage: tee [OPTION]... [FILE]...

<P>
Copy standard input to each FILE, and also to standard output.

<P>
Options:

<P>
<PRE>        -a      append to the given FILEs, do not overwrite
</PRE>
<P>
Example:

<P>
<PRE>        $ echo &quot;Hello&quot; | tee /tmp/foo
        $ cat /tmp/foo
        Hello
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_touch">touch</A></STRONG><DD>
<P>
Usage: touch [<STRONG>-c</STRONG>] file [file ...]

<P>
Update the last-modified date on (or create) the selected file[s].

<P>
Example:

<P>
<PRE>        $ 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
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_tr">tr</A></STRONG><DD>
<P>
Usage: tr [-cds] STRING1 [STRING2]

<P>
Translate, squeeze, and/or delete characters from standard input, writing
to standard output.

<P>
Options:

<P>
<PRE>        -c      take complement of STRING1
        -d      delete input characters coded STRING1
        -s      squeeze multiple output characters of STRING2 into one character
</PRE>
<P>
Example:

<P>
<PRE>        $ echo &quot;gdkkn vnqkc&quot; | tr [a-y] [b-z]
        hello world
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_true">true</A></STRONG><DD>
<P>
Returns an exit code of TRUE (0)

<P>
Example:

<P>
<PRE>        $ true
        $ echo $?
        0
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_tty">tty</A></STRONG><DD>
<P>
Usage: tty

<P>
Print the file name of the terminal connected to standard input.

<P>
Options:

<P>
<PRE>        -s      print nothing, only return an exit status
</PRE>
<P>
Example:

<P>
<PRE>        $ tty
        /dev/tty2
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_umount">umount</A></STRONG><DD>
<P>
Usage: umount [flags] filesystem|directory

<P>
Flags:

<P>
<PRE>                -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)
</PRE>
<P>
Example:

<P>
<PRE>        $ umount /dev/hdc1 
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_uname">uname</A></STRONG><DD>
<P>
Usage: uname [OPTION]...

<P>
Print certain system information. With no OPTION, same as <STRONG>-s</STRONG>.

<P>
Options:

<P>
<PRE>        -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
</PRE>
<P>
Example:

<P>
<PRE>        $ uname -a
        Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_uniq">uniq</A></STRONG><DD>
<P>
Usage: uniq [OPTION]... [INPUT [OUTPUT]]

<P>
Discard all but one of successive identical lines from INPUT (or standard
input), writing to OUTPUT (or standard output).

<P>
Example:

<P>
<PRE>        $ echo -e &quot;a\na\nb\nc\nc\na&quot; | sort | uniq
        a
        b
        c
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_update">update</A></STRONG><DD>
<P>
Usage: update [options]

<P>
Periodically flushes filesystem buffers.

<P>
Options:

<P>
<PRE>        -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)
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_uptime">uptime</A></STRONG><DD>
<P>
Usage: uptime

<P>
Tells how long the system has been running since boot.

<P>
Example:

<P>
<PRE>        $ uptime
          1:55pm  up  2:30, load average: 0.09, 0.04, 0.00
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_usleep">usleep</A></STRONG><DD>
<P>
Usage: usleep N

<P>
Pauses for N microseconds.

<P>
Example:

<P>
<PRE>        $ usleep 1000000
        [pauses for 1 second]
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_wc">wc</A></STRONG><DD>
<P>
Usage: wc [OPTION]... [FILE]...

<P>
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.

<P>
Options:

<P>
<PRE>        -c      print the byte counts
        -l      print the newline counts
        -L      print the length of the longest line
        -w      print the word counts
</PRE>
<P>
Example:

<P>
<PRE>        $ wc /etc/passwd
             31      46    1365 /etc/passwd
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_whoami">whoami</A></STRONG><DD>
<P>
Usage: whoami

<P>
Prints the user name associated with the current effective user id.

<P>
Example:

<P>
<PRE>        $ whoami
        andersen
</PRE>
<P>
-------------------------------

<DT><STRONG><A NAME="item_yes">yes</A></STRONG><DD>
<P>
Usage: yes [OPTION]... [STRING]...

<P>
Repeatedly outputs a line with all specified <CODE>STRING(s),</CODE> or
`y'.

<P>
-------------------------------

<DT><STRONG><A NAME="item_zcat">zcat</A></STRONG><DD>
<P>
This is essentially an alias for invoking ``gunzip <STRONG>-c</STRONG>'', where it decompresses the file inquestion and send the output to
stdout. 

<P>
-------------------------------

</DL>
<P>
<HR>
<H1><A NAME="LIBC_NSS">LIBC NSS</A></H1>
<P>
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.

<P>
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.

<P>
<HR>
<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
<P>
<CODE>textutils(1),</CODE> <CODE>shellutils(1),</CODE> etc...

<P>
<HR>
<H1><A NAME="MAINTAINER">MAINTAINER</A></H1>
<P>
Erik Andersen &lt;<A
HREF="mailto:andersee@debian.org">andersee@debian.org</A>&gt; &lt;<A
HREF="mailto:andersen@lineo.com">andersen@lineo.com</A>&gt;

<P>
<HR>
<H1><A NAME="AUTHORS">AUTHORS</A></H1>
<P>
The following people have contributed code to BusyBox whether they know it
or not.

<P>
Erik Andersen &lt;<A
HREF="mailto:andersee@debian.org">andersee@debian.org</A>&gt;

<br>

<P>
John Beppu &lt;<A HREF="mailto:beppu@lineo.com">beppu@lineo.com</A>&gt;

<br>

<P>
Brian Candler &lt;<A
HREF="mailto:B.Candler@pobox.com">B.Candler@pobox.com</A>&gt;

<br>

<P>
Randolph Chung &lt;<A
HREF="mailto:tausq@debian.org">tausq@debian.org</A>&gt;

<br>

<P>
Dave Cinege &lt;<A
HREF="mailto:dcinege@psychosis.com">dcinege@psychosis.com</A>&gt;	

<br>

<P>
Karl M. Hegbloom &lt;<A
HREF="mailto:karlheg@debian.org">karlheg@debian.org</A>&gt;

<br>

<P>
John Lombardo &lt;<A
HREF="mailto:john@deltanet.com">john@deltanet.com</A>&gt;	

<br>

<P>
Glenn McGrath &lt;<A
HREF="mailto:bug1@netconnect.com.au">bug1@netconnect.com.au</A>&gt;

<br>

<P>
Bruce Perens &lt;<A HREF="mailto:bruce@perens.com">bruce@perens.com</A>&gt;

<br>

<P>
Pavel Roskin &lt;<A
HREF="mailto:pavel_roskin@geocities.com">pavel_roskin@geocities.com</A>&gt;

<br>

<P>
Linus Torvalds &lt;<A
HREF="mailto:torvalds@transmeta.com">torvalds@transmeta.com</A>&gt;

<br>

<P>
Charles P. Wright &lt;<A
HREF="mailto:cpwright@villagenet.com">cpwright@villagenet.com</A>&gt;

<br>

<P>
Enrique Zanardi &lt;<A
HREF="mailto:ezanardi@ull.es">ezanardi@ull.es</A>&gt;

<br>

</BODY>

</HTML>
