5 BusyBox - The Swiss Army Knife of Embedded Linux
9 BusyBox <function> [arguments...] # or
11 <function> [arguments...] # if symlinked
15 BusyBox combines tiny versions of many common UNIX utilities into a single
16 small executable. It provides minimalist replacements for most of the utilities
17 you usually find in fileutils, shellutils, findutils, textutils, grep, gzip,
18 tar, etc. BusyBox provides a fairly complete POSIX environment for any small
19 or embedded system. The utilities in BusyBox generally have fewer options than
20 their full-featured GNU cousins; however, the options that are included provide
21 the expected functionality and behave very much like their GNU counterparts.
23 BusyBox has been written with size-optimization and limited resources in mind.
24 It is also extremely modular so you can easily include or exclude commands (or
25 features) at compile time. This makes it easy to customize your embedded
26 systems. To create a working system, just add a kernel, a shell (such as ash),
27 and an editor (such as elvis-tiny or ae).
31 When you create a link to BusyBox for the function you wish to use, when BusyBox
32 is called using that link it will behave as if the command itself has been invoked.
39 will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
42 You can also invoke BusyBox by issuing the command as an argument on the
43 command line. For example, entering
47 will also cause BusyBox to behave as 'ls'.
51 Most BusyBox commands support the B<--help> option to provide a
52 terse runtime description of their behavior.
56 Currently defined functions include:
58 ar, basename, busybox, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp,
59 cut, date, dc, dd, deallocvt, df, dirname, dmesg, dos2unix, dpkg, dpkg-deb, du,
60 dumpkmap, dutmp, echo, expr, false, fbset, fdflush, find, free, freeramdisk,
61 fsck.minix, getopt, grep, gunzip, gzip, halt, head, hostid, hostname, id,
62 ifconfig, init, insmod, kill, killall, klogd, length, ln, loadacm, loadfont,
63 loadkmap, logger, logname, ls, lsmod, makedevs, md5sum, mkdir, mkfifo,
64 mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc, nslookup, ping,
65 pivot_root, poweroff, printf, ps, pwd, rdate, readlink, reboot, renice, reset,
66 rm, rmdir, rmmod, route, rpmunpack, sed, setkeycodes, sh, sleep, sort, stty,
67 swapoff, swapon, sync, syslogd, tail, tar, tee, telnet, test, tftp, touch, tr,
68 true, tty, umount, uname, uniq, unix2dos, update, uptime, usleep, uudecode,
69 uuencode, watchdog, wc, wget, which, whoami, xargs, yes, zcat, [
75 ar -[ovR]{ptx} archive filenames
77 Extract or list files from an ar archive.
81 -o preserve original dates
85 -v verbosely list files processed
88 -------------------------------
92 basename FILE [SUFFIX]
94 Strips directory path and suffixes from FILE.
95 If specified, also removes any trailing SUFFIX.
99 $ basename /usr/local/bin/foo
101 $ basename /usr/local/bin/
103 $ basename /foo/bar.txt .txt
106 -------------------------------
112 Concatenates FILE(s) and prints them to stdout.
119 -------------------------------
123 chgrp [OPTION]... GROUP FILE...
125 Change the group membership of each FILE to GROUP.
129 -R Changes files and directories recursively.
134 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
135 $ chgrp root /tmp/foo
137 -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
139 -------------------------------
143 chmod [B<-R>] MODE[,MODE]... FILE...
145 Each MODE is one or more of the letters ugoa, one of the
146 symbols +-= and one or more of the letters rwxst.
150 -R Changes files and directories recursively.
155 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
158 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
161 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
163 -------------------------------
167 chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
169 Change the owner and/or group of each FILE to OWNER and/or GROUP.
173 -R Changes files and directories recursively.
178 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
179 $ chown root /tmp/foo
181 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
182 $ chown root.root /tmp/foo
184 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
186 -------------------------------
190 chroot NEWROOT [COMMAND...]
192 Run COMMAND with root directory set to NEWROOT.
197 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
198 $ mount /dev/hdc1 /mnt -t minix
201 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
203 -------------------------------
209 Changes the foreground virtual terminal to /dev/ttyN
211 -------------------------------
219 -------------------------------
227 -------------------------------
231 cp [OPTION]... SOURCE DEST
233 Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
237 -p Preserves file attributes if possible
238 -f force (implied; ignored) - always set
239 -R Copies directories recursively
241 -------------------------------
245 cut [OPTION]... [FILE]...
247 Prints selected fields from each input FILE to standard output.
251 -b LIST Output only bytes from LIST
252 -c LIST Output only characters from LIST
253 -d CHAR Use CHAR instead of tab as the field delimiter
254 -s Output only the lines containing delimiter
255 -f N Print only these fields
260 $ echo Hello world | cut -f 1 -d ' '
262 $ echo Hello world | cut -f 2 -d ' '
265 -------------------------------
269 date [OPTION]... [+FORMAT]
271 Displays the current time in the given FORMAT, or sets the system date.
275 -R Outputs RFC-822 compliant date string
276 -d STRING display time described by STRING, not `now'
277 -s Sets time described by STRING
278 -u Prints or sets Coordinated Universal Time
283 Wed Apr 12 18:52:41 MDT 2000
285 -------------------------------
291 This is a Tiny RPN calculator that understands the
292 following operations: +, -, /, *, and, or, not, eor.
293 i.e. 'dc 2 2 add' -> 4, and 'dc 8 8 \* 2 2 + /' -> 16
305 $ echo 72 9 div 8 mul | dc
308 -------------------------------
312 dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N]
313 [seek=N] [conv=notrunc|sync]
315 Copy a file, converting and formatting according to options
317 if=FILE read from FILE instead of stdin
318 of=FILE write to FILE instead of stdout
319 bs=N read and write N bytes at a time
320 count=N copy only N input blocks
321 skip=N skip N input blocks
322 seek=N skip N output blocks
323 conv=notrunc don't truncate output file
324 conv=sync pad blocks with zeros
326 Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),
327 MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824).
331 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
335 -------------------------------
341 Deallocate unused virtual terminal /dev/ttyN
343 -------------------------------
347 df [B<-hmk>] [filesystem ...]
349 Print the filesystem space used and space available.
353 -h print sizes in human readable format (e.g., 1K 243M 2G )
354 -m print sizes in megabytes
355 -k print sizes in kilobytes(default)
360 Filesystem 1k-blocks Used Available Use% Mounted on
361 /dev/sda3 8690864 8553540 137324 98% /
362 /dev/sda1 64216 36364 27852 57% /boot
364 Filesystem 1k-blocks Used Available Use% Mounted on
365 /dev/sda3 8690864 8553540 137324 98% /
367 -------------------------------
371 dirname [FILENAME ...]
373 Strips non-directory suffix from FILENAME
382 -------------------------------
386 dmesg [B<-c>] [B<-n> LEVEL] [B<-s> SIZE]
388 Prints or controls the kernel ring buffer
392 -c Clears the ring buffer's contents after printing
393 -n LEVEL Sets console logging level
394 -s SIZE Use a buffer of size SIZE
396 -------------------------------
400 dos2unix [option] [file]
402 Converts a text file to/from dos format to unix format.
406 -u output will be in UNIX format
407 -d output will be in DOS format
409 - when no option is given then input format will be automaticaly detected
411 and converted to the oposite format on output
412 - when no file is given, then stdin is used as input and stdout as output
414 -------------------------------
418 dpkg [B<-i>|B<-r>|-B<-unpack>|-B<-configure>] my.deb
420 WORK IN PROGRESS, only usefull for debian-installer
422 -------------------------------
426 dpkg_deb [B<-cexX>] file directory
428 Perform actions on debian packages (.debs)
432 -c List contents of filesystem tree (verbose)
433 -l List contents of filesystem tree (.list format)
434 -e Extract control files to directory
435 -x Exctract packages filesystem tree to directory
440 $ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp
442 -------------------------------
446 du [B<-lshmk>] [FILE]...
448 Summarizes disk space used for each FILE and/or directory.
449 Disk space is printed in units of 1024 bytes.
453 -l count sizes many times if hard linked
454 -s display only a total for each argument
455 -h print sizes in human readable format (e.g., 1K 243M 2G )
456 -m print sizes in megabytes
457 -k print sizes in kilobytes(default)
463 12 ./kernel-patches/CVS
473 -------------------------------
479 Prints out a binary keyboard translation table to standard output.
485 -------------------------------
491 Dump utmp file format (pipe delimited) from FILE
492 or stdin to stdout. (i.e. 'dutmp /var/run/utmp')
496 $ dutmp /var/run/utmp
497 8|7||si|||0|0|0|955637625|760097|0
498 2|0|~|~~|reboot||0|0|0|955637625|782235|0
499 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
500 8|125||l4|||0|0|0|955637629|998367|0
501 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
502 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
503 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
505 -------------------------------
509 echo [B<-neE>] [ARG ...]
511 Prints the specified ARGs to stdout
515 -n suppress trailing newline
516 -e interpret backslash-escaped characters (i.e. \t=tab etc)
517 -E disable interpretation of backslash-escaped characters
536 -------------------------------
542 Prints the value of EXPRESSION to standard output.
546 ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2
547 ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0
548 ARG1 < ARG2 ARG1 is less than ARG2
549 ARG1 <= ARG2 ARG1 is less than or equal to ARG2
550 ARG1 = ARG2 ARG1 is equal to ARG2
551 ARG1 != ARG2 ARG1 is unequal to ARG2
552 ARG1 >= ARG2 ARG1 is greater than or equal to ARG2
553 ARG1 > ARG2 ARG1 is greater than ARG2
554 ARG1 + ARG2 arithmetic sum of ARG1 and ARG2
555 ARG1 - ARG2 arithmetic difference of ARG1 and ARG2
556 ARG1 * ARG2 arithmetic product of ARG1 and ARG2
557 ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2
558 ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2
559 STRING : REGEXP anchored pattern match of REGEXP in STRING
560 match STRING REGEXP same as STRING : REGEXP
561 substr STRING POS LENGTH substring of STRING, POS counted from 1
562 index STRING CHARS index in STRING where any CHARS is found,
564 length STRING length of STRING
565 quote TOKEN interpret TOKEN as a string, even if
566 it is a keyword like `match' or an
568 ( EXPRESSION ) value of EXPRESSION
570 Beware that many operators need to be escaped or quoted for shells.
571 Comparisons are arithmetic if both ARGs are numbers, else
572 lexicographical. Pattern matches return the string matched between
573 \( and \) or null; if \( and \) are not used, they return the number
574 of characters matched or 0.
576 -------------------------------
582 Return an exit code of FALSE (1).
590 -------------------------------
594 fbset [options] [mode]
596 Show and modify frame buffer settings
602 geometry 1024 768 1024 768 16
603 timings 12714 128 32 16 4 128 4
605 rgba 5/11,6/5,5/0,0/0
608 -------------------------------
614 Forces floppy disk drive to detect disk change
616 -------------------------------
620 find [PATH...] [EXPRESSION]
622 Search for files in a directory hierarchy. The default PATH is
623 the current directory; default EXPRESSION is 'B<-print>'
625 EXPRESSION may consist of:
627 -follow Dereference symbolic links.
628 -name PATTERN File name (leading directories removed) matches PATTERN.
629 -type X Filetype matches X (where X is one of: f,d,l,b,c,...)
630 -perm PERMS Permissions match any of (+NNN); all of (-NNN);
632 -mtime TIME Modified time is greater than (+N); less than (-N);
637 $ find / -name /etc/passwd
640 -------------------------------
646 Displays the amount of free and used system memory
651 total used free shared buffers
652 Mem: 257628 248724 8904 59644 93124
653 Swap: 128516 8404 120112
654 Total: 386144 257128 129016
657 -------------------------------
663 Frees all memory used by the specified ramdisk.
667 $ freeramdisk /dev/ram2
669 -------------------------------
673 fsck_minix [B<-larvsmf>] /dev/name
675 Performs a consistency check for MINIX filesystems.
679 -l Lists all filenames
680 -r Perform interactive repairs
681 -a Perform automatic repairs
683 -s Outputs super-block information
684 -m Activates MINIX-like mode not cleared warnings
685 -f Force file system check.
687 -------------------------------
693 Parse command options
695 -a, --alternative Allow long options starting with single -
696 -l, --longoptions=longopts Long options to be recognized
697 -n, --name=progname The name under which errors are reported
698 -o, --options=optstring Short options to be recognized
699 -q, --quiet Disable error reporting by getopt(3)
700 -Q, --quiet-output No normal output
701 -s, --shell=shell Set shell quoting conventions
702 -T, --test Test for getopt(1) version
703 -u, --unqote Do not quote the output
708 GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
709 -n 'example.busybox' -- $@`
710 if [ $? != 0 ] ; then exit 1 ; fi
714 -a|--a-long) echo Option a ; shift ;;
715 -b|--b-long) echo Option b, argument `$2' ; shift 2 ;;
718 \) echo Option c, no argument; shift 2 ;;
719 *) echo Option c, argument `$2' ; shift 2 ;;
722 *) echo Internal error! ; exit 1 ;;
726 -------------------------------
730 grep [B<-ihHnqvs>] pattern [files...]
732 Search for PATTERN in each FILE or standard input.
736 -H prefix output lines with filename where match was found
737 -h suppress the prefixing filename on output
738 -i ignore case distinctions
739 -n print line number with output lines
740 -q be quiet. Returns 0 if result was found, 1 otherwise
741 -v select non-matching lines
742 -s suppress file open/read error messages
746 $ grep root /etc/passwd
747 root:x:0:0:root:/root:/bin/bash
748 $ grep ^[rR]oo. /etc/passwd
749 root:x:0:0:root:/root:/bin/bash
751 -------------------------------
755 gunzip [OPTION]... FILE
757 Uncompress FILE (or standard input if FILE is '-').
761 -c Write output to standard output
762 -t Test compressed file integrity
766 $ ls -la /tmp/BusyBox*
767 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
768 $ gunzip /tmp/BusyBox-0.43.tar.gz
769 $ ls -la /tmp/BusyBox*
770 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
772 -------------------------------
776 gzip [OPTION]... FILE
778 Compress FILE with maximum compression.
779 When FILE is '-', reads standard input. Implies B<-c>.
783 -c Write output to standard output instead of FILE.gz
788 $ ls -la /tmp/BusyBox*
789 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
790 $ gzip /tmp/BusyBox-0.43.tar
791 $ ls -la /tmp/BusyBox*
792 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
794 -------------------------------
802 -------------------------------
806 head [OPTION] [FILE]...
808 Print first 10 lines of each FILE to standard output.
809 With more than one FILE, precede each with a header giving the
810 file name. With no FILE, or when FILE is -, read standard input.
814 -n NUM Print first NUM lines instead of first 10
818 $ head -n 2 /etc/passwd
819 root:x:0:0:root:/root:/bin/bash
820 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
822 -------------------------------
828 Print out a unique 32-bit identifier for the machine.
830 -------------------------------
834 hostname [OPTION] {hostname | B<-F> file}
836 Get or set the hostname or DNS domain name. If a hostname is given
837 (or a file with the B<-F> parameter), the host name will be set.
842 -i Addresses for the hostname
844 -F, --file FILE Use the contents of FILE to specify the hostname
851 -------------------------------
855 id [OPTIONS]... [USERNAME]
857 Print information for USERNAME or the current user
861 -g prints only the group ID
862 -u prints only the user ID
863 -n print a name instead of a number (with for -ug)
864 -r prints the real user ID instead of the effective ID (with -ug)
869 uid=1000(andersen) gid=1000(andersen)
871 -------------------------------
875 ifconfig [B<-a>] <interface> [<address>]
877 configure a network interface
881 [[-]broadcast [<address>]] [[-]pointopoint [<address>]]
882 [netmask <address>] [dstaddr <address>]
883 [outfill <NN>] [keepalive <NN>]
884 [hw ether <address>] [metric <NN>] [mtu <NN>]
885 [[-]trailers] [[-]arp] [[-]allmulti]
886 [multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]
887 [mem_start <NN>] [io_addr <NN>] [irq <NN>]
890 -------------------------------
896 Init is the parent of all processes.
898 This version of init is designed to be run only by the kernel.
900 BusyBox init doesn't support multiple runlevels. The runlevels field of
901 the /etc/inittab file is completely ignored by BusyBox init. If you want
902 runlevels, use sysvinit.
904 BusyBox init works just fine without an inittab. If no inittab is found,
905 it has the following default behavior:
907 ::sysinit:/etc/init.d/rcS
910 if it detects that /dev/console is _not_ a serial console, it will also run:
912 tty2::askfirst:/bin/sh
914 If you choose to use an /etc/inittab file, the inittab entry format is as follows:
916 <id>:<runlevels>:<action>:<process>
920 WARNING: This field has a non-traditional meaning for BusyBox init!
921 The id field is used by BusyBox init to specify the controlling tty for
922 the specified process to run on. The contents of this field are
923 appended to /dev/ and used as-is. There is no need for this field to
924 be unique, although if it isn't you may have strange results. If this
925 field is left blank, the controlling tty is set to the console. Also
926 note that if BusyBox detects that a serial console is in use, then only
927 entries whose controlling tty is either the serial console or /dev/null
928 will be run. BusyBox init does nothing with utmp. We don't need no
933 The runlevels field is completely ignored.
937 Valid actions include: sysinit, respawn, askfirst, wait,
938 once, and ctrlaltdel.
940 The available actions can be classified into two groups: actions
941 that are run only once, and actions that are re-run when the specified
944 Run only-once actions:
946 'sysinit' is the first item run on boot. init waits until all
947 sysinit actions are completed before continuing. Following the
948 completion of all sysinit actions, all 'wait' actions are run.
949 'wait' actions, like 'sysinit' actions, cause init to wait until
950 the specified task completes. 'once' actions are asyncronous,
951 therefore, init does not wait for them to complete. 'ctrlaltdel'
952 actions are run immediately before init causes the system to reboot
953 (unmounting filesystems with a 'ctrlaltdel' action is a very good
956 Run repeatedly actions:
958 'respawn' actions are run after the 'once' actions. When a process
959 started with a 'respawn' action exits, init automatically restarts
960 it. Unlike sysvinit, BusyBox init does not stop processes from
961 respawning out of control. The 'askfirst' actions acts just like
962 respawn, except that before running the specified process it
963 displays the line Please press Enter to activate this console.
964 and then waits for the user to press enter before starting the
967 Unrecognized actions (like initdefault) will cause init to emit an
968 error message, and then go along with its business. All actions are
969 run in the reverse order from how they appear in /etc/inittab.
973 Specifies the process to be executed and it's command line.
975 Example /etc/inittab file:
977 ::sysinit:/etc/init.d/rcS
980 tty2::askfirst:-/bin/sh
981 tty3::askfirst:-/bin/sh
982 tty4::askfirst:-/bin/sh
984 tty4::respawn:/sbin/getty 38400 tty5
985 tty5::respawn:/sbin/getty 38400 tty6
989 ::ctrlaltdel:/bin/umount -a -r
990 ::ctrlaltdel:/sbin/swapoff -a
993 -------------------------------
997 insmod [OPTION]... MODULE [symbol=value]...
999 Loads the specified kernel modules into the kernel.
1003 -f Force module to load into the wrong kernel version.
1004 -k Make module autoclean-able.
1006 -L Lock to prevent simultaneous loads of a module
1007 -x do not export externs
1009 -------------------------------
1013 kill [B<-signal>] process-id [process-id ...]
1015 Send a signal (default is SIGTERM) to the specified process(es).
1019 -l List all signal names and numbers.
1024 252 root root S [apache]
1025 263 www-data www-data S [apache]
1026 264 www-data www-data S [apache]
1027 265 www-data www-data S [apache]
1028 266 www-data www-data S [apache]
1029 267 www-data www-data S [apache]
1032 -------------------------------
1036 killall [B<-signal>] process-name [process-name ...]
1038 Send a signal (default is SIGTERM) to the specified process(es).
1042 -l List all signal names and numbers.
1049 -------------------------------
1058 -n Run as a foreground process.
1060 -------------------------------
1066 Prints out the length of the specified STRING.
1073 -------------------------------
1077 ln [OPTION] TARGET... LINK_NAME|DIRECTORY
1079 Create a link named LINK_NAME or DIRECTORY to the specified TARGET
1081 You may use '--' to indicate that all following arguments are non-options.
1085 -s make symbolic links instead of hard links
1086 -f remove existing destination files
1087 -n no dereference symlinks - treat like normal file
1091 $ ln -s BusyBox /tmp/ls
1093 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
1096 -------------------------------
1102 Loads an acm from standard input.
1106 $ loadacm < /etc/i18n/acmname
1109 -------------------------------
1115 Loads a console font from standard input.
1119 $ loadfont < /etc/i18n/fontname
1122 -------------------------------
1128 Loads a binary keyboard translation table from standard input.
1132 $ loadkmap < /etc/i18n/lang-keymap
1135 -------------------------------
1139 logger [OPTION]... [MESSAGE]
1141 Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.
1145 -s Log to stderr as well as the system log.
1146 -t Log using the specified tag (defaults to user name).
1147 -p Enter the message with the specified priority.
1148 This may be numerical or a ``facility.level'' pair.
1155 -------------------------------
1161 Print the name of the current user.
1169 -------------------------------
1175 Shows the messages from syslogd (using circular buffer).
1177 -------------------------------
1181 ls [B<-1AacCdeFilnpLRrSsTtuvwxXhk>] [filenames...]
1183 List directory contents
1187 -1 list files in a single column
1188 -A do not list implied . and ..
1189 -a do not hide entries starting with .
1190 -C list entries by columns
1191 -c with -l: show ctime
1192 -d list directory entries instead of contents
1193 -e list both full date and full time
1194 -F append indicator (one of */=@|) to entries
1195 -i list the i-node for each file
1196 -l use a long listing format
1197 -n list numeric UIDs and GIDs instead of names
1198 -p append indicator (one of /=@|) to entries
1199 -L list entries pointed to by symbolic links
1200 -R list subdirectories recursively
1201 -r sort the listing in reverse order
1202 -S sort the listing by file size
1203 -s list the size of each file, in blocks
1204 -T NUM assume Tabstop every NUM columns
1205 -t with -l: show modification time
1206 -u with -l: show access time
1207 -v sort the listing by version
1208 -w NUM assume the terminal is NUM columns wide
1209 -x list entries by lines instead of by columns
1210 -X sort the listing by extension
1211 -h print sizes in human readable format (e.g., 1K 243M 2G )
1212 -k print sizes in kilobytes(default)
1214 -------------------------------
1220 List the currently loaded kernel modules.
1222 -------------------------------
1226 makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]
1228 Creates a range of block or character special files
1232 b: Make a block (buffered) device.
1233 c or u: Make a character (un-buffered) device.
1234 p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
1236 FIRST specifies the number appended to NAME to create the first device.
1237 LAST specifies the number of the last item that should be created.
1238 If 's' is the last argument, the base device is created as well.
1242 makedevs /dev/ttyS c 4 66 2 63 -> ttyS2-ttyS63
1243 makedevs /dev/hda b 3 0 0 8 s -> hda,hda1-hda8
1247 $ makedevs /dev/ttyS c 4 66 2 63
1248 [creates ttyS2-ttyS63]
1249 $ makedevs /dev/hda b 3 0 0 8 s
1250 [creates hda,hda1-hda8]
1253 -------------------------------
1257 md5sum [OPTION] [FILE]...
1258 or: md5sum [OPTION] B<-c> [FILE]
1260 Print or check MD5 checksums.
1263 With no FILE, or when FILE is -, read standard input.
1265 -b read files in binary mode
1266 -c check MD5 sums against given list
1267 -t read files in text mode (default)
1270 The following two options are useful only when verifying checksums:
1272 -s don't output anything, status code shows success
1273 -w warn about improperly formated MD5 checksum lines
1278 6fd11e98b98a58f64ff3398d7b324003
1280 6fd11e98b98a58f64ff3398d7b324003 busybox
1282 6fd11e98b98a58f64ff3398d7b324003 busybox
1286 -------------------------------
1290 mkdir [OPTION] DIRECTORY...
1292 Create the DIRECTORY(ies), if they do not already exist
1296 -m set permission mode (as in chmod), not rwxrwxrwx - umask
1297 -p no error if existing, make parent directories as needed
1303 /tmp/foo: File exists
1304 $ mkdir /tmp/foo/bar/baz
1305 /tmp/foo/bar/baz: No such file or directory
1306 $ mkdir -p /tmp/foo/bar/baz
1309 -------------------------------
1313 mkfifo [OPTIONS] name
1315 Creates a named pipe (identical to 'mknod name p')
1319 -m create the pipe using the specified mode (default a=rw)
1321 -------------------------------
1325 mkfs_minix [B<-c> | B<-l> filename] [B<-nXX>] [B<-iXX>] /dev/name [blocks]
1327 Make a MINIX filesystem.
1331 -c Check the device for bad blocks
1332 -n [14|30] Specify the maximum length of filenames
1333 -i INODES Specify the number of inodes for the filesystem
1334 -l FILENAME Read the bad blocks list from FILENAME
1335 -v Make a Minix version 2 filesystem
1337 -------------------------------
1341 mknod [OPTIONS] NAME TYPE MAJOR MINOR
1343 Create a special file (block, character, or pipe).
1347 -m create the special file using the specified mode (default a=rw)
1351 b: Make a block (buffered) device.
1352 c or u: Make a character (un-buffered) device.
1353 p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
1357 $ mknod /dev/fd0 b 2 0
1358 $ mknod -m 644 /tmp/pipe p
1361 -------------------------------
1365 mkswap [B<-c>] [B<-v0>|B<-v1>] device [block-count]
1367 Prepare a disk partition to be used as a swap partition.
1371 -c Check for read-ability.
1372 -v0 Make version 0 swap [max 128 Megs].
1373 -v1 Make version 1 swap [big!] (default for kernels >
1375 block-count Number of block to use (default is entire partition).
1377 -------------------------------
1381 mktemp [B<-q>] TEMPLATE
1383 Creates a temporary file with its name based on TEMPLATE.
1384 TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).
1388 $ mktemp /tmp/temp.XXXXXX
1390 $ ls -la /tmp/temp.mWiLjM
1391 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
1394 -------------------------------
1400 More is a filter for viewing FILE one screenful at a time.
1407 -------------------------------
1411 mount [flags] device directory [B<-o> options,more-options]
1417 -a: Mount all filesystems in fstab.
1418 -f: Fake Add entry to mount table but don't mount it.
1419 -n: Don't write a mount table entry.
1420 -o option: One of many filesystem options, listed below.
1421 -r: Mount the filesystem read-only.
1422 -t fs-type: Specify the filesystem type.
1423 -w: Mount for reading and writing (default).
1425 Options for use with the B<-o> flag:
1427 async/sync: Writes are asynchronous / synchronous.
1428 atime/noatime: Enable / disable updates to inode access times.
1429 dev/nodev: Allow use of special device files / disallow them.
1430 exec/noexec: Allow use of executable files / disallow them.
1431 loop: Mounts a file via loop device.
1432 suid/nosuid: Allow set-user-id-root programs / disallow them.
1433 remount: Re-mount a mounted filesystem, changing its flags.
1434 ro/rw: Mount for read-only / read-write.
1436 There are EVEN MORE flags that are specific to each filesystem.
1437 You'll have to see the written documentation for those.
1442 /dev/hda3 on / type minix (rw)
1443 proc on /proc type proc (rw)
1444 devpts on /dev/pts type devpts (rw)
1445 $ mount /dev/fd0 /mnt -t msdos -o ro
1446 $ mount /tmp/diskimage /opt -t ext2 -o loop
1449 -------------------------------
1453 mt [B<-f> device] opcode value
1455 Control magnetic tape drive operation
1459 bsf bsfm bsr bss datacompression drvbuffer eof eom erase
1460 fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2
1461 ras3 reset retension rew rewoffline seek setblk setdensity
1462 setpart tell unload unlock weof wset
1464 -------------------------------
1469 or: mv SOURCE... DIRECTORY
1471 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
1475 $ mv /tmp/foo /bin/bar
1478 -------------------------------
1484 Netcat opens a pipe to IP:port
1488 $ nc foobar.somedomain.com 25
1489 220 foobar ESMTP Exim 3.12 help
1490 214-Commands supported:
1491 214- HELO EHLO MAIL RCPT DATA AUTH
1492 214 NOOP QUIT RSET HELP
1494 221 foobar closing connection
1497 -------------------------------
1503 Queries the nameserver for the IP address of the given HOST
1507 $ nslookup localhost
1515 -------------------------------
1519 ping [OPTION]... host
1521 Send ICMP ECHO_REQUEST packets to network hosts.
1525 -c COUNT Send only COUNT pings.
1526 -s SIZE Send SIZE data bytes in packets (default=56).
1527 -q Quiet mode, only displays output at start
1533 PING slag (127.0.0.1): 56 data bytes
1534 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
1536 --- debian ping statistics ---
1537 1 packets transmitted, 1 packets received, 0% packet loss
1538 round-trip min/avg/max = 20.1/20.1/20.1 ms
1541 -------------------------------
1545 pivot_root new_root put_old
1547 Move the current root file system to put_old and make new_root
1548 the new root file system.
1550 -------------------------------
1556 Halt the system and request that the kernel shut off the power.
1558 -------------------------------
1562 printf FORMAT [ARGUMENT...]
1564 Formats and prints ARGUMENT(s) according to FORMAT,
1565 Where FORMAT controls the output exactly as in C printf.
1574 -------------------------------
1580 Report process status
1582 This version of ps accepts no options.
1587 PID Uid Gid State Command
1589 2 root root S [kflushd]
1590 3 root root S [kupdate]
1591 4 root root S [kpiod]
1592 5 root root S [kswapd]
1593 742 andersen andersen S [bash]
1594 743 andersen andersen S -bash
1595 745 root root S [getty]
1596 2990 andersen andersen R ps
1598 -------------------------------
1604 Print the full filename of the current working directory.
1611 -------------------------------
1617 Get and possibly set the system date and time from a remote HOST.
1621 -s Set the system date and time (default).
1622 -p Print the date and time.
1624 -------------------------------
1630 Read a symbolic link.
1632 -------------------------------
1640 -------------------------------
1644 renice priority pid [pid ...]
1646 Changes priority of running processes. Allowed priorities range
1647 from 20 (the process runs only when nothing else is running) to 0
1648 (default priority) to B<-20> (almost nothing else ever gets to run).
1650 -------------------------------
1658 -------------------------------
1662 rm [OPTION]... FILE...
1664 Remove (unlink) the FILE(s). You may use '--' to
1665 indicate that all following arguments are non-options.
1669 -i always prompt before removing each destinations
1670 -f remove existing destinations, never prompt
1671 -r or -R remove the contents of directories recursively
1677 -------------------------------
1681 rmdir [OPTION]... DIRECTORY...
1683 Remove the DIRECTORY(ies), if they are empty.
1689 -------------------------------
1693 rmmod [OPTION]... [MODULE]...
1695 Unloads the specified kernel modules from the kernel.
1699 -a Try to remove all unused kernel modules.
1705 -------------------------------
1709 route [{add|del|flush}]
1711 Edit the kernel's routing tables
1713 -------------------------------
1717 rpmunpack < package.rpm | gunzip | cpio B<-idmuv>
1719 Extracts an rpm archive.
1721 -------------------------------
1725 sed [B<-Vhnef>] pattern [files...]
1729 -n suppress automatic printing of pattern space
1730 -e script add the script to the commands to be executed
1731 -f scriptfile add the contents of script-file to the commands to be executed
1732 -h display this help message
1734 If no B<-e> or B<-f> is given, the first non-option argument is taken as the
1735 sed script to interpret. All remaining arguments are names of input
1736 files; if no input files are specified, then the standard input is read.
1740 $ echo foo | sed -e 's/f[a-zA-Z]o/bar/g'
1743 -------------------------------
1745 =item I<setkeycodes>
1747 setkeycodes SCANCODE KEYCODE ...
1749 Set entries into the kernel's scancode-to-keycode map,
1750 allowing unusual keyboards to generate usable keycodes.
1752 SCANCODE may be either xx or e0xx (hexadecimal),
1753 and KEYCODE is given in decimal
1757 $ setkeycodes e030 127
1759 -------------------------------
1764 or: sh B<-c> command [args]...
1766 lash: The BusyBox LAme SHell (command interpreter)
1768 This command does not yet have proper documentation.
1770 Use lash just as you would use any other shell. It properly handles pipes,
1771 redirects, job control, can be used as the shell for scripts, and has a
1772 sufficient set of builtins to do what is needed. It does not (yet) support
1773 Bourne Shell syntax. If you need things like if-then-else, while, and such
1774 use ash or bash. If you just need a very simple and extremely small shell,
1775 this will do the job.
1777 -------------------------------
1783 Pause for N seconds.
1788 [2 second delay results]
1790 -------------------------------
1794 sort [B<-n>] [B<-r>] [FILE]...
1796 Sorts lines of text in the specified files
1813 -------------------------------
1817 stty [B<-a>|g] [B<-F> device] [SETTING]...
1819 Without arguments, prints baud rate, line discipline,
1820 and deviations from stty sane.
1824 -F device open device instead of stdin
1825 -a print all current settings in human-readable form
1826 -g print in stty-readable form
1827 [SETTING] see documentation
1829 -------------------------------
1833 swapoff [OPTION] [device]
1835 Stop swapping virtual memory pages on the given device.
1839 -a Stop swapping on all swap devices
1841 -------------------------------
1845 swapon [OPTION] [device]
1847 Start swapping virtual memory pages on the given device.
1851 -a Start swapping on all swap devices
1853 -------------------------------
1859 Write all buffered filesystem blocks to disk.
1861 -------------------------------
1867 Linux system and kernel logging utility.
1868 Note that this version of syslogd ignores /etc/syslog.conf.
1872 -m NUM Interval between MARK lines (default=20min, 0=off)
1873 -n Run as a foreground process
1874 -O FILE Use an alternate log file (default=/var/log/messages)
1875 -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP)
1876 -L Log locally and via network logging (default is network only)
1880 $ syslogd -R masterlog:514
1881 $ syslogd -R 192.168.1.1:601
1883 -------------------------------
1887 tail [OPTION]... [FILE]...
1889 Print last 10 lines of each FILE to standard output.
1890 With more than one FILE, precede each with a header giving the
1891 file name. With no FILE, or when FILE is -, read standard input.
1895 -c N[kbm] output the last N bytes
1896 -n N[kbm] print last N lines instead of last 10
1897 -f output data as the file grows
1898 -q never output headers giving file names
1899 -s SEC wait SEC seconds between reads with -f
1900 -v always output headers giving file names
1902 If the first character of N (bytes or lines) is a '+', output begins with
1903 the Nth item from the start of each file, otherwise, print the last N items
1904 in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2).
1908 $ tail -n 1 /etc/resolv.conf
1911 -------------------------------
1915 tar -[cxtvO] [-B<-exclude> File] [B<-X> File][B<-f> tarFile] [FILE(s)] ...
1917 Create, extract, or list files from a tar file.
1919 Main operation mode:
1927 f name of tarfile or - for stdin
1929 exclude file to exclude
1930 X file with names to exclude
1934 v verbosely list files processed
1938 $ zcat /tmp/tarball.tar.gz | tar -xf -
1939 $ tar -cf /tmp/tarball.tar /usr/local
1941 -------------------------------
1945 tee [OPTION]... [FILE]...
1947 Copy standard input to each FILE, and also to standard output.
1951 -a append to the given FILEs, do not overwrite
1955 $ echo Hello | tee /tmp/foo
1959 -------------------------------
1965 Telnet is used to establish interactive communication with another
1966 computer over a network using the TELNET protocol.
1968 -------------------------------
1975 Checks file types and compares values returning an exit
1976 code determined by the value of EXPRESSION.
1993 -------------------------------
1997 tftp command SOURCE DEST
1999 Transfers a file from/to a tftp server using octet mode.
2003 get Get file from server SOURCE and store to local DEST.
2004 put Put local file SOURCE to server DEST.
2006 When nameing a server, use the syntax server:file.
2008 -------------------------------
2012 touch [B<-c>] file [file ...]
2014 Update the last-modified date on the given file[s].
2018 -c Do not create any files
2023 /bin/ls: /tmp/foo: No such file or directory
2026 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
2029 -------------------------------
2033 tr [B<-cds>] STRING1 [STRING2]
2035 Translate, squeeze, and/or delete characters from
2036 standard input, writing to standard output.
2040 -c take complement of STRING1
2041 -d delete input characters coded STRING1
2042 -s squeeze multiple output characters of STRING2 into one character
2046 $ echo gdkkn vnqkc | tr [a-y] [b-z]
2050 -------------------------------
2056 Return an exit code of TRUE (0).
2064 -------------------------------
2070 Print the file name of the terminal connected to standard input.
2074 -s print nothing, only return an exit status
2081 -------------------------------
2085 umount [flags] filesystem|directory
2087 Unmount file systems
2091 -a: Unmount all file systems in /etc/mtab
2092 -n: Don't erase /etc/mtab entries
2093 -r: Try to remount devices as read-only if mount is busy
2094 -f: Force filesystem umount (i.e. unreachable NFS server)
2095 -l: Do not free loop device (if a loop device has been used)
2101 -------------------------------
2107 Print certain system information. With no OPTION, same as B<-s>.
2111 -a print all information
2112 -m the machine (hardware) type
2113 -n print the machine's network node hostname
2114 -r print the operating system release
2115 -s print the operating system name
2116 -p print the host processor type
2117 -v print the operating system version
2122 Linux debian 2.2.15pre13
2124 -------------------------------
2128 uniq [OPTION]... [INPUT [OUTPUT]]
2130 Discard all but one of successive identical lines from INPUT
2131 (or standard input), writing to OUTPUT (or standard output).
2135 -c prefix lines by the number of occurrences
2136 -d only print duplicate lines
2137 -u only print unique lines
2151 -------------------------------
2155 unix2dos [option] [file]
2157 See 'dos2unix -B<-help>' for help!
2159 -------------------------------
2165 Periodically flushes filesystem buffers.
2169 -S force use of sync(2) instead of flushing
2170 -s SECS call sync this often (default 30)
2171 -f SECS flush some buffers this often (default 5)
2173 -------------------------------
2179 Display the time since the last boot.
2184 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
2187 -------------------------------
2193 Pause for N microseconds.
2198 [pauses for 1 second]
2200 -------------------------------
2206 Uudecode a file that is uuencoded.
2210 -o FILE direct output to FILE$ uudecode -o busybox busybox.uu
2212 B<-rwxr>-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
2215 -------------------------------
2219 uuencode [OPTION] [INFILE] REMOTEFILE
2225 -m use base64 encoding as of RFC1521
2229 $ uuencode busybox busybox
2231 <encoded file snipped>
2232 $ uudecode busybox busybox > busybox.uu
2235 -------------------------------
2241 Periodically write to watchdog device DEV
2243 -------------------------------
2247 wc [OPTION]... [FILE]...
2249 Print line, word, and byte counts for each FILE, and a total line if
2250 more than one FILE is specified. With no FILE, read standard input.
2254 -c print the byte counts
2255 -l print the newline counts
2256 -L print the length of the longest line
2257 -w print the word counts
2262 31 46 1365 /etc/passwd
2265 -------------------------------
2269 wget [B<-c>] [B<-O> file] url
2271 wget retrieves files via HTTP
2275 -c continue retrieval of aborted transfers
2276 -O save to filename ('-' for stdout)
2278 -------------------------------
2291 -------------------------------
2297 Prints the user name associated with the current effective user id.
2299 -------------------------------
2303 xargs [COMMAND] [ARGS...]
2305 Executes COMMAND on every item given by standard input.
2310 $ find . -name '*.c' -print | xargs rm
2313 -------------------------------
2317 yes [OPTION]... [STRING]...
2319 Repeatedly outputs a line with all specified STRING(s), or 'y'.
2321 -------------------------------
2327 Uncompress to stdout.
2329 -------------------------------
2335 GNU Libc uses the Name Service Switch (NSS) to configure the behavior of the C
2336 library for the local environment, and to configure how it reads system data,
2337 such as passwords and group information. BusyBox has made it Policy that it
2338 will never use NSS, and will never use and libc calls that make use of NSS.
2339 This allows you to run an embedded system without the need for installing an
2340 /etc/nsswitch.conf file and without and /lib/libnss_* libraries installed.
2342 If you are using a system that is using a remote LDAP server for authentication
2343 via GNU libc NSS, and you want to use BusyBox, then you will need to adjust the
2344 BusyBox source. Chances are though, that if you have enough space to install
2345 of that stuff on your system, then you probably want the full GNU utilities.
2349 textutils(1), shellutils(1), etc...
2353 Erik Andersen <andersee@debian.org> <andersen@lineo.com>
2357 The following people have contributed code to BusyBox whether
2358 they know it or not.
2363 Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
2365 Tons of new stuff, major rewrite of most of the
2366 core apps, tons of new apps as noted in header files.
2370 Edward Betts <edward@debian.org>
2372 expr, hostid, logname, tty, wc, whoami, yes
2376 John Beppu <beppu@lineo.com>
2378 du, head, nslookup, sort, tee, uniq
2382 Brian Candler <B.Candler@pobox.com>
2388 Randolph Chung <tausq@debian.org>
2390 fbset, ping, hostname, and mkfifo
2394 Dave Cinege <dcinege@psychosis.com>
2396 more(v2), makedevs, dutmp, modularization, auto links file,
2397 various fixes, Linux Router Project maintenance
2401 Karl M. Hegbloom <karlheg@debian.org>
2403 cp_mv.c, the test suite, various fixes to utility.c, &c.
2407 Daniel Jacobowitz <dan@debian.org>
2413 Matt Kraai <kraai@alumni.carnegiemellon.edu>
2415 documentation, bugfixes
2419 John Lombardo <john@deltanet.com>
2425 Glenn McGrath <bug1@netconnect.com.au>
2431 Bruce Perens <bruce@pixar.com>
2433 Original author of BusyBox. His code is still in many apps.
2437 Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
2439 wget - Contributed by permission of Covad Communications
2443 Pavel Roskin <proski@gnu.org>
2445 Lots of bugs fixes and patches.
2449 Gyepi Sam <gyepi@praxis-sw.com>
2451 Remote logging feature for syslogd
2455 Linus Torvalds <torvalds@transmeta.com>
2457 mkswap, fsck.minix, mkfs.minix
2461 Mark Whitley <markw@lineo.com>
2463 sed remix, bug fixes, style-guide, etc.
2467 Charles P. Wright <cpwright@villagenet.com>
2469 gzip, mini-netcat(nc)
2473 Enrique Zanardi <ezanardi@ull.es>
2475 tarcat (since removed), loadkmap, various fixes, Debian maintenance
2479 # $Id: busybox.pod,v 1.92 2001/03/15 21:20:25 markw Exp $