1 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [...]>
2 <book id="BusyBoxDocumentation">
4 <title>BusyBox - The Swiss Army Knife of Embedded Linux</title>
8 This documentation is free software; you can redistribute
9 it and/or modify it under the terms of the GNU General Public
10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later
16 This program is distributed in the hope that it will be
17 useful, but WITHOUT ANY WARRANTY; without even the implied
18 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 See the GNU General Public License for more details.
23 You should have received a copy of the GNU General Public
24 License along with this program; if not, write to the Free
25 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
30 For more details see the file COPYING in the source
31 distribution of Linux.
37 <chapter id="Introduction">
38 <title>Introduction</title>
41 BusyBox combines tiny versions of many common UNIX utilities into a single
42 small executable. It provides minimalist replacements for most of the
43 utilities you usually find in fileutils, shellutils, findutils, textutils,
44 grep, gzip, tar, etc. BusyBox provides a fairly complete POSIX environment
45 for any small or embedded system. The utilities in BusyBox generally have
46 fewer options than their full-featured GNU cousins; however, the options
47 that are included provide the expected functionality and behave very much
48 like their GNU counterparts.
52 BusyBox has been written with size-optimization and limited resources in
53 mind. It is also extremely modular so you can easily include or exclude
54 commands (or features) at compile time. This makes it easy to customize
55 your embedded systems. To create a working system, just add a kernel, a
56 shell (such as ash), and an editor (such as elvis-tiny or ae).
61 <title>How to use BusyBox</title>
62 <sect1 id="How to use BusyBox">
67 BusyBox <function> [arguments...] # or
73 <function> [arguments...] # if symlinked
78 <sect1 id="Invoking BusyBox">
80 When you create a link to BusyBox for the function you wish to use, when
81 BusyBox is called using that link it will behave as if the command itself
97 will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
102 You can also invoke BusyBox by issuing the command as an argument on the
103 command line. For example, entering
113 will also cause BusyBox to behave as 'ls'.
118 <sect1 id="Common options">
120 Most BusyBox commands support the <emphasis>--help</emphasis> option to provide
121 a terse runtime description of their behavior.
126 <chapter id="Commands">
127 <title>BusyBox Commands</title>
128 <sect1 id="Available BusyBox Commands">
129 <title>Available BusyBox Commands</title>
131 Currently defined functions include:
135 ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear,
136 cp, cut, date, dc, dd, deallocvt, df, dirname, dmesg, du,
137 dumpkmap, dutmp, echo, false, fbset, fdflush, find, free,
138 freeramdisk, fsck.minix, grep, gunzip, gzip, halt, head,
139 hostid, hostname, id, init, insmod, kill, killall, length, ln,
140 loadacm, loadfont, loadkmap, logger, logname, ls, lsmod,
141 makedevs, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp,
142 more, mount, mt, mv, nc, nslookup, ping, poweroff, printf, ps,
143 pwd, reboot, renice, reset, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
144 sort, swapoff, swapon, sync, syslogd, tail, tar, tee, telnet,
145 test, touch, tr, true, tty, umount, uname, uniq, update,
146 uptime, usleep, uudecode, uuencode, wc, which, whoami, yes,
155 Usage: ar [OPTION] archive [FILENAME]...
159 Extract or list files from an ar archive.
168 o Preserve original dates
172 v Verbosely list files processed
177 <sect1 id="basename">
178 <title>basename</title>
180 Usage: basename FILE [SUFFIX]
184 Strip directory path and suffixes from FILE. If specified, also removes
194 $ basename /usr/local/bin/foo
196 $ basename /usr/local/bin/
198 $ basename /foo/bar.txt .txt
212 Concatenate <literal>FILE(s)</literal> and prints them to the standard
232 Usage: chgrp [OPTION]... GROUP FILE...
236 Change the group membership of each FILE to GROUP.
245 -R Change files and directories recursively
256 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
257 $ chgrp root /tmp/foo
259 -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
268 Usage: chmod [<emphasis>-R</emphasis>] MODE[,MODE]... FILE...
272 Change file access permissions for the specified
273 <literal>FILE(s)</literal> (or directories). Each MODE is defined by
274 combining the letters for WHO has access to the file, an OPERATOR for
275 selecting how the permissions should be changed, and a PERMISSION for
276 <literal>FILE(s)</literal> (or directories).
280 WHO may be chosen from
285 u User who owns the file
286 g Users in the file's Group
287 o Other users not in the file's group
293 OPERATOR may be chosen from
299 - Remove a permission
300 = Assign a permission
305 PERMISSION may be chosen from
312 x Execute (or access for directories)
313 s Set user (or group) ID bit
314 t Sticky bit (for directories prevents removing files by non-owners)
319 Alternately, permissions can be set numerically where the first three
320 numbers are calculated by adding the octal values, such as
332 An optional fourth digit can also be used to specify
349 -R Change files and directories recursively.
360 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
363 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
366 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
374 Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
378 Change the owner and/or group of each FILE to OWNER and/or GROUP.
387 -R Change files and directories recursively
398 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
399 $ chown root /tmp/foo
401 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
402 $ chown root.root /tmp/foo
404 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
410 <title>chroot</title>
412 Usage: chroot NEWROOT [COMMAND...]
416 Run COMMAND with root directory set to NEWROOT.
426 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
427 $ mount /dev/hdc1 /mnt -t minix
430 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
442 Change the foreground virtual terminal to /dev/ttyN
462 Usage: cp [OPTION]... SOURCE DEST
467 or: cp [OPTION]... SOURCE... DIRECTORY
472 Copy SOURCE to DEST, or multiple <literal>SOURCE(s)</literal> to
484 -p Preserve file attributes if possible
485 -R Copy directories recursively
494 Usage: cut [OPTION]... [FILE]...
498 Print selected fields from each input FILE to standard output.
507 -b LIST Output only bytes from LIST
508 -c LIST Output only characters from LIST
509 -d CHAR Use CHAR instead of tab as the field delimiter
510 -s Output only the lines containing delimiter
511 -f N Print only these fields
522 $ echo "Hello world" | cut -f 1 -d ' '
524 $ echo "Hello world" | cut -f 2 -d ' '
534 Usage: date [OPTION]... [+FORMAT]
539 or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
544 Display the current time in the given FORMAT, or set the system date.
553 -R Output RFC-822 compliant date string
554 -s Set time described by STRING
555 -u Print or set Coordinated Universal Time
566 Wed Apr 12 18:52:41 MDT 2000
575 Usage: dc [EXPRESSION]
579 This is a Tiny RPN calculator that understands the
580 following operations: +, -, /, *, and, or, not, eor. If
581 no arguments are given, dc will process input from
586 The behaviour of BusyBox/dc deviates (just a little ;-)
587 from GNU/dc, but this will be remedied in the future.
604 $ echo 72 9 div 8 mul | dc
614 Usage: dd [OPTION]...
618 Copy a file, converting and formatting according to
628 if=FILE Read from FILE instead of stdin
629 of=FILE Write to FILE instead of stdout
630 bs=N Read and write N bytes at a time
631 count=N Copy only N input blocks
632 skip=N Skip N input blocks
633 seek=N Skip N output blocks
638 Numbers may be suffixed by w (x2), k (x1024), b (x512),
648 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
655 <sect1 id="deallocvt">
656 <title>deallocvt</title>
663 Deallocate unused virtual terminal /dev/ttyN.
675 Print the filesystem space used and space available.
685 Filesystem 1k-blocks Used Available Use% Mounted on
686 /dev/sda3 8690864 8553540 137324 98% /
687 /dev/sda1 64216 36364 27852 57% /boot
689 Filesystem 1k-blocks Used Available Use% Mounted on
690 /dev/sda3 8690864 8553540 137324 98% /
696 <title>dirname</title>
703 Strip non-directory suffix from NAME.
724 Usage: dmesg [OPTION]...
728 Print or control the kernel ring buffer.
737 -c Clear the ring buffer after printing
738 -n LEVEL Set the console logging level to LEVEL
739 -s BUFSIZE Query ring buffer using a buffer of BUFSIZE
748 Usage: du [OPTION]... [FILE]...
752 Summarize the disk space used for each FILE or current
753 directory. Disk space printed in units of 1k (i.e.
763 -l Count sizes many times if hard linked
764 -s Display only a total for each argument
776 12 ./kernel-patches/CVS
789 <sect1 id="dumpkmap">
790 <title>dumpkmap</title>
797 Prints out a binary keyboard translation table to standard input.
806 $ dumpkmap < keymap
819 Dump utmp file format (pipe delimited) from FILE or
829 $ dutmp /var/run/utmp
830 8|7||si|||0|0|0|955637625|760097|0
831 2|0|~|~~|reboot||0|0|0|955637625|782235|0
832 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
833 8|125||l4|||0|0|0|955637629|998367|0
834 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
835 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
836 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
845 Usage: echo [OPTION]... [ARG]...
849 Print ARGs to stdout.
858 -n Suppress trailing newline
859 -e Enable interpretation of escaped characters
860 -E Disable interpretation of escaped characters
870 $ echo "Erik is cool"
872 $ echo -e "Erik\nis\ncool"
876 $ echo "Erik\nis\ncool"
886 Usage: expr EXPRESSION
890 Prints the value of EXPRESSION to standard output.
899 ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2
900 ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0
901 ARG1 < ARG2 ARG1 is less than ARG2
902 ARG1 <= ARG2 ARG1 is less than or equal to ARG2
903 ARG1 = ARG2 ARG1 is equal to ARG2
904 ARG1 != ARG2 ARG1 is unequal to ARG2
905 ARG1 >= ARG2 ARG1 is greater than or equal to ARG2
906 ARG1 > ARG2 ARG1 is greater than ARG2
907 ARG1 + ARG2 arithmetic sum of ARG1 and ARG2
908 ARG1 - ARG2 arithmetic difference of ARG1 and ARG2
909 ARG1 * ARG2 arithmetic product of ARG1 and ARG2
910 ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2
911 ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2
912 STRING : REGEXP anchored pattern match of REGEXP in STRING
913 match STRING REGEXP same as STRING : REGEXP
914 substr STRING POS LENGTH substring of STRING, POS counted from 1
915 index STRING CHARS index in STRING where any CHARS is found, or 0
916 length STRING length of STRING
917 quote TOKEN interpret TOKEN as a string, even if it is a
918 keyword like `match' or an operator like `/'
919 ( EXPRESSION ) value of EXPRESSION
924 Beware that many operators need to be escaped or quoted for shells.
925 Comparisons are arithmetic if both ARGs are numbers, else
926 lexicographical. Pattern matches return the string matched between
927 \( and \) or null; if \( and \) are not used, they return the number
928 of characters matched or 0.
942 Return an exit code of FALSE (1).
962 Usage: fbset [OPTION]... [MODE]
966 Show and modify frame buffer device settings.
975 -h Display option summary
976 -fb DEVICE Operate on DEVICE
977 -db FILE Use FILE for mode database
978 -g XRES YRES VXRES VYRES DEPTH Set all geometry parameters
979 -t PIXCLOCK LEFT RIGHT UPPER LOWER HSLEN VSLEN Set all timing parameters
980 -xres RES Set visible horizontal resolution
981 -yres RES Set visible vertical resolution
993 # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
994 geometry 1024 768 1024 768 16
995 timings 12714 128 32 16 4 128 4
997 rgba 5/11,6/5,5/0,0/0
1003 <sect1 id="fdflush">
1004 <title>fdflush</title>
1007 Usage: fdflush DEVICE
1011 Force floppy disk drive to detect disk change on DEVICE.
1019 Usage: find [PATH]... [EXPRESSION]
1023 Search for files in a directory hierarchy. The default
1024 PATH is the current directory; default EXPRESSION is
1029 EXPRESSION may consist of:
1034 -follow Dereference symbolic links
1035 -name PATTERN File name (leading directories removed) matches PATTERN
1036 -print Print the full file name followed by a newline to stdout
1046 $ find / -name /etc/passwd
1060 Displays the amount of free and used system memory.
1070 total used free shared buffers
1071 Mem: 257628 248724 8904 59644 93124
1072 Swap: 128516 8404 120112
1073 Total: 386144 257128 129016
1078 <sect1 id="freeramdisk">
1079 <title>freeramdisk</title>
1082 Usage: freeramdisk DEVICE
1086 Free all memory used by the ramdisk DEVICE.
1095 $ freeramdisk /dev/ram2
1100 <sect1 id="fsck.minix">
1101 <title>fsck.minix</title>
1104 Usage: fsck.minix [OPTION]... DEVICE
1108 Perform a consistency check on the MINIX filesystem on
1118 -l List all filenames
1119 -r Perform interactive repairs
1120 -a Perform automatic repairs
1122 -s Output super-block information
1123 -m Activate MINIX-like "mode not cleared" warnings
1124 -f Force file system check.
1130 <title>getopt</title>
1133 Usage: getopt [OPTIONS]...
1137 Parse command options
1142 -a, --alternative Allow long options starting with single -\n"
1143 -l, --longoptions=longopts Long options to be recognized\n"
1144 -n, --name=progname The name under which errors are reported\n"
1145 -o, --options=optstring Short options to be recognized\n"
1146 -q, --quiet Disable error reporting by getopt(3)\n"
1147 -Q, --quiet-output No normal output\n"
1148 -s, --shell=shell Set shell quoting conventions\n"
1149 -T, --test Test for getopt(1) version\n"
1150 -u, --unqote Do not quote the output\n"
1163 GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
1164 -n 'example.busybox' -- "$@"`
1165 if [ $? != 0 ] ; then exit 1 ; fi
1166 eval set -- "$GETOPT"
1169 -a|--a-long) echo "Option a" ; shift ;;
1170 -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
1173 "") echo "Option c, no argument"; shift 2 ;;
1174 *) echo "Option c, argument \`$2'" ; shift 2 ;;
1176 --) shift ; break ;;
1177 *) echo "Internal error!" ; exit 1 ;;
1188 Usage: grep [OPTIONS]... PATTERN [FILE]...
1192 Search for PATTERN in each FILE or stdin.
1201 -h Suppress the prefixing filename on output
1202 -i Ignore case distinctions
1203 -n Print line number with output lines
1204 -q Be quiet. Returns 0 if result was found, 1 otherwise
1205 -v Select non-matching lines
1210 This version of grep matches full regular expressions.
1219 $ grep root /etc/passwd
1220 root:x:0:0:root:/root:/bin/bash
1221 $ grep ^[rR]oo. /etc/passwd
1222 root:x:0:0:root:/root:/bin/bash
1228 <title>gunzip</title>
1231 Usage: gunzip [OPTION]... FILE
1235 Uncompress FILE (or stdin if FILE is '-').
1244 -c Write output to standard output
1245 -t Test compressed file integrity
1255 $ ls -la /tmp/BusyBox*
1256 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
1257 $ gunzip /tmp/BusyBox-0.43.tar.gz
1258 $ ls -la /tmp/BusyBox*
1259 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1268 Usage: gzip [OPTION]... FILE
1272 Compress FILE (or stdin if FILE is '-') with maximum
1273 compression to FILE.gz (or stdout if FILE is '-').
1282 -c Write output to standard output
1292 $ ls -la /tmp/BusyBox*
1293 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1294 $ gzip /tmp/BusyBox-0.43.tar
1295 $ ls -la /tmp/BusyBox*
1296 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
1317 Usage: head [OPTION] FILE...
1321 Print first 10 lines of each FILE to standard output.
1322 With more than one FILE, precede each with a header
1323 giving the file name. With no FILE, or when FILE is -,
1324 read standard input.
1333 -n NUM Print first NUM lines instead of first 10
1343 $ head -n 2 /etc/passwd
1344 root:x:0:0:root:/root:/bin/bash
1345 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
1351 <title>hostid</title>
1358 Prints out a unique 32-bit identifier for the current
1359 machine. The 32-bit identifier is intended to be unique
1360 among all UNIX systems in existence.
1364 <sect1 id="hostname">
1365 <title>hostname</title>
1368 Usage: hostname [OPTION]... [HOSTNAME|-F FILE]
1372 Get or set the hostname or DNS domain name. If a
1373 hostname is given (or a file with the -F parameter), the
1374 host name will be set.
1384 -i Addresses for the hostname
1386 -F FILE Use the contents of FILE to specify the hostname
1406 Usage: id [OPTION]... [USERNAME]
1410 Print information for USERNAME or the current user.
1419 -g Print only the group ID
1420 -u Print only the user ID
1421 -r Print the real user ID instead of the effective ID (with -ug)
1432 uid=1000(andersen) gid=1000(andersen)
1445 Init is the parent of all processes.
1449 This version of init is designed to be run only by the
1454 BusyBox init doesn't support multiple runlevels. The
1455 runlevels field of the /etc/inittab file is completely
1456 ignored by BusyBox init. If you want runlevels, use
1461 BusyBox init works just fine without an inittab. If no
1462 inittab is found, it has the following default behavior:
1467 ::sysinit:/etc/init.d/rcS
1473 If it detects that /dev/console is _not_ a serial
1474 console, it will also run:
1479 tty2::askfirst:/bin/sh
1484 If you choose to use an /etc/inittab file, the inittab
1485 entry format is as follows:
1490 <id>:<runlevels>:<action>:<process>
1497 WARNING: This field has a non-traditional
1498 meaning for BusyBox init! The id field is used
1499 by BusyBox init to specify the controlling tty
1500 for the specified process to run on. The
1501 contents of this field are appended to "/dev/"
1502 and used as-is. There is no need for this field
1503 to be unique, although if it isn't you may have
1504 strange results. If this field is left blank,
1505 it is completely ignored. Also note that if
1506 BusyBox detects that a serial console is in use,
1507 then all entries containing non-empty id fields
1508 will _not_ be run. BusyBox init does nothing
1509 with utmp. We don't need no stinkin' utmp.
1514 <title>runlevels</title>
1517 The runlevels field is completely ignored.
1522 <title>action</title>
1525 Valid actions include: sysinit, respawn,
1526 askfirst, wait, once, and ctrlaltdel.
1530 askfirst acts just like respawn, but before
1531 running the specified process it displays the
1532 line "Please press Enter to activate this
1533 console." and then waits for the user to press
1534 enter before starting the specified process.
1538 Unrecognized actions (like initdefault) will
1539 cause init to emit an error message, and then go
1540 along with its business.
1545 <title>process</title>
1548 Specifies the process to be executed and its
1554 Example /etc/inittab file:
1559 # This is run first except when booting in single-user mode.
1561 ::sysinit:/etc/init.d/rcS
1563 # /bin/sh invocations on selected ttys
1565 # Start an "askfirst" shell on the console (whatever that may be)
1567 # Start an "askfirst" shell on /dev/tty2
1568 tty2::askfirst:/bin/sh
1570 # /sbin/getty invocations for selected ttys
1572 tty4::respawn:/sbin/getty 38400 tty4
1573 tty5::respawn:/sbin/getty 38400 tty5
1575 # Example of how to put a getty on a serial line (for a terminal)
1577 #ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
1578 #ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
1580 # Example how to put a getty on a modem line.
1581 #ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
1583 # Stuff to do before rebooting
1584 ::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
1585 ::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
1591 <title>insmod</title>
1594 Usage: insmod [OPTION]... MODULE [symbol=value]...
1598 Load MODULE into the kernel.
1607 -f Force module to load into the wrong kernel version.
1608 -k Make module autoclean-able.
1610 -x Do not export externs
1619 Usage: kill [OPTION] PID...
1623 Send a signal (default is SIGTERM) to the specified
1633 -l List all signal names and numbers
1634 -SIG Send signal SIG
1645 252 root root S [apache]
1646 263 www-data www-data S [apache]
1647 264 www-data www-data S [apache]
1648 265 www-data www-data S [apache]
1649 266 www-data www-data S [apache]
1650 267 www-data www-data S [apache]
1656 <sect1 id="killall">
1657 <title>killall</title>
1660 Usage: killall [OPTION] NAME...
1664 Send a signal (default is SIGTERM) to the specified
1674 -l List all signal names and numbers
1675 -SIG Send signal SIG
1691 <title>length</title>
1694 Usage: length STRING
1698 Print the length of STRING.
1717 Usage: ln [OPTION]... TARGET FILE|DIRECTORY
1721 Create a link named FILE or DIRECTORY to the specified
1722 TARGET. You may use '--' to indicate that all following
1723 arguments are non-options.
1732 -s Make symbolic link instead of hard link
1733 -f Remove existing destination file
1743 $ ln -s BusyBox /tmp/ls
1745 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
1750 <sect1 id="loadacm">
1751 <title>loadacm</title>
1758 Load an acm from stdin.
1767 $ loadacm < /etc/i18n/acmname
1772 <sect1 id="loadfont">
1773 <title>loadfont</title>
1780 Load a console font from stdin.
1789 $ loadfont < /etc/i18n/fontname
1794 <sect1 id="loadkmap">
1795 <title>loadkmap</title>
1802 Load a binary keyboard translation table from stdin.
1811 $ loadkmap < /etc/i18n/lang-keymap
1817 <title>logger</title>
1820 Usage: logger [OPTION]... [MESSAGE]
1824 Write MESSAGE to the system log. If MESSAGE is '-', log
1834 -s Log to stderr as well as the system log
1835 -t Log using the specified tag (defaults to user name)
1836 -p Enter the message with the specified priority
1837 This may be numerical or a ``facility.level'' pair
1852 <sect1 id="logname">
1853 <title>logname</title>
1860 Print the name of the current user.
1879 Usage: ls [OPTION]... [FILE]...
1892 -a Do not hide entries starting with .
1893 -c With -l: show ctime (the time of last
1894 modification of file status information)
1895 -d List directory entries instead of contents
1896 -e List both full date and full time
1897 -l Use a long listing format
1898 -n List numeric UIDs and GIDs instead of names
1899 -p Append indicator (one of /=@|) to entries
1900 -u With -l: show access time (the time of last
1902 -x List entries by lines instead of by columns
1903 -A Do not list implied . and ..
1904 -C List entries by columns
1905 -F Append indicator (one of */=@|) to entries
1906 -R List subdirectories recursively
1921 <title>lsmod</title>
1928 List currently loaded kernel modules.
1932 <sect1 id="makedevs">
1933 <title>makedevs</title>
1936 Usage: makedevsf NAME TYPE MAJOR MINOR FIRST LAST [s]
1940 Create a range of block or character special files.
1949 b Make a block (buffered) device
1950 c or u Make a character (un-buffered) device
1951 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
1956 FIRST specifies the number appended to NAME to create
1957 the first device. LAST specifies the number of the last
1958 item that should be created. If 's' is the last
1959 argument, the base device is created as well.
1968 $ makedevs /dev/ttyS c 4 66 2 63
1969 [creates ttyS2-ttyS63]
1970 $ makedevs /dev/hda b 3 0 0 8 s
1971 [creates hda,hda1-hda8]
1977 <title>md5sum</title>
1980 Usage: md5sum [OPTION]... FILE...
1984 Print or check MD5 checksums.
1993 -b Read files in binary mode
1994 -c Check MD5 sums against given list
1995 -t Read files in text mode (default)
2001 The following two options are useful only when verifying
2007 -s Don't output anything, status code shows success
2008 -w Warn about improperly formated MD5 checksum lines
2019 6fd11e98b98a58f64ff3398d7b324003 busybox
2021 6fd11e98b98a58f64ff3398d7b324003 busybox
2022 6fd11e98b98a58f64ff3398d7b324002 busybox
2023 md5sum: MD5 check failed for 'busybox'
2030 <title>mkdir</title>
2033 Usage: mkdir [OPTION]... DIRECTORY...
2037 Create the DIRECTORY(s), if they do not already exist.
2046 -m Set permission mode (as in chmod), not rwxrwxrwx - umask
2047 -p No error if directory exists, make parent directories as needed
2059 /tmp/foo: File exists
2060 $ mkdir /tmp/foo/bar/baz
2061 /tmp/foo/bar/baz: No such file or directory
2062 $ mkdir -p /tmp/foo/bar/baz
2068 <title>mkfifo</title>
2071 Usage: mkfifo [OPTION] NAME
2075 Create a named pipe (identical to 'mknod NAME p').
2084 -m MODE Create the pipe using the specified mode (default a=rw)
2089 <sect1 id="mkfs.minix">
2090 <title>mkfs.minix</title>
2093 Usage: mkfs.minix [OPTION]... NAME [BLOCKS]
2097 Make a MINIX filesystem.
2106 -c Check the device for bad blocks
2107 -n [14|30] Specify the maximum length of filenames
2108 -i Specify the number of inodes for the filesystem
2109 -l FILENAME Read the bad blocks list from FILENAME
2110 -v Make a Minix version 2 filesystem
2116 <title>mknod</title>
2119 Usage: mknod [OPTION]... NAME TYPE MAJOR MINOR
2123 Create a special file (block, character, or pipe).
2132 -m Create the special file using the specified mode (default a=rw)
2142 b Make a block (buffered) device
2143 c or u Make a character (un-buffered) device
2144 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
2154 $ mknod /dev/fd0 b 2 0
2155 $ mknod -m 644 /tmp/pipe p
2161 <title>mkswap</title>
2164 Usage: mkswap [OPTION]... DEVICE [BLOCKS]
2168 Prepare a disk partition to be used as a swap partition.
2177 -c Check for read-ability.
2178 -v0 Make version 0 swap [max 128 Megs].
2179 -v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
2180 BLOCKS Number of block to use (default is entire partition).
2186 <title>mktemp</title>
2189 Usage: mktemp TEMPLATE
2193 Creates a temporary file with its name based on
2194 TEMPLATE. TEMPLATE is any name with six `Xs' (i.e.
2204 $ mktemp /tmp/temp.XXXXXX
2206 $ ls -la /tmp/temp.mWiLjM
2207 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
2216 Usage: more [FILE]...
2220 Page through text one screenful at a time.
2235 <title>mount</title>
2238 Usage: mount [OPTION]...
2243 or: mount [OPTION]... DEVICE DIRECTORY
2257 -a Mount all filesystems in /etc/fstab
2258 -o One of the many filesystem options listed below
2259 -r Mount the filesystem read-only
2260 -t TYPE Specify the filesystem type
2261 -w Mount the filesystem read-write
2266 Options for use with the -o flag:
2271 async/sync Writes are asynchronous / synchronous
2272 atime/noatime Enable / disable updates to inode access times
2273 dev/nodev Allow / disallow use of special device files
2274 exec/noexec Allow / disallow use of executable files
2275 loop Mount a file via loop device
2276 suid/nosuid Allow / disallow set-user-id-root programs
2277 remount Remount a currently mounted filesystem
2278 ro/rw Mount filesystem read-only / read-write
2283 There are even more flags that are filesystem specific.
2284 You'll have to see the written documentation for those.
2294 /dev/hda3 on / type minix (rw)
2295 proc on /proc type proc (rw)
2296 devpts on /dev/pts type devpts (rw)
2297 $ mount /dev/fd0 /mnt -t msdos -o ro
2298 $ mount /tmp/diskimage /opt -t ext2 -o loop
2307 Usage: mt [OPTION] OPCODE VALUE
2311 Control magnetic tape drive operation.
2320 -f DEVICE Control DEVICE
2329 Usage: mv SOURCE DEST
2334 or: mv SOURCE... DIRECTORY
2339 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
2348 $ mv /tmp/foo /bin/bar
2361 Open a pipe to HOST:PORT.
2370 $ nc foobar.somedomain.com 25
2371 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
2373 214-Commands supported:
2374 214- HELO EHLO MAIL RCPT DATA AUTH
2375 214 NOOP QUIT RSET HELP
2377 221 foobar closing connection
2382 <sect1 id="nslookup">
2383 <title>nslookup</title>
2386 Usage: nslookup [HOST]
2390 Query the nameserver for the IP address of the given
2400 $ nslookup localhost
2414 Usage: ping [OPTION]... HOST
2418 Send ICMP ECHO_REQUEST packets to HOST.
2427 -c COUNT Send only COUNT pings
2428 -s SIZE Send SIZE data bytes in packets (default=56)
2429 -q Quiet mode, only displays output at start and when finished
2440 PING slag (127.0.0.1): 56 data bytes
2441 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
2443 --- debian ping statistics ---
2444 1 packets transmitted, 1 packets received, 0% packet loss
2445 round-trip min/avg/max = 20.1/20.1/20.1 ms
2450 <sect1 id="poweroff">
2451 <title>poweroff</title>
2458 Shut down the system, and request that the kernel turn
2459 off power upon halting.
2464 <title>printf</title>
2467 Usage: printf FORMAT [ARGUMENT]...
2471 Format and print the given data in a manner similar to
2472 the C printf command.
2481 $ printf "Val=%d\n" 5
2495 Report process status. This version of ps accepts no
2515 PID Uid Gid State Command
2517 2 root root S [kflushd]
2518 3 root root S [kupdate]
2519 4 root root S [kpiod]
2520 5 root root S [kswapd]
2521 742 andersen andersen S [bash]
2522 743 andersen andersen S -bash
2523 745 root root S [getty]
2524 2990 andersen andersen R ps
2537 Print the full filename of the current working
2554 <title>rdate</title>
2557 Usage: rdate [OPTION] HOST
2561 Get and possibly set the system date and time from a remote HOST.
2570 -s Set the system date and time (default).
2571 -p Print the date and time.
2577 <title>reboot</title>
2589 <title>renice</title>
2592 Usage: renice priority pid [pid ...]
2596 Changes priority of running processes. Allowed priorities range
2597 from 20 (the process runs only when nothing else is running) to 0
2598 (default priority) to -20 (almost nothing else ever gets to run).
2603 <title>reset</title>
2618 Usage: rm [OPTION]... FILE...
2622 Remove (unlink) the FILE(s). You may use '--' to
2623 indicate that all following arguments are non-options.
2632 -f Remove existing destinations, never prompt
2633 -r or -R Remove the contents of directories recursively
2649 <title>rmdir</title>
2652 Usage: rmdir DIRECTORY...
2656 Remove DIRECTORY(s) if they are empty.
2671 <title>rmmod</title>
2674 Usage: rmmod [OPTION]... [MODULE]...
2678 Unload MODULE(s) from the kernel.
2687 -a Try to remove all unused kernel modules
2706 Usage: sed [OPTION]... SCRIPT [FILE]...
2710 Allowed sed scripts come in the following form:
2725 NUMBER Match specified line number
2727 /REGEXP/ Match specified regexp
2732 ! inverts the meaning of the match
2741 s/regexp/replacement/[igp]
2742 which attempt to match regexp against the pattern space
2743 and if successful replaces the matched portion with replacement.
2745 which appends TEXT after the pattern space
2750 This version of sed matches full regular expressions.
2759 -e Add the script to the commands to be executed
2760 -n Suppress automatic printing of pattern space
2770 $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
2776 <sect1 id="setkeycodes">
2777 <title>setkeycodes</title>
2780 Usage: setkeycodes SCANCODE KEYCODE ...
2784 Set entries into the kernel's scancode-to-keycode map,
2785 allowing unusual keyboards to generate usable keycodes.
2789 SCANCODE may be either xx or e0xx (hexadecimal), and
2790 KEYCODE is given in decimal.
2799 $ setkeycodes e030 127
2813 lash -- the BusyBox LAme SHell (command interpreter)
2817 This command does not yet have proper documentation.
2821 Use lash just as you would use any other shell. It
2822 properly handles pipes, redirects, job control, can be
2823 used as the shell for scripts (#!/bin/sh), and has a
2824 sufficient set of builtins to do what is needed. It does
2825 not (yet) support Bourne Shell syntax. If you need
2826 things like ``if-then-else'', ``while'', and such, use
2827 ash or bash. If you just need a very simple and
2828 extremely small shell, this will do the job.
2833 <title>sleep</title>
2840 Pause for N seconds.
2850 [2 second delay results]
2859 Usage: sort [OPTION]... [FILE]...
2863 Sort lines of text in FILE(s).
2872 -n Compare numerically
2873 -r Reverse after sorting
2883 $ echo -e "e\nf\nb\nd\nc\na" | sort
2894 <sect1 id="swapoff">
2895 <title>swapoff</title>
2898 Usage: swapoff [OPTION] [DEVICE]
2902 Stop swapping virtual memory pages on DEVICE.
2911 -a Stop swapping on all swap devices
2917 <title>swapon</title>
2920 Usage: swapon [OPTION] [DEVICE]
2924 Start swapping virtual memory pages on the given device.
2933 -a Start swapping on all swap devices
2946 Write all buffered filesystem blocks to disk.
2950 <sect1 id="syslogd">
2951 <title>syslogd</title>
2954 Usage: syslogd [OPTION]...
2958 Linux system and kernel (provides klogd) logging
2959 utility. Note that this version of syslogd/klogd ignores
2969 -m NUM Interval between MARK lines (default=20min, 0=off)
2970 -n Run as a foreground process
2971 -K Do not start up the klogd process
2972 -O FILE Use an alternate log file (default=/var/log/messages)
2973 -R HOST[:PORT] Log messages to HOST on PORT (default=514) over UDP.
2983 $ syslogd -R masterlog:514
2984 $ syslogd -R 192.168.1.1:601
2993 Usage: tail [OPTION] [FILE]...
2997 Print last 10 lines of each FILE to standard output.
2998 With more than one FILE, precede each with a header
2999 giving the file name. With no FILE, or when FILE is -,
3009 -n NUM Print last NUM lines instead of last 10
3010 -f Output data as the file grows. This version
3011 of 'tail -f' supports only one file at a time.
3021 $ tail -n 1 /etc/resolv.conf
3031 Usage: tar [MODE] [OPTION] [FILE]...
3039 MODE may be chosen from
3056 f FILE Use FILE for tarfile (or stdin if '-')
3058 exclude FILE File to exclude
3059 v List files processed
3069 $ zcat /tmp/tarball.tar.gz | tar -xf -
3070 $ tar -cf /tmp/tarball.tar /usr/local
3079 Usage: tee [OPTION]... [FILE]...
3083 Copy stdin to FILE(s), and also to stdout.
3092 -a Append to the given FILEs, do not overwrite
3102 $ echo "Hello" | tee /tmp/foo
3111 <title>telnet</title>
3114 Usage: telnet HOST [PORT]
3118 Establish interactive communication with another
3119 computer over a network using the TELNET protocol.
3124 <title>test, [</title>
3127 Usage: test EXPRESSION
3135 Check file types and compare values returning an exit
3136 code determined by the value of EXPRESSION.
3162 <title>touch</title>
3165 Usage: touch [OPTION]... FILE...
3169 Update the last-modified date on (or create) FILE(s).
3178 -c Do not create files
3189 /bin/ls: /tmp/foo: No such file or directory
3192 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
3201 Usage: tr [OPTION]... STRING1 [STRING2]
3205 Translate, squeeze, and/or delete characters from stdin,
3215 -c Take complement of STRING1
3216 -d Delete input characters coded STRING1
3217 -s Squeeze multiple output characters of STRING2 into one character
3227 $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
3241 Return an exit code of TRUE (1).
3265 Print the file name of the terminal connected to stdin.
3274 -s Print nothing, only return an exit status
3291 <title>umount</title>
3294 Usage: umount [OPTION]... DEVICE|DIRECTORY
3307 -a Unmount all file systems
3308 -r Try to remount devices as read-only if mount is busy
3309 -f Force filesystem umount (i.e. unreachable NFS server)
3310 -l Do not free loop device (if a loop device has been used)
3326 <title>uname</title>
3329 Usage: uname [OPTION]...
3333 Print certain system information. With no OPTION, same
3343 -a Print all information
3344 -m Print the machine (hardware) type
3345 -n Print the machine's network node hostname
3346 -r Print the operating system release
3347 -s Print the operating system name
3348 -p Print the host processor type
3349 -v Print the operating system version
3360 Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
3369 Usage: uniq [INPUT [OUTPUT]]
3373 Discard all but one of successive identical lines from
3374 INPUT (or stdin), writing to OUTPUT (or stdout).
3383 $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
3392 <title>update</title>
3395 Usage: update [OPTION]...
3399 Periodically flush filesystem buffers.
3408 -S Force use of sync(2) instead of flushing
3409 -s SECS Call sync this often (default 30)
3410 -f SECS Flush some buffers this often (default 5)
3416 <title>uptime</title>
3423 Display how long the system has been running since boot.
3433 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
3439 <title>usleep</title>
3446 Pause for N microseconds.
3456 [pauses for 1 second]
3461 <sect1 id="uudecode">
3462 <title>uudecode</title>
3465 Usage: uudecode [OPTION] [FILE]
3469 Uudecode a uuencoded file.
3478 -o FILE Direct output to FILE
3488 $ uudecode -o busybox busybox.uu
3490 -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
3495 <sect1 id="uuencode">
3496 <title>uuencode</title>
3499 Usage: uuencode [OPTION] [INFILE] OUTFILE
3512 -m Use base64 encoding as of RFC1521
3522 $ uuencode busybox busybox
3524 M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
3526 $ uudecode busybox busybox > busybox.uu
3536 Usage: wc [OPTION]... [FILE]...
3540 Print line, word, and byte counts for each FILE, and a
3541 total line if more than one FILE is specified. With no
3551 -c Print the byte counts
3552 -l Print the newline counts
3553 -L Print the length of the longest line
3554 -w Print the word counts
3565 31 46 1365 /etc/passwd
3571 <title>which</title>
3574 Usage: which [COMMAND]...
3594 <title>whoami</title>
3601 Print the user name associated with the current
3621 Usage: yes [STRING]...
3625 Repeatedly output a line with all specified STRING(s),
3634 Usage: zcat [OPTION]... FILE
3638 Uncompress FILE (or stdin if FILE is '-') to stdout.
3647 -t Test compressed file integrity
3662 <chapter id="LIBC-NSS">
3663 <title>LIBC NSS</title>
3666 GNU Libc uses the Name Service Switch (NSS) to configure the
3667 behavior of the C library for the local environment, and to
3668 configure how it reads system data, such as passwords and group
3669 information. BusyBox has made it Policy that it will never use
3670 NSS, and will never use libc calls that make use of NSS. This
3671 allows you to run an embedded system without the need for
3672 installing an /etc/nsswitch.conf file and without /lib/libnss_*
3673 libraries installed.
3677 If you are using a system that is using a remote LDAP server for
3678 authentication via GNU libc NSS, and you want to use BusyBox,
3679 then you will need to adjust the BusyBox source. Chances are
3680 though, that if you have enough space to install of that stuff
3681 on your system, then you probably want the full GNU utilities.
3685 <chapter id="SEE-ALSO">
3686 <title>SEE ALSO</title>
3689 <literal>textutils(1),</literal>
3690 <literal>shellutils(1),</literal>
3695 <chapter id="MAINTAINER">
3696 <title>MAINTAINER</title>
3699 Erik Andersen <andersee@debian.org> <andersen@lineo.com>
3703 <chapter id="AUTHORS">
3704 <title>AUTHORS</title>
3707 The following people have contributed code to BusyBox whether
3708 they know it or not.
3712 Erik Andersen <andersee@debian.org>
3716 John Beppu <beppu@lineo.com>
3720 Brian Candler <B.Candler@pobox.com>
3724 Randolph Chung <tausq@debian.org>
3728 Dave Cinege <dcinege@psychosis.com>
3732 Karl M. Hegbloom <karlheg@debian.org>
3736 John Lombardo <john@deltanet.com>
3740 Glenn McGrath <bug1@netconnect.com.au>
3744 Bruce Perens <bruce@perens.com>
3748 Pavel Roskin <proski@gnu.org>
3752 Linus Torvalds <torvalds@transmeta.com>
3756 Mark Whitley <markw@lineo.com>
3760 Charles P. Wright <cpwright@villagenet.com>
3764 Enrique Zanardi <ezanardi@ull.es>
3767 </book> <!-- End of the book -->