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, cp, cut, date,
136 dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset,
137 fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt,
138 head, hostid, hostname, id, init, insmod, kill, killall, length, ln,
139 loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir,
140 mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc,
141 nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed,
142 setkeycodes, sfdisk, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail,
143 tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update,
144 uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [
152 Usage: ar [OPTION] archive [FILENAME]...
156 Extract or list files from an ar archive.
165 o Preserve original dates
169 v Verbosely list files processed
174 <sect1 id="basename">
175 <title>basename</title>
177 Usage: basename FILE [SUFFIX]
181 Strip directory path and suffixes from FILE. If specified, also removes
191 $ basename /usr/local/bin/foo
193 $ basename /usr/local/bin/
195 $ basename /foo/bar.txt .txt
209 Concatenate <literal>FILE(s)</literal> and prints them to the standard
229 Usage: chgrp [OPTION]... GROUP FILE...
233 Change the group membership of each FILE to GROUP.
242 -R Change files and directories recursively
253 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
254 $ chgrp root /tmp/foo
256 -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
265 Usage: chmod [<emphasis>-R</emphasis>] MODE[,MODE]... FILE...
269 Change file access permissions for the specified
270 <literal>FILE(s)</literal> (or directories). Each MODE is defined by
271 combining the letters for WHO has access to the file, an OPERATOR for
272 selecting how the permissions should be changed, and a PERMISSION for
273 <literal>FILE(s)</literal> (or directories).
277 WHO may be chosen from
282 u User who owns the file
283 g Users in the file's Group
284 o Other users not in the file's group
290 OPERATOR may be chosen from
296 - Remove a permission
297 = Assign a permission
302 PERMISSION may be chosen from
309 x Execute (or access for directories)
310 s Set user (or group) ID bit
311 t Sticky bit (for directories prevents removing files by non-owners)
316 Alternately, permissions can be set numerically where the first three
317 numbers are calculated by adding the octal values, such as
329 An optional fourth digit can also be used to specify
346 -R Change files and directories recursively.
357 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
360 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
363 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
371 Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
375 Change the owner and/or group of each FILE to OWNER and/or GROUP.
384 -R Change files and directories recursively
395 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
396 $ chown root /tmp/foo
398 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
399 $ chown root.root /tmp/foo
401 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
407 <title>chroot</title>
409 Usage: chroot NEWROOT [COMMAND...]
413 Run COMMAND with root directory set to NEWROOT.
423 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
424 $ mount /dev/hdc1 /mnt -t minix
427 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
439 Change the foreground virtual terminal to /dev/ttyN
459 Usage: cp [OPTION]... SOURCE DEST
464 or: cp [OPTION]... SOURCE... DIRECTORY
469 Copy SOURCE to DEST, or multiple <literal>SOURCE(s)</literal> to
481 -p Preserve file attributes if possible
482 -R Copy directories recursively
491 Usage: cut [OPTION]... [FILE]...
495 Print selected fields from each input FILE to standard output.
504 -b LIST Output only bytes from LIST
505 -c LIST Output only characters from LIST
506 -d CHAR Use CHAR instead of tab as the field delimiter
507 -s Only output Lines if the include DELIM
508 -f N Print only these fields
519 $ echo "Hello world" | cut -f 1 -d ' '
521 $ echo "Hello world" | cut -f 2 -d ' '
531 Usage: date [OPTION]... [+FORMAT]
536 or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
541 Display the current time in the given FORMAT, or set the system date.
550 -R Output RFC-822 compliant date string
551 -s Set time described by STRING
552 -u Print or set Coordinated Universal Time
563 Wed Apr 12 18:52:41 MDT 2000
572 Usage: dc [EXPRESSION]
576 This is a Tiny RPN calculator that understands the
577 following operations: +, -, /, *, and, or, not, eor. If
578 no arguments are given, dc will process input from
583 The behaviour of BusyBox/dc deviates (just a little ;-)
584 from GNU/dc, but this will be remedied in the future.
601 $ echo 72 9 div 8 mul | dc
611 Usage: dd [OPTION]...
615 Copy a file, converting and formatting according to
625 if=FILE Read from FILE instead of stdin
626 of=FILE Write to FILE instead of stdout
627 bs=N Read and write N bytes at a time
628 count=N Copy only N input blocks
629 skip=N Skip N input blocks
630 seek=N Skip N output blocks
635 Numbers may be suffixed by w (x2), k (x1024), b (x512),
645 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
652 <sect1 id="deallocvt">
653 <title>deallocvt</title>
660 Deallocate unused virtual terminal /dev/ttyN.
672 Print the filesystem space used and space available.
682 Filesystem 1k-blocks Used Available Use% Mounted on
683 /dev/sda3 8690864 8553540 137324 98% /
684 /dev/sda1 64216 36364 27852 57% /boot
686 Filesystem 1k-blocks Used Available Use% Mounted on
687 /dev/sda3 8690864 8553540 137324 98% /
693 <title>dirname</title>
700 Strip non-directory suffix from NAME.
721 Usage: dmesg [OPTION]...
725 Print or control the kernel ring buffer.
734 -c Clear the ring buffer after printing
735 -n LEVEL Set the console logging level to LEVEL
736 -s BUFSIZE Query ring buffer using a buffer of BUFSIZE
745 Usage: du [OPTION]... [FILE]...
749 Summarize the disk space used for each FILE or current
750 directory. Disk space printed in units of 1k (i.e.
760 -l Count sizes many times if hard linked
761 -s Display only a total for each argument
773 12 ./kernel-patches/CVS
794 Dump utmp file format (pipe delimited) from FILE or
804 $ dutmp /var/run/utmp
805 8|7||si|||0|0|0|955637625|760097|0
806 2|0|~|~~|reboot||0|0|0|955637625|782235|0
807 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
808 8|125||l4|||0|0|0|955637629|998367|0
809 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
810 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
811 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
820 Usage: echo [OPTION]... [ARG]...
824 Print ARGs to stdout.
833 -n Suppress trailing newline
834 -e Enable interpretation of escaped characters
835 -E Disable interpretation of escaped characters
845 $ echo "Erik is cool"
847 $ echo -e "Erik\nis\ncool"
851 $ echo "Erik\nis\ncool"
865 Return an exit code of FALSE (1).
885 Usage: fbset [OPTION]... [MODE]
889 Show and modify frame buffer device settings.
898 -h Display option summary
899 -fb DEVICE Operate on DEVICE
900 -db FILE Use FILE for mode database
901 -g XRES YRES VXRES VYRES DEPTH Set all geometry parameters
902 -t PIXCLOCK LEFT RIGHT UPPER LOWER HSLEN VSLEN Set all timing parameters
903 -xres RES Set visible horizontal resolution
904 -yres RES Set visible vertical resolution
916 # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
917 geometry 1024 768 1024 768 16
918 timings 12714 128 32 16 4 128 4
920 rgba 5/11,6/5,5/0,0/0
927 <title>fdflush</title>
930 Usage: fdflush DEVICE
934 Force floppy disk drive to detect disk change on DEVICE.
942 Usage: find [PATH]... [EXPRESSION]
946 Search for files in a directory hierarchy. The default
947 PATH is the current directory; default EXPRESSION is
952 EXPRESSION may consist of:
957 -follow Dereference symbolic links
958 -name PATTERN File name (leading directories removed) matches PATTERN
959 -print Print the full file name followed by a newline to stdout
969 $ find / -name /etc/passwd
983 Displays the amount of free and used system memory.
993 total used free shared buffers
994 Mem: 257628 248724 8904 59644 93124
995 Swap: 128516 8404 120112
996 Total: 386144 257128 129016
1001 <sect1 id="freeramdisk">
1002 <title>freeramdisk</title>
1005 Usage: freeramdisk DEVICE
1009 Free all memory used by the ramdisk DEVICE.
1018 $ freeramdisk /dev/ram2
1023 <sect1 id="fsck.minix">
1024 <title>fsck.minix</title>
1027 Usage: fsck.minix [OPTION]... DEVICE
1031 Perform a consistency check on the MINIX filesystem on
1041 -l List all filenames
1042 -r Perform interactive repairs
1043 -a Perform automatic repairs
1045 -s Output super-block information
1046 -m Activate MINIX-like "mode not cleared" warnings
1047 -f Force file system check.
1056 Usage: grep [OPTIONS]... PATTERN [FILE]...
1060 Search for PATTERN in each FILE or stdin.
1069 -h Suppress the prefixing filename on output
1070 -i Ignore case distinctions
1071 -n Print line number with output lines
1072 -q Be quiet. Returns 0 if result was found, 1 otherwise
1073 -v Select non-matching lines
1078 This version of grep matches full regular expressions.
1087 $ grep root /etc/passwd
1088 root:x:0:0:root:/root:/bin/bash
1089 $ grep ^[rR]oo. /etc/passwd
1090 root:x:0:0:root:/root:/bin/bash
1096 <title>gunzip</title>
1099 Usage: gunzip [OPTION]... FILE
1103 Uncompress FILE (or stdin if FILE is '-').
1112 -c Write output to standard output
1113 -t Test compressed file integrity
1123 $ ls -la /tmp/BusyBox*
1124 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
1125 $ gunzip /tmp/BusyBox-0.43.tar.gz
1126 $ ls -la /tmp/BusyBox*
1127 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1136 Usage: gzip [OPTION]... FILE
1140 Compress FILE (or stdin if FILE is '-') with maximum
1141 compression to FILE.gz (or stdout if FILE is '-').
1150 -c Write output to standard output
1160 $ ls -la /tmp/BusyBox*
1161 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1162 $ gzip /tmp/BusyBox-0.43.tar
1163 $ ls -la /tmp/BusyBox*
1164 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
1185 Usage: head [OPTION] FILE...
1189 Print first 10 lines of each FILE to standard output.
1190 With more than one FILE, precede each with a header
1191 giving the file name. With no FILE, or when FILE is -,
1192 read standard input.
1201 -n NUM Print first NUM lines instead of first 10
1211 $ head -n 2 /etc/passwd
1212 root:x:0:0:root:/root:/bin/bash
1213 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
1219 <title>hostid</title>
1226 Prints out a unique 32-bit identifier for the current
1227 machine. The 32-bit identifier is intended to be unique
1228 among all UNIX systems in existence.
1232 <sect1 id="hostname">
1233 <title>hostname</title>
1236 Usage: hostname [OPTION]... [HOSTNAME|-F FILE]
1240 Get or set the hostname or DNS domain name. If a
1241 hostname is given (or a file with the -F parameter), the
1242 host name will be set.
1252 -i Addresses for the hostname
1254 -F FILE Use the contents of FILE to specify the hostname
1274 Usage: id [OPTION]... [USERNAME]
1278 Print information for USERNAME or the current user.
1287 -g Print only the group ID
1288 -u Print only the user ID
1289 -r Print the real user ID instead of the effective ID (with -ug)
1300 uid=1000(andersen) gid=1000(andersen)
1313 Init is the parent of all processes.
1317 This version of init is designed to be run only by the
1322 BusyBox init doesn't support multiple runlevels. The
1323 runlevels field of the /etc/inittab file is completely
1324 ignored by BusyBox init. If you want runlevels, use
1329 BusyBox init works just fine without an inittab. If no
1330 inittab is found, it has the following default behavior:
1335 ::sysinit:/etc/init.d/rcS
1341 If it detects that /dev/console is _not_ a serial
1342 console, it will also run:
1347 tty2::askfirst:/bin/sh
1352 If you choose to use an /etc/inittab file, the inittab
1353 entry format is as follows:
1358 <id>:<runlevels>:<action>:<process>
1365 WARNING: This field has a non-traditional
1366 meaning for BusyBox init! The id field is used
1367 by BusyBox init to specify the controlling tty
1368 for the specified process to run on. The
1369 contents of this field are appended to "/dev/"
1370 and used as-is. There is no need for this field
1371 to be unique, although if it isn't you may have
1372 strange results. If this field is left blank,
1373 it is completely ignored. Also note that if
1374 BusyBox detects that a serial console is in use,
1375 then all entries containing non-empty id fields
1376 will _not_ be run. BusyBox init does nothing
1377 with utmp. We don't need no stinkin' utmp.
1382 <title>runlevels</title>
1385 The runlevels field is completely ignored.
1390 <title>action</title>
1393 Valid actions include: sysinit, respawn,
1394 askfirst, wait, once, and ctrlaltdel.
1398 askfirst acts just like respawn, but before
1399 running the specified process it displays the
1400 line "Please press Enter to activate this
1401 console." and then waits for the user to press
1402 enter before starting the specified process.
1406 Unrecognized actions (like initdefault) will
1407 cause init to emit an error message, and then go
1408 along with its business.
1413 <title>process</title>
1416 Specifies the process to be executed and its
1422 Example /etc/inittab file:
1427 # This is run first except when booting in single-user mode.
1429 ::sysinit:/etc/init.d/rcS
1431 # /bin/sh invocations on selected ttys
1433 # Start an "askfirst" shell on the console (whatever that may be)
1435 # Start an "askfirst" shell on /dev/tty2
1436 tty2::askfirst:/bin/sh
1438 # /sbin/getty invocations for selected ttys
1440 tty4::respawn:/sbin/getty 38400 tty4
1441 tty5::respawn:/sbin/getty 38400 tty5
1443 # Example of how to put a getty on a serial line (for a terminal)
1445 #ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
1446 #ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
1448 # Example how to put a getty on a modem line.
1449 #ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
1451 # Stuff to do before rebooting
1452 ::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
1453 ::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
1459 <title>insmod</title>
1462 Usage: insmod [OPTION]... MODULE [symbol=value]...
1466 Load MODULE into the kernel.
1475 -f Force module to load into the wrong kernel version.
1476 -k Make module autoclean-able.
1478 -x Do not export externs
1487 Usage: kill [OPTION] PID...
1491 Send a signal (default is SIGTERM) to the specified
1501 -l List all signal names and numbers
1502 -SIG Send signal SIG
1513 252 root root S [apache]
1514 263 www-data www-data S [apache]
1515 264 www-data www-data S [apache]
1516 265 www-data www-data S [apache]
1517 266 www-data www-data S [apache]
1518 267 www-data www-data S [apache]
1524 <sect1 id="killall">
1525 <title>killall</title>
1528 Usage: killall [OPTION] NAME...
1532 Send a signal (default is SIGTERM) to the specified
1542 -l List all signal names and numbers
1543 -SIG Send signal SIG
1559 <title>length</title>
1562 Usage: length STRING
1566 Print the length of STRING.
1585 Usage: ln [OPTION]... TARGET FILE|DIRECTORY
1589 Create a link named FILE or DIRECTORY to the specified
1590 TARGET. You may use '--' to indicate that all following
1591 arguments are non-options.
1600 -s Make symbolic link instead of hard link
1601 -f Remove existing destination file
1611 $ ln -s BusyBox /tmp/ls
1613 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
1618 <sect1 id="loadacm">
1619 <title>loadacm</title>
1626 Load an acm from stdin.
1635 $ loadacm < /etc/i18n/acmname
1640 <sect1 id="loadfont">
1641 <title>loadfont</title>
1648 Load a console font from stdin.
1657 $ loadfont < /etc/i18n/fontname
1662 <sect1 id="loadkmap">
1663 <title>loadkmap</title>
1670 Load a binary keyboard translation table from stdin.
1679 $ loadkmap < /etc/i18n/lang-keymap
1685 <title>logger</title>
1688 Usage: logger [OPTION]... [MESSAGE]
1692 Write MESSAGE to the system log. If MESSAGE is '-', log
1702 -s Log to stderr as well as the system log
1703 -t Log using the specified tag (defaults to user name)
1704 -p Enter the message with the specified priority
1705 This may be numerical or a ``facility.level'' pair
1720 <sect1 id="logname">
1721 <title>logname</title>
1728 Print the name of the current user.
1747 Usage: ls [OPTION]... [FILE]...
1760 -a Do not hide entries starting with .
1761 -c With -l: show ctime (the time of last
1762 modification of file status information)
1763 -d List directory entries instead of contents
1764 -e List both full date and full time
1765 -l Use a long listing format
1766 -n List numeric UIDs and GIDs instead of names
1767 -p Append indicator (one of /=@|) to entries
1768 -u With -l: show access time (the time of last
1770 -x List entries by lines instead of by columns
1771 -A Do not list implied . and ..
1772 -C List entries by columns
1773 -F Append indicator (one of */=@|) to entries
1774 -R List subdirectories recursively
1789 <title>lsmod</title>
1796 List currently loaded kernel modules.
1800 <sect1 id="makedevs">
1801 <title>makedevs</title>
1804 Usage: makedevsf NAME TYPE MAJOR MINOR FIRST LAST [s]
1808 Create a range of block or character special files.
1817 b Make a block (buffered) device
1818 c or u Make a character (un-buffered) device
1819 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
1824 FIRST specifies the number appended to NAME to create
1825 the first device. LAST specifies the number of the last
1826 item that should be created. If 's' is the last
1827 argument, the base device is created as well.
1836 $ makedevs /dev/ttyS c 4 66 2 63
1837 [creates ttyS2-ttyS63]
1838 $ makedevs /dev/hda b 3 0 0 8 s
1839 [creates hda,hda1-hda8]
1845 <title>md5sum</title>
1848 Usage: md5sum [OPTION]... FILE...
1852 Print or check MD5 checksums.
1861 -b Read files in binary mode
1862 -c Check MD5 sums against given list
1863 -t Read files in text mode (default)
1869 The following two options are useful only when verifying
1875 -s Don't output anything, status code shows success
1876 -w Warn about improperly formated MD5 checksum lines
1887 6fd11e98b98a58f64ff3398d7b324003 busybox
1889 6fd11e98b98a58f64ff3398d7b324003 busybox
1890 6fd11e98b98a58f64ff3398d7b324002 busybox
1891 md5sum: MD5 check failed for 'busybox'
1898 <title>mkdir</title>
1901 Usage: mkdir [OPTION]... DIRECTORY...
1905 Create the DIRECTORY(s), if they do not already exist.
1914 -m Set permission mode (as in chmod), not rwxrwxrwx - umask
1915 -p No error if directory exists, make parent directories as needed
1927 /tmp/foo: File exists
1928 $ mkdir /tmp/foo/bar/baz
1929 /tmp/foo/bar/baz: No such file or directory
1930 $ mkdir -p /tmp/foo/bar/baz
1936 <title>mkfifo</title>
1939 Usage: mkfifo [OPTION] NAME
1943 Create a named pipe (identical to 'mknod NAME p').
1952 -m MODE Create the pipe using the specified mode (default a=rw)
1957 <sect1 id="mkfs.minix">
1958 <title>mkfs.minix</title>
1961 Usage: mkfs.minix [OPTION]... NAME [BLOCKS]
1965 Make a MINIX filesystem.
1974 -c Check the device for bad blocks
1975 -n [14|30] Specify the maximum length of filenames
1976 -i Specify the number of inodes for the filesystem
1977 -l FILENAME Read the bad blocks list from FILENAME
1978 -v Make a Minix version 2 filesystem
1984 <title>mknod</title>
1987 Usage: mknod [OPTION]... NAME TYPE MAJOR MINOR
1991 Create a special file (block, character, or pipe).
2000 -m Create the special file using the specified mode (default a=rw)
2010 b Make a block (buffered) device
2011 c or u Make a character (un-buffered) device
2012 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
2022 $ mknod /dev/fd0 b 2 0
2023 $ mknod -m 644 /tmp/pipe p
2029 <title>mkswap</title>
2032 Usage: mkswap [OPTION]... DEVICE [BLOCKS]
2036 Prepare a disk partition to be used as a swap partition.
2045 -c Check for read-ability.
2046 -v0 Make version 0 swap [max 128 Megs].
2047 -v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
2048 BLOCKS Number of block to use (default is entire partition).
2054 <title>mktemp</title>
2057 Usage: mktemp TEMPLATE
2061 Creates a temporary file with its name based on
2062 TEMPLATE. TEMPLATE is any name with six `Xs' (i.e.
2072 $ mktemp /tmp/temp.XXXXXX
2074 $ ls -la /tmp/temp.mWiLjM
2075 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
2084 Usage: more [FILE]...
2088 Page through text one screenful at a time.
2103 <title>mount</title>
2106 Usage: mount [OPTION]...
2111 or: mount [OPTION]... DEVICE DIRECTORY
2125 -a Mount all filesystems in /etc/fstab
2126 -o One of the many filesystem options listed below
2127 -r Mount the filesystem read-only
2128 -t TYPE Specify the filesystem type
2129 -w Mount the filesystem read-write
2134 Options for use with the -o flag:
2139 async/sync Writes are asynchronous / synchronous
2140 atime/noatime Enable / disable updates to inode access times
2141 dev/nodev Allow / disallow use of special device files
2142 exec/noexec Allow / disallow use of executable files
2143 loop Mount a file via loop device
2144 suid/nosuid Allow / disallow set-user-id-root programs
2145 remount Remount a currently mounted filesystem
2146 ro/rw Mount filesystem read-only / read-write
2151 There are even more flags that are filesystem specific.
2152 You'll have to see the written documentation for those.
2162 /dev/hda3 on / type minix (rw)
2163 proc on /proc type proc (rw)
2164 devpts on /dev/pts type devpts (rw)
2165 $ mount /dev/fd0 /mnt -t msdos -o ro
2166 $ mount /tmp/diskimage /opt -t ext2 -o loop
2175 Usage: mt [OPTION] OPCODE VALUE
2179 Control magnetic tape drive operation.
2188 -f DEVICE Control DEVICE
2197 Usage: mv SOURCE DEST
2202 or: mv SOURCE... DIRECTORY
2207 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
2216 $ mv /tmp/foo /bin/bar
2229 Open a pipe to HOST:PORT.
2238 $ nc foobar.somedomain.com 25
2239 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
2241 214-Commands supported:
2242 214- HELO EHLO MAIL RCPT DATA AUTH
2243 214 NOOP QUIT RSET HELP
2245 221 foobar closing connection
2250 <sect1 id="nslookup">
2251 <title>nslookup</title>
2254 Usage: nslookup [HOST]
2258 Query the nameserver for the IP address of the given
2268 $ nslookup localhost
2282 Usage: ping [OPTION]... HOST
2286 Send ICMP ECHO_REQUEST packets to HOST.
2295 -c COUNT Send only COUNT pings
2296 -s SIZE Send SIZE data bytes in packets (default=56)
2297 -q Quiet mode, only displays output at start and when finished
2308 PING slag (127.0.0.1): 56 data bytes
2309 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
2311 --- debian ping statistics ---
2312 1 packets transmitted, 1 packets received, 0% packet loss
2313 round-trip min/avg/max = 20.1/20.1/20.1 ms
2318 <sect1 id="poweroff">
2319 <title>poweroff</title>
2326 Shut down the system, and request that the kernel turn
2327 off power upon halting.
2332 <title>printf</title>
2335 Usage: printf FORMAT [ARGUMENT]...
2339 Format and print the given data in a manner similar to
2340 the C printf command.
2349 $ printf "Val=%d\n" 5
2363 Report process status. This version of ps accepts no
2383 PID Uid Gid State Command
2385 2 root root S [kflushd]
2386 3 root root S [kupdate]
2387 4 root root S [kpiod]
2388 5 root root S [kswapd]
2389 742 andersen andersen S [bash]
2390 743 andersen andersen S -bash
2391 745 root root S [getty]
2392 2990 andersen andersen R ps
2405 Print the full filename of the current working
2422 <title>reboot</title>
2437 Usage: rm [OPTION]... FILE...
2441 Remove (unlink) the FILE(s). You may use '--' to
2442 indicate that all following arguments are non-options.
2451 -f Remove existing destinations, never prompt
2452 -r or -R Remove the contents of directories recursively
2468 <title>rmdir</title>
2471 Usage: rmdir DIRECTORY...
2475 Remove DIRECTORY(s) if they are empty.
2490 <title>rmmod</title>
2493 Usage: rmmod [OPTION]... [MODULE]...
2497 Unload MODULE(s) from the kernel.
2506 -a Try to remove all unused kernel modules
2525 Usage: sed [OPTION]... SCRIPT [FILE]...
2529 Allowed sed scripts come in the following form:
2544 NUMBER Match specified line number
2546 /REGEXP/ Match specified regexp
2551 ! inverts the meaning of the match
2560 s/regexp/replacement/[igp]
2561 which attempt to match regexp against the pattern space
2562 and if successful replaces the matched portion with replacement.
2564 which appends TEXT after the pattern space
2569 This version of sed matches full regular expressions.
2578 -e Add the script to the commands to be executed
2579 -n Suppress automatic printing of pattern space
2589 $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
2595 <sect1 id="setkeycodes">
2596 <title>setkeycodes</title>
2599 Usage: setkeycodes SCANCODE KEYCODE ...
2603 Set entries into the kernel's scancode-to-keycode map,
2604 allowing unusual keyboards to generate usable keycodes.
2608 SCANCODE may be either xx or e0xx (hexadecimal), and
2609 KEYCODE is given in decimal.
2618 $ setkeycodes e030 127
2624 <title>sfdisk</title>
2627 Usage: sfdisk [OPTION]... DEVICE
2640 -s List size of a partition
2641 -c Print or change partition Id
2642 -l List partitions of each device
2643 -d Idem, but in a format suitable for later input
2644 -i Number cylinders etc. from 1 instead of from 0
2645 -uS Accept/report in units of sectors
2646 -uB Accept/report in units of blocks
2647 -uC Accept/report in units of cylinders
2648 -uM Accept/report in units of MB
2649 -T List the known partition types
2650 -D For DOS-compatibility: waste a little space
2651 -R Make kernel reread partition table
2652 -N NUM Change only the partition with number NUM
2653 -n Do not actually write to disk
2654 -O FILE Save the sectors that will be overwritten to FILE
2655 -I FILE Restore these sectors from FILE
2665 -g Print the kernel's idea of the geometry
2666 -x Also list extended partitions on output
2667 or expect descriptors for them on input
2668 -L Do not complain about things irrelevant for Linux
2669 -q Suppress warning messages
2674 You can override the detected geometry using:
2679 -C NUM Set the number of cylinders to use
2680 -H NUM Set the number of heads to use
2681 -S NUM Set the number of sectors to use
2686 You can disable all consistency checking with:
2691 -f Do what I say, even if it is stupid
2704 lash -- the BusyBox LAme SHell (command interpreter)
2708 This command does not yet have proper documentation.
2712 Use lash just as you would use any other shell. It
2713 properly handles pipes, redirects, job control, can be
2714 used as the shell for scripts (#!/bin/sh), and has a
2715 sufficient set of builtins to do what is needed. It does
2716 not (yet) support Bourne Shell syntax. If you need
2717 things like ``if-then-else'', ``while'', and such, use
2718 ash or bash. If you just need a very simple and
2719 extremely small shell, this will do the job.
2724 <title>sleep</title>
2731 Pause for N seconds.
2741 [2 second delay results]
2750 Usage: sort [OPTION]... [FILE]...
2754 Sort lines of text in FILE(s).
2763 -n Compare numerically
2764 -r Reverse after sorting
2774 $ echo -e "e\nf\nb\nd\nc\na" | sort
2785 <sect1 id="swapoff">
2786 <title>swapoff</title>
2789 Usage: swapoff [OPTION] [DEVICE]
2793 Stop swapping virtual memory pages on DEVICE.
2802 -a Stop swapping on all swap devices
2808 <title>swapon</title>
2811 Usage: swapon [OPTION] [DEVICE]
2815 Start swapping virtual memory pages on the given device.
2824 -a Start swapping on all swap devices
2837 Write all buffered filesystem blocks to disk.
2841 <sect1 id="syslogd">
2842 <title>syslogd</title>
2845 Usage: syslogd [OPTION]...
2849 Linux system and kernel (provides klogd) logging
2850 utility. Note that this version of syslogd/klogd ignores
2860 -m NUM Interval between MARK lines (default=20min, 0=off)
2861 -n Run as a foreground process
2862 -K Do not start up the klogd process
2863 -O FILE Use an alternate log file (default=/var/log/messages)
2881 Usage: tail [OPTION] [FILE]...
2885 Print last 10 lines of each FILE to standard output.
2886 With more than one FILE, precede each with a header
2887 giving the file name. With no FILE, or when FILE is -,
2897 -n NUM Print last NUM lines instead of last 10
2898 -f Output data as the file grows. This version
2899 of 'tail -f' supports only one file at a time.
2909 $ tail -n 1 /etc/resolv.conf
2919 Usage: tar [MODE] [OPTION] [FILE]...
2927 MODE may be chosen from
2944 f FILE Use FILE for tarfile (or stdin if '-')
2946 --exclude FILE Exclude FILE
2947 v List files processed
2957 $ zcat /tmp/tarball.tar.gz | tar -xf -
2958 $ tar -cf /tmp/tarball.tar /usr/local
2967 Usage: tee [OPTION]... [FILE]...
2971 Copy stdin to FILE(s), and also to stdout.
2980 -a Append to the given FILEs, do not overwrite
2990 $ echo "Hello" | tee /tmp/foo
2999 <title>telnet</title>
3002 Usage: telnet HOST [PORT]
3006 Establish interactive communication with another
3007 computer over a network using the TELNET protocol.
3012 <title>test, [</title>
3015 Usage: test EXPRESSION
3023 Check file types and compare values returning an exit
3024 code determined by the value of EXPRESSION.
3050 <title>touch</title>
3053 Usage: touch [OPTION]... FILE...
3057 Update the last-modified date on (or create) FILE(s).
3066 -c Do not create files
3077 /bin/ls: /tmp/foo: No such file or directory
3080 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
3089 Usage: tr [OPTION]... STRING1 [STRING2]
3093 Translate, squeeze, and/or delete characters from stdin,
3103 -c Take complement of STRING1
3104 -d Delete input characters coded STRING1
3105 -s Squeeze multiple output characters of STRING2 into one character
3115 $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
3129 Return an exit code of TRUE (1).
3153 Print the file name of the terminal connected to stdin.
3162 -s Print nothing, only return an exit status
3179 <title>umount</title>
3182 Usage: umount [OPTION]... DEVICE|DIRECTORY
3195 -a Unmount all file systems
3196 -r Try to remount devices as read-only if mount is busy
3197 -f Force filesystem umount (i.e. unreachable NFS server)
3198 -l Do not free loop device (if a loop device has been used)
3214 <title>uname</title>
3217 Usage: uname [OPTION]...
3221 Print certain system information. With no OPTION, same
3231 -a Print all information
3232 -m Print the machine (hardware) type
3233 -n Print the machine's network node hostname
3234 -r Print the operating system release
3235 -s Print the operating system name
3236 -p Print the host processor type
3237 -v Print the operating system version
3248 Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
3257 Usage: uniq [INPUT [OUTPUT]]
3261 Discard all but one of successive identical lines from
3262 INPUT (or stdin), writing to OUTPUT (or stdout).
3271 $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
3280 <title>update</title>
3283 Usage: update [OPTION]...
3287 Periodically flush filesystem buffers.
3296 -S Force use of sync(2) instead of flushing
3297 -s SECS Call sync this often (default 30)
3298 -f SECS Flush some buffers this often (default 5)
3304 <title>uptime</title>
3311 Display how long the system has been running since boot.
3321 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
3327 <title>usleep</title>
3334 Pause for N microseconds.
3344 [pauses for 1 second]
3349 <sect1 id="uudecode">
3350 <title>uudecode</title>
3353 Usage: uudecode [OPTION] [FILE]
3357 Uudecode a uuencoded file.
3366 -o FILE Direct output to FILE
3376 $ uudecode -o busybox busybox.uu
3378 -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
3383 <sect1 id="uuencode">
3384 <title>uuencode</title>
3387 Usage: uuencode [OPTION] [INFILE] OUTFILE
3400 -m Use base64 encoding as of RFC1521
3410 $ uuencode busybox busybox
3412 M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
3414 $ uudecode busybox busybox > busybox.uu
3424 Usage: wc [OPTION]... [FILE]...
3428 Print line, word, and byte counts for each FILE, and a
3429 total line if more than one FILE is specified. With no
3439 -c Print the byte counts
3440 -l Print the newline counts
3441 -L Print the length of the longest line
3442 -w Print the word counts
3453 31 46 1365 /etc/passwd
3459 <title>which</title>
3462 Usage: which [COMMAND]...
3482 <title>whoami</title>
3489 Print the user name associated with the current
3509 Usage: yes [STRING]...
3513 Repeatedly output a line with all specified STRING(s),
3522 Usage: zcat [OPTION]... FILE
3526 Uncompress FILE (or stdin if FILE is '-') to stdout.
3535 -t Test compressed file integrity
3550 <chapter id="LIBC-NSS">
3551 <title>LIBC NSS</title>
3554 GNU Libc uses the Name Service Switch (NSS) to configure the
3555 behavior of the C library for the local environment, and to
3556 configure how it reads system data, such as passwords and group
3557 information. BusyBox has made it Policy that it will never use
3558 NSS, and will never use libc calls that make use of NSS. This
3559 allows you to run an embedded system without the need for
3560 installing an /etc/nsswitch.conf file and without /lib/libnss_*
3561 libraries installed.
3565 If you are using a system that is using a remote LDAP server for
3566 authentication via GNU libc NSS, and you want to use BusyBox,
3567 then you will need to adjust the BusyBox source. Chances are
3568 though, that if you have enough space to install of that stuff
3569 on your system, then you probably want the full GNU utilities.
3573 <chapter id="SEE-ALSO">
3574 <title>SEE ALSO</title>
3577 <literal>textutils(1),</literal>
3578 <literal>shellutils(1),</literal>
3583 <chapter id="MAINTAINER">
3584 <title>MAINTAINER</title>
3587 Erik Andersen <andersee@debian.org> <andersen@lineo.com>
3591 <chapter id="AUTHORS">
3592 <title>AUTHORS</title>
3595 The following people have contributed code to BusyBox whether
3596 they know it or not.
3600 Erik Andersen <andersee@debian.org>
3604 John Beppu <beppu@lineo.com>
3608 Brian Candler <B.Candler@pobox.com>
3612 Randolph Chung <tausq@debian.org>
3616 Dave Cinege <dcinege@psychosis.com>
3620 Karl M. Hegbloom <karlheg@debian.org>
3624 John Lombardo <john@deltanet.com>
3628 Glenn McGrath <bug1@netconnect.com.au>
3632 Bruce Perens <bruce@perens.com>
3636 Pavel Roskin <proski@gnu.org>
3640 Linus Torvalds <torvalds@transmeta.com>
3644 Charles P. Wright <cpwright@villagenet.com>
3648 Enrique Zanardi <ezanardi@ull.es>
3651 </book> <!-- End of the book -->