-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [...]>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ ]>
<book id="BusyBoxDocumentation">
<bookinfo>
<title>BusyBox - The Swiss Army Knife of Embedded Linux</title>
<chapter id="Syntax">
<title>How to use BusyBox</title>
- <sect1 id="How to use BusyBox">
- <title>Syntax</title
+ <sect1 id="How-to-use-BusyBox">
+ <title>Syntax</title>
<para>
<screen>
</para>
</sect1>
- <sect1 id="Invoking BusyBox">
+ <sect1 id="Invoking-BusyBox">
+ <title>Invoking BusyBox</title>
+
<para>
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
</sect1>
- <sect1 id="Common options">
+ <sect1 id="Common-options">
+ <title>Common options</title>
+
<para>
Most BusyBox commands support the <emphasis>--help</emphasis> option to provide
a terse runtime description of their behavior.
<chapter id="Commands">
<title>BusyBox Commands</title>
- <sect1 id="Available BusyBox Commands">
+ <sect1 id="Available-BusyBox-Commands">
<title>Available BusyBox Commands</title>
<para>
Currently defined functions include:
</para>
<para>
- ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date,
- dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset,
- fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt,
- head, hostid, hostname, id, init, insmod, kill, killall, length, ln,
- loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir,
- mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc,
- nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed,
- setkeycodes, sfdisk, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail,
- tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update,
- uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [
+ addgroup, adduser, adjtimex, ar, basename, busybox, cat,
+ chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio, cut,
+ date, dc, dd, deallocvt, deluser, df, dirname, dmesg,
+ dos2unix, dpkg, dpkg-deb, du, dumpkmap, dutmp, echo, expr,
+ false, fbset, fdflush, find, free, freeramdisk, fsck.minix,
+ getopt, getty, grep, gunzip, gzip, halt, head, hostid,
+ hostname, id, ifconfig, init, insmod, kill, killall, klogd,
+ length, ln, loadacm, loadfont, loadkmap, logger, logname, ls,
+ lsmod, makedevs, md5sum, mkdir, mkfifo, mkfs.minix, mknod,
+ mkswap, mktemp, more, mount, mt, mv, nc, nslookup, ping,
+ pivot_root, poweroff, printf, ps, pwd, rdate, readlink,
+ reboot, renice, reset, rm, rmdir, rmmod, route, rpm2cpio,
+ sed, setkeycodes, sh, sleep, sort, stty, swapoff, swapon,
+ sync, syslogd, tail, tar, tee, telnet, test, tftp, touch, tr,
+ true, tty, umount, uname, uniq, unix2dos, update, uptime,
+ usleep, uudecode, uuencode, watchdog, wc, wget, which,
+ whoami, xargs, yes, zcat, [
</para>
</sect1>
-b LIST Output only bytes from LIST
-c LIST Output only characters from LIST
-d CHAR Use CHAR instead of tab as the field delimiter
- -s Only output Lines if the include DELIM
+ -s Output only the lines containing delimiter
-f N Print only these fields
-n Ignored
</screen>
</para>
</sect1>
+ <sect1 id="dos2unix">
+ <title>dos2unix</title>
+
+ <para>
+ Usage: dos2unix < dosfile > unixfile
+ </para>
+
+ <para>
+ Converts a text file from dos format to unix format.
+ </para>
+
+ </sect1>
+
+ <sect1 id="dpkg-deb">
+ <title>dpkg-deb</title>
+
+ <para>
+ Usage: dpkg-deb [OPTION] archive [directory]
+ </para>
+
+ <para>
+ Debian package archive (.deb) manipulation tool
+ </para>
+
+ <para>
+ Options:
+ </para>
+
+ <para>
+ <screen>
+ -c List the contents of the filesystem tree archive portion of the package
+ -e Extracts the control information files from a package archive into the specified directory.
+ If no directory is specified then a subdirectory DEBIAN in the current directory is used.
+ -x Silently extracts the filesystem tree from a package archive into the specified directory.
+ -X Extracts the filesystem tree from a package archive into the specified directory, listing the files as it goes.
+ If required the specified directory (but not its parents) will be created.
+ </screen>
+ <para>
+
+ <para>
+ Example:
+ </para>
+
+ <para>
+ <screen>
+ dpkg-deb -e ./busybox_0.48-1_i386.deb
+ dpkg-deb -x ./busybox_0.48-1_i386.deb ./unpack_dir
+ </screen>
+ </para>
+ </sect1>
+
<sect1 id="du">
<title>du</title>
<para>
Summarize the disk space used for each FILE or current
- directory. Disk space printed in units of 1k (i.e.
+ directory. Disk space printed in units of 1k (i.e.,
1024 bytes).
</para>
</para>
</sect1>
+ <sect1 id="dumpkmap">
+ <title>dumpkmap</title>
+
+ <para>
+ Usage: dumpkmap
+ </para>
+
+ <para>
+ Prints out a binary keyboard translation table to standard output.
+ </para>
+
+ <para>
+ Example:
+ </para>
+
+ <para>
+ <screen>
+ $ dumpkmap < keymap
+ </screen>
+ </para>
+ </sect1>
+
<sect1 id="dutmp">
<title>dutmp</title>
</para>
</sect1>
+ <sect1 id="expr">
+ <title>expr</title>
+
+ <para>
+ Usage: expr EXPRESSION
+ </para>
+
+ <para>
+ Prints the value of EXPRESSION to standard output.
+ </para>
+
+ <para>
+ EXPRESSION may be:
+ </para>
+
+ <para>
+ <screen>
+ ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2
+ ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0
+ ARG1 < ARG2 ARG1 is less than ARG2
+ ARG1 <= ARG2 ARG1 is less than or equal to ARG2
+ ARG1 = ARG2 ARG1 is equal to ARG2
+ ARG1 != ARG2 ARG1 is unequal to ARG2
+ ARG1 >= ARG2 ARG1 is greater than or equal to ARG2
+ ARG1 > ARG2 ARG1 is greater than ARG2
+ ARG1 + ARG2 arithmetic sum of ARG1 and ARG2
+ ARG1 - ARG2 arithmetic difference of ARG1 and ARG2
+ ARG1 * ARG2 arithmetic product of ARG1 and ARG2
+ ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2
+ ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2
+ STRING : REGEXP anchored pattern match of REGEXP in STRING
+ match STRING REGEXP same as STRING : REGEXP
+ substr STRING POS LENGTH substring of STRING, POS counted from 1
+ index STRING CHARS index in STRING where any CHARS is found, or 0
+ length STRING length of STRING
+ quote TOKEN interpret TOKEN as a string, even if it is a
+ keyword like `match' or an operator like `/'
+ ( EXPRESSION ) value of EXPRESSION
+ </screen>
+ </para>
+
+ <para>
+ Beware that many operators need to be escaped or quoted for shells.
+ Comparisons are arithmetic if both ARGs are numbers, else
+ lexicographical. Pattern matches return the string matched between
+ \( and \) or null; if \( and \) are not used, they return the number
+ of characters matched or 0.
+ </para>
+
+ </sect1>
+
+
<sect1 id="false">
<title>false</title>
</para>
<para>
- Returns an exit code of FALSE (1).
+ Return an exit code of FALSE (1).
</para>
<para>
<screen>
-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
+ -type X Filetype matches X (where X is one of: f,d,l,b,c,...)
+ -perm PERMS Permissions match any of (+NNN); all of (-NNN); or exactly (NNN)
+ -mtime TIME Modified time is greater than (+N); less than (-N); or exactly (N) days
</screen>
</para>
</screen>
</para>
</sect1>
+
+ <sect1 id="getopt">
+ <title>getopt</title>
+
+ <para>
+ Usage: getopt [OPTIONS]...
+ </para>
+
+ <para>
+ Parse command options
+ </para>
+
+ <para>
+ <screen>
+ -a, --alternative Allow long options starting with single -\n"
+ -l, --longoptions=longopts Long options to be recognized\n"
+ -n, --name=progname The name under which errors are reported\n"
+ -o, --options=optstring Short options to be recognized\n"
+ -q, --quiet Disable error reporting by getopt(3)\n"
+ -Q, --quiet-output No normal output\n"
+ -s, --shell=shell Set shell quoting conventions\n"
+ -T, --test Test for getopt(1) version\n"
+ -u, --unqote Do not quote the output\n"
+ </screen>
+ </para>
+
+
+ <para>
+ Example:
+ </para>
+
+ <para>
+ <screen>
+ $ cat getopt.test
+ #!/bin/sh
+ GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
+ -n 'example.busybox' -- "$@"`
+ if [ $? != 0 ] ; then exit 1 ; fi
+ eval set -- "$GETOPT"
+ while true ; do
+ case $1 in
+ -a|--a-long) echo "Option a" ; shift ;;
+ -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
+ -c|--c-long)
+ case "$2" in
+ "") echo "Option c, no argument"; shift 2 ;;
+ *) echo "Option c, argument \`$2'" ; shift 2 ;;
+ esac ;;
+ --) shift ; break ;;
+ *) echo "Internal error!" ; exit 1 ;;
+ esac
+ done
+ </screen>
+ </para>
+ </sect1>
<sect1 id="grep">
<title>grep</title>
</para>
</sect1>
-< <sect1 id="gzip">
+ <sect1 id="gzip">
<title>gzip</title>
<para>
<para>
<screen>
-c Write output to standard output
+ -d decompress
</screen>
</para>
<para>
<screen>
- -s Short
- -i Addresses for the hostname
- -d DNS domain name
- -F FILE Use the contents of FILE to specify the hostname
+ -s Short
+ -i Addresses for the hostname
+ -d DNS domain name
+ -F, --file FILE Use the contents of FILE to specify the hostname
</screen>
</para>
<screen>
-g Print only the group ID
-u Print only the user ID
+ -n print a name instead of a number (with for -ug)
-r Print the real user ID instead of the effective ID (with -ug)
</screen>
</para>
<screen>
<id>:<runlevels>:<action>:<process>
</screen>
- <para>
+ </para>
<sect2>
<title>id</title>
<para>
- 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.
+
+ 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, the controlling tty is set
+ to the console. Also note that if BusyBox detects that a serial
+ console is in use, then only entries whose controlling tty is
+ either the serial console or /dev/null will be run. BusyBox init
+ does nothing with utmp. We don't need no stinkin' utmp.
+
</para>
</sect2>
<sect2>
<title>action</title>
+
+ <para>
+ Valid actions include: sysinit, respawn, askfirst, wait,
+ once, and ctrlaltdel.
+ </para>
+
+
+ <para>
+ The available actions can be classified into two groups: actions
+ that are run only once, and actions that are re-run when the specified
+ process exits.
+ </para>
+
+ <para>
+ Run only-once actions:
+ </para>
+
+ <para>
+ 'sysinit' is the first item run on boot. init waits until all
+ sysinit actions are completed before continuing. Following the
+ completion of all sysinit actions, all 'wait' actions are run.
+ 'wait' actions, like 'sysinit' actions, cause init to wait until
+ the specified task completes. 'once' actions are asyncronous,
+ therefore, init does not wait for them to complete. 'ctrlaltdel'
+ actions are run immediately before init causes the system to reboot
+ (unmounting filesystems with a 'ctrlaltdel' action is a very good
+ idea).
+ </para>
+
<para>
- Valid actions include: sysinit, respawn,
- askfirst, wait, once, and ctrlaltdel.
+ Run repeatedly actions:
</para>
<para>
- 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.
+ 'respawn' actions are run after the 'once' actions. When a process
+ started with a 'respawn' action exits, init automatically restarts
+ it. Unlike sysvinit, BusyBox init does not stop processes from
+ respawning out of control. The 'askfirst' actions acts just like
+ respawn, except that 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.
</para>
<para>
- Unrecognized actions (like initdefault) will
- cause init to emit an error message, and then go
- along with its business.
+ Unrecognized actions (like initdefault) will cause init to emit an
+ error message, and then go along with its business. All actions are
+ run in the reverse order from how they appear in /etc/inittab.
</para>
+
</sect2>
<sect2>
</para>
</sect2>
- <para>
- Example /etc/inittab file:
- </para>
-
- <para>
- <screen>
- # 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
- </screen>
- </para>
+ <sect2>
+ <title>Example /etc/inittab file</title>
+
+ <para>
+ <screen>
+ # 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-4
+ tty2::askfirst:-/bin/sh
+ tty2::askfirst:-/bin/sh
+ tty2::askfirst:-/bin/sh
+
+ # /sbin/getty invocations for selected ttys
+ #
+ tty4::respawn:/sbin/getty 38400 tty5
+ tty5::respawn:/sbin/getty 38400 tty6
+
+ # Example of how to put a getty on a serial line (for a terminal)
+ #
+ #::respawn:/sbin/getty -L ttyS0 9600 vt100
+ #::respawn:/sbin/getty -L ttyS1 9600 vt100
+ #
+ # Example how to put a getty on a modem line.
+ #::respawn:/sbin/getty 57600 ttyS2
+
+ # Stuff to do before rebooting
+ ::ctrlaltdel:/bin/umount -a -r
+ ::ctrlaltdel:/sbin/swapoff
+ </screen>
+ </para>
+ </sect2>
</sect1>
<sect1 id="insmod">
</para>
<para>
- Loads MODULE into the kernel.
+ Load MODULE into the kernel.
</para>
<para>
-k Make module autoclean-able.
-v Verbose output
-x Do not export externs
+ -L Prevent simultaneous loads of the same module
</screen>
</para>
</sect1>
</para>
<para>
- Write MESSAGE to the system log. If MESSAGE is '-', log
+ Write MESSAGE to the system log. If MESSAGE is omitted, log
stdin.
</para>
-A Do not list implied . and ..
-C List entries by columns
-F Append indicator (one of */=@|) to entries
+ -L list entries pointed to by symbolic links
-R List subdirectories recursively
</screen>
</para>
<para>
Creates a temporary file with its name based on
- TEMPLATE. TEMPLATE is any name with six `Xs' (i.e.
+ TEMPLATE. TEMPLATE is any name with six `Xs' (i.e.,
/tmp/temp.XXXXXX).
</para>
</para>
<para>
- Open a pipe to HOST:PORT.
+ or: nc -p PORT -l
+ </para>
+
+
+ <para>
+ Open a pipe to HOST:PORT or listen for a connection on PORT.
</para>
<para>
</para>
</sect1>
-<!-- This is where I have stopped formatting stuff -->
-<varlistentry><term><emphasis>ps
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: ps
-
-
-</para>
-
-<para>
-Report process status
-
-
-</para>
+ <sect1 id="ps">
+ <title>ps</title>
-<para>
-This version of ps accepts no options.
-
-
-</para>
-
-<para>
-Example:
+ <para>
+ Usage: ps
+ </para>
+ <para>
+ Report process status. This version of ps accepts no
+ options.
+ </para>
-</para>
+ <para>
+ Options:
+ </para>
-<para>
-<screen>
- $ 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
-</screen>
+ <para>
+ <screen>
+ </screen>
+ </para>
+ <para>
+ Example:
+ </para>
-</para>
+ <para>
+ <screen>
+ $ 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
+ </screen>
+ </para>
+ </sect1>
-<para>
--------------------------------
+ <sect1 id="pwd">
+ <title>pwd</title>
+ <para>
+ Usage: pwd
+ </para>
-</para>
+ <para>
+ Print the full filename of the current working
+ directory.
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>pwd
+ <para>
+ Example:
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ <screen>
+ $ pwd
+ /root
+ </screen>
+ </para>
+ </sect1>
-<para>
-Prints the full filename of the current working directory.
+ <sect1 id="rdate">
+ <title>rdate</title>
+ <para>
+ Usage: rdate [OPTION] HOST
+ </para>
-</para>
+ <para>
+ Get and possibly set the system date and time from a remote HOST.
+ </para>
-<para>
-Example:
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ -s Set the system date and time (default).
+ -p Print the date and time.
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="reboot">
+ <title>reboot</title>
-<para>
-<screen>
- $ pwd
- /root
-</screen>
+ <para>
+ Usage: reboot
+ </para>
+ <para>
+ Reboot the system.
+ </para>
+ </sect1>
-</para>
+ <sect1 id="renice">
+ <title>renice</title>
-<para>
--------------------------------
+ <para>
+ Usage: renice priority pid [pid ...]
+ </para>
+ <para>
+ Changes priority of running processes. Allowed priorities range
+ from 20 (the process runs only when nothing else is running) to 0
+ (default priority) to -20 (almost nothing else ever gets to run).
+ </para>
+ </sect1>
-</para>
+ <sect1 id="reset">
+ <title>reset</title>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>reboot
+ <para>
+ Usage: reset
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Resets the screen.
+ </para>
+ </sect1>
-<para>
-Instructs the kernel to reboot the system.
+ <sect1 id="rm">
+ <title>rm</title>
+ <para>
+ Usage: rm [OPTION]... FILE...
+ </para>
-</para>
+ <para>
+ Remove (unlink) the FILE(s). You may use '--' to
+ indicate that all following arguments are non-options.
+ </para>
-<para>
--------------------------------
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ -i Always prompt before removing each destinations
+ -f Remove existing destinations, never prompt
+ -r or -R Remove the contents of directories recursively
+ </screen>
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>rm
+ <para>
+ <screen>
+ $ rm -rf /tmp/foo
+ </screen>
+ </para>
+ </sect1>
-</emphasis></term>
-<listitem><para></para>
+ <sect1 id="rmdir">
+ <title>rmdir</title>
-<para>
-Usage: rm [OPTION]... FILE...
+ <para>
+ Usage: rmdir DIRECTORY...
+ </para>
+ <para>
+ Remove DIRECTORY(s) if they are empty.
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-Remove (unlink) the <literal>FILE(s).</literal> You may use '--' to
-indicate that all following arguments are non-options.
+ <para>
+ <screen>
+ $ rmdir /tmp/foo
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="rmmod">
+ <title>rmmod</title>
-</para>
+ <para>
+ Usage: rmmod [OPTION]... [MODULE]...
+ </para>
-<para>
-Options:
+ <para>
+ Unload MODULE(s) from the kernel.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -a Try to remove all unused kernel modules
+ </screen>
+ </para>
-<para>
-<screen>
- -f remove existing destinations, never prompt
- -r or -R remove the contents of directories recursively
-</screen>
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ rmmod tulip
+ </screen>
+ </para>
+ </sect1>
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ rm -rf /tmp/foo
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>rmdir
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: rmdir [OPTION]... DIRECTORY...
-
-
-</para>
-
-<para>
-Remove the <literal>DIRECTORY(ies),</literal> if they are empty.
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- # rmdir /tmp/foo
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>rmmod
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: rmmod [OPTION]... [MODULE]...
-
-
-</para>
-
-<para>
-Unloads the specified kernel modules from the kernel.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -a Try to remove all unused kernel modules.
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ rmmod tulip
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>sed
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: sed [<emphasis>-n</emphasis>] <emphasis>-e</emphasis> script [file...]
-
-
-</para>
-
-<para>
-Allowed sed scripts come in the following form:
-
-
-</para>
-
-<para>
-<screen>
- 'ADDR [!] COMMAND'
-</screen>
-
-
-</para>
-
-<para>
-<screen>
- where address ADDR can be:
- NUMBER Match specified line number
- $ Match last line
- /REGEXP/ Match specified regexp
- (! inverts the meaning of the match)
-</screen>
-
-
-</para>
-
-<para>
-<screen>
- 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.
-</screen>
-
-
-</para>
-
-<para>
-<screen>
- aTEXT
- which appends TEXT after the pattern space
-</screen>
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -e add the script to the commands to be executed
- -n suppress automatic printing of pattern space
-</screen>
-
-
-</para>
-
-<para>
-This version of sed matches full regular expressions.
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
- bar
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>setkeycodes
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: setkeycodes SCANCODE KEYCODE ...
-
-
-</para>
-
-<para>
-Set entries into the kernel's scancode-to-keycode map, allowing unusual
-keyboards to generate usable keycodes.
-
-
-</para>
-
-<para>
-SCANCODE may be either xx or e0xx (hexadecimal), and KEYCODE is given in
-decimal
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- # setkeycodes e030 127
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>sfdisk
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: sfdisk [options] device ...
-
-
-</para>
-
-<para>
-device: something like /dev/hda or /dev/sda
-
-
-</para>
-
-<para>
-useful options:
-
-
-</para>
-
-<para>
-<screen>
- -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
-</screen>
-
-
-</para>
-
-<para>
-dangerous options:
-
-
-</para>
-
-<para>
-<screen>
- -g [or --show-geometry]: print the kernel's idea of the geometry
- -x [or --show-extended]: also list extended partitions on output
-</screen>
-
-
-</para>
-
-<para>
-<screen>
- 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
-</screen>
-
-
-</para>
-
-<para>
-You can disable all consistency checking with:
-
-
-</para>
-
-<para>
-<screen>
- -f [or --force]: do what I say, even if it is stupid
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>sh
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: sh
-
-
-</para>
-
-<para>
-lash -- the BusyBox LAme SHell (command interpreter)
-
-
-</para>
-
-<para>
-This command does not yet have proper documentation.
-
-
-</para>
-
-<para>
-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.
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>sleep
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: sleep N
-
-
-</para>
-
-<para>
-Pause for N seconds.
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ sleep 2
- [2 second delay results]
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>sort
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: sort [<emphasis>-n</emphasis>] [<emphasis>-r</emphasis>] [FILE]...
-
-
-</para>
-
-<para>
-Sorts lines of text in the specified files
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ echo -e "e\nf\nb\nd\nc\na" | sort
- a
- b
- c
- d
- e
- f
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>swapoff
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: swapoff [OPTION] [device]
-
-
-</para>
-
-<para>
-Stop swapping virtual memory pages on the given device.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -a Stop swapping on all swap devices
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>swapon
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: swapon [OPTION] [device]
-
-
-</para>
-
-<para>
-Start swapping virtual memory pages on the given device.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -a Start swapping on all swap devices
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>sync
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: sync
-
-
-</para>
-
-<para>
-Write all buffered filesystem blocks to disk.
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>syslogd
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: syslogd [OPTION]...
-
-
-</para>
-
-<para>
-Linux system and kernel (provides klogd) logging utility. Note that this
-version of syslogd/klogd ignores /etc/syslog.conf.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -m NUM Interval between MARK lines (default=20min, 0=off)
- -n Run as a foreground process
- -K Do not start up the klogd process
- -O FILE Use an alternate log file (default=/var/log/messages)
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>tail
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: tail [OPTION] [FILE]...
-
-
-</para>
-
-<para>
-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.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -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.
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ tail -n 1 /etc/resolv.conf
- nameserver 10.0.0.1
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>tar
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: tar -[cxtvO] [<emphasis>--exclude</emphasis> File] [<emphasis>-f</emphasis> tarFile] [FILE] ...
-
-
-</para>
-
-<para>
-Create, extract, or list files from a tar file. Note that this version of
-tar treats hard links as separate files.
-
-
-</para>
-
-<para>
-Main operation mode:
-
-
-</para>
-
-<para>
-<screen>
- c create
- x extract
- t list
-</screen>
-
-
-</para>
-
-<para>
-File selection:
-
-
-</para>
-
-<para>
-<screen>
- f name of tarfile or "-" for stdin
- O extract to stdout
- --exclude file to exclude
-</screen>
-
-
-</para>
-
-<para>
-Informative output:
-
-
-</para>
-
-<para>
-<screen>
- v verbosely list files processed
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ zcat /tmp/tarball.tar.gz | tar -xf -
- $ tar -cf /tmp/tarball.tar /usr/local
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>tee
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: tee [OPTION]... [FILE]...
-
-
-</para>
-
-<para>
-Copy standard input to each FILE, and also to standard output.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -a append to the given FILEs, do not overwrite
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ echo "Hello" | tee /tmp/foo
- $ cat /tmp/foo
- Hello
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>telnet
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: telnet host [port]
-
-
-</para>
-
-<para>
-Telnet is used to establish interactive communication with another computer
-over a network using the TELNET protocol.
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>test, [
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: test EXPRESSION or [ EXPRESSION ]
-
-
-</para>
-
-<para>
-Checks file types and compares values returning an exit code determined by
-the value of EXPRESSION.
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ test 1 -eq 2
- $ echo $?
- 1
- $ test 1 -eq 1
- $ echo $?
- 0
- $ [ -d /etc ]
- $ echo $?
- 0
- $ [ -d /junk ]
- $ echo $?
- 1
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>touch
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: touch [<emphasis>-c</emphasis>] file [file ...]
-
-
-</para>
-
-<para>
-Update the last-modified date on (or create) the selected file[s].
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ 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
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>tr
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: tr [-cds] STRING1 [STRING2]
-
-
-</para>
-
-<para>
-Translate, squeeze, and/or delete characters from standard input, writing
-to standard output.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -c take complement of STRING1
- -d delete input characters coded STRING1
- -s squeeze multiple output characters of STRING2 into one character
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
- hello world
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>true
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Returns an exit code of TRUE (0)
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ true
- $ echo $?
- 0
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>tty
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: tty
-
-
-</para>
-
-<para>
-Print the file name of the terminal connected to standard input.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -s print nothing, only return an exit status
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ tty
- /dev/tty2
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>umount
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: umount [flags] filesystem|directory
-
-
-</para>
-
-<para>
-Flags:
-
-
-</para>
-
-<para>
-<screen>
- -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)
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ umount /dev/hdc1
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>uname
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: uname [OPTION]...
-
-
-</para>
-
-<para>
-Print certain system information. With no OPTION, same as <emphasis>-s</emphasis>.
-
-
-</para>
-
-<para>
-Options:
-
-
-</para>
-
-<para>
-<screen>
- -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
-</screen>
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ uname -a
- Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>uniq
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: uniq [OPTION]... [INPUT [OUTPUT]]
-
-
-</para>
-
-<para>
-Discard all but one of successive identical lines from INPUT (or standard
-input), writing to OUTPUT (or standard output).
-
-
-</para>
-
-<para>
-Example:
-
-
-</para>
-
-<para>
-<screen>
- $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
- a
- b
- c
-</screen>
-
-
-</para>
-
-<para>
--------------------------------
-
-
-</para>
-
-</listitem></varlistentry>
-<varlistentry><term><emphasis>update
-
-</emphasis></term>
-<listitem><para></para>
-
-<para>
-Usage: update [options]
-
-
-</para>
-
-<para>
-Periodically flushes filesystem buffers.
+ <sect1 id="run-parts">
+ <title>run-parts</title>
+
+ <para>
+ Usage: run-parts [-t] [-a ARG] [-u MASK] DIRECTORY
+ </para>
+
+ <para>
+ Run a bunch of scripts in a directory.
+ </para>
+
+ <para>
+ Options:
+ </para>
+
+ <para>
+ <screen>
+ -t Test only. It only print the file to be executed,
+ without execute them.
+ -a ARG Pass ARG as an a argument to the programs executed.
+ -u MASK Set the umask to MASK before executing the programs.
+ </screen>
+ </para>
+ </sect1>
+
+
+ <sect1 id="sed">
+ <title>sed</title>
-</para>
+ <para>
+ Usage: sed [OPTION]... SCRIPT [FILE]...
+ </para>
-<para>
-Options:
+ <para>
+ Allowed sed scripts come in the following form:
+ </para>
+ <para>
+ <screen>
+ ADDR [!] COMMAND
+ </screen>
+ </para>
-</para>
+ <para>
+ ADDR can be:
+ </para>
-<para>
-<screen>
- -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)
-</screen>
+ <para>
+ <screen>
+ NUMBER Match specified line number
+ $ Match last line
+ /REGEXP/ Match specified regexp
+ </screen>
+ </para>
+ <para>
+ ! inverts the meaning of the match
+ </para>
-</para>
+ <para>
+ COMMAND can be:
+ </para>
-<para>
--------------------------------
+ <para>
+ <screen>
+ 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
+ </screen>
+ </para>
+ <para>
+ This version of sed matches full regular expressions.
+ </para>
-</para>
+ <para>
+ Options:
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>uptime
+ <para>
+ <screen>
+ -e Add the script to the commands to be executed
+ -n Suppress automatic printing of pattern space
+ </screen>
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Example:
+ </para>
-<para>
-Usage: uptime
+ <para>
+ <screen>
+ $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
+ bar
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="setkeycodes">
+ <title>setkeycodes</title>
-</para>
+ <para>
+ Usage: setkeycodes SCANCODE KEYCODE ...
+ </para>
-<para>
-Tells how long the system has been running since boot.
+ <para>
+ Set entries into the kernel's scancode-to-keycode map,
+ allowing unusual keyboards to generate usable keycodes.
+ </para>
+ <para>
+ SCANCODE may be either xx or e0xx (hexadecimal), and
+ KEYCODE is given in decimal.
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-Example:
+ <para>
+ <screen>
+ $ setkeycodes e030 127
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="sh">
+ <title>sh</title>
-<para>
-<screen>
- $ uptime
- 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
-</screen>
+ <para>
+ Usage: sh
+ </para>
+ <para>
+ lash -- the BusyBox LAme SHell (command interpreter)
+ </para>
-</para>
+ <para>
+ This command does not yet have proper documentation.
+ </para>
-<para>
--------------------------------
+ <para>
+ 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.
+ </para>
+ </sect1>
+ <sect1 id="sleep">
+ <title>sleep</title>
-</para>
+ <para>
+ Usage: sleep N
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>usleep
+ <para>
+ Pause for N seconds.
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Example:
+ </para>
-<para>
-Usage: usleep N
+ <para>
+ <screen>
+ $ sleep 2
+ [2 second delay results]
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="sort">
+ <title>sort</title>
-</para>
+ <para>
+ Usage: sort [OPTION]... [FILE]...
+ </para>
-<para>
-Pauses for N microseconds.
+ <para>
+ Sort lines of text in FILE(s).
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -n Compare numerically
+ -r Reverse after sorting
+ </screen>
+ </para>
-<para>
-Example:
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ echo -e "e\nf\nb\nd\nc\na" | sort
+ a
+ b
+ c
+ d
+ e
+ f
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="swapoff">
+ <title>swapoff</title>
-<para>
-<screen>
- $ usleep 1000000
- [pauses for 1 second]
-</screen>
+ <para>
+ Usage: swapoff [OPTION] [DEVICE]
+ </para>
+ <para>
+ Stop swapping virtual memory pages on DEVICE.
+ </para>
-</para>
+ <para>
+ Options:
+ </para>
-<para>
--------------------------------
+ <para>
+ <screen>
+ -a Stop swapping on all swap devices
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="swapon">
+ <title>swapon</title>
-</para>
+ <para>
+ Usage: swapon [OPTION] [DEVICE]
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>uudecode
+ <para>
+ Start swapping virtual memory pages on the given device.
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Options:
+ </para>
-<para>
-Usage: uudecode [OPTION] [FILE]
+ <para>
+ <screen>
+ -a Start swapping on all swap devices
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="sync">
+ <title>sync</title>
-</para>
+ <para>
+ Usage: sync
+ </para>
-<para>
-Uudecode a uuencoded file
+ <para>
+ Write all buffered filesystem blocks to disk.
+ </para>
+ </sect1>
+ <sect1 id="syslogd">
+ <title>syslogd</title>
-</para>
+ <para>
+ Usage: syslogd [OPTION]...
+ </para>
-<para>
-Options:
+ <para>
+ Linux system and kernel (provides klogd) logging
+ utility. Note that this version of syslogd/klogd ignores
+ /etc/syslog.conf.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -m NUM Interval between MARK lines (default=20min, 0=off)
+ -n Run as a foreground process
+ -K Do not start up the klogd process
+ -O FILE Use an alternate log file (default=/var/log/messages)
+ -R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP)
+ -L Log locally as well as network logging (default is network only)
+ -C Log to a circular buffer. Read this buffer using 'logread'
+ </screen>
+ </para>
-<para>
-<screen>
- -o FILE direct output to FILE
-</screen>
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ syslogd -R masterlog:514
+ $ syslogd -R 192.168.1.1:601
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="tail">
+ <title>tail</title>
-<para>
-Example:
+ <para>
+ Usage: tail [OPTION] [FILE]...
+ </para>
+ <para>
+ 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 stdin.
+ </para>
-</para>
+ <para>
+ Options:
+ </para>
-<para>
-<screen>
- $ uudecode -o busybox busybox.uu
- $ ls -l busybox
- -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
-</screen>
+ <para>
+ <screen>
+ -n NUM Print last NUM lines instead of last 10
+ -f Output data as the file grows. This version
+ of 'tail -f' supports only one file at a time.
+ </screen>
+ </para>
+ <para>
+ Example:
+ </para>
-</para>
+ <para>
+ <screen>
+ $ tail -n 1 /etc/resolv.conf
+ nameserver 10.0.0.1
+ </screen>
+ </para>
+ </sect1>
-<para>
--------------------------------
+ <sect1 id="tar">
+ <title>tar</title>
+ <para>
+ Usage: tar [MODE] [OPTION] [FILE]...
+ </para>
-</para>
+ <para>
+
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>uuencode
+ <para>
+ MODE may be chosen from
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ <screen>
+ c Create
+ x Extract
+ t List
+ </screen>
+ </para>
-<para>
-Usage: uuencode [OPTION] [INFILE] REMOTEFILE
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ f FILE Use FILE for tarfile (or stdin if '-')
+ O Extract to stdout
+ exclude FILE File to exclude
+ v List files processed
+ </screen>
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-Uuencode a file.
+ <para>
+ <screen>
+ $ zcat /tmp/tarball.tar.gz | tar -xf -
+ $ tar -cf /tmp/tarball.tar /usr/local
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="tee">
+ <title>tee</title>
-</para>
+ <para>
+ Usage: tee [OPTION]... [FILE]...
+ </para>
-<para>
-Options:
+ <para>
+ Copy stdin to FILE(s), and also to stdout.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -a Append to the given FILEs, do not overwrite
+ </screen>
+ </para>
-<para>
-<screen>
- -m use base64 encoding as of RFC1521
-</screen>
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ echo "Hello" | tee /tmp/foo
+ Hello
+ $ cat /tmp/foo
+ Hello
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="telnet">
+ <title>telnet</title>
-<para>
-Example:
+ <para>
+ Usage: telnet HOST [PORT]
+ </para>
+ <para>
+ Establish interactive communication with another
+ computer over a network using the TELNET protocol.
+ </para>
+ </sect1>
-</para>
+ <sect1 id="test">
+ <title>test, [</title>
-<para>
-<screen>
- $ uuencode busybox busybox
- begin 755 busybox
- M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
- .....
- $ uudecode busybox busybox > busybox.uu
- $
-</screen>
+ <para>
+ Usage: test EXPRESSION
+ </para>
+ <para>
+ or: [ EXPRESSION ]
+ </para>
-</para>
+ <para>
+ Check file types and compare values returning an exit
+ code determined by the value of EXPRESSION.
+ </para>
-<para>
--------------------------------
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ test 1 -eq 2
+ $ echo $?
+ 1
+ $ test 1 -eq 1
+ $ echo $?
+ 0
+ $ [ -d /etc ]
+ $ echo $?
+ 0
+ $ [ -d /junk ]
+ $ echo $?
+ 1
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="touch">
+ <title>touch</title>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>wc
+ <para>
+ Usage: touch [OPTION]... FILE...
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Update the last-modified date on (or create) FILE(s).
+ </para>
-<para>
-Usage: wc [OPTION]... [FILE]...
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ -c Do not create files
+ </screen>
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-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.
+ <para>
+ <screen>
+ $ 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
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="tr">
+ <title>tr</title>
-</para>
+ <para>
+ Usage: tr [OPTION]... STRING1 [STRING2]
+ </para>
-<para>
-Options:
+ <para>
+ Translate, squeeze, and/or delete characters from stdin,
+ writing to stdout.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -c Take complement of STRING1
+ -d Delete input characters coded STRING1
+ -s Squeeze multiple output characters of STRING2 into one character
+ </screen>
+ </para>
-<para>
-<screen>
- -c print the byte counts
- -l print the newline counts
- -L print the length of the longest line
- -w print the word counts
-</screen>
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
+ hello world
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="true">
+ <title>true</title>
-<para>
-Example:
+ <para>
+ Usage: true
+ </para>
+ <para>
+ Return an exit code of TRUE (1).
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-<screen>
- $ wc /etc/passwd
- 31 46 1365 /etc/passwd
-</screen>
+ <para>
+ <screen>
+ $ true
+ $ echo $?
+ 0
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="tty">
+ <title>tty</title>
-</para>
+ <para>
+ Usage: tty
+ </para>
-<para>
--------------------------------
+ <para>
+ Print the file name of the terminal connected to stdin.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -s Print nothing, only return an exit status
+ </screen>
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>which
+ <para>
+ Example:
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ <screen>
+ $ tty
+ /dev/tty2
+ </screen>
+ </para>
+ </sect1>
-<para>
-Usage: which [COMMAND ...]
+ <sect1 id="umount">
+ <title>umount</title>
+ <para>
+ Usage: umount [OPTION]... DEVICE|DIRECTORY
+ </para>
-</para>
+ <para>
+
+ </para>
-<para>
-Locates a COMMAND.
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ -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)
+ </screen>
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-Example:
+ <para>
+ <screen>
+ $ umount /dev/hdc1
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="uname">
+ <title>uname</title>
-</para>
+ <para>
+ Usage: uname [OPTION]...
+ </para>
-<para>
-<screen>
- $ which login
- /bin/login
-</screen>
+ <para>
+ Print certain system information. With no OPTION, same
+ as -s.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -a Print all information
+ -m Print 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
+ </screen>
+ </para>
-<para>
--------------------------------
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ uname -a
+ Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="uniq">
+ <title>uniq</title>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>whoami
+ <para>
+ Usage: uniq [INPUT [OUTPUT]]
+ </para>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Discard all but one of successive identical lines from
+ INPUT (or stdin), writing to OUTPUT (or stdout).
+ </para>
-<para>
-Usage: whoami
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ -c prefix lines by the number of occurrences
+ -d only print duplicate lines
+ -u only print unique lines
+ </screen>
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-Prints the user name associated with the current effective user id.
+ <para>
+ <screen>
+ $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
+ a
+ b
+ c
+ </screen>
+ </para>
+ </sect1>
+
+ <sect1 id="unix2dos">
+ <title>unix2dos</title>
+ <para>
+ Usage: unix2dos < unixfile > dosfile
+ </para>
-</para>
+ <para>
+ Converts a text file from unix format to dos format.
+ </para>
-<para>
-Example:
+ </sect1>
+ <sect1 id="unrpm">
+ <title>unrpm</title>
-</para>
+ <para>
+ Usage: unrpm < package.rpm | gzip -d | cpio -idmuv
+ </para>
-<para>
-<screen>
- $ whoami
- andersen
-</screen>
+ <para>
+ Extracts an rpm archive.
+ </para>
+ </sect1>
-</para>
+ <sect1 id="update">
+ <title>update</title>
-<para>
--------------------------------
+ <para>
+ Usage: update [OPTION]...
+ </para>
+ <para>
+ Periodically flush filesystem buffers.
+ </para>
-</para>
+ <para>
+ Options:
+ </para>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>yes
+ <para>
+ <screen>
+ -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)
+ </screen>
+ </para>
+ </sect1>
-</emphasis></term>
-<listitem><para></para>
+ <sect1 id="uptime">
+ <title>uptime</title>
-<para>
-Usage: yes [OPTION]... [STRING]...
+ <para>
+ Usage: uptime
+ </para>
+ <para>
+ Display how long the system has been running since boot.
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-<para>
-Repeatedly outputs a line with all specified <literal>STRING(s),</literal>
-or `y'.
+ <para>
+ <screen>
+ $ uptime
+ 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="usleep">
+ <title>usleep</title>
-</para>
+ <para>
+ Usage: usleep N
+ </para>
-<para>
--------------------------------
+ <para>
+ Pause for N microseconds.
+ </para>
+ <para>
+ Example:
+ </para>
-</para>
+ <para>
+ <screen>
+ $ usleep 1000000
+ [pauses for 1 second]
+ </screen>
+ </para>
+ </sect1>
-</listitem></varlistentry>
-<varlistentry><term><emphasis>zcat
+ <sect1 id="uudecode">
+ <title>uudecode</title>
-</emphasis></term>
-<listitem><para></para>
+ <para>
+ Usage: uudecode [OPTION] [FILE]
+ </para>
-<para>
-This is essentially an alias for invoking ``gunzip <emphasis>-c</emphasis>'', where it decompresses the file in question and send the output to
-stdout.
+ <para>
+ Uudecode a uuencoded file.
+ </para>
+ <para>
+ Options:
+ </para>
-</para>
+ <para>
+ <screen>
+ -o FILE Direct output to FILE
+ </screen>
+ </para>
-<para>
--------------------------------
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ uudecode -o busybox busybox.uu
+ $ ls -l busybox
+ -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="uuencode">
+ <title>uuencode</title>
-</listitem></varlistentry></variablelist>
+ <para>
+ Usage: uuencode [OPTION] [INFILE] OUTFILE
+ </para>
-</sect1>
+ <para>
+ Uuencode a file.
+ </para>
-<sect1 id="pod2docbook-ch-1-sect-6"><title>LIBC NSS
+ <para>
+ Options:
+ </para>
-</title>
-<!-- Bogus hack to ensure that each sect has a paragraph in it -->
-<para>
-</para>
+ <para>
+ <screen>
+ -m Use base64 encoding as of RFC1521
+ </screen>
+ </para>
+ <para>
+ Example:
+ </para>
-<para>
-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 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 /lib/libnss_*
-libraries installed.
+ <para>
+ <screen>
+ $ uuencode busybox busybox
+ begin 755 busybox
+ M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
+ .....
+ $ uudecode busybox busybox > busybox.uu
+ $
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="watchdog">
+ <title>watchdog</title>
-</para>
+ <para>
+ Usage: watchdog device
+ </para>
-<para>
-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.
+ <para>
+ Periodically writes to watchdog device B<device>.
+ </para>
+ </sect1>
+ <sect1 id="wc">
+ <title>wc</title>
-</para>
+ <para>
+ Usage: wc [OPTION]... [FILE]...
+ </para>
-</sect1>
+ <para>
+ Print line, word, and byte counts for each FILE, and a
+ total line if more than one FILE is specified. With no
+ FILE, read stdin.
+ </para>
-<sect1 id="pod2docbook-ch-1-sect-7"><title>SEE ALSO
+ <para>
+ Options:
+ </para>
-</title>
-<!-- Bogus hack to ensure that each sect has a paragraph in it -->
-<para>
-</para>
+ <para>
+ <screen>
+ -c Print the byte counts
+ -l Print the newline counts
+ -L Print the length of the longest line
+ -w Print the word counts
+ </screen>
+ </para>
+ <para>
+ Example:
+ </para>
-<para>
-<literal>textutils(1),</literal> <literal>shellutils(1),</literal> etc...
+ <para>
+ <screen>
+ $ wc /etc/passwd
+ 31 46 1365 /etc/passwd
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="which">
+ <title>which</title>
-</para>
+ <para>
+ Usage: which [COMMAND]...
+ </para>
-</sect1>
+ <para>
+ Locate COMMAND(s).
+ </para>
-<sect1 id="pod2docbook-ch-1-sect-8"><title>MAINTAINER
+ <para>
+ Example:
+ </para>
-</title>
-<!-- Bogus hack to ensure that each sect has a paragraph in it -->
-<para>
-</para>
+ <para>
+ <screen>
+ $ which login
+ /bin/login
+ </screen>
+ </para>
+ </sect1>
+ <sect1 id="whoami">
+ <title>whoami</title>
-<para>
-Erik Andersen <andersee@debian.org> <andersen@lineo.com>
+ <para>
+ Usage: whoami
+ </para>
+ <para>
+ Print the user name associated with the current
+ effective user id.
+ </para>
-</para>
+ <para>
+ Example:
+ </para>
-</sect1>
+ <para>
+ <screen>
+ $ whoami
+ andersen
+ </screen>
+ </para>
+ </sect1>
-<sect1 id="pod2docbook-ch-1-sect-9"><title>AUTHORS
+ <sect1 id="xargs">
+ <title>xargs</title>
-</title>
-<!-- Bogus hack to ensure that each sect has a paragraph in it -->
-<para>
-</para>
+ <para>
+ Usage: xargs [OPTIONS] [COMMAND] [ARGS...]
+ </para>
+ <para>
+ Executes COMMAND on every item given by standard input.
+ </para>
-<para>
-The following people have contributed code to BusyBox whether they know it
-or not.
+ <para>
+ Options:
+ </para>
+ <para>
+ <screen>
+ -t Print the command just before it is run
+ </screen>
+ </para>
-</para>
-<para>
-Erik Andersen <andersee@debian.org>
+ <para>
+ Example:
+ </para>
+ <para>
+ <screen>
+ $ ls | xargs gzip
+ $ find . -name '*.c' -print | xargs rm
+ </screen>
+ </para>
+ </sect1>
-</para>
+ <sect1 id="yes">
+ <title>yes</title>
-<para>
-John Beppu <beppu@lineo.com>
+ <para>
+ Usage: yes [STRING]...
+ </para>
+ <para>
+ Repeatedly output a line with all specified STRING(s),
+ or `y'.
+ </para>
+ </sect1>
-</para>
+ <sect1 id="zcat">
+ <title>zcat</title>
-<para>
-Brian Candler <B.Candler@pobox.com>
+ <para>
+ Usage: zcat [OPTION]... FILE
+ </para>
+ <para>
+ Uncompress FILE (or stdin if FILE is '-') to stdout.
+ </para>
-</para>
+ <para>
+ Options:
+ </para>
-<para>
-Randolph Chung <tausq@debian.org>
+ <para>
+ <screen>
+ -t Test compressed file integrity
+ </screen>
+ </para>
+ <para>
+ Example:
+ </para>
-</para>
+ <para>
+ <screen>
+ </screen>
+ </para>
+ </sect1>
+ </chapter>
-<para>
-Dave Cinege <dcinege@psychosis.com>
+ <chapter id="LIBC-NSS">
+ <title>LIBC NSS</title>
+ <para>
+ 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 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 /lib/libnss_*
+ libraries installed.
+ </para>
-</para>
+ <para>
+ 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.
+ </para>
+ </chapter>
-<para>
-Karl M. Hegbloom <karlheg@debian.org>
+ <chapter id="SEE-ALSO">
+ <title>SEE ALSO</title>
+ <para>
+ <literal>textutils(1),</literal>
+ <literal>shellutils(1),</literal>
+ etc...
+ </para>
+ </chapter>
-</para>
+ <chapter id="MAINTAINER">
+ <title>MAINTAINER</title>
-<para>
-John Lombardo <john@deltanet.com>
+ <para>
+ Erik Andersen <andersee@debian.org> <andersen@lineo.com>
+ </para>
+ </chapter>
+ <chapter id="AUTHORS">
+ <title>AUTHORS</title>
-</para>
+ <para>
+ The following people have made significant contributions to
+ BusyBox -- whether they know it or not.
+ </para>
-<para>
-Glenn McGrath <bug1@netconnect.com.au>
+ <para>
+ Erik Andersen <andersee@debian.org>
+ </para>
+ <para>
+ Edward Betts <edward@debian.org>
+ </para>
-</para>
+ <para>
+ John Beppu <beppu@lineo.com>
+ </para>
-<para>
-Bruce Perens <bruce@perens.com>
+ <para>
+ Brian Candler <B.Candler@pobox.com>
+ </para>
+ <para>
+ Randolph Chung <tausq@debian.org>
+ </para>
-</para>
+ <para>
+ Dave Cinege <dcinege@psychosis.com>
+ </para>
-<para>
-Pavel Roskin <proski@gnu.org>
+ <para>
+ Karl M. Hegbloom <karlheg@debian.org>
+ </para>
+ <para>
+ Daniel Jacobowitz <dan@debian.org>
+ </para>
-</para>
+ <para>
+ Matt Kraai <kraai@alumni.carnegiemellon.edu>
+ </para>
-<para>
-Linus Torvalds <torvalds@transmeta.com>
+ <para>
+ John Lombardo <john@deltanet.com>
+ </para>
+ <para>
+ Glenn McGrath <bug1@netconnect.com.au>
+ </para>
-</para>
+ <para>
+ Bruce Perens <bruce@perens.com>
+ </para>
-<para>
-Charles P. Wright <cpwright@villagenet.com>
+ <para>
+ Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
+ </para>
+ <para>
+ Pavel Roskin <proski@gnu.org>
+ </para>
-</para>
+ <para>
+ Gyepi Sam <gyepi@praxis-sw.com>
+ </para>
-<para>
-Enrique Zanardi <ezanardi@ull.es>
+ <para>
+ Linus Torvalds <torvalds@transmeta.com>
+ </para>
+ <para>
+ Mark Whitley <markw@lineo.com>
+ </para>
-</para>
+ <para>
+ Charles P. Wright <cpwright@villagenet.com>
+ </para>
-</sect1>
+ <para>
+ Enrique Zanardi <ezanardi@ull.es>
+ </para>
-</chapter>
+ <para>
+ Vladimir Oleynik <dzo@simtreas.ru>
+ </para>
+ </chapter>
</book> <!-- End of the book -->