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,
59 dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset,
60 fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt,
61 head, hostid, hostname, id, init, insmod, kill, killall, length, ln,
62 loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir,
63 mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc,
64 nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed,
65 setkeycodes, sfdisk, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail,
66 tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update,
67 uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [
69 -------------------------------
75 Usage: ar [optxvV] archive [filenames]
77 Extract or list files from an ar archive.
81 o preserve original dates
85 v verbosely list files processed
87 -------------------------------
91 Usage: basename FILE [SUFFIX]
93 Strips directory path and suffixes from FILE.
94 If specified, also removes any trailing SUFFIX.
98 $ basename /usr/local/bin/foo
100 $ basename /usr/local/bin/
102 $ basename /foo/bar.txt .txt
105 -------------------------------
109 Usage: cat [FILE ...]
111 Concatenates FILE(s) and prints them to the standard output.
118 -------------------------------
122 Usage: chgrp [OPTION]... GROUP FILE...
124 Change the group membership of each FILE to GROUP.
128 -R change files and directories recursively
133 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
134 $ chgrp root /tmp/foo
136 -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
138 -------------------------------
142 Usage: chmod [B<-R>] MODE[,MODE]... FILE...
144 Changes file access permissions for the specified FILE(s) (or directories).
145 Each MODE is defined by combining the letters for WHO has access to the file,
146 an OPERATOR for selecting how the permissions should be changed, and a
147 PERMISSION for FILE(s) (or directories).
149 WHO may be chosen from
151 u User who owns the file
152 g Users in the file's Group
153 o Other users not in the file's group
156 OPERATOR may be chosen from
159 - Remove a permission
160 = Assign a permission
162 PERMISSION may be chosen from
166 x Execute (or access for directories)
167 s Set user (or group) ID bit
168 t Sticky bit (for directories prevents removing files by non-owners)
170 Alternately, permissions can be set numerically where the first three
171 numbers are calculated by adding the octal values, such as
177 An optional fourth digit can also be used to specify
185 -R Change files and directories recursively.
190 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
193 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
196 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
198 -------------------------------
202 Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
204 Changes the owner and/or group of each FILE to OWNER and/or GROUP.
208 -R Changes files and directories recursively
213 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
214 $ chown root /tmp/foo
216 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
217 $ chown root.root /tmp/foo
219 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
221 -------------------------------
225 Usage: chroot NEWROOT [COMMAND...]
227 Run COMMAND with root directory set to NEWROOT.
232 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
233 $ mount /dev/hdc1 /mnt -t minix
236 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
238 -------------------------------
244 -------------------------------
250 Changes the foreground virtual terminal to /dev/ttyN
252 -------------------------------
256 Usage: cp [OPTION]... SOURCE DEST
258 or: cp [OPTION]... SOURCE... DIRECTORY
260 Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
266 -p Preserves file attributes if possible
267 -R Copies directories recursively
269 -------------------------------
273 Usage: cut [OPTION]... [FILE]...
275 Prints selected fields from each input FILE to standard output.
279 -b LIST Output only bytes from LIST
280 -c LIST Output only characters from LIST
281 -d CHAR Use CHAR instead of tab as the field delimiter
282 -s Only output Lines if the include DELIM
283 -f N Print only these fields
288 $ echo "Hello world" | cut -f 1 -d ' '
290 $ echo "Hello world" | cut -f 2 -d ' '
294 -------------------------------
298 Usage: date [OPTION]... [+FORMAT]
300 or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
302 Displays the current time in the given FORMAT, or sets the system date.
306 -R Outputs RFC-822 compliant date string
307 -s Sets time described by STRING
308 -u Prints or sets Coordinated Universal Time
313 Wed Apr 12 18:52:41 MDT 2000
315 -------------------------------
319 Usage: dc expression ...
321 This is a Tiny RPN calculator that understands the
322 following operations: +, -, /, *, and, or, not, eor.
323 If no arguments are given, dc will process input from STDIN.
325 The behaviour of BusyBox/dc deviates (just a little ;-) from
326 GNU/dc, but this will be remedied in the future.
338 $ echo 72 9 div 8 mul | dc
341 -------------------------------
345 Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n]
347 Copy a file, converting and formatting according to options
349 if=FILE read from FILE instead of stdin
350 of=FILE write to FILE instead of stdout
351 bs=n read and write n bytes at a time
352 count=n copy only n input blocks
353 skip=n skip n input blocks
354 seek=n skip n output blocks
356 Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)
360 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
364 -------------------------------
368 Usage: df [filesystem ...]
370 Prints the filesystem space used and space available.
375 Filesystem 1k-blocks Used Available Use% Mounted on
376 /dev/sda3 8690864 8553540 137324 98% /
377 /dev/sda1 64216 36364 27852 57% /boot
379 Filesystem 1k-blocks Used Available Use% Mounted on
380 /dev/sda3 8690864 8553540 137324 98% /
382 -------------------------------
388 Strip non-directory suffix from file name
397 -------------------------------
401 Usage: dmesg [B<-c>] [B<-n> level] [B<-s> bufsize]
403 Print or controls the kernel ring buffer.
405 -------------------------------
409 Usage: du [OPTION]... [FILE]...
411 Summarize disk space used for each FILE and/or directory.
412 Disk space is printed in units of 1k (i.e. 1024 bytes).
416 -l count sizes many times if hard linked
417 -s display only a total for each argument
423 12 ./kernel-patches/CVS
433 -------------------------------
439 Dump utmp file format (pipe delimited) from FILE
444 $ dutmp /var/run/utmp
445 8|7||si|||0|0|0|955637625|760097|0
446 2|0|~|~~|reboot||0|0|0|955637625|782235|0
447 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
448 8|125||l4|||0|0|0|955637629|998367|0
449 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
450 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
451 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
453 -------------------------------
457 Usage: echo [-neE] [ARG ...]
459 Prints the specified ARGs to stdout
463 -n suppress trailing newline
464 -e interpret backslash-escaped characters (i.e. \t=tab etc)
465 -E disable interpretation of backslash-escaped characters
469 $ echo "Erik is cool"
471 $ echo -e "Erik\nis\ncool"
475 $ echo "Erik\nis\ncool"
478 -------------------------------
482 Returns an exit code of FALSE (1)
490 -------------------------------
494 Usage: fbset [options] [mode]
496 Show and modify frame buffer device settings
517 # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
518 geometry 1024 768 1024 768 16
519 timings 12714 128 32 16 4 128 4
521 rgba 5/11,6/5,5/0,0/0
524 -------------------------------
528 Usage: fdflush device
530 Force floppy disk drive to detect disk change
532 -------------------------------
536 Usage: find [PATH...] [EXPRESSION]
538 Search for files in a directory hierarchy. The default PATH is
539 the current directory; default EXPRESSION is '-print'
542 EXPRESSION may consist of:
544 -follow Dereference symbolic links.
545 -name PATTERN File name (leading directories removed) matches PATTERN.
546 -print print the full file name followed by a newline to stdout.
550 $ find / -name /etc/passwd
553 -------------------------------
559 Displays the amount of free and used system memory.
564 total used free shared buffers
565 Mem: 257628 248724 8904 59644 93124
566 Swap: 128516 8404 120112
567 Total: 386144 257128 129016
569 -------------------------------
573 Usage: freeramdisk DEVICE
575 Frees all memory used by the specified ramdisk.
579 $ freeramdisk /dev/ram2
581 -------------------------------
587 Deallocates unused virtual terminal /dev/ttyN
589 -------------------------------
593 Usage: fsck.minix [B<-larvsmf>] /dev/name
595 Performs a consistency check for MINIX filesystems.
599 -l Lists all filenames
600 -r Perform interactive repairs
601 -a Perform automatic repairs
603 -s Outputs super-block information
604 -m Activates MINIX-like "mode not cleared" warnings
605 -f Force file system check.
607 -------------------------------
611 Usage: grep [OPTIONS]... PATTERN [FILE]...
613 Search for PATTERN in each FILE or standard input.
617 -h suppress the prefixing filename on output
618 -i ignore case distinctions
619 -n print line number with output lines
620 -q be quiet. Returns 0 if result was found, 1 otherwise
621 -v select non-matching lines
623 This version of grep matches full regular expressions.
627 $ grep root /etc/passwd
628 root:x:0:0:root:/root:/bin/bash
629 $ grep ^[rR]oo. /etc/passwd
630 root:x:0:0:root:/root:/bin/bash
632 -------------------------------
636 Usage: gunzip [OPTION]... FILE
638 Uncompress FILE (or standard input if FILE is '-').
642 -c Write output to standard output
643 -t Test compressed file integrity
647 $ ls -la /tmp/BusyBox*
648 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
649 $ gunzip /tmp/BusyBox-0.43.tar.gz
650 $ ls -la /tmp/BusyBox*
651 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
653 -------------------------------
657 Usage: gzip [OPTION]... FILE
659 Compress FILE with maximum compression.
660 When FILE is '-', reads standard input. Implies B<-c>.
664 -c Write output to standard output instead of FILE.gz
668 $ ls -la /tmp/BusyBox*
669 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
670 $ gzip /tmp/BusyBox-0.43.tar
671 $ ls -la /tmp/BusyBox*
672 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
675 -------------------------------
681 This command halts the system.
683 -------------------------------
687 Usage: head [OPTION] [FILE]...
689 Print first 10 lines of each FILE to standard output.
690 With more than one FILE, precede each with a header giving the
691 file name. With no FILE, or when FILE is -, read standard input.
695 -n NUM Print first NUM lines instead of first 10
699 $ head -n 2 /etc/passwd
700 root:x:0:0:root:/root:/bin/bash
701 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
703 -------------------------------
709 Prints out a unique 32-bit identifier for the current
710 machine. The 32-bit identifier is intended to be unique
711 among all UNIX systems in existence.
713 -------------------------------
717 Usage: hostname [OPTION] {hostname | B<-F> file}
719 Get or set the hostname or DNS domain name. If a hostname is given
720 (or a file with the B<-F> parameter), the host name will be set.
725 -i Addresses for the hostname
727 -F FILE Use the contents of FILE to specify the hostname
734 -------------------------------
738 Print information for USERNAME or the current user
742 -g prints only the group ID
743 -u prints only the user ID
744 -r prints the real user ID instead of the effective ID (with -ug)
749 uid=1000(andersen) gid=1000(andersen)
751 -------------------------------
757 Init is the parent of all processes.
759 This version of init is designed to be run only by the kernel.
761 BusyBox init doesn't support multiple runlevels. The runlevels field of
762 the /etc/inittab file is completely ignored by BusyBox init. If you want
763 runlevels, use sysvinit.
765 BusyBox init works just fine without an inittab. If no inittab is found,
766 it has the following default behavior:
768 ::sysinit:/etc/init.d/rcS
771 if it detects that /dev/console is _not_ a serial console, it will also run:
773 tty2::askfirst:/bin/sh
775 If you choose to use an /etc/inittab file, the inittab entry format is as follows:
777 <id>:<runlevels>:<action>:<process>
781 WARNING: This field has a non-traditional meaning for BusyBox init!
782 The id field is used by BusyBox init to specify the controlling tty for
783 the specified process to run on. The contents of this field are
784 appended to "/dev/" and used as-is. There is no need for this field to
785 be unique, although if it isn't you may have strange results. If this
786 field is left blank, it is completely ignored. Also note that if
787 BusyBox detects that a serial console is in use, then all entries
788 containing non-empty id fields will _not_ be run. BusyBox init does
789 nothing with utmp. We don't need no stinkin' utmp.
793 The runlevels field is completely ignored.
797 Valid actions include: sysinit, respawn, askfirst, wait,
798 once, and ctrlaltdel.
800 askfirst acts just like respawn, but before running the specified
801 process it displays the line "Please press Enter to activate this
802 console." and then waits for the user to press enter before starting
803 the specified process.
805 Unrecognized actions (like initdefault) will cause init to emit
806 an error message, and then go along with its business.
810 Specifies the process to be executed and it's command line.
813 Example /etc/inittab file:
815 # This is run first except when booting in single-user mode.
817 ::sysinit:/etc/init.d/rcS
819 # /bin/sh invocations on selected ttys
821 # Start an "askfirst" shell on the console (whatever that may be)
823 # Start an "askfirst" shell on /dev/tty2
824 tty2::askfirst:/bin/sh
826 # /sbin/getty invocations for selected ttys
828 tty4::respawn:/sbin/getty 38400 tty4
829 tty5::respawn:/sbin/getty 38400 tty5
832 # Example of how to put a getty on a serial line (for a terminal)
834 #ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
835 #ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
837 # Example how to put a getty on a modem line.
838 #ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
840 # Stuff to do before rebooting
841 ::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
842 ::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
844 -------------------------------
848 Usage: insmod [OPTION]... MODULE [symbol=value]...
850 Loads the specified kernel modules into the kernel.
854 -f Force module to load into the wrong kernel version.
855 -k Make module autoclean-able.
857 -x do not export externs
859 -------------------------------
863 Usage: kill [B<-signal>] process-id [process-id ...]
865 Send a signal (default is SIGTERM) to the specified process(es).
869 -l List all signal names and numbers.
874 252 root root S [apache]
875 263 www-data www-data S [apache]
876 264 www-data www-data S [apache]
877 265 www-data www-data S [apache]
878 266 www-data www-data S [apache]
879 267 www-data www-data S [apache]
882 -------------------------------
886 Usage: killall [B<-signal>] process-name [process-name ...]
888 Send a signal (default is SIGTERM) to the specified process(es).
892 -l List all signal names and numbers.
898 -------------------------------
904 Prints out the length of the specified STRING.
911 -------------------------------
915 Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY
917 Create a link named LINK_NAME or DIRECTORY to the specified TARGET
918 You may use '--' to indicate that all following arguments are non-options.
922 -s make symbolic links instead of hard links
923 -f remove existing destination files
927 $ ln -s BusyBox /tmp/ls
929 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
931 -------------------------------
937 Loads an acm from standard input.
941 $ loadacm < /etc/i18n/acmname
943 -------------------------------
949 Loads a console font from standard input.
953 $ loadfont < /etc/i18n/fontname
955 -------------------------------
961 Loads a binary keyboard translation table from standard input.
965 $ loadkmap < /etc/i18n/lang-keymap
967 -------------------------------
971 Usage: logger [OPTION]... [MESSAGE]
973 Write MESSAGE to the system log. If MESSAGE is '-', log stdin.
977 -s Log to stderr as well as the system log.
978 -t Log using the specified tag (defaults to user name).
979 -p Enter the message with the specified priority.
980 This may be numerical or a ``facility.level'' pair.
986 -------------------------------
992 Print the name of the current user.
999 -------------------------------
1003 Usage: ls [B<-1acdelnpuxACFR>] [filenames...]
1007 -a do not hide entries starting with .
1008 -c with -l: show ctime (the time of last
1009 modification of file status information)
1010 -d list directory entries instead of contents
1011 -e list both full date and full time
1012 -l use a long listing format
1013 -n list numeric UIDs and GIDs instead of names
1014 -p append indicator (one of /=@|) to entries
1015 -u with -l: show access time (the time of last
1017 -x list entries by lines instead of by columns
1018 -A do not list implied . and ..
1019 -C list entries by columns
1020 -F append indicator (one of */=@|) to entries
1021 -R list subdirectories recursively
1023 -------------------------------
1029 Shows a list of all currently loaded kernel modules.
1031 -------------------------------
1035 Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]
1037 Creates a range of block or character special files
1041 b: Make a block (buffered) device.
1042 c or u: Make a character (un-buffered) device.
1043 p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
1045 FIRST specifies the number appended to NAME to create the first device.
1046 LAST specifies the number of the last item that should be created.
1047 If 's' is the last argument, the base device is created as well.
1051 $ makedevs /dev/ttyS c 4 66 2 63
1052 [creates ttyS2-ttyS63]
1053 $ makedevs /dev/hda b 3 0 0 8 s
1054 [creates hda,hda1-hda8]
1056 -------------------------------
1060 Usage: md5sum [OPTION] [file ...]
1062 Print or check MD5 checksums.
1066 -b read files in binary mode
1067 -c check MD5 sums against given list
1068 -t read files in text mode (default)
1071 The following two options are useful only when verifying checksums:
1073 -s don't output anything, status code shows success
1074 -w warn about improperly formated MD5 checksum lines
1079 6fd11e98b98a58f64ff3398d7b324003 busybox
1081 6fd11e98b98a58f64ff3398d7b324003 busybox
1085 -------------------------------
1089 Usage: mkdir [OPTION] DIRECTORY...
1091 Create the DIRECTORY(ies), if they do not already exist
1095 -m set permission mode (as in chmod), not rwxrwxrwx - umask
1096 -p no error if directory exists, make parent directories as needed
1102 /tmp/foo: File exists
1103 $ mkdir /tmp/foo/bar/baz
1104 /tmp/foo/bar/baz: No such file or directory
1105 $ mkdir -p /tmp/foo/bar/baz
1107 -------------------------------
1111 Usage: mkfifo [OPTIONS] name
1113 Creates a named pipe (identical to 'mknod name p')
1117 -m create the pipe using the specified mode (default a=rw)
1119 -------------------------------
1123 Usage: mkfs.minix [B<-c> | B<-l> filename] [B<-nXX>] [B<-iXX>] /dev/name [blocks]
1125 Make a MINIX filesystem.
1129 -c Check the device for bad blocks
1130 -n [14|30] Specify the maximum length of filenames
1131 -i Specify the number of inodes for the filesystem
1132 -l FILENAME Read the bad blocks list from FILENAME
1133 -v Make a Minix version 2 filesystem
1135 -------------------------------
1139 Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR
1141 Create a special file (block, character, or pipe).
1145 -m create the special file using the specified mode (default a=rw)
1148 b: Make a block (buffered) device.
1149 c or u: Make a character (un-buffered) device.
1150 p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
1154 $ mknod /dev/fd0 b 2 0
1155 $ mknod -m 644 /tmp/pipe p
1157 -------------------------------
1161 Usage: mkswap [B<-c>] [B<-v0>|B<-v1>] device [block-count]
1163 Prepare a disk partition to be used as a swap partition.
1167 -c Check for read-ability.
1168 -v0 Make version 0 swap [max 128 Megs].
1169 -v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
1170 block-count Number of block to use (default is entire partition).
1172 -------------------------------
1176 Usage: mktemp [B<-q>] TEMPLATE
1178 Creates a temporary file with its name based on TEMPLATE.
1179 TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).
1183 $ mktemp /tmp/temp.XXXXXX
1185 $ ls -la /tmp/temp.mWiLjM
1186 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
1188 -------------------------------
1192 Usage: nc [IP] [port]
1194 Netcat opens a pipe to IP:port
1198 $ nc foobar.somedomain.com 25
1199 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
1201 214-Commands supported:
1202 214- HELO EHLO MAIL RCPT DATA AUTH
1203 214 NOOP QUIT RSET HELP
1205 221 foobar closing connection
1207 -------------------------------
1211 Usage: more [file ...]
1213 More is a filter for paging through text one screenful at a time.
1219 -------------------------------
1223 Usage: mount [flags]
1224 mount [flags] device directory [B<-o> options,more-options]
1228 -a: Mount all file systems in fstab.
1229 -o option: One of many filesystem options, listed below.
1230 -r: Mount the filesystem read-only.
1231 -t fs-type: Specify the filesystem type.
1232 -w: Mount for reading and writing (default).
1234 Options for use with the "B<-o>" flag:
1236 async/sync: Writes are asynchronous / synchronous.
1237 atime/noatime: Enable / disable updates to inode access times.
1238 dev/nodev: Allow use of special device files / disallow them.
1239 exec/noexec: Allow use of executable files / disallow them.
1240 loop: Mounts a file via loop device.
1241 suid/nosuid: Allow set-user-id-root programs / disallow them.
1242 remount: Re-mount a currently-mounted filesystem, changing its flags.
1243 ro/rw: Mount for read-only / read-write.
1244 There are EVEN MORE flags that are specific to each filesystem.
1245 You'll have to see the written documentation for those.
1250 /dev/hda3 on / type minix (rw)
1251 proc on /proc type proc (rw)
1252 devpts on /dev/pts type devpts (rw)
1253 $ mount /dev/fd0 /mnt -t msdos -o ro
1254 $ mount /tmp/diskimage /opt -t ext2 -o loop
1256 -------------------------------
1260 Usage: mt [B<-f> device] opcode value
1262 Control magnetic tape drive operation
1264 -------------------------------
1268 Usage: mv SOURCE DEST
1270 or: mv SOURCE... DIRECTORY
1272 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
1276 $ mv /tmp/foo /bin/bar
1278 -------------------------------
1282 Usage: nslookup [HOST]
1284 Queries the nameserver for the IP address of the given HOST
1288 $ nslookup localhost
1295 -------------------------------
1299 Usage: ping [OPTION]... host
1301 Send ICMP ECHO_REQUEST packets to network hosts.
1305 -c COUNT Send only COUNT pings.
1306 -s SIZE Send SIZE data bytes in packets (default=56).
1307 -q Quiet mode, only displays output at start
1312 PING slag (127.0.0.1): 56 data bytes
1313 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
1315 --- debian ping statistics ---
1316 1 packets transmitted, 1 packets received, 0% packet loss
1317 round-trip min/avg/max = 20.1/20.1/20.1 ms
1319 -------------------------------
1323 Shuts down the system, and requests that the kernel turn off power upon halting.
1325 -------------------------------
1329 Usage: printf format [argument...]
1331 Formats and prints the given data in a manner similar to the C printf command.
1335 $ printf "Val=%d\n" 5
1338 -------------------------------
1344 Report process status
1346 This version of ps accepts no options.
1351 PID Uid Gid State Command
1353 2 root root S [kflushd]
1354 3 root root S [kupdate]
1355 4 root root S [kpiod]
1356 5 root root S [kswapd]
1357 742 andersen andersen S [bash]
1358 743 andersen andersen S -bash
1359 745 root root S [getty]
1360 2990 andersen andersen R ps
1362 -------------------------------
1366 Prints the full filename of the current working directory.
1373 -------------------------------
1377 Instructs the kernel to reboot the system.
1379 -------------------------------
1383 Usage: rm [OPTION]... FILE...
1385 Remove (unlink) the FILE(s). You may use '--' to
1386 indicate that all following arguments are non-options.
1390 -f remove existing destinations, never prompt
1391 -r or -R remove the contents of directories recursively
1397 -------------------------------
1401 Usage: rmdir [OPTION]... DIRECTORY...
1403 Remove the DIRECTORY(ies), if they are empty.
1409 -------------------------------
1413 Usage: rmmod [OPTION]... [MODULE]...
1415 Unloads the specified kernel modules from the kernel.
1419 -a Try to remove all unused kernel modules.
1425 -------------------------------
1429 Usage: sed [B<-n>] B<-e> script [file...]
1431 Allowed sed scripts come in the following form:
1435 where address ADDR can be:
1436 NUMBER Match specified line number
1438 /REGEXP/ Match specified regexp
1439 (! inverts the meaning of the match)
1442 s/regexp/replacement/[igp]
1443 which attempt to match regexp against the pattern space
1444 and if successful replaces the matched portion with replacement.
1447 which appends TEXT after the pattern space
1451 -e add the script to the commands to be executed
1452 -n suppress automatic printing of pattern space
1454 This version of sed matches full regular expressions.
1458 $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
1461 -------------------------------
1465 Usage: setkeycodes SCANCODE KEYCODE ...
1467 Set entries into the kernel's scancode-to-keycode map,
1468 allowing unusual keyboards to generate usable keycodes.
1470 SCANCODE may be either xx or e0xx (hexadecimal),
1471 and KEYCODE is given in decimal
1475 # setkeycodes e030 127
1477 -------------------------------
1483 lash -- the BusyBox LAme SHell (command interpreter)
1485 This command does not yet have proper documentation.
1487 Use lash just as you would use any other shell. It properly handles pipes,
1488 redirects, job control, can be used as the shell for scripts (#!/bin/sh), and
1489 has a sufficient set of builtins to do what is needed. It does not (yet)
1490 support Bourne Shell syntax. If you need things like "if-then-else", "while",
1491 and such, use ash or bash. If you just need a very simple and extremely small
1492 shell, this will do the job.
1494 -------------------------------
1498 Usage: sfdisk [options] device ...
1500 device: something like /dev/hda or /dev/sda
1504 -s [or --show-size]: list size of a partition
1505 -c [or --id]: print or change partition Id
1506 -l [or --list]: list partitions of each device
1507 -d [or --dump]: idem, but in a format suitable for later input
1508 -i [or --increment]: number cylinders etc. from 1 instead of from 0
1509 -uS, -uB, -uC, -uM: accept/report in units of sectors/blocks/cylinders/MB
1510 -T [or --list-types]:list the known partition types
1511 -D [or --DOS]: for DOS-compatibility: waste a little space
1512 -R [or --re-read]: make kernel reread partition table
1513 -N# : change only the partition with number #
1514 -n : do not actually write to disk
1515 -O file : save the sectors that will be overwritten to file
1516 -I file : restore these sectors again
1517 -v [or --version]: print version
1518 -? [or --help]: print this message
1522 -g [or --show-geometry]: print the kernel's idea of the geometry
1523 -x [or --show-extended]: also list extended partitions on output
1525 or expect descriptors for them on input
1526 -L [or --Linux]: do not complain about things irrelevant for Linux
1527 -q [or --quiet]: suppress warning messages
1528 You can override the detected geometry using:
1529 -C# [or --cylinders #]:set the number of cylinders to use
1530 -H# [or --heads #]: set the number of heads to use
1531 -S# [or --sectors #]: set the number of sectors to use
1533 You can disable all consistency checking with:
1535 -f [or --force]: do what I say, even if it is stupid
1537 -------------------------------
1543 Pause for N seconds.
1548 [2 second delay results]
1550 -------------------------------
1554 Usage: sort [B<-n>] [B<-r>] [FILE]...
1556 Sorts lines of text in the specified files
1560 $ echo -e "e\nf\nb\nd\nc\na" | sort
1568 -------------------------------
1574 Write all buffered filesystem blocks to disk.
1576 -------------------------------
1580 Usage: syslogd [OPTION]...
1582 Linux system and kernel (provides klogd) logging utility.
1583 Note that this version of syslogd/klogd ignores /etc/syslog.conf.
1587 -m NUM Interval between MARK lines (default=20min, 0=off)
1588 -n Run as a foreground process
1589 -K Do not start up the klogd process
1590 -O FILE Use an alternate log file (default=/var/log/messages)
1592 -------------------------------
1596 Usage: swapon [OPTION] [device]
1598 Start swapping virtual memory pages on the given device.
1602 -a Start swapping on all swap devices
1604 -------------------------------
1608 Usage: swapoff [OPTION] [device]
1610 Stop swapping virtual memory pages on the given device.
1614 -a Stop swapping on all swap devices
1616 -------------------------------
1620 Usage: tail [OPTION] [FILE]...
1622 Print last 10 lines of each FILE to standard output.
1623 With more than one FILE, precede each with a header giving the
1624 file name. With no FILE, or when FILE is -, read standard input.
1628 -n NUM Print last NUM lines instead of first 10
1629 -f Output data as the file grows. This version
1630 of 'tail -f' supports only one file at a time.
1634 $ tail -n 1 /etc/resolv.conf
1637 -------------------------------
1641 Usage: tar -[cxtvO] [B<--exclude> File] [B<-f> tarFile] [FILE] ...
1643 Create, extract, or list files from a tar file. Note that
1644 this version of tar treats hard links as separate files.
1646 Main operation mode:
1654 f name of tarfile or "-" for stdin
1656 --exclude file to exclude
1660 v verbosely list files processed
1664 $ zcat /tmp/tarball.tar.gz | tar -xf -
1665 $ tar -cf /tmp/tarball.tar /usr/local
1667 -------------------------------
1671 Usage: test EXPRESSION
1674 Checks file types and compares values returning an exit
1675 code determined by the value of EXPRESSION.
1692 -------------------------------
1696 Usage: telnet host [port]
1698 Telnet is used to establish interactive communication with another
1699 computer over a network using the TELNET protocol.
1701 -------------------------------
1705 Usage: tee [OPTION]... [FILE]...
1707 Copy standard input to each FILE, and also to standard output.
1711 -a append to the given FILEs, do not overwrite
1715 $ echo "Hello" | tee /tmp/foo
1719 -------------------------------
1723 Usage: touch [B<-c>] file [file ...]
1725 Update the last-modified date on (or create) the selected file[s].
1730 /bin/ls: /tmp/foo: No such file or directory
1733 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
1735 -------------------------------
1739 Usage: tr [-cds] STRING1 [STRING2]
1741 Translate, squeeze, and/or delete characters from
1742 standard input, writing to standard output.
1746 -c take complement of STRING1
1747 -d delete input characters coded STRING1
1748 -s squeeze multiple output characters of STRING2 into one character
1752 $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
1755 -------------------------------
1759 Returns an exit code of TRUE (0)
1767 -------------------------------
1773 Print the file name of the terminal connected to standard input.
1777 -s print nothing, only return an exit status
1784 -------------------------------
1788 Usage: uuencode [OPTION] [INFILE] REMOTEFILE
1794 -m use base64 encoding as of RFC1521
1798 $ uuencode busybox busybox
1800 M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
1802 $ uudecode busybox busybox > busybox.uu
1805 -------------------------------
1809 Usage: uudecode [OPTION] [FILE]
1811 Uudecode a uuencoded file
1815 -o FILE direct output to FILE
1819 $ uudecode -o busybox busybox.uu
1821 -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
1823 -------------------------------
1827 Usage: umount [flags] filesystem|directory
1831 -a: Unmount all file systems
1832 -r: Try to remount devices as read-only if mount is busy
1833 -f: Force filesystem umount (i.e. unreachable NFS server)
1834 -l: Do not free loop device (if a loop device has been used)
1840 -------------------------------
1844 Usage: uname [OPTION]...
1846 Print certain system information. With no OPTION, same as B<-s>.
1850 -a print all information
1851 -m the machine (hardware) type
1852 -n print the machine's network node hostname
1853 -r print the operating system release
1854 -s print the operating system name
1855 -p print the host processor type
1856 -v print the operating system version
1861 Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
1863 -------------------------------
1867 Usage: uniq [OPTION]... [INPUT [OUTPUT]]
1869 Discard all but one of successive identical lines from INPUT
1870 (or standard input), writing to OUTPUT (or standard output).
1874 $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
1879 -------------------------------
1883 Usage: update [options]
1885 Periodically flushes filesystem buffers.
1889 -S force use of sync(2) instead of flushing
1890 -s SECS call sync this often (default 30)
1891 -f SECS flush some buffers this often (default 5)
1893 -------------------------------
1899 Tells how long the system has been running since boot.
1904 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
1906 -------------------------------
1912 Pauses for N microseconds.
1917 [pauses for 1 second]
1919 -------------------------------
1923 Usage: wc [OPTION]... [FILE]...
1925 Print line, word, and byte counts for each FILE, and a total line if
1926 more than one FILE is specified. With no FILE, read standard input.
1930 -c print the byte counts
1931 -l print the newline counts
1932 -L print the length of the longest line
1933 -w print the word counts
1938 31 46 1365 /etc/passwd
1940 -------------------------------
1944 Usage: which [COMMAND ...]
1953 -------------------------------
1959 Prints the user name associated with the current effective user id.
1966 -------------------------------
1970 Usage: yes [OPTION]... [STRING]...
1972 Repeatedly outputs a line with all specified STRING(s), or `y'.
1974 -------------------------------
1978 This is essentially an alias for invoking "gunzip B<-c>", where
1979 it decompresses the file in question and send the output to stdout.
1981 -------------------------------
1987 GNU Libc uses the Name Service Switch (NSS) to configure the behavior of the C
1988 library for the local environment, and to configure how it reads system data,
1989 such as passwords and group information. BusyBox has made it Policy that it
1990 will never use NSS, and will never use and libc calls that make use of NSS.
1991 This allows you to run an embedded system without the need for installing an
1992 /etc/nsswitch.conf file and without and /lib/libnss_* libraries installed.
1994 If you are using a system that is using a remote LDAP server for authentication
1995 via GNU libc NSS, and you want to use BusyBox, then you will need to adjust the
1996 BusyBox source. Chances are though, that if you have enough space to install
1997 of that stuff on your system, then you probably want the full GNU utilities.
2001 textutils(1), shellutils(1), etc...
2005 Erik Andersen <andersee@debian.org> <andersen@lineo.com>
2009 The following people have contributed code to BusyBox whether
2010 they know it or not.
2012 Erik Andersen <andersee@debian.org>
2016 John Beppu <beppu@lineo.com>
2020 Brian Candler <B.Candler@pobox.com>
2024 Randolph Chung <tausq@debian.org>
2028 Dave Cinege <dcinege@psychosis.com>
2032 Karl M. Hegbloom <karlheg@debian.org>
2036 John Lombardo <john@deltanet.com>
2040 Glenn McGrath <bug1@netconnect.com.au>
2044 Bruce Perens <bruce@perens.com>
2048 Pavel Roskin <proski@gnu.org>
2052 Linus Torvalds <torvalds@transmeta.com>
2056 Charles P. Wright <cpwright@villagenet.com>
2060 Enrique Zanardi <ezanardi@ull.es>
2066 # $Id: busybox.pod,v 1.52 2000/06/26 12:14:30 andersen Exp $