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, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date, dc,
59 dd, deallocvt, df, dirname, dmesg, dos2unix, dpkg-deb, du, dumpkmap, dutmp,
60 echo, false, fbset, fdflush, find, free, freeramdisk, fsck.minix, getopt, grep,
61 gunzip, gzip, halt, head, hostid, hostname, id, init, insmod, kill, killall,
62 length, ln, loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs,
63 mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc,
64 nslookup, ping, poweroff, printf, ps, pwd, rdate, reboot, renice, reset, rm,
65 rmdir, rmmod, sed, setkeycodes, sh, sleep, sort, swapoff, swapon, sync,
66 syslogd, tail, tar, tee, telnet, test, touch, tr, true, tty, umount, uname,
67 uniq, unix2dos, unrpm, update, uptime, usleep, uudecode, uuencode, watchdog,
68 wc, which, whoami, xargs, yes, zcat, [
70 -------------------------------
76 Usage: ar [optxvV] archive [filenames]
78 Extract or list files from an ar archive.
82 o preserve original dates
86 v verbosely list files processed
88 -------------------------------
92 Usage: 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 -------------------------------
110 Usage: cat [FILE ...]
112 Concatenates FILE(s) and prints them to the standard output.
119 -------------------------------
123 Usage: chgrp [OPTION]... GROUP FILE...
125 Change the group membership of each FILE to GROUP.
129 -R change 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 Usage: chmod [B<-R>] MODE[,MODE]... FILE...
145 Changes file access permissions for the specified FILE(s) (or directories).
146 Each MODE is defined by combining the letters for WHO has access to the file,
147 an OPERATOR for selecting how the permissions should be changed, and a
148 PERMISSION for FILE(s) (or directories).
150 WHO may be chosen from
152 u User who owns the file
153 g Users in the file's Group
154 o Other users not in the file's group
157 OPERATOR may be chosen from
160 - Remove a permission
161 = Assign a permission
163 PERMISSION may be chosen from
167 x Execute (or access for directories)
168 s Set user (or group) ID bit
169 t Sticky bit (for directories prevents removing files by non-owners)
171 Alternately, permissions can be set numerically where the first three
172 numbers are calculated by adding the octal values, such as
178 An optional fourth digit can also be used to specify
186 -R Change files and directories recursively.
191 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
194 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
197 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
199 -------------------------------
203 Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
205 Changes the owner and/or group of each FILE to OWNER and/or GROUP.
209 -R Changes files and directories recursively
214 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
215 $ chown root /tmp/foo
217 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
218 $ chown root.root /tmp/foo
220 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
222 -------------------------------
226 Usage: chroot NEWROOT [COMMAND...]
228 Run COMMAND with root directory set to NEWROOT.
233 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
234 $ mount /dev/hdc1 /mnt -t minix
237 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
239 -------------------------------
245 Changes the foreground virtual terminal to /dev/ttyN
247 -------------------------------
253 -------------------------------
257 Usage: cp [OPTION]... SOURCE DEST
259 or: cp [OPTION]... SOURCE... DIRECTORY
261 Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
267 -p Preserves file attributes if possible
268 -R Copies directories recursively
270 -------------------------------
274 Usage: cut [OPTION]... [FILE]...
276 Prints selected fields from each input FILE to standard output.
280 -b LIST Output only bytes from LIST
281 -c LIST Output only characters from LIST
282 -d CHAR Use CHAR instead of tab as the field delimiter
283 -s Output only the lines containing delimiter
284 -f N Print only these fields
289 $ echo "Hello world" | cut -f 1 -d ' '
291 $ echo "Hello world" | cut -f 2 -d ' '
295 -------------------------------
299 Usage: date [OPTION]... [+FORMAT]
301 or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
303 Displays the current time in the given FORMAT, or sets the system date.
307 -R Outputs RFC-822 compliant date string
308 -s Sets time described by STRING
309 -u Prints or sets Coordinated Universal Time
314 Wed Apr 12 18:52:41 MDT 2000
316 -------------------------------
320 Usage: dc expression ...
322 This is a Tiny RPN calculator that understands the
323 following operations: +, -, /, *, and, or, not, eor.
324 If no arguments are given, dc will process input from STDIN.
326 The behaviour of BusyBox/dc deviates (just a little ;-) from
327 GNU/dc, but this will be remedied in the future.
339 $ echo 72 9 div 8 mul | dc
342 -------------------------------
346 Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n]
348 Copy a file, converting and formatting according to options
350 if=FILE read from FILE instead of stdin
351 of=FILE write to FILE instead of stdout
352 bs=n read and write n bytes at a time
353 count=n copy only n input blocks
354 skip=n skip n input blocks
355 seek=n skip n output blocks
357 Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)
361 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
365 -------------------------------
371 Deallocates unused virtual terminal /dev/ttyN
373 -------------------------------
377 Usage: df [filesystem ...]
379 Prints the filesystem space used and space available.
384 Filesystem 1k-blocks Used Available Use% Mounted on
385 /dev/sda3 8690864 8553540 137324 98% /
386 /dev/sda1 64216 36364 27852 57% /boot
388 Filesystem 1k-blocks Used Available Use% Mounted on
389 /dev/sda3 8690864 8553540 137324 98% /
391 -------------------------------
397 Strip non-directory suffix from file name
406 -------------------------------
410 Usage: dmesg [B<-c>] [B<-n> level] [B<-s> bufsize]
412 Print or controls the kernel ring buffer.
414 -------------------------------
418 Usage: dos2unix < dosfile > unixfile
420 Converts a text file from dos format to unix format.
422 -------------------------------
426 Usage: dpkg-deb [-cexX] archive-file [directory]
428 Debian package archive (.deb) manipulation tool
432 -c Lists the contents of the filesystem tree archive
433 portion of the package archive.
435 -e Extracts the control information files from a package
436 archive into the specified directory.
438 -x Silently extracts the filesystem tree from a package
439 archive into the specified directory.
441 -X Extracts the filesystem tree from a package archive
442 into the specified directory, list files as it goes.
446 dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp
448 -------------------------------
452 Usage: du [OPTION]... [FILE]...
454 Summarize disk space used for each FILE and/or directory.
455 Disk space is printed in units of 1k (i.e. 1024 bytes).
459 -l count sizes many times if hard linked
460 -s display only a total for each argument
466 12 ./kernel-patches/CVS
476 -------------------------------
482 Prints out a binary keyboard translation table to standard output.
488 -------------------------------
494 Dump utmp file format (pipe delimited) from FILE
499 $ dutmp /var/run/utmp
500 8|7||si|||0|0|0|955637625|760097|0
501 2|0|~|~~|reboot||0|0|0|955637625|782235|0
502 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
503 8|125||l4|||0|0|0|955637629|998367|0
504 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
505 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
506 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
508 -------------------------------
512 Usage: echo [-neE] [ARG ...]
514 Prints the specified ARGs to stdout
518 -n suppress trailing newline
519 -e interpret backslash-escaped characters (i.e. \t=tab etc)
520 -E disable interpretation of backslash-escaped characters
524 $ echo "Erik is cool"
526 $ echo -e "Erik\nis\ncool"
530 $ echo "Erik\nis\ncool"
533 -------------------------------
538 Usage: expr EXPRESSION
540 Prints the value of EXPRESSION to standard output.
544 ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2
545 ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0
546 ARG1 < ARG2 ARG1 is less than ARG2
547 ARG1 <= ARG2 ARG1 is less than or equal to ARG2
548 ARG1 = ARG2 ARG1 is equal to ARG2
549 ARG1 != ARG2 ARG1 is unequal to ARG2
550 ARG1 >= ARG2 ARG1 is greater than or equal to ARG2
551 ARG1 > ARG2 ARG1 is greater than ARG2
552 ARG1 + ARG2 arithmetic sum of ARG1 and ARG2
553 ARG1 - ARG2 arithmetic difference of ARG1 and ARG2
554 ARG1 * ARG2 arithmetic product of ARG1 and ARG2
555 ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2
556 ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2
557 STRING : REGEXP anchored pattern match of REGEXP in STRING
558 match STRING REGEXP same as STRING : REGEXP
559 substr STRING POS LENGTH substring of STRING, POS counted from 1
560 index STRING CHARS index in STRING where any CHARS is found, or 0
561 length STRING length of STRING
562 quote TOKEN interpret TOKEN as a string, even if it is a
563 keyword like `match' or an operator like `/'
564 ( EXPRESSION ) value of EXPRESSION
566 Beware that many operators need to be escaped or quoted for shells.
567 Comparisons are arithmetic if both ARGs are numbers, else
568 lexicographical. Pattern matches return the string matched between
569 \( and \) or null; if \( and \) are not used, they return the number
570 of characters matched or 0.
572 -------------------------------
576 Returns an exit code of FALSE (1)
584 -------------------------------
588 Usage: fbset [options] [mode]
590 Show and modify frame buffer device settings
611 # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
612 geometry 1024 768 1024 768 16
613 timings 12714 128 32 16 4 128 4
615 rgba 5/11,6/5,5/0,0/0
618 -------------------------------
622 Usage: fdflush device
624 Force floppy disk drive to detect disk change
626 -------------------------------
630 Usage: find [PATH...] [EXPRESSION]
632 Search for files in a directory hierarchy. The default PATH is
633 the current directory; default EXPRESSION is '-print'
636 EXPRESSION may consist of:
638 -follow Dereference symbolic links.
639 -name PATTERN File name (leading directories removed) matches PATTERN.
640 -print print the full file name followed by a newline to stdout.
644 $ find / -name /etc/passwd
647 -------------------------------
653 Displays the amount of free and used system memory.
658 total used free shared buffers
659 Mem: 257628 248724 8904 59644 93124
660 Swap: 128516 8404 120112
661 Total: 386144 257128 129016
663 -------------------------------
667 Usage: freeramdisk DEVICE
669 Frees all memory used by the specified ramdisk.
673 $ freeramdisk /dev/ram2
675 -------------------------------
679 Usage: fsck.minix [B<-larvsmf>] /dev/name
681 Performs a consistency check for MINIX filesystems.
685 -l Lists all filenames
686 -r Perform interactive repairs
687 -a Perform automatic repairs
689 -s Outputs super-block information
690 -m Activates MINIX-like "mode not cleared" warnings
691 -f Force file system check.
693 -------------------------------
697 Usage: getopt [OPTIONS]...
699 Parse command options
703 -a, --alternative Allow long options starting with single -\n"
704 -l, --longoptions=longopts Long options to be recognized\n"
705 -n, --name=progname The name under which errors are reported\n"
706 -o, --options=optstring Short options to be recognized\n"
707 -q, --quiet Disable error reporting by getopt(3)\n"
708 -Q, --quiet-output No normal output\n"
709 -s, --shell=shell Set shell quoting conventions\n"
710 -T, --test Test for getopt(1) version\n"
711 -u, --unqote Do not quote the output\n"
717 GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
718 -n 'example.busybox' -- "$@"`
719 if [ $? != 0 ] ; then exit 1 ; fi
720 eval set -- "$GETOPT"
723 -a|--a-long) echo "Option a" ; shift ;;
724 -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
727 "") echo "Option c, no argument"; shift 2 ;;
728 *) echo "Option c, argument \`$2'" ; shift 2 ;;
731 *) echo "Internal error!" ; exit 1 ;;
736 -------------------------------
740 Usage: grep [OPTIONS]... PATTERN [FILE]...
742 Search for PATTERN in each FILE or standard input.
746 -h suppress the prefixing filename on output
747 -i ignore case distinctions
748 -n print line number with output lines
749 -q be quiet. Returns 0 if result was found, 1 otherwise
750 -v select non-matching lines
752 This version of grep matches full regular expressions.
756 $ grep root /etc/passwd
757 root:x:0:0:root:/root:/bin/bash
758 $ grep ^[rR]oo. /etc/passwd
759 root:x:0:0:root:/root:/bin/bash
761 -------------------------------
765 Usage: gunzip [OPTION]... FILE
767 Uncompress FILE (or standard input if FILE is '-').
771 -c Write output to standard output
772 -t Test compressed file integrity
776 $ ls -la /tmp/BusyBox*
777 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
778 $ gunzip /tmp/BusyBox-0.43.tar.gz
779 $ ls -la /tmp/BusyBox*
780 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
782 -------------------------------
786 Usage: gzip [OPTION]... FILE
788 Compress FILE with maximum compression.
789 When FILE is '-', reads standard input. Implies B<-c>.
793 -c Write output to standard output instead of FILE.gz
798 $ ls -la /tmp/BusyBox*
799 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
800 $ gzip /tmp/BusyBox-0.43.tar
801 $ ls -la /tmp/BusyBox*
802 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
805 -------------------------------
811 This command halts the system.
813 -------------------------------
817 Usage: head [OPTION] [FILE]...
819 Print first 10 lines of each FILE to standard output.
820 With more than one FILE, precede each with a header giving the
821 file name. With no FILE, or when FILE is -, read standard input.
825 -n NUM Print first NUM lines instead of first 10
829 $ head -n 2 /etc/passwd
830 root:x:0:0:root:/root:/bin/bash
831 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
833 -------------------------------
839 Prints out a unique 32-bit identifier for the current
840 machine. The 32-bit identifier is intended to be unique
841 among all UNIX systems in existence.
843 -------------------------------
847 Usage: hostname [OPTION] {hostname | B<-F> file}
849 Get or set the hostname or DNS domain name. If a hostname is given
850 (or a file with the B<-F> parameter), the host name will be set.
855 -i Addresses for the hostname
857 -F, --file FILE Use the contents of FILE to specify the hostname
864 -------------------------------
868 Print information for USERNAME or the current user
872 -g prints only the group ID
873 -u prints only the user ID
874 -n print a name instead of a number (with for -ug)
875 -r prints the real user ID instead of the effective ID (with -ug)
880 uid=1000(andersen) gid=1000(andersen)
882 -------------------------------
888 Init is the parent of all processes.
890 This version of init is designed to be run only by the kernel.
892 BusyBox init doesn't support multiple runlevels. The runlevels field of
893 the /etc/inittab file is completely ignored by BusyBox init. If you want
894 runlevels, use sysvinit.
896 BusyBox init works just fine without an inittab. If no inittab is found,
897 it has the following default behavior:
899 ::sysinit:/etc/init.d/rcS
902 if it detects that /dev/console is _not_ a serial console, it will also run:
904 tty2::askfirst:/bin/sh
906 If you choose to use an /etc/inittab file, the inittab entry format is as follows:
908 <id>:<runlevels>:<action>:<process>
912 WARNING: This field has a non-traditional meaning for BusyBox init!
913 The id field is used by BusyBox init to specify the controlling tty for
914 the specified process to run on. The contents of this field are
915 appended to "/dev/" and used as-is. There is no need for this field to
916 be unique, although if it isn't you may have strange results. If this
917 field is left blank, the controlling tty is set to the console. Also
918 note that if BusyBox detects that a serial console is in use, then only
919 entries whose controlling tty is either the serial console or /dev/null
920 will be run. BusyBox init does nothing with utmp. We don't need no
925 The runlevels field is completely ignored.
929 Valid actions include: sysinit, respawn, askfirst, wait,
930 once, and ctrlaltdel.
933 The available actions can be classified into two groups: actions
934 that are run only once, and actions that are re-run when the specified
937 Run only-once actions:
939 'sysinit' is the first item run on boot. init waits until all
940 sysinit actions are completed before continuing. Following the
941 completion of all sysinit actions, all 'wait' actions are run.
942 'wait' actions, like 'sysinit' actions, cause init to wait until
943 the specified task completes. 'once' actions are asyncronous,
944 therefore, init does not wait for them to complete. 'ctrlaltdel'
945 actions are run immediately before init causes the system to reboot
946 (unmounting filesystems with a 'ctrlaltdel' action is a very good
949 Run repeatedly actions:
951 'respawn' actions are run after the 'once' actions. When a process
952 started with a 'respawn' action exits, init automatically restarts
953 it. Unlike sysvinit, BusyBox init does not stop processes from
954 respawning out of control. The 'askfirst' actions acts just like
955 respawn, except that before running the specified process it
956 displays the line "Please press Enter to activate this console."
957 and then waits for the user to press enter before starting the
960 Unrecognized actions (like initdefault) will cause init to emit an
961 error message, and then go along with its business. All actions are
962 run in the reverse order from how they appear in /etc/inittab.
966 Specifies the process to be executed and it's command line.
969 Example /etc/inittab file:
971 # This is run first except when booting in single-user mode.
973 ::sysinit:/etc/init.d/rcS
975 # /bin/sh invocations on selected ttys
977 # Start an "askfirst" shell on the console (whatever that may be)
979 # Start an "askfirst" shell on /dev/tty2-4
980 tty2::askfirst:-/bin/sh
981 tty3::askfirst:-/bin/sh
982 tty4::askfirst:-/bin/sh
984 # /sbin/getty invocations for selected ttys
986 tty4::respawn:/sbin/getty 38400 tty5
987 tty5::respawn:/sbin/getty 38400 tty6
990 # Example of how to put a getty on a serial line (for a terminal)
992 #::respawn:/sbin/getty -L ttyS0 9600 vt100
993 #::respawn:/sbin/getty -L ttyS1 9600 vt100
995 # Example how to put a getty on a modem line.
996 #::respawn:/sbin/getty 57600 ttyS2
998 # Stuff to do before rebooting
999 ::ctrlaltdel:/bin/umount -a -r
1000 ::ctrlaltdel:/sbin/swapoff -a
1002 -------------------------------
1006 Usage: insmod [OPTION]... MODULE [symbol=value]...
1008 Loads the specified kernel modules into the kernel.
1012 -f Force module to load into the wrong kernel version.
1013 -k Make module autoclean-able.
1015 -x do not export externs
1016 -L Prevent simultaneous loads of the same module
1018 -------------------------------
1022 Usage: kill [B<-signal>] process-id [process-id ...]
1024 Send a signal (default is SIGTERM) to the specified process(es).
1028 -l List all signal names and numbers.
1033 252 root root S [apache]
1034 263 www-data www-data S [apache]
1035 264 www-data www-data S [apache]
1036 265 www-data www-data S [apache]
1037 266 www-data www-data S [apache]
1038 267 www-data www-data S [apache]
1041 -------------------------------
1045 Usage: killall [B<-signal>] process-name [process-name ...]
1047 Send a signal (default is SIGTERM) to the specified process(es).
1051 -l List all signal names and numbers.
1057 -------------------------------
1061 Usage: length STRING
1063 Prints out the length of the specified STRING.
1070 -------------------------------
1074 Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY
1076 Create a link named LINK_NAME or DIRECTORY to the specified TARGET
1077 You may use '--' to indicate that all following arguments are non-options.
1081 -s make symbolic links instead of hard links
1082 -f remove existing destination files
1086 $ ln -s BusyBox /tmp/ls
1088 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
1090 -------------------------------
1096 Loads an acm from standard input.
1100 $ loadacm < /etc/i18n/acmname
1102 -------------------------------
1108 Loads a console font from standard input.
1112 $ loadfont < /etc/i18n/fontname
1114 -------------------------------
1120 Loads a binary keyboard translation table from standard input.
1124 $ loadkmap < /etc/i18n/lang-keymap
1126 -------------------------------
1130 Usage: logger [OPTION]... [MESSAGE]
1132 Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.
1136 -s Log to stderr as well as the system log.
1137 -t Log using the specified tag (defaults to user name).
1138 -p Enter the message with the specified priority.
1139 This may be numerical or a ``facility.level'' pair.
1145 -------------------------------
1151 Print the name of the current user.
1158 -------------------------------
1162 Usage: ls [B<-1acdelnpuxACFLR>] [filenames...]
1166 -a do not hide entries starting with .
1167 -c with -l: show ctime (the time of last
1168 modification of file status information)
1169 -d list directory entries instead of contents
1170 -e list both full date and full time
1171 -l use a long listing format
1172 -n list numeric UIDs and GIDs instead of names
1173 -p append indicator (one of /=@|) to entries
1174 -u with -l: show access time (the time of last
1176 -x list entries by lines instead of by columns
1177 -A do not list implied . and ..
1178 -C list entries by columns
1179 -F append indicator (one of */=@|) to entries
1180 -R list subdirectories recursively
1181 -L list entries pointed to by symbolic links
1183 -------------------------------
1189 Shows a list of all currently loaded kernel modules.
1191 -------------------------------
1195 Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]
1197 Creates a range of block or character special files
1201 b: Make a block (buffered) device.
1202 c or u: Make a character (un-buffered) device.
1203 p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
1205 FIRST specifies the number appended to NAME to create the first device.
1206 LAST specifies the number of the last item that should be created.
1207 If 's' is the last argument, the base device is created as well.
1211 $ makedevs /dev/ttyS c 4 66 2 63
1212 [creates ttyS2-ttyS63]
1213 $ makedevs /dev/hda b 3 0 0 8 s
1214 [creates hda,hda1-hda8]
1216 -------------------------------
1220 Usage: md5sum [OPTION] [file ...]
1222 Print or check MD5 checksums.
1226 -b read files in binary mode
1227 -c check MD5 sums against given list
1228 -t read files in text mode (default)
1231 The following two options are useful only when verifying checksums:
1233 -s don't output anything, status code shows success
1234 -w warn about improperly formated MD5 checksum lines
1239 6fd11e98b98a58f64ff3398d7b324003 busybox
1241 6fd11e98b98a58f64ff3398d7b324003 busybox
1245 -------------------------------
1249 Usage: mkdir [OPTION] DIRECTORY...
1251 Create the DIRECTORY(ies), if they do not already exist
1255 -m set permission mode (as in chmod), not rwxrwxrwx - umask
1256 -p no error if directory exists, make parent directories as needed
1262 /tmp/foo: File exists
1263 $ mkdir /tmp/foo/bar/baz
1264 /tmp/foo/bar/baz: No such file or directory
1265 $ mkdir -p /tmp/foo/bar/baz
1267 -------------------------------
1271 Usage: mkfifo [OPTIONS] name
1273 Creates a named pipe (identical to 'mknod name p')
1277 -m create the pipe using the specified mode (default a=rw)
1279 -------------------------------
1283 Usage: mkfs.minix [B<-c> | B<-l> filename] [B<-nXX>] [B<-iXX>] /dev/name [blocks]
1285 Make a MINIX filesystem.
1289 -c Check the device for bad blocks
1290 -n [14|30] Specify the maximum length of filenames
1291 -i Specify the number of inodes for the filesystem
1292 -l FILENAME Read the bad blocks list from FILENAME
1293 -v Make a Minix version 2 filesystem
1295 -------------------------------
1299 Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR
1301 Create a special file (block, character, or pipe).
1305 -m create the special file using the specified mode (default a=rw)
1308 b: Make a block (buffered) device.
1309 c or u: Make a character (un-buffered) device.
1310 p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
1314 $ mknod /dev/fd0 b 2 0
1315 $ mknod -m 644 /tmp/pipe p
1317 -------------------------------
1321 Usage: mkswap [B<-c>] [B<-v0>|B<-v1>] device [block-count]
1323 Prepare a disk partition to be used as a swap partition.
1327 -c Check for read-ability.
1328 -v0 Make version 0 swap [max 128 Megs].
1329 -v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
1330 block-count Number of block to use (default is entire partition).
1332 -------------------------------
1336 Usage: mktemp [B<-q>] TEMPLATE
1338 Creates a temporary file with its name based on TEMPLATE.
1339 TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).
1343 $ mktemp /tmp/temp.XXXXXX
1345 $ ls -la /tmp/temp.mWiLjM
1346 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
1348 -------------------------------
1352 Usage: more [file ...]
1354 More is a filter for paging through text one screenful at a time.
1360 -------------------------------
1364 Usage: mount [flags]
1365 mount [flags] device directory [B<-o> options,more-options]
1369 -a: Mount all file systems in fstab.
1370 -o option: One of many filesystem options, listed below.
1371 -r: Mount the filesystem read-only.
1372 -t fs-type: Specify the filesystem type.
1373 -w: Mount for reading and writing (default).
1375 Options for use with the "B<-o>" flag:
1377 async/sync: Writes are asynchronous / synchronous.
1378 atime/noatime: Enable / disable updates to inode access times.
1379 dev/nodev: Allow use of special device files / disallow them.
1380 exec/noexec: Allow use of executable files / disallow them.
1381 loop: Mounts a file via loop device.
1382 suid/nosuid: Allow set-user-id-root programs / disallow them.
1383 remount: Re-mount a currently-mounted filesystem, changing its flags.
1384 ro/rw: Mount for read-only / read-write.
1385 There are EVEN MORE flags that are specific to each filesystem.
1386 You'll have to see the written documentation for those.
1391 /dev/hda3 on / type minix (rw)
1392 proc on /proc type proc (rw)
1393 devpts on /dev/pts type devpts (rw)
1394 $ mount /dev/fd0 /mnt -t msdos -o ro
1395 $ mount /tmp/diskimage /opt -t ext2 -o loop
1397 -------------------------------
1401 Usage: mt [B<-f> device] opcode value
1403 Control magnetic tape drive operation
1405 -------------------------------
1409 Usage: mv SOURCE DEST
1411 or: mv SOURCE... DIRECTORY
1413 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
1417 $ mv /tmp/foo /bin/bar
1419 -------------------------------
1423 Usage: nc [IP] [port]
1425 Netcat opens a pipe to IP:port
1429 $ nc foobar.somedomain.com 25
1430 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
1432 214-Commands supported:
1433 214- HELO EHLO MAIL RCPT DATA AUTH
1434 214 NOOP QUIT RSET HELP
1436 221 foobar closing connection
1438 -------------------------------
1442 Usage: nslookup [HOST]
1444 Queries the nameserver for the IP address of the given HOST
1448 $ nslookup localhost
1455 -------------------------------
1459 Usage: ping [OPTION]... host
1461 Send ICMP ECHO_REQUEST packets to network hosts.
1465 -c COUNT Send only COUNT pings.
1466 -s SIZE Send SIZE data bytes in packets (default=56).
1467 -q Quiet mode, only displays output at start
1472 PING slag (127.0.0.1): 56 data bytes
1473 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
1475 --- debian ping statistics ---
1476 1 packets transmitted, 1 packets received, 0% packet loss
1477 round-trip min/avg/max = 20.1/20.1/20.1 ms
1479 -------------------------------
1483 Shuts down the system, and requests that the kernel turn off power upon halting.
1485 -------------------------------
1489 Usage: printf format [argument...]
1491 Formats and prints the given data in a manner similar to the C printf command.
1495 $ printf "Val=%d\n" 5
1498 -------------------------------
1504 Report process status
1506 This version of ps accepts no options.
1511 PID Uid Gid State Command
1513 2 root root S [kflushd]
1514 3 root root S [kupdate]
1515 4 root root S [kpiod]
1516 5 root root S [kswapd]
1517 742 andersen andersen S [bash]
1518 743 andersen andersen S -bash
1519 745 root root S [getty]
1520 2990 andersen andersen R ps
1522 -------------------------------
1526 Prints the full filename of the current working directory.
1533 -------------------------------
1537 Usage: rdate [OPTION] HOST
1539 Get and possibly set the system date and time from a remote HOST.
1543 -s Set the system date and time (default).
1544 -p Print the date and time.
1546 -------------------------------
1550 Instructs the kernel to reboot the system.
1552 -------------------------------
1556 Usage: renice priority pid [pid ...]
1558 Changes priority of running processes. Allowed priorities range
1559 from 20 (the process runs only when nothing else is running) to 0
1560 (default priority) to -20 (almost nothing else ever gets to run).
1562 -------------------------------
1570 -------------------------------
1574 Usage: rm [OPTION]... FILE...
1576 Remove (unlink) the FILE(s). You may use '--' to
1577 indicate that all following arguments are non-options.
1581 -f remove existing destinations, never prompt
1582 -r or -R remove the contents of directories recursively
1588 -------------------------------
1592 Usage: rmdir [OPTION]... DIRECTORY...
1594 Remove the DIRECTORY(ies), if they are empty.
1600 -------------------------------
1604 Usage: rmmod [OPTION]... [MODULE]...
1606 Unloads the specified kernel modules from the kernel.
1610 -a Try to remove all unused kernel modules.
1616 -------------------------------
1620 Usage: sed [B<-n>] B<-e> script [file...]
1622 Allowed sed scripts come in the following form:
1626 where address ADDR can be:
1627 NUMBER Match specified line number
1629 /REGEXP/ Match specified regexp
1630 (! inverts the meaning of the match)
1633 s/regexp/replacement/[igp]
1634 which attempt to match regexp against the pattern space
1635 and if successful replaces the matched portion with replacement.
1638 which appends TEXT after the pattern space
1642 -e add the script to the commands to be executed
1643 -n suppress automatic printing of pattern space
1645 This version of sed matches full regular expressions.
1649 $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
1652 -------------------------------
1656 Usage: setkeycodes SCANCODE KEYCODE ...
1658 Set entries into the kernel's scancode-to-keycode map,
1659 allowing unusual keyboards to generate usable keycodes.
1661 SCANCODE may be either xx or e0xx (hexadecimal),
1662 and KEYCODE is given in decimal
1666 # setkeycodes e030 127
1668 -------------------------------
1674 lash -- the BusyBox LAme SHell (command interpreter)
1676 This command does not yet have proper documentation.
1678 Use lash just as you would use any other shell. It properly handles pipes,
1679 redirects, job control, can be used as the shell for scripts (#!/bin/sh), and
1680 has a sufficient set of builtins to do what is needed. It does not (yet)
1681 support Bourne Shell syntax. If you need things like "if-then-else", "while",
1682 and such, use ash or bash. If you just need a very simple and extremely small
1683 shell, this will do the job.
1685 -------------------------------
1691 Pause for N seconds.
1696 [2 second delay results]
1698 -------------------------------
1702 Usage: sort [B<-n>] [B<-r>] [FILE]...
1704 Sorts lines of text in the specified files
1708 $ echo -e "e\nf\nb\nd\nc\na" | sort
1716 -------------------------------
1720 Usage: swapoff [OPTION] [device]
1722 Stop swapping virtual memory pages on the given device.
1726 -a Stop swapping on all swap devices
1728 -------------------------------
1732 Usage: swapon [OPTION] [device]
1734 Start swapping virtual memory pages on the given device.
1738 -a Start swapping on all swap devices
1740 -------------------------------
1746 Write all buffered filesystem blocks to disk.
1748 -------------------------------
1752 Usage: syslogd [OPTION]...
1754 Linux system and kernel (provides klogd) logging utility.
1755 Note that this version of syslogd/klogd ignores /etc/syslog.conf.
1759 -m NUM Interval between MARK lines (default=20min, 0=off)
1760 -n Run as a foreground process
1761 -K Do not start up the klogd process
1762 -O FILE Use an alternate log file (default=/var/log/messages)
1763 -R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP)
1764 -L Log locally as well as network logging (default is network only)
1768 $ syslogd -R masterlog:514
1769 $ syslogd -R 192.168.1.1:601
1771 -------------------------------
1775 Usage: tail [OPTION] [FILE]...
1777 Print last 10 lines of each FILE to standard output.
1778 With more than one FILE, precede each with a header giving the
1779 file name. With no FILE, or when FILE is -, read standard input.
1783 -n NUM Print last NUM lines instead of first 10
1784 -f Output data as the file grows. This version
1785 of 'tail -f' supports only one file at a time.
1789 $ tail -n 1 /etc/resolv.conf
1792 -------------------------------
1796 Usage: tar -[cxtvO] [B<--exclude> File] [B<-f> tarFile] [FILE] ...
1798 Create, extract, or list files from a tar file. Note that
1799 this version of tar treats hard links as separate files.
1801 Main operation mode:
1809 f name of tarfile or "-" for stdin
1811 exclude file to exclude
1815 v verbosely list files processed
1819 $ zcat /tmp/tarball.tar.gz | tar -xf -
1820 $ tar -cf /tmp/tarball.tar /usr/local
1822 -------------------------------
1826 Usage: tee [OPTION]... [FILE]...
1828 Copy standard input to each FILE, and also to standard output.
1832 -a append to the given FILEs, do not overwrite
1836 $ echo "Hello" | tee /tmp/foo
1840 -------------------------------
1844 Usage: telnet host [port]
1846 Telnet is used to establish interactive communication with another
1847 computer over a network using the TELNET protocol.
1849 -------------------------------
1853 Usage: test EXPRESSION
1856 Checks file types and compares values returning an exit
1857 code determined by the value of EXPRESSION.
1874 -------------------------------
1878 Usage: touch [B<-c>] file [file ...]
1880 Update the last-modified date on (or create) the selected file[s].
1885 /bin/ls: /tmp/foo: No such file or directory
1888 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
1890 -------------------------------
1894 Usage: tr [-cds] STRING1 [STRING2]
1896 Translate, squeeze, and/or delete characters from
1897 standard input, writing to standard output.
1901 -c take complement of STRING1
1902 -d delete input characters coded STRING1
1903 -s squeeze multiple output characters of STRING2 into one character
1907 $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
1910 -------------------------------
1914 Returns an exit code of TRUE (0)
1922 -------------------------------
1928 Print the file name of the terminal connected to standard input.
1932 -s print nothing, only return an exit status
1939 -------------------------------
1943 Usage: umount [flags] filesystem|directory
1947 -a: Unmount all file systems
1948 -r: Try to remount devices as read-only if mount is busy
1949 -f: Force filesystem umount (i.e. unreachable NFS server)
1950 -l: Do not free loop device (if a loop device has been used)
1956 -------------------------------
1960 Usage: uname [OPTION]...
1962 Print certain system information. With no OPTION, same as B<-s>.
1966 -a print all information
1967 -m the machine (hardware) type
1968 -n print the machine's network node hostname
1969 -r print the operating system release
1970 -s print the operating system name
1971 -p print the host processor type
1972 -v print the operating system version
1977 Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
1979 -------------------------------
1983 Usage: uniq [OPTION]... [INPUT [OUTPUT]]
1985 Discard all but one of successive identical lines from INPUT
1986 (or standard input), writing to OUTPUT (or standard output).
1990 -c prefix lines by the number of occurrences
1991 -d only print duplicate lines
1992 -u only print unique lines
1996 $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
2001 -------------------------------
2005 Usage: unix2dos < unixfile > dosfile
2007 Converts a text file from unix format to dos format.
2009 -------------------------------
2013 Usage: unrpm < package.rpm | gzip B<-d> | cpio -idmuv
2015 Extracts an rpm archive.
2017 -------------------------------
2021 Usage: update [options]
2023 Periodically flushes filesystem buffers.
2027 -S force use of sync(2) instead of flushing
2028 -s SECS call sync this often (default 30)
2029 -f SECS flush some buffers this often (default 5)
2031 -------------------------------
2037 Tells how long the system has been running since boot.
2042 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
2044 -------------------------------
2050 Pauses for N microseconds.
2055 [pauses for 1 second]
2057 -------------------------------
2061 Usage: uuencode [OPTION] [INFILE] REMOTEFILE
2067 -m use base64 encoding as of RFC1521
2071 $ uuencode busybox busybox
2073 M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
2075 $ uudecode busybox busybox > busybox.uu
2078 -------------------------------
2082 Usage: uudecode [OPTION] [FILE]
2084 Uudecode a uuencoded file
2088 -o FILE direct output to FILE
2092 $ uudecode -o busybox busybox.uu
2094 -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
2096 -------------------------------
2100 Usage: watchdog device
2102 Periodically writes to watchdog device B<device>.
2104 -------------------------------
2108 Usage: wc [OPTION]... [FILE]...
2110 Print line, word, and byte counts for each FILE, and a total line if
2111 more than one FILE is specified. With no FILE, read standard input.
2115 -c print the byte counts
2116 -l print the newline counts
2117 -L print the length of the longest line
2118 -w print the word counts
2123 31 46 1365 /etc/passwd
2125 -------------------------------
2129 Usage: which [COMMAND ...]
2138 -------------------------------
2144 Prints the user name associated with the current effective user id.
2151 -------------------------------
2155 Usage: xargs [OPTIONS] [COMMAND] [ARGS...]
2157 Executes COMMAND on every item given by standard input.
2161 -t Print the command just before it is run
2166 $ find . -name '*.c' -print | xargs rm
2168 -------------------------------
2172 Usage: yes [OPTION]... [STRING]...
2174 Repeatedly outputs a line with all specified STRING(s), or `y'.
2176 -------------------------------
2180 This is essentially an alias for invoking "gunzip B<-c>", where
2181 it decompresses the file in question and send the output to stdout.
2183 -------------------------------
2189 GNU Libc uses the Name Service Switch (NSS) to configure the behavior of the C
2190 library for the local environment, and to configure how it reads system data,
2191 such as passwords and group information. BusyBox has made it Policy that it
2192 will never use NSS, and will never use and libc calls that make use of NSS.
2193 This allows you to run an embedded system without the need for installing an
2194 /etc/nsswitch.conf file and without and /lib/libnss_* libraries installed.
2196 If you are using a system that is using a remote LDAP server for authentication
2197 via GNU libc NSS, and you want to use BusyBox, then you will need to adjust the
2198 BusyBox source. Chances are though, that if you have enough space to install
2199 of that stuff on your system, then you probably want the full GNU utilities.
2203 textutils(1), shellutils(1), etc...
2207 Erik Andersen <andersee@debian.org> <andersen@lineo.com>
2211 The following people have contributed code to BusyBox whether
2212 they know it or not.
2217 Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
2219 Tons of new stuff, major rewrite of most of the
2220 core apps, tons of new apps as noted in header files.
2224 Edward Betts <edward@debian.org>
2226 expr, hostid, logname, tty, wc, whoami, yes
2230 John Beppu <beppu@lineo.com>
2232 du, head, nslookup, sort, tee, uniq
2236 Brian Candler <B.Candler@pobox.com>
2242 Randolph Chung <tausq@debian.org>
2244 fbset, ping, hostname, and mkfifo
2248 Dave Cinege <dcinege@psychosis.com>
2250 more(v2), makedevs, dutmp, modularization, auto links file,
2251 various fixes, Linux Router Project maintenance
2255 Karl M. Hegbloom <karlheg@debian.org>
2257 cp_mv.c, the test suite, various fixes to utility.c, &c.
2261 Daniel Jacobowitz <dan@debian.org>
2267 Matt Kraai <kraai@alumni.carnegiemellon.edu>
2269 documentation, bugfixes
2273 John Lombardo <john@deltanet.com>
2279 Glenn McGrath <bug1@netconnect.com.au>
2285 Bruce Perens <bruce@pixar.com>
2287 Original author of BusyBox. His code is still in many apps.
2291 Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
2293 wget - Contributed by permission of Covad Communications
2297 Pavel Roskin <proski@gnu.org>
2299 Lots of bugs fixes and patches.
2303 Gyepi Sam <gyepi@praxis-sw.com>
2305 Remote logging feature for syslogd
2309 Linus Torvalds <torvalds@transmeta.com>
2311 mkswap, fsck.minix, mkfs.minix
2315 Mark Whitley <markw@lineo.com>
2317 sed remix, bug fixes, style-guide, etc.
2321 Charles P. Wright <cpwright@villagenet.com>
2323 gzip, mini-netcat(nc)
2327 Enrique Zanardi <ezanardi@ull.es>
2329 tarcat (since removed), loadkmap, various fixes, Debian maintenance
2333 # $Id: busybox.pod,v 1.89 2001/01/25 23:40:32 andersen Exp $