update docs for xargs
[oweals/busybox.git] / docs / busybox.sgml
index 560bd61f6954afa74fc304f665c41107df9de1c7..9c017901180471db479bd97240243026c1dcfce4 100644 (file)
@@ -1,4 +1,4 @@
-<!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>
@@ -59,8 +59,8 @@
 
   <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>
@@ -75,7 +75,9 @@
            </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:
                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, renice, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
+               pwd, reboot, renice, reset, rm, rmdir, rmmod, sed, setkeycodes, 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,
                </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="du">
            <title>du</title>
 
                <para>
                Prints out a binary keyboard translation table to standard input.
                </para>
+
+               <para>
+               Example:
+               </para>
+
+               <para>
+               <screen>
+                       $ dumpkmap &lt; keymap
+               </screen>
+               </para>
        </sect1>
 
        <sect1 id="dutmp">
                </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 &lt  ARG2    ARG1 is less than ARG2
+                       ARG1 &lt= ARG2    ARG1 is less than or equal to ARG2
+                       ARG1 =  ARG2    ARG1 is equal to ARG2
+                       ARG1 != ARG2    ARG1 is unequal to ARG2
+                       ARG1 &gt= ARG2    ARG1 is greater than or equal to ARG2
+                       ARG1 &gt  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>
 
                </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>
                <screen>
                        &lt;id&gt;:&lt;runlevels&gt;:&lt;action&gt;:&lt;process&gt;
                </screen>
-               <para>
+               </para>
 
                <sect2>
                    <title>id</title>
                        </para>
                </sect2>
 
-               <para>
-               Example /etc/inittab file:
-               </para>
+               <sect2>
+                   <title>Example /etc/inittab file</title>
 
                <para>
                <screen>
                        # /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
+                       ::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 tty4
-                       tty5::respawn:/sbin/getty 38400 tty5
+                       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)
                        #
                        #ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
 
                        # 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
+                       ::ctrlaltdel:/bin/umount -a -r
+                       ::ctrlaltdel:/sbin/swapoff
                </screen>
                </para>
+               </sect2>
        </sect1>
 
        <sect1 id="insmod">
                        -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>
        </sect1>
 
+       <sect1 id="rdate">
+           <title>rdate</title>
+
+               <para>
+               Usage: rdate [OPTION] HOST
+               </para>
+
+               <para>
+               Get and possibly set the system date and time from a remote HOST.
+               </para>
+
+               <para>
+               Options:
+               </para>
+
+               <para>
+               <screen>
+                       -s      Set the system date and time (default).
+                       -p      Print the date and time.
+               </screen>
+               </para>
+       </sect1>
+
        <sect1 id="reboot">
            <title>reboot</title>
 
                </para>
        </sect1>
 
+       <sect1 id="reset">
+           <title>reset</title>
+
+               <para>
+               Usage: reset
+               </para>
+
+               <para>
+               Resets the screen.
+               </para>
+       </sect1>
+
        <sect1 id="rm">
            <title>rm</title>
 
                </para>
 
                <para>
-               <screen>
                   or: [ EXPRESSION ]
+               </para>
 
                <para>
                Check file types and compare values returning an exit
                </screen>
                </para>
        </sect1>
+       
+       <sect1 id="unix2dos">
+           <title>unix2dos</title>
+
+               <para>
+               Usage: unix2dos < unixfile > dosfile
+               </para>
+
+               <para>
+               Converts a text file from unix format to dos format.
+               </para>
+
+       </sect1>
+
+       <sect1 id="unrpm">
+           <titleunrpmuniq</title>
+
+               <para>
+               Usage: unrpm < package.rpm | gzip -d | cpio -idmuv
+               </para>
+
+               <para>
+               Extracts an rpm archive.
+               </para>
+
+       </sect1>
 
        <sect1 id="update">
            <title>update</title>
                </para>
        </sect1>
 
+       <sect1 id="xargs">
+           <title>xargs</title>
+
+               <para>
+               Usage: xargs [OPTIONS] [COMMAND] [ARGS...]
+               </para>
+
+               <para>
+               Executes COMMAND on every item given by standard input.
+               </para>
+
+               <para>
+               Options:
+               </para>
+
+               <para>
+               <screen>
+                       -t      Print the command just before it is run
+               </screen>
+               </para>
+
+
+               <para>
+               Example:
+               </para>
+
+               <para>
+               <screen>
+                       $ ls | xargs gzip
+                       $ find . -name '*.c' -print | xargs rm
+               </screen>
+               </para>
+       </sect1>
+
        <sect1 id="yes">
            <title>yes</title>
 
        Linus Torvalds &lt;torvalds@transmeta.com&gt;
        </para>
 
+        <para>
+        Mark Whitley &lt;markw@lineo.com&gt;
+        </para>
+
        <para>
        Charles P. Wright &lt;cpwright@villagenet.com&gt;
        </para>