diff options
author | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2004-04-06 15:26:25 +0000 |
---|---|---|
committer | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2004-04-06 15:26:25 +0000 |
commit | 58616825b87d5a04dfb2cd29c9667718809e01f1 (patch) | |
tree | fad4ea0aa2f8ac7c61378053e8d13f51f00d2d73 | |
parent | da8d1ea99cc914b289923c3f285d7a5728f40498 (diff) | |
download | busybox-w32-58616825b87d5a04dfb2cd29c9667718809e01f1.tar.gz busybox-w32-58616825b87d5a04dfb2cd29c9667718809e01f1.tar.bz2 busybox-w32-58616825b87d5a04dfb2cd29c9667718809e01f1.zip |
Eliminate all trace of the sgml based docs. It was a noble effort,
but it just never worked out...
git-svn-id: svn://busybox.net/trunk/busybox@8704 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r-- | Makefile | 36 | ||||
-rwxr-xr-x | docs/autodocifier.pl | 39 | ||||
-rw-r--r-- | docs/busybox.sgml | 4027 |
3 files changed, 12 insertions, 4090 deletions
@@ -67,10 +67,7 @@ install-hardlinks: applets/install.sh busybox busybox.links | |||
67 | 67 | ||
68 | 68 | ||
69 | # Documentation Targets | 69 | # Documentation Targets |
70 | doc: olddoc | 70 | doc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html |
71 | |||
72 | # Old Docs... | ||
73 | olddoc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html | ||
74 | 71 | ||
75 | docs/busybox.pod : docs/busybox_header.pod include/usage.h docs/busybox_footer.pod | 72 | docs/busybox.pod : docs/busybox_header.pod include/usage.h docs/busybox_footer.pod |
76 | - ( cat docs/busybox_header.pod; \ | 73 | - ( cat docs/busybox_header.pod; \ |
@@ -100,33 +97,6 @@ docs/busybox.net/BusyBox.html: docs/busybox.pod | |||
100 | docs/busybox.net/BusyBox.html | 97 | docs/busybox.net/BusyBox.html |
101 | -@ rm -f pod2htm* | 98 | -@ rm -f pod2htm* |
102 | 99 | ||
103 | |||
104 | # New docs based on DOCBOOK SGML | ||
105 | newdoc: docs/busybox.txt docs/busybox.pdf docs/busybox/busyboxdocumentation.html | ||
106 | |||
107 | docs/busybox.txt: docs/busybox.sgml | ||
108 | @echo | ||
109 | @echo BusyBox Documentation | ||
110 | @echo | ||
111 | - mkdir -p docs | ||
112 | (cd docs; sgmltools -b txt busybox.sgml) | ||
113 | |||
114 | docs/busybox.dvi: docs/busybox.sgml | ||
115 | - mkdir -p docs | ||
116 | (cd docs; sgmltools -b dvi busybox.sgml) | ||
117 | |||
118 | docs/busybox.ps: docs/busybox.sgml | ||
119 | - mkdir -p docs | ||
120 | (cd docs; sgmltools -b ps busybox.sgml) | ||
121 | |||
122 | docs/busybox.pdf: docs/busybox.ps | ||
123 | - mkdir -p docs | ||
124 | (cd docs; ps2pdf busybox.ps) | ||
125 | |||
126 | docs/busybox/busyboxdocumentation.html: docs/busybox.sgml | ||
127 | - mkdir -p docs | ||
128 | (cd docs/busybox.net; sgmltools -b html ../busybox.sgml) | ||
129 | |||
130 | # The nifty new buildsystem stuff | 100 | # The nifty new buildsystem stuff |
131 | scripts/mkdep: scripts/mkdep.c | 101 | scripts/mkdep: scripts/mkdep.c |
132 | $(HOSTCC) $(HOSTCFLAGS) -o scripts/mkdep scripts/mkdep.c | 102 | $(HOSTCC) $(HOSTCFLAGS) -o scripts/mkdep scripts/mkdep.c |
@@ -217,8 +187,8 @@ check: busybox | |||
217 | 187 | ||
218 | clean: | 188 | clean: |
219 | - $(MAKE) -C tests clean | 189 | - $(MAKE) -C tests clean |
220 | - rm -f docs/busybox.txt docs/busybox.dvi docs/busybox.ps \ | 190 | - rm -f docs/busybox.dvi docs/busybox.ps \ |
221 | docs/busybox.pdf docs/busybox.pod docs/busybox.net/busybox.html \ | 191 | docs/busybox.pod docs/busybox.net/busybox.html \ |
222 | docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \ | 192 | docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \ |
223 | docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ | 193 | docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ |
224 | docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \ | 194 | docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \ |
diff --git a/docs/autodocifier.pl b/docs/autodocifier.pl index e1101d9d0..eee67cf09 100755 --- a/docs/autodocifier.pl +++ b/docs/autodocifier.pl | |||
@@ -94,17 +94,6 @@ sub pod_for_usage { | |||
94 | ; | 94 | ; |
95 | } | 95 | } |
96 | 96 | ||
97 | # FIXME | generate SGML for an applet | ||
98 | sub sgml_for_usage { | ||
99 | my $name = shift; | ||
100 | my $usage = shift; | ||
101 | return | ||
102 | "<fixme>\n". | ||
103 | " $name\n". | ||
104 | "</fixme>\n" | ||
105 | ; | ||
106 | } | ||
107 | |||
108 | # the keys are applet names, and | 97 | # the keys are applet names, and |
109 | # the values will contain hashrefs of the form: | 98 | # the values will contain hashrefs of the form: |
110 | # | 99 | # |
@@ -124,7 +113,6 @@ my %opt; | |||
124 | GetOptions( | 113 | GetOptions( |
125 | \%opt, | 114 | \%opt, |
126 | "help|h", | 115 | "help|h", |
127 | "sgml|s", | ||
128 | "pod|p", | 116 | "pod|p", |
129 | "verbose|v", | 117 | "verbose|v", |
130 | ); | 118 | ); |
@@ -133,7 +121,6 @@ if (defined $opt{help}) { | |||
133 | 121 | ||
134 | "$0 [OPTION]... [FILE]...\n", | 122 | "$0 [OPTION]... [FILE]...\n", |
135 | "\t--help\n", | 123 | "\t--help\n", |
136 | "\t--sgml\n", | ||
137 | "\t--pod\n", | 124 | "\t--pod\n", |
138 | "\t--verbose\n", | 125 | "\t--verbose\n", |
139 | ; | 126 | ; |
@@ -163,10 +150,6 @@ foreach (@ARGV) { | |||
163 | # generate structured documentation | 150 | # generate structured documentation |
164 | 151 | ||
165 | my $generator = \&pod_for_usage; | 152 | my $generator = \&pod_for_usage; |
166 | if (defined $opt{sgml}) { | ||
167 | $generator = \&sgml_for_usage; | ||
168 | } | ||
169 | |||
170 | foreach my $applet (sort keys %docs) { | 153 | foreach my $applet (sort keys %docs) { |
171 | print $generator->($applet, $docs{$applet}); | 154 | print $generator->($applet, $docs{$applet}); |
172 | } | 155 | } |
@@ -191,18 +174,18 @@ Example: | |||
191 | 174 | ||
192 | =head1 DESCRIPTION | 175 | =head1 DESCRIPTION |
193 | 176 | ||
194 | The purpose of this script is to automagically generate documentation | 177 | The purpose of this script is to automagically generate |
195 | for busybox using its usage.h as the original source for content. | 178 | documentation for busybox using its usage.h as the original source |
196 | It used to be that same content has to be duplicated in 3 places in | 179 | for content. It used to be that same content has to be duplicated |
197 | slightly different formats -- F<usage.h>, F<docs/busybox.pod>, and | 180 | in 3 places in slightly different formats -- F<usage.h>, |
198 | F<docs/busybox.sgml>. This was tedious and error-prone, so it was | 181 | F<docs/busybox.pod>. This was tedious and error-prone, so it was |
199 | decided that F<usage.h> would contain all the text in a | 182 | decided that F<usage.h> would contain all the text in a |
200 | machine-readable form, and scripts could be used to transform this | 183 | machine-readable form, and scripts could be used to transform this |
201 | text into other forms if necessary. | 184 | text into other forms if necessary. |
202 | 185 | ||
203 | F<autodocifier.pl> is one such script. | 186 | F<autodocifier.pl> is one such script. It is based on a script by |
204 | It was based on a script by Erik Andersen <andersen@codepoet.org> | 187 | Erik Andersen <andersen@codepoet.org> which was in turn based on a |
205 | which was in turn based on a script by Mark Whitley <markw@codepoet.org> | 188 | script by Mark Whitley <markw@codepoet.org> |
206 | 189 | ||
207 | =head1 OPTIONS | 190 | =head1 OPTIONS |
208 | 191 | ||
@@ -216,10 +199,6 @@ This displays the help message. | |||
216 | 199 | ||
217 | Generate POD (this is the default) | 200 | Generate POD (this is the default) |
218 | 201 | ||
219 | =item B<--sgml> | ||
220 | |||
221 | Generate SGML | ||
222 | |||
223 | =item B<--verbose> | 202 | =item B<--verbose> |
224 | 203 | ||
225 | Be verbose (not implemented) | 204 | Be verbose (not implemented) |
@@ -292,4 +271,4 @@ John BEPPU <b@ax9.org> | |||
292 | 271 | ||
293 | =cut | 272 | =cut |
294 | 273 | ||
295 | # $Id: autodocifier.pl,v 1.25 2004/03/13 08:32:14 andersen Exp $ | 274 | # $Id: autodocifier.pl,v 1.26 2004/04/06 15:26:25 andersen Exp $ |
diff --git a/docs/busybox.sgml b/docs/busybox.sgml deleted file mode 100644 index b581868ef..000000000 --- a/docs/busybox.sgml +++ /dev/null | |||
@@ -1,4027 +0,0 @@ | |||
1 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ ]> | ||
2 | <book id="BusyBoxDocumentation"> | ||
3 | <bookinfo> | ||
4 | <title>BusyBox - The Swiss Army Knife of Embedded Linux</title> | ||
5 | |||
6 | <legalnotice> | ||
7 | <para> | ||
8 | This documentation is free software; you can redistribute | ||
9 | it and/or modify it under the terms of the GNU General Public | ||
10 | License as published by the Free Software Foundation; either | ||
11 | version 2 of the License, or (at your option) any later | ||
12 | version. | ||
13 | </para> | ||
14 | |||
15 | <para> | ||
16 | This program is distributed in the hope that it will be | ||
17 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
18 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
19 | See the GNU General Public License for more details. | ||
20 | </para> | ||
21 | |||
22 | <para> | ||
23 | You should have received a copy of the GNU General Public | ||
24 | License along with this program; if not, write to the Free | ||
25 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
26 | MA 02111-1307 USA | ||
27 | </para> | ||
28 | |||
29 | <para> | ||
30 | For more details see the file COPYING in the source | ||
31 | distribution of Linux. | ||
32 | </para> | ||
33 | </legalnotice> | ||
34 | </bookinfo> | ||
35 | |||
36 | <toc></toc> | ||
37 | <chapter id="Introduction"> | ||
38 | <title>Introduction</title> | ||
39 | |||
40 | <para> | ||
41 | BusyBox combines tiny versions of many common UNIX utilities into a single | ||
42 | small executable. It provides minimalist replacements for most of the | ||
43 | utilities you usually find in fileutils, shellutils, findutils, textutils, | ||
44 | grep, gzip, tar, etc. BusyBox provides a fairly complete POSIX environment | ||
45 | for any small or embedded system. The utilities in BusyBox generally have | ||
46 | fewer options than their full-featured GNU cousins; however, the options | ||
47 | that are included provide the expected functionality and behave very much | ||
48 | like their GNU counterparts. | ||
49 | </para> | ||
50 | |||
51 | <para> | ||
52 | BusyBox has been written with size-optimization and limited resources in | ||
53 | mind. It is also extremely modular so you can easily include or exclude | ||
54 | commands (or features) at compile time. This makes it easy to customize | ||
55 | your embedded systems. To create a working system, just add a kernel, a | ||
56 | shell (such as ash), and an editor (such as elvis-tiny or ae). | ||
57 | </para> | ||
58 | </chapter> | ||
59 | |||
60 | <chapter id="Syntax"> | ||
61 | <title>How to use BusyBox</title> | ||
62 | <sect1 id="How-to-use-BusyBox"> | ||
63 | <title>Syntax</title> | ||
64 | |||
65 | <para> | ||
66 | <screen> | ||
67 | BusyBox <function> [arguments...] # or | ||
68 | </screen> | ||
69 | </para> | ||
70 | |||
71 | <para> | ||
72 | <screen> | ||
73 | <function> [arguments...] # if symlinked | ||
74 | </screen> | ||
75 | </para> | ||
76 | </sect1> | ||
77 | |||
78 | <sect1 id="Invoking-BusyBox"> | ||
79 | <title>Invoking BusyBox</title> | ||
80 | |||
81 | <para> | ||
82 | When you create a link to BusyBox for the function you wish to use, when | ||
83 | BusyBox is called using that link it will behave as if the command itself | ||
84 | has been invoked. | ||
85 | </para> | ||
86 | |||
87 | <para> | ||
88 | For example, entering | ||
89 | </para> | ||
90 | |||
91 | <para> | ||
92 | <screen> | ||
93 | ln -s ./BusyBox ls | ||
94 | ./ls | ||
95 | </screen> | ||
96 | </para> | ||
97 | |||
98 | <para> | ||
99 | will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled | ||
100 | into BusyBox). | ||
101 | </para> | ||
102 | |||
103 | <para> | ||
104 | You can also invoke BusyBox by issuing the command as an argument on the | ||
105 | command line. For example, entering | ||
106 | </para> | ||
107 | |||
108 | <para> | ||
109 | <screen> | ||
110 | ./BusyBox ls | ||
111 | </screen> | ||
112 | </para> | ||
113 | |||
114 | <para> | ||
115 | will also cause BusyBox to behave as 'ls'. | ||
116 | </para> | ||
117 | |||
118 | </sect1> | ||
119 | |||
120 | <sect1 id="Common-options"> | ||
121 | <title>Common options</title> | ||
122 | |||
123 | <para> | ||
124 | Most BusyBox commands support the <emphasis>--help</emphasis> option to provide | ||
125 | a terse runtime description of their behavior. | ||
126 | </para> | ||
127 | </sect1> | ||
128 | </chapter> | ||
129 | |||
130 | <chapter id="Commands"> | ||
131 | <title>BusyBox Commands</title> | ||
132 | <sect1 id="Available-BusyBox-Commands"> | ||
133 | <title>Available BusyBox Commands</title> | ||
134 | <para> | ||
135 | Currently defined functions include: | ||
136 | </para> | ||
137 | |||
138 | <para> | ||
139 | addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, | ||
140 | bunzip2, busybox, bzcat, cal, cat, chgrp, chmod, chown, chroot, | ||
141 | chvt, clear, cmp, cp, cpio, crond, crontab, cut, date, dc, dd, | ||
142 | deallocvt, delgroup, deluser, df, dirname, dmesg, dos2unix, dpkg, | ||
143 | dpkg-deb, du, dumpkmap, dumpleases, dutmp, echo, egrep, env, expr, | ||
144 | false, fbset, fdflush, fdformat, fgrep, find, fold, free, freeramdisk, | ||
145 | fsck.minix, ftpget, ftpput, getopt, getty, grep, gunzip, gzip, | ||
146 | halt, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, | ||
147 | id, ifconfig, ifdown, ifup, inetd, init, insmod, ip, ipcalc, iplink, | ||
148 | iproute, iptunnel, kill, killall, klogd, lash, length, linuxrc, | ||
149 | ln, loadfont, loadkmap, logger, login, logname, logread, | ||
150 | losetup, ls, lsmod, makedevs, md5sum, mesg, minit, mkdir, mkfifo, | ||
151 | mkfs.minix, mknod, mkswap, mktemp, modprobe, more, mount, msh, | ||
152 | msvc, mt, mv, nameif, nc, netstat, nslookup, od, openvt, passwd, | ||
153 | patch, pidfilehack, pidof, ping, ping6, pivot_root, poweroff, | ||
154 | printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset, | ||
155 | rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts, sed, setkeycodes, | ||
156 | sha1sum, sleep, sort, start-stop-daemon, strings, stty, su, sulogin, | ||
157 | swapoff, swapon, sync, syslogd, tail, tar, tee, telnet, telnetd, | ||
158 | test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc, | ||
159 | udhcpd, umount, uname, uncompress, uniq, unix2dos, unzip, | ||
160 | uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch, | ||
161 | watchdog, wc, wget, which, who, whoami, xargs, yes, zcat, [ | ||
162 | |||
163 | </para> | ||
164 | </sect1> | ||
165 | |||
166 | <sect1 id="ar"> | ||
167 | <title>ar</title> | ||
168 | |||
169 | <para> | ||
170 | Usage: ar [OPTION] archive [FILENAME]... | ||
171 | </para> | ||
172 | |||
173 | <para> | ||
174 | Extract or list files from an ar archive. | ||
175 | </para> | ||
176 | |||
177 | <para> | ||
178 | Options: | ||
179 | </para> | ||
180 | |||
181 | <para> | ||
182 | <screen> | ||
183 | o Preserve original dates | ||
184 | p Extract to stdout | ||
185 | t List | ||
186 | x Extract | ||
187 | v Verbosely list files processed | ||
188 | </screen> | ||
189 | </para> | ||
190 | </sect1> | ||
191 | |||
192 | <sect1 id="basename"> | ||
193 | <title>basename</title> | ||
194 | <para> | ||
195 | Usage: basename FILE [SUFFIX] | ||
196 | </para> | ||
197 | |||
198 | <para> | ||
199 | Strip directory path and suffixes from FILE. If specified, also removes | ||
200 | any trailing SUFFIX. | ||
201 | </para> | ||
202 | |||
203 | <para> | ||
204 | Example: | ||
205 | </para> | ||
206 | |||
207 | <para> | ||
208 | <screen> | ||
209 | $ basename /usr/local/bin/foo | ||
210 | foo | ||
211 | $ basename /usr/local/bin/ | ||
212 | bin | ||
213 | $ basename /foo/bar.txt .txt | ||
214 | bar | ||
215 | </screen> | ||
216 | </para> | ||
217 | </sect1> | ||
218 | |||
219 | <sect1 id="cat"> | ||
220 | <title>cat</title> | ||
221 | |||
222 | <para> | ||
223 | Usage: cat [FILE]... | ||
224 | </para> | ||
225 | |||
226 | <para> | ||
227 | Concatenate <literal>FILE(s)</literal> and prints them to the standard | ||
228 | output. | ||
229 | </para> | ||
230 | |||
231 | <para> | ||
232 | Example: | ||
233 | </para> | ||
234 | |||
235 | <para> | ||
236 | <screen> | ||
237 | $ cat /proc/uptime | ||
238 | 110716.72 17.67 | ||
239 | </screen> | ||
240 | </para> | ||
241 | </sect1> | ||
242 | |||
243 | <sect1 id="chgrp"> | ||
244 | <title>chgrp</title> | ||
245 | |||
246 | <para> | ||
247 | Usage: chgrp [OPTION]... GROUP FILE... | ||
248 | </para> | ||
249 | |||
250 | <para> | ||
251 | Change the group membership of each FILE to GROUP. | ||
252 | </para> | ||
253 | |||
254 | <para> | ||
255 | Options: | ||
256 | </para> | ||
257 | |||
258 | <para> | ||
259 | <screen> | ||
260 | -R Change files and directories recursively | ||
261 | </screen> | ||
262 | </para> | ||
263 | |||
264 | <para> | ||
265 | Example: | ||
266 | </para> | ||
267 | |||
268 | <para> | ||
269 | <screen> | ||
270 | $ ls -l /tmp/foo | ||
271 | -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo | ||
272 | $ chgrp root /tmp/foo | ||
273 | $ ls -l /tmp/foo | ||
274 | -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo | ||
275 | </screen> | ||
276 | </para> | ||
277 | </sect1> | ||
278 | |||
279 | <sect1 id="chmod"> | ||
280 | <title>chmod</title> | ||
281 | |||
282 | <para> | ||
283 | Usage: chmod [<emphasis>-R</emphasis>] MODE[,MODE]... FILE... | ||
284 | </para> | ||
285 | |||
286 | <para> | ||
287 | Change file access permissions for the specified | ||
288 | <literal>FILE(s)</literal> (or directories). Each MODE is defined by | ||
289 | combining the letters for WHO has access to the file, an OPERATOR for | ||
290 | selecting how the permissions should be changed, and a PERMISSION for | ||
291 | <literal>FILE(s)</literal> (or directories). | ||
292 | </para> | ||
293 | |||
294 | <para> | ||
295 | WHO may be chosen from | ||
296 | </para> | ||
297 | |||
298 | <para> | ||
299 | <screen> | ||
300 | u User who owns the file | ||
301 | g Users in the file's Group | ||
302 | o Other users not in the file's group | ||
303 | a All users | ||
304 | </screen> | ||
305 | </para> | ||
306 | |||
307 | <para> | ||
308 | OPERATOR may be chosen from | ||
309 | </para> | ||
310 | |||
311 | <para> | ||
312 | <screen> | ||
313 | + Add a permission | ||
314 | - Remove a permission | ||
315 | = Assign a permission | ||
316 | </screen> | ||
317 | </para> | ||
318 | |||
319 | <para> | ||
320 | PERMISSION may be chosen from | ||
321 | </para> | ||
322 | |||
323 | <para> | ||
324 | <screen> | ||
325 | r Read | ||
326 | w Write | ||
327 | x Execute (or access for directories) | ||
328 | s Set user (or group) ID bit | ||
329 | t Sticky bit (for directories prevents removing files by non-owners) | ||
330 | </screen> | ||
331 | </para> | ||
332 | |||
333 | <para> | ||
334 | Alternately, permissions can be set numerically where the first three | ||
335 | numbers are calculated by adding the octal values, such as | ||
336 | </para> | ||
337 | |||
338 | <para> | ||
339 | <screen> | ||
340 | 4 Read | ||
341 | 2 Write | ||
342 | 1 Execute | ||
343 | </screen> | ||
344 | </para> | ||
345 | |||
346 | <para> | ||
347 | An optional fourth digit can also be used to specify | ||
348 | </para> | ||
349 | |||
350 | <para> | ||
351 | <screen> | ||
352 | 4 Set user ID | ||
353 | 2 Set group ID | ||
354 | 1 Sticky bit | ||
355 | </screen> | ||
356 | </para> | ||
357 | |||
358 | <para> | ||
359 | Options: | ||
360 | </para> | ||
361 | |||
362 | <para> | ||
363 | <screen> | ||
364 | -R Change files and directories recursively. | ||
365 | </screen> | ||
366 | </para> | ||
367 | |||
368 | <para> | ||
369 | Example: | ||
370 | </para> | ||
371 | |||
372 | <para> | ||
373 | <screen> | ||
374 | $ ls -l /tmp/foo | ||
375 | -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo | ||
376 | $ chmod u+x /tmp/foo | ||
377 | $ ls -l /tmp/foo | ||
378 | -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo* | ||
379 | $ chmod 444 /tmp/foo | ||
380 | $ ls -l /tmp/foo | ||
381 | -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo | ||
382 | </screen> | ||
383 | </para> | ||
384 | </sect1> | ||
385 | |||
386 | <sect1 id="chown"> | ||
387 | <title>chown</title> | ||
388 | <para> | ||
389 | Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE... | ||
390 | </para> | ||
391 | |||
392 | <para> | ||
393 | Change the owner and/or group of each FILE to OWNER and/or GROUP. | ||
394 | </para> | ||
395 | |||
396 | <para> | ||
397 | Options: | ||
398 | </para> | ||
399 | |||
400 | <para> | ||
401 | <screen> | ||
402 | -R Change files and directories recursively | ||
403 | </screen> | ||
404 | </para> | ||
405 | |||
406 | <para> | ||
407 | Example: | ||
408 | </para> | ||
409 | |||
410 | <para> | ||
411 | <screen> | ||
412 | $ ls -l /tmp/foo | ||
413 | -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo | ||
414 | $ chown root /tmp/foo | ||
415 | $ ls -l /tmp/foo | ||
416 | -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo | ||
417 | $ chown root.root /tmp/foo | ||
418 | ls -l /tmp/foo | ||
419 | -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo | ||
420 | </screen> | ||
421 | </para> | ||
422 | </sect1> | ||
423 | |||
424 | <sect1 id="chroot"> | ||
425 | <title>chroot</title> | ||
426 | <para> | ||
427 | Usage: chroot NEWROOT [COMMAND...] | ||
428 | </para> | ||
429 | |||
430 | <para> | ||
431 | Run COMMAND with root directory set to NEWROOT. | ||
432 | </para> | ||
433 | |||
434 | <para> | ||
435 | Example: | ||
436 | </para> | ||
437 | |||
438 | <para> | ||
439 | <screen> | ||
440 | $ ls -l /bin/ls | ||
441 | lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox | ||
442 | $ mount /dev/hdc1 /mnt -t minix | ||
443 | $ chroot /mnt | ||
444 | $ ls -l /bin/ls | ||
445 | -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls* | ||
446 | </screen> | ||
447 | </para> | ||
448 | </sect1> | ||
449 | |||
450 | <sect1 id="chvt"> | ||
451 | <title>chvt</title> | ||
452 | <para> | ||
453 | Usage: chvt N | ||
454 | </para> | ||
455 | |||
456 | <para> | ||
457 | Change the foreground virtual terminal to /dev/ttyN | ||
458 | </para> | ||
459 | </sect1> | ||
460 | |||
461 | <sect1 id="clear"> | ||
462 | <title>clear</title> | ||
463 | |||
464 | <para> | ||
465 | Usage: clear | ||
466 | </para> | ||
467 | |||
468 | <para> | ||
469 | Clear the screen. | ||
470 | </para> | ||
471 | </sect1> | ||
472 | |||
473 | <sect1 id="cp"> | ||
474 | <title>cp</title> | ||
475 | |||
476 | <para> | ||
477 | Usage: cp [OPTION]... SOURCE DEST | ||
478 | </para> | ||
479 | |||
480 | <para> | ||
481 | <screen> | ||
482 | or: cp [OPTION]... SOURCE... DIRECTORY | ||
483 | </screen> | ||
484 | </para> | ||
485 | |||
486 | <para> | ||
487 | Copy SOURCE to DEST, or multiple <literal>SOURCE(s)</literal> to | ||
488 | DIRECTORY. | ||
489 | </para> | ||
490 | |||
491 | <para> | ||
492 | Options: | ||
493 | </para> | ||
494 | |||
495 | <para> | ||
496 | <screen> | ||
497 | -a Same as -dpR | ||
498 | -d Preserve links | ||
499 | -p Preserve file attributes if possible | ||
500 | -R Copy directories recursively | ||
501 | </screen> | ||
502 | </para> | ||
503 | </sect1> | ||
504 | |||
505 | <sect1 id="cut"> | ||
506 | <title>cut</title> | ||
507 | |||
508 | <para> | ||
509 | Usage: cut [OPTION]... [FILE]... | ||
510 | </para> | ||
511 | |||
512 | <para> | ||
513 | Print selected fields from each input FILE to standard output. | ||
514 | </para> | ||
515 | |||
516 | <para> | ||
517 | Options: | ||
518 | </para> | ||
519 | |||
520 | <para> | ||
521 | <screen> | ||
522 | -b LIST Output only bytes from LIST | ||
523 | -c LIST Output only characters from LIST | ||
524 | -d CHAR Use CHAR instead of tab as the field delimiter | ||
525 | -s Output only the lines containing delimiter | ||
526 | -f N Print only these fields | ||
527 | -n Ignored | ||
528 | </screen> | ||
529 | </para> | ||
530 | |||
531 | <para> | ||
532 | Example: | ||
533 | </para> | ||
534 | |||
535 | <para> | ||
536 | <screen> | ||
537 | $ echo "Hello world" | cut -f 1 -d ' ' | ||
538 | Hello | ||
539 | $ echo "Hello world" | cut -f 2 -d ' ' | ||
540 | world | ||
541 | </screen> | ||
542 | </para> | ||
543 | </sect1> | ||
544 | |||
545 | <sect1 id="date"> | ||
546 | <title>date</title> | ||
547 | |||
548 | <para> | ||
549 | Usage: date [OPTION]... [+FORMAT] | ||
550 | </para> | ||
551 | |||
552 | <para> | ||
553 | <screen> | ||
554 | or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]] | ||
555 | </screen> | ||
556 | </para> | ||
557 | |||
558 | <para> | ||
559 | Display the current time in the given FORMAT, or set the system date. | ||
560 | </para> | ||
561 | |||
562 | <para> | ||
563 | Options: | ||
564 | </para> | ||
565 | |||
566 | <para> | ||
567 | <screen> | ||
568 | -R Output RFC-822 compliant date string | ||
569 | -s Set time described by STRING | ||
570 | -u Print or set Coordinated Universal Time | ||
571 | </screen> | ||
572 | </para> | ||
573 | |||
574 | <para> | ||
575 | Example: | ||
576 | </para> | ||
577 | |||
578 | <para> | ||
579 | <screen> | ||
580 | $ date | ||
581 | Wed Apr 12 18:52:41 MDT 2000 | ||
582 | </screen> | ||
583 | </para> | ||
584 | </sect1> | ||
585 | |||
586 | <sect1 id="dc"> | ||
587 | <title>dc</title> | ||
588 | |||
589 | <para> | ||
590 | Usage: dc [EXPRESSION] | ||
591 | </para> | ||
592 | |||
593 | <para> | ||
594 | This is a Tiny RPN calculator that understands the | ||
595 | following operations: +, -, /, *, and, or, not, eor. If | ||
596 | no arguments are given, dc will process input from | ||
597 | stdin. | ||
598 | </para> | ||
599 | |||
600 | <para> | ||
601 | The behaviour of BusyBox/dc deviates (just a little ;-) | ||
602 | from GNU/dc, but this will be remedied in the future. | ||
603 | </para> | ||
604 | |||
605 | <para> | ||
606 | Example: | ||
607 | </para> | ||
608 | |||
609 | <para> | ||
610 | <screen> | ||
611 | $ dc 2 2 + | ||
612 | 4 | ||
613 | $ dc 8 8 \* 2 2 + / | ||
614 | 16 | ||
615 | $ dc 0 1 and | ||
616 | 0 | ||
617 | $ dc 0 1 or | ||
618 | 1 | ||
619 | $ echo 72 9 div 8 mul | dc | ||
620 | 64 | ||
621 | </screen> | ||
622 | </para> | ||
623 | </sect1> | ||
624 | |||
625 | <sect1 id="dd"> | ||
626 | <title>dd</title> | ||
627 | |||
628 | <para> | ||
629 | Usage: dd [OPTION]... | ||
630 | </para> | ||
631 | |||
632 | <para> | ||
633 | Copy a file, converting and formatting according to | ||
634 | options. | ||
635 | </para> | ||
636 | |||
637 | <para> | ||
638 | Options: | ||
639 | </para> | ||
640 | |||
641 | <para> | ||
642 | <screen> | ||
643 | if=FILE Read from FILE instead of stdin | ||
644 | of=FILE Write to FILE instead of stdout | ||
645 | bs=N Read and write N bytes at a time | ||
646 | count=N Copy only N input blocks | ||
647 | skip=N Skip N input blocks | ||
648 | seek=N Skip N output blocks | ||
649 | </screen> | ||
650 | </para> | ||
651 | |||
652 | <para> | ||
653 | Numbers may be suffixed by w (x2), k (x1024), b (x512), | ||
654 | or M (x1024^2). | ||
655 | </para> | ||
656 | |||
657 | <para> | ||
658 | Example: | ||
659 | </para> | ||
660 | |||
661 | <para> | ||
662 | <screen> | ||
663 | $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4 | ||
664 | 4+0 records in | ||
665 | 4+0 records out | ||
666 | </screen> | ||
667 | </para> | ||
668 | </sect1> | ||
669 | |||
670 | <sect1 id="deallocvt"> | ||
671 | <title>deallocvt</title> | ||
672 | |||
673 | <para> | ||
674 | Usage: deallocvt N | ||
675 | </para> | ||
676 | |||
677 | <para> | ||
678 | Deallocate unused virtual terminal /dev/ttyN. | ||
679 | </para> | ||
680 | </sect1> | ||
681 | |||
682 | <sect1 id="df"> | ||
683 | <title>df</title> | ||
684 | |||
685 | <para> | ||
686 | Usage: df [FILE]... | ||
687 | </para> | ||
688 | |||
689 | <para> | ||
690 | Print the filesystem space used and space available. | ||
691 | </para> | ||
692 | |||
693 | <para> | ||
694 | Example: | ||
695 | </para> | ||
696 | |||
697 | <para> | ||
698 | <screen> | ||
699 | $ df | ||
700 | Filesystem 1k-blocks Used Available Use% Mounted on | ||
701 | /dev/sda3 8690864 8553540 137324 98% / | ||
702 | /dev/sda1 64216 36364 27852 57% /boot | ||
703 | $ df /dev/sda3 | ||
704 | Filesystem 1k-blocks Used Available Use% Mounted on | ||
705 | /dev/sda3 8690864 8553540 137324 98% / | ||
706 | </screen> | ||
707 | </para> | ||
708 | </sect1> | ||
709 | |||
710 | <sect1 id="dirname"> | ||
711 | <title>dirname</title> | ||
712 | |||
713 | <para> | ||
714 | Usage: dirname NAME | ||
715 | </para> | ||
716 | |||
717 | <para> | ||
718 | Strip non-directory suffix from NAME. | ||
719 | </para> | ||
720 | |||
721 | <para> | ||
722 | Example: | ||
723 | </para> | ||
724 | |||
725 | <para> | ||
726 | <screen> | ||
727 | $ dirname /tmp/foo | ||
728 | /tmp | ||
729 | $ dirname /tmp/foo/ | ||
730 | /tmp | ||
731 | </screen> | ||
732 | </para> | ||
733 | </sect1> | ||
734 | |||
735 | <sect1 id="dmesg"> | ||
736 | <title>dmesg</title> | ||
737 | |||
738 | <para> | ||
739 | Usage: dmesg [OPTION]... | ||
740 | </para> | ||
741 | |||
742 | <para> | ||
743 | Print or control the kernel ring buffer. | ||
744 | </para> | ||
745 | |||
746 | <para> | ||
747 | Options: | ||
748 | </para> | ||
749 | |||
750 | <para> | ||
751 | <screen> | ||
752 | -c Clear the ring buffer after printing | ||
753 | -n LEVEL Set the console logging level to LEVEL | ||
754 | -s BUFSIZE Query ring buffer using a buffer of BUFSIZE | ||
755 | </screen> | ||
756 | </para> | ||
757 | </sect1> | ||
758 | |||
759 | <sect1 id="dos2unix"> | ||
760 | <title>dos2unix</title> | ||
761 | |||
762 | <para> | ||
763 | Usage: dos2unix < dosfile > unixfile | ||
764 | </para> | ||
765 | |||
766 | <para> | ||
767 | Converts a text file from dos format to unix format. | ||
768 | </para> | ||
769 | |||
770 | </sect1> | ||
771 | |||
772 | <sect1 id="dpkg-deb"> | ||
773 | <title>dpkg-deb</title> | ||
774 | |||
775 | <para> | ||
776 | Usage: dpkg-deb [OPTION] archive [directory] | ||
777 | </para> | ||
778 | |||
779 | <para> | ||
780 | Debian package archive (.deb) manipulation tool | ||
781 | </para> | ||
782 | |||
783 | <para> | ||
784 | Options: | ||
785 | </para> | ||
786 | |||
787 | <para> | ||
788 | <screen> | ||
789 | -c List the contents of the filesystem tree archive portion of the package | ||
790 | -e Extracts the control information files from a package archive into the specified directory. | ||
791 | If no directory is specified then a subdirectory DEBIAN in the current directory is used. | ||
792 | -x Silently extracts the filesystem tree from a package archive into the specified directory. | ||
793 | -X Extracts the filesystem tree from a package archive into the specified directory, listing the files as it goes. | ||
794 | If required the specified directory (but not its parents) will be created. | ||
795 | </screen> | ||
796 | <para> | ||
797 | |||
798 | <para> | ||
799 | Example: | ||
800 | </para> | ||
801 | |||
802 | <para> | ||
803 | <screen> | ||
804 | dpkg-deb -e ./busybox_0.48-1_i386.deb | ||
805 | dpkg-deb -x ./busybox_0.48-1_i386.deb ./unpack_dir | ||
806 | </screen> | ||
807 | </para> | ||
808 | </sect1> | ||
809 | |||
810 | <sect1 id="du"> | ||
811 | <title>du</title> | ||
812 | |||
813 | <para> | ||
814 | Usage: du [OPTION]... [FILE]... | ||
815 | </para> | ||
816 | |||
817 | <para> | ||
818 | Summarize the disk space used for each FILE or current | ||
819 | directory. Disk space printed in units of 1k (i.e., | ||
820 | 1024 bytes). | ||
821 | </para> | ||
822 | |||
823 | <para> | ||
824 | Options: | ||
825 | </para> | ||
826 | |||
827 | <para> | ||
828 | <screen> | ||
829 | -l Count sizes many times if hard linked | ||
830 | -s Display only a total for each argument | ||
831 | </screen> | ||
832 | </para> | ||
833 | |||
834 | <para> | ||
835 | Example: | ||
836 | </para> | ||
837 | |||
838 | <para> | ||
839 | <screen> | ||
840 | $ du | ||
841 | 16 ./CVS | ||
842 | 12 ./kernel-patches/CVS | ||
843 | 80 ./kernel-patches | ||
844 | 12 ./tests/CVS | ||
845 | 36 ./tests | ||
846 | 12 ./scripts/CVS | ||
847 | 16 ./scripts | ||
848 | 12 ./docs/CVS | ||
849 | 104 ./docs | ||
850 | 2417 . | ||
851 | </screen> | ||
852 | </para> | ||
853 | </sect1> | ||
854 | |||
855 | <sect1 id="dumpkmap"> | ||
856 | <title>dumpkmap</title> | ||
857 | |||
858 | <para> | ||
859 | Usage: dumpkmap | ||
860 | </para> | ||
861 | |||
862 | <para> | ||
863 | Prints out a binary keyboard translation table to standard output. | ||
864 | </para> | ||
865 | |||
866 | <para> | ||
867 | Example: | ||
868 | </para> | ||
869 | |||
870 | <para> | ||
871 | <screen> | ||
872 | $ dumpkmap < keymap | ||
873 | </screen> | ||
874 | </para> | ||
875 | </sect1> | ||
876 | |||
877 | <sect1 id="dutmp"> | ||
878 | <title>dutmp</title> | ||
879 | |||
880 | <para> | ||
881 | Usage: dutmp [FILE] | ||
882 | </para> | ||
883 | |||
884 | <para> | ||
885 | Dump utmp file format (pipe delimited) from FILE or | ||
886 | stdin to stdout. | ||
887 | </para> | ||
888 | |||
889 | <para> | ||
890 | Example: | ||
891 | </para> | ||
892 | |||
893 | <para> | ||
894 | <screen> | ||
895 | $ dutmp /var/run/utmp | ||
896 | 8|7||si|||0|0|0|955637625|760097|0 | ||
897 | 2|0|~|~~|reboot||0|0|0|955637625|782235|0 | ||
898 | 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0 | ||
899 | 8|125||l4|||0|0|0|955637629|998367|0 | ||
900 | 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0 | ||
901 | 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0 | ||
902 | 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0 | ||
903 | </screen> | ||
904 | </para> | ||
905 | </sect1> | ||
906 | |||
907 | <sect1 id="echo"> | ||
908 | <title>echo</title> | ||
909 | |||
910 | <para> | ||
911 | Usage: echo [OPTION]... [ARG]... | ||
912 | </para> | ||
913 | |||
914 | <para> | ||
915 | Print ARGs to stdout. | ||
916 | </para> | ||
917 | |||
918 | <para> | ||
919 | Options: | ||
920 | </para> | ||
921 | |||
922 | <para> | ||
923 | <screen> | ||
924 | -n Suppress trailing newline | ||
925 | -e Enable interpretation of escaped characters | ||
926 | -E Disable interpretation of escaped characters | ||
927 | </screen> | ||
928 | </para> | ||
929 | |||
930 | <para> | ||
931 | Example: | ||
932 | </para> | ||
933 | |||
934 | <para> | ||
935 | <screen> | ||
936 | $ echo "Erik is cool" | ||
937 | Erik is cool | ||
938 | $ echo -e "Erik\nis\ncool" | ||
939 | Erik | ||
940 | is | ||
941 | cool | ||
942 | $ echo "Erik\nis\ncool" | ||
943 | Erik\nis\ncool | ||
944 | </screen> | ||
945 | </para> | ||
946 | </sect1> | ||
947 | |||
948 | <sect1 id="expr"> | ||
949 | <title>expr</title> | ||
950 | |||
951 | <para> | ||
952 | Usage: expr EXPRESSION | ||
953 | </para> | ||
954 | |||
955 | <para> | ||
956 | Prints the value of EXPRESSION to standard output. | ||
957 | </para> | ||
958 | |||
959 | <para> | ||
960 | EXPRESSION may be: | ||
961 | </para> | ||
962 | |||
963 | <para> | ||
964 | <screen> | ||
965 | ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2 | ||
966 | ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0 | ||
967 | ARG1 < ARG2 ARG1 is less than ARG2 | ||
968 | ARG1 <= ARG2 ARG1 is less than or equal to ARG2 | ||
969 | ARG1 = ARG2 ARG1 is equal to ARG2 | ||
970 | ARG1 != ARG2 ARG1 is unequal to ARG2 | ||
971 | ARG1 >= ARG2 ARG1 is greater than or equal to ARG2 | ||
972 | ARG1 > ARG2 ARG1 is greater than ARG2 | ||
973 | ARG1 + ARG2 arithmetic sum of ARG1 and ARG2 | ||
974 | ARG1 - ARG2 arithmetic difference of ARG1 and ARG2 | ||
975 | ARG1 * ARG2 arithmetic product of ARG1 and ARG2 | ||
976 | ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2 | ||
977 | ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2 | ||
978 | STRING : REGEXP anchored pattern match of REGEXP in STRING | ||
979 | match STRING REGEXP same as STRING : REGEXP | ||
980 | substr STRING POS LENGTH substring of STRING, POS counted from 1 | ||
981 | index STRING CHARS index in STRING where any CHARS is found, or 0 | ||
982 | length STRING length of STRING | ||
983 | quote TOKEN interpret TOKEN as a string, even if it is a | ||
984 | keyword like `match' or an operator like `/' | ||
985 | ( EXPRESSION ) value of EXPRESSION | ||
986 | </screen> | ||
987 | </para> | ||
988 | |||
989 | <para> | ||
990 | Beware that many operators need to be escaped or quoted for shells. | ||
991 | Comparisons are arithmetic if both ARGs are numbers, else | ||
992 | lexicographical. Pattern matches return the string matched between | ||
993 | \( and \) or null; if \( and \) are not used, they return the number | ||
994 | of characters matched or 0. | ||
995 | </para> | ||
996 | |||
997 | </sect1> | ||
998 | |||
999 | |||
1000 | <sect1 id="false"> | ||
1001 | <title>false</title> | ||
1002 | |||
1003 | <para> | ||
1004 | Usage: false | ||
1005 | </para> | ||
1006 | |||
1007 | <para> | ||
1008 | Return an exit code of FALSE (1). | ||
1009 | </para> | ||
1010 | |||
1011 | <para> | ||
1012 | Example: | ||
1013 | </para> | ||
1014 | |||
1015 | <para> | ||
1016 | <screen> | ||
1017 | $ false | ||
1018 | $ echo $? | ||
1019 | 1 | ||
1020 | </screen> | ||
1021 | </para> | ||
1022 | </sect1> | ||
1023 | |||
1024 | <sect1 id="fbset"> | ||
1025 | <title>fbset</title> | ||
1026 | |||
1027 | <para> | ||
1028 | Usage: fbset [OPTION]... [MODE] | ||
1029 | </para> | ||
1030 | |||
1031 | <para> | ||
1032 | Show and modify frame buffer device settings. | ||
1033 | </para> | ||
1034 | |||
1035 | <para> | ||
1036 | Options: | ||
1037 | </para> | ||
1038 | |||
1039 | <para> | ||
1040 | <screen> | ||
1041 | -h Display option summary | ||
1042 | -fb DEVICE Operate on DEVICE | ||
1043 | -db FILE Use FILE for mode database | ||
1044 | -g XRES YRES VXRES VYRES DEPTH Set all geometry parameters | ||
1045 | -t PIXCLOCK LEFT RIGHT UPPER LOWER HSLEN VSLEN Set all timing parameters | ||
1046 | -xres RES Set visible horizontal resolution | ||
1047 | -yres RES Set visible vertical resolution | ||
1048 | </screen> | ||
1049 | </para> | ||
1050 | |||
1051 | <para> | ||
1052 | Example: | ||
1053 | </para> | ||
1054 | |||
1055 | <para> | ||
1056 | <screen> | ||
1057 | $ fbset | ||
1058 | mode "1024x768-76" | ||
1059 | # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz | ||
1060 | geometry 1024 768 1024 768 16 | ||
1061 | timings 12714 128 32 16 4 128 4 | ||
1062 | accel false | ||
1063 | rgba 5/11,6/5,5/0,0/0 | ||
1064 | endmode | ||
1065 | </screen> | ||
1066 | </para> | ||
1067 | </sect1> | ||
1068 | |||
1069 | <sect1 id="fdflush"> | ||
1070 | <title>fdflush</title> | ||
1071 | |||
1072 | <para> | ||
1073 | Usage: fdflush DEVICE | ||
1074 | </para> | ||
1075 | |||
1076 | <para> | ||
1077 | Force floppy disk drive to detect disk change on DEVICE. | ||
1078 | </para> | ||
1079 | </sect1> | ||
1080 | |||
1081 | <sect1 id="find"> | ||
1082 | <title>find</title> | ||
1083 | |||
1084 | <para> | ||
1085 | Usage: find [PATH]... [EXPRESSION] | ||
1086 | </para> | ||
1087 | |||
1088 | <para> | ||
1089 | Search for files in a directory hierarchy. The default | ||
1090 | PATH is the current directory; default EXPRESSION is | ||
1091 | '-print'. | ||
1092 | </para> | ||
1093 | |||
1094 | <para> | ||
1095 | EXPRESSION may consist of: | ||
1096 | </para> | ||
1097 | |||
1098 | <para> | ||
1099 | <screen> | ||
1100 | -follow Dereference symbolic links | ||
1101 | -name PATTERN File name (leading directories removed) matches PATTERN | ||
1102 | -type X Filetype matches X (where X is one of: f,d,l,b,c,...) | ||
1103 | -perm PERMS Permissions match any of (+NNN); all of (-NNN); or exactly (NNN) | ||
1104 | -mtime TIME Modified time is greater than (+N); less than (-N); or exactly (N) days | ||
1105 | </screen> | ||
1106 | </para> | ||
1107 | |||
1108 | <para> | ||
1109 | Example: | ||
1110 | </para> | ||
1111 | |||
1112 | <para> | ||
1113 | <screen> | ||
1114 | $ find / -name /etc/passwd | ||
1115 | /etc/passwd | ||
1116 | </screen> | ||
1117 | </para> | ||
1118 | </sect1> | ||
1119 | |||
1120 | <sect1 id="free"> | ||
1121 | <title>free</title> | ||
1122 | |||
1123 | <para> | ||
1124 | Usage: free | ||
1125 | </para> | ||
1126 | |||
1127 | <para> | ||
1128 | Displays the amount of free and used system memory. | ||
1129 | </para> | ||
1130 | |||
1131 | <para> | ||
1132 | Example: | ||
1133 | </para> | ||
1134 | |||
1135 | <para> | ||
1136 | <screen> | ||
1137 | $ free | ||
1138 | total used free shared buffers | ||
1139 | Mem: 257628 248724 8904 59644 93124 | ||
1140 | Swap: 128516 8404 120112 | ||
1141 | Total: 386144 257128 129016 | ||
1142 | </screen> | ||
1143 | </para> | ||
1144 | </sect1> | ||
1145 | |||
1146 | <sect1 id="freeramdisk"> | ||
1147 | <title>freeramdisk</title> | ||
1148 | |||
1149 | <para> | ||
1150 | Usage: freeramdisk DEVICE | ||
1151 | </para> | ||
1152 | |||
1153 | <para> | ||
1154 | Free all memory used by the ramdisk DEVICE. | ||
1155 | </para> | ||
1156 | |||
1157 | <para> | ||
1158 | Example: | ||
1159 | </para> | ||
1160 | |||
1161 | <para> | ||
1162 | <screen> | ||
1163 | $ freeramdisk /dev/ram2 | ||
1164 | </screen> | ||
1165 | </para> | ||
1166 | </sect1> | ||
1167 | |||
1168 | <sect1 id="fsck.minix"> | ||
1169 | <title>fsck.minix</title> | ||
1170 | |||
1171 | <para> | ||
1172 | Usage: fsck.minix [OPTION]... DEVICE | ||
1173 | </para> | ||
1174 | |||
1175 | <para> | ||
1176 | Perform a consistency check on the MINIX filesystem on | ||
1177 | DEVICE. | ||
1178 | </para> | ||
1179 | |||
1180 | <para> | ||
1181 | Options: | ||
1182 | </para> | ||
1183 | |||
1184 | <para> | ||
1185 | <screen> | ||
1186 | -l List all filenames | ||
1187 | -r Perform interactive repairs | ||
1188 | -a Perform automatic repairs | ||
1189 | -v Verbose | ||
1190 | -s Output super-block information | ||
1191 | -m Activate MINIX-like "mode not cleared" warnings | ||
1192 | -f Force file system check. | ||
1193 | </screen> | ||
1194 | </para> | ||
1195 | </sect1> | ||
1196 | |||
1197 | <sect1 id="getopt"> | ||
1198 | <title>getopt</title> | ||
1199 | |||
1200 | <para> | ||
1201 | Usage: getopt [OPTIONS]... | ||
1202 | </para> | ||
1203 | |||
1204 | <para> | ||
1205 | Parse command options | ||
1206 | </para> | ||
1207 | |||
1208 | <para> | ||
1209 | <screen> | ||
1210 | -a, --alternative Allow long options starting with single -\n" | ||
1211 | -l, --longoptions=longopts Long options to be recognized\n" | ||
1212 | -n, --name=progname The name under which errors are reported\n" | ||
1213 | -o, --options=optstring Short options to be recognized\n" | ||
1214 | -q, --quiet Disable error reporting by getopt(3)\n" | ||
1215 | -Q, --quiet-output No normal output\n" | ||
1216 | -s, --shell=shell Set shell quoting conventions\n" | ||
1217 | -T, --test Test for getopt(1) version\n" | ||
1218 | -u, --unqote Do not quote the output\n" | ||
1219 | </screen> | ||
1220 | </para> | ||
1221 | |||
1222 | |||
1223 | <para> | ||
1224 | Example: | ||
1225 | </para> | ||
1226 | |||
1227 | <para> | ||
1228 | <screen> | ||
1229 | $ cat getopt.test | ||
1230 | #!/bin/sh | ||
1231 | GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \ | ||
1232 | -n 'example.busybox' -- "$@"` | ||
1233 | if [ $? != 0 ] ; then exit 1 ; fi | ||
1234 | eval set -- "$GETOPT" | ||
1235 | while true ; do | ||
1236 | case $1 in | ||
1237 | -a|--a-long) echo "Option a" ; shift ;; | ||
1238 | -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;; | ||
1239 | -c|--c-long) | ||
1240 | case "$2" in | ||
1241 | "") echo "Option c, no argument"; shift 2 ;; | ||
1242 | *) echo "Option c, argument \`$2'" ; shift 2 ;; | ||
1243 | esac ;; | ||
1244 | --) shift ; break ;; | ||
1245 | *) echo "Internal error!" ; exit 1 ;; | ||
1246 | esac | ||
1247 | done | ||
1248 | </screen> | ||
1249 | </para> | ||
1250 | </sect1> | ||
1251 | |||
1252 | <sect1 id="grep"> | ||
1253 | <title>grep</title> | ||
1254 | |||
1255 | <para> | ||
1256 | Usage: grep [OPTIONS]... PATTERN [FILE]... | ||
1257 | </para> | ||
1258 | |||
1259 | <para> | ||
1260 | Search for PATTERN in each FILE or stdin. | ||
1261 | </para> | ||
1262 | |||
1263 | <para> | ||
1264 | Options: | ||
1265 | </para> | ||
1266 | |||
1267 | <para> | ||
1268 | <screen> | ||
1269 | -h Suppress the prefixing filename on output | ||
1270 | -i Ignore case distinctions | ||
1271 | -n Print line number with output lines | ||
1272 | -q Be quiet. Returns 0 if result was found, 1 otherwise | ||
1273 | -v Select non-matching lines | ||
1274 | </screen> | ||
1275 | </para> | ||
1276 | |||
1277 | <para> | ||
1278 | This version of grep matches full regular expressions. | ||
1279 | </para> | ||
1280 | |||
1281 | <para> | ||
1282 | Example: | ||
1283 | </para> | ||
1284 | |||
1285 | <para> | ||
1286 | <screen> | ||
1287 | $ grep root /etc/passwd | ||
1288 | root:x:0:0:root:/root:/bin/bash | ||
1289 | $ grep ^[rR]oo. /etc/passwd | ||
1290 | root:x:0:0:root:/root:/bin/bash | ||
1291 | </screen> | ||
1292 | </para> | ||
1293 | </sect1> | ||
1294 | |||
1295 | <sect1 id="gunzip"> | ||
1296 | <title>gunzip</title> | ||
1297 | |||
1298 | <para> | ||
1299 | Usage: gunzip [OPTION]... FILE | ||
1300 | </para> | ||
1301 | |||
1302 | <para> | ||
1303 | Uncompress FILE (or stdin if FILE is '-'). | ||
1304 | </para> | ||
1305 | |||
1306 | <para> | ||
1307 | Options: | ||
1308 | </para> | ||
1309 | |||
1310 | <para> | ||
1311 | <screen> | ||
1312 | -c Write output to standard output | ||
1313 | -t Test compressed file integrity | ||
1314 | </screen> | ||
1315 | </para> | ||
1316 | |||
1317 | <para> | ||
1318 | Example: | ||
1319 | </para> | ||
1320 | |||
1321 | <para> | ||
1322 | <screen> | ||
1323 | $ ls -la /tmp/BusyBox* | ||
1324 | -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz | ||
1325 | $ gunzip /tmp/BusyBox-0.43.tar.gz | ||
1326 | $ ls -la /tmp/BusyBox* | ||
1327 | -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar | ||
1328 | </screen> | ||
1329 | </para> | ||
1330 | </sect1> | ||
1331 | |||
1332 | <sect1 id="gzip"> | ||
1333 | <title>gzip</title> | ||
1334 | |||
1335 | <para> | ||
1336 | Usage: gzip [OPTION]... FILE | ||
1337 | </para> | ||
1338 | |||
1339 | <para> | ||
1340 | Compress FILE (or stdin if FILE is '-') with maximum | ||
1341 | compression to FILE.gz (or stdout if FILE is '-'). | ||
1342 | </para> | ||
1343 | |||
1344 | <para> | ||
1345 | Options: | ||
1346 | </para> | ||
1347 | |||
1348 | <para> | ||
1349 | <screen> | ||
1350 | -c Write output to standard output | ||
1351 | -d decompress | ||
1352 | </screen> | ||
1353 | </para> | ||
1354 | |||
1355 | <para> | ||
1356 | Example: | ||
1357 | </para> | ||
1358 | |||
1359 | <para> | ||
1360 | <screen> | ||
1361 | $ ls -la /tmp/BusyBox* | ||
1362 | -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar | ||
1363 | $ gzip /tmp/BusyBox-0.43.tar | ||
1364 | $ ls -la /tmp/BusyBox* | ||
1365 | -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz | ||
1366 | </screen> | ||
1367 | </para> | ||
1368 | </sect1> | ||
1369 | |||
1370 | <sect1 id="halt"> | ||
1371 | <title>halt</title> | ||
1372 | |||
1373 | <para> | ||
1374 | Usage: halt | ||
1375 | </para> | ||
1376 | |||
1377 | <para> | ||
1378 | Halt the system. | ||
1379 | </para> | ||
1380 | </sect1> | ||
1381 | |||
1382 | <sect1 id="head"> | ||
1383 | <title>head</title> | ||
1384 | |||
1385 | <para> | ||
1386 | Usage: head [OPTION] FILE... | ||
1387 | </para> | ||
1388 | |||
1389 | <para> | ||
1390 | Print first 10 lines of each FILE to standard output. | ||
1391 | With more than one FILE, precede each with a header | ||
1392 | giving the file name. With no FILE, or when FILE is -, | ||
1393 | read standard input. | ||
1394 | </para> | ||
1395 | |||
1396 | <para> | ||
1397 | Options: | ||
1398 | </para> | ||
1399 | |||
1400 | <para> | ||
1401 | <screen> | ||
1402 | -n NUM Print first NUM lines instead of first 10 | ||
1403 | </screen> | ||
1404 | </para> | ||
1405 | |||
1406 | <para> | ||
1407 | Example: | ||
1408 | </para> | ||
1409 | |||
1410 | <para> | ||
1411 | <screen> | ||
1412 | $ head -n 2 /etc/passwd | ||
1413 | root:x:0:0:root:/root:/bin/bash | ||
1414 | daemon:x:1:1:daemon:/usr/sbin:/bin/sh | ||
1415 | </screen> | ||
1416 | </para> | ||
1417 | </sect1> | ||
1418 | |||
1419 | <sect1 id="hostid"> | ||
1420 | <title>hostid</title> | ||
1421 | |||
1422 | <para> | ||
1423 | Usage: hostid | ||
1424 | </para> | ||
1425 | |||
1426 | <para> | ||
1427 | Prints out a unique 32-bit identifier for the current | ||
1428 | machine. The 32-bit identifier is intended to be unique | ||
1429 | among all UNIX systems in existence. | ||
1430 | </para> | ||
1431 | </sect1> | ||
1432 | |||
1433 | <sect1 id="hostname"> | ||
1434 | <title>hostname</title> | ||
1435 | |||
1436 | <para> | ||
1437 | Usage: hostname [OPTION]... [HOSTNAME|-F FILE] | ||
1438 | </para> | ||
1439 | |||
1440 | <para> | ||
1441 | Get or set the hostname or DNS domain name. If a | ||
1442 | hostname is given (or a file with the -F parameter), the | ||
1443 | host name will be set. | ||
1444 | </para> | ||
1445 | |||
1446 | <para> | ||
1447 | Options: | ||
1448 | </para> | ||
1449 | |||
1450 | <para> | ||
1451 | <screen> | ||
1452 | -s Short | ||
1453 | -i Addresses for the hostname | ||
1454 | -d DNS domain name | ||
1455 | -F, --file FILE Use the contents of FILE to specify the hostname | ||
1456 | </screen> | ||
1457 | </para> | ||
1458 | |||
1459 | <para> | ||
1460 | Example: | ||
1461 | </para> | ||
1462 | |||
1463 | <para> | ||
1464 | <screen> | ||
1465 | $ hostname | ||
1466 | slag | ||
1467 | </screen> | ||
1468 | </para> | ||
1469 | </sect1> | ||
1470 | |||
1471 | <sect1 id="id"> | ||
1472 | <title>id</title> | ||
1473 | |||
1474 | <para> | ||
1475 | Usage: id [OPTION]... [USERNAME] | ||
1476 | </para> | ||
1477 | |||
1478 | <para> | ||
1479 | Print information for USERNAME or the current user. | ||
1480 | </para> | ||
1481 | |||
1482 | <para> | ||
1483 | Options: | ||
1484 | </para> | ||
1485 | |||
1486 | <para> | ||
1487 | <screen> | ||
1488 | -g Print only the group ID | ||
1489 | -u Print only the user ID | ||
1490 | -n print a name instead of a number (with for -ug) | ||
1491 | -r Print the real user ID instead of the effective ID (with -ug) | ||
1492 | </screen> | ||
1493 | </para> | ||
1494 | |||
1495 | <para> | ||
1496 | Example: | ||
1497 | </para> | ||
1498 | |||
1499 | <para> | ||
1500 | <screen> | ||
1501 | $ id | ||
1502 | uid=1000(andersen) gid=1000(andersen) | ||
1503 | </screen> | ||
1504 | </para> | ||
1505 | </sect1> | ||
1506 | |||
1507 | <sect1 id="init"> | ||
1508 | <title>init</title> | ||
1509 | |||
1510 | <para> | ||
1511 | Usage: init | ||
1512 | </para> | ||
1513 | |||
1514 | <para> | ||
1515 | Init is the parent of all processes. | ||
1516 | </para> | ||
1517 | |||
1518 | <para> | ||
1519 | This version of init is designed to be run only by the | ||
1520 | kernel. | ||
1521 | </para> | ||
1522 | |||
1523 | <para> | ||
1524 | BusyBox init doesn't support multiple runlevels. The | ||
1525 | runlevels field of the /etc/inittab file is completely | ||
1526 | ignored by BusyBox init. If you want runlevels, use | ||
1527 | sysvinit. | ||
1528 | </para> | ||
1529 | |||
1530 | <para> | ||
1531 | BusyBox init works just fine without an inittab. If no | ||
1532 | inittab is found, it has the following default behavior: | ||
1533 | </para> | ||
1534 | |||
1535 | <para> | ||
1536 | <screen> | ||
1537 | ::sysinit:/etc/init.d/rcS | ||
1538 | ::askfirst:/bin/sh | ||
1539 | </screen> | ||
1540 | </para> | ||
1541 | |||
1542 | <para> | ||
1543 | If it detects that /dev/console is _not_ a serial | ||
1544 | console, it will also run: | ||
1545 | </para> | ||
1546 | |||
1547 | <para> | ||
1548 | <screen> | ||
1549 | tty2::askfirst:/bin/sh | ||
1550 | </screen> | ||
1551 | </para> | ||
1552 | |||
1553 | <para> | ||
1554 | If you choose to use an /etc/inittab file, the inittab | ||
1555 | entry format is as follows: | ||
1556 | </para> | ||
1557 | |||
1558 | <para> | ||
1559 | <screen> | ||
1560 | <id>:<runlevels>:<action>:<process> | ||
1561 | </screen> | ||
1562 | </para> | ||
1563 | |||
1564 | <sect2> | ||
1565 | <title>id</title> | ||
1566 | <para> | ||
1567 | |||
1568 | WARNING: This field has a non-traditional meaning for BusyBox init! | ||
1569 | The id field is used by BusyBox init to specify the controlling tty | ||
1570 | for the specified process to run on. The contents of this field | ||
1571 | are appended to "/dev/" and used as-is. There is no need for this | ||
1572 | field to be unique, although if it isn't you may have strange | ||
1573 | results. If this field is left blank, the controlling tty is set | ||
1574 | to the console. Also note that if BusyBox detects that a serial | ||
1575 | console is in use, then only entries whose controlling tty is | ||
1576 | either the serial console or /dev/null will be run. BusyBox init | ||
1577 | does nothing with utmp. We don't need no stinkin' utmp. | ||
1578 | |||
1579 | </para> | ||
1580 | </sect2> | ||
1581 | |||
1582 | <sect2> | ||
1583 | <title>runlevels</title> | ||
1584 | |||
1585 | <para> | ||
1586 | The runlevels field is completely ignored. | ||
1587 | </para> | ||
1588 | </sect2> | ||
1589 | |||
1590 | <sect2> | ||
1591 | <title>action</title> | ||
1592 | |||
1593 | |||
1594 | <para> | ||
1595 | Valid actions include: sysinit, respawn, askfirst, wait, | ||
1596 | once, and ctrlaltdel. | ||
1597 | </para> | ||
1598 | |||
1599 | |||
1600 | <para> | ||
1601 | The available actions can be classified into two groups: actions | ||
1602 | that are run only once, and actions that are re-run when the specified | ||
1603 | process exits. | ||
1604 | </para> | ||
1605 | |||
1606 | <para> | ||
1607 | Run only-once actions: | ||
1608 | </para> | ||
1609 | |||
1610 | <para> | ||
1611 | 'sysinit' is the first item run on boot. init waits until all | ||
1612 | sysinit actions are completed before continuing. Following the | ||
1613 | completion of all sysinit actions, all 'wait' actions are run. | ||
1614 | 'wait' actions, like 'sysinit' actions, cause init to wait until | ||
1615 | the specified task completes. 'once' actions are asyncronous, | ||
1616 | therefore, init does not wait for them to complete. 'ctrlaltdel' | ||
1617 | actions are run immediately before init causes the system to reboot | ||
1618 | (unmounting filesystems with a 'ctrlaltdel' action is a very good | ||
1619 | idea). | ||
1620 | </para> | ||
1621 | |||
1622 | <para> | ||
1623 | Run repeatedly actions: | ||
1624 | </para> | ||
1625 | |||
1626 | <para> | ||
1627 | 'respawn' actions are run after the 'once' actions. When a process | ||
1628 | started with a 'respawn' action exits, init automatically restarts | ||
1629 | it. Unlike sysvinit, BusyBox init does not stop processes from | ||
1630 | respawning out of control. The 'askfirst' actions acts just like | ||
1631 | respawn, except that before running the specified process it | ||
1632 | displays the line "Please press Enter to activate this console." | ||
1633 | and then waits for the user to press enter before starting the | ||
1634 | specified process. | ||
1635 | </para> | ||
1636 | |||
1637 | <para> | ||
1638 | Unrecognized actions (like initdefault) will cause init to emit an | ||
1639 | error message, and then go along with its business. All actions are | ||
1640 | run in the reverse order from how they appear in /etc/inittab. | ||
1641 | </para> | ||
1642 | |||
1643 | </sect2> | ||
1644 | |||
1645 | <sect2> | ||
1646 | <title>process</title> | ||
1647 | |||
1648 | <para> | ||
1649 | Specifies the process to be executed and its | ||
1650 | command line. | ||
1651 | </para> | ||
1652 | </sect2> | ||
1653 | |||
1654 | <sect2> | ||
1655 | <title>Example /etc/inittab file</title> | ||
1656 | |||
1657 | <para> | ||
1658 | <screen> | ||
1659 | # This is run first except when booting in single-user mode. | ||
1660 | # | ||
1661 | ::sysinit:/etc/init.d/rcS | ||
1662 | |||
1663 | # /bin/sh invocations on selected ttys | ||
1664 | # | ||
1665 | # Start an "askfirst" shell on the console (whatever that may be) | ||
1666 | ::askfirst:-/bin/sh | ||
1667 | # Start an "askfirst" shell on /dev/tty2-4 | ||
1668 | tty2::askfirst:-/bin/sh | ||
1669 | tty2::askfirst:-/bin/sh | ||
1670 | tty2::askfirst:-/bin/sh | ||
1671 | |||
1672 | # /sbin/getty invocations for selected ttys | ||
1673 | # | ||
1674 | tty4::respawn:/sbin/getty 38400 tty5 | ||
1675 | tty5::respawn:/sbin/getty 38400 tty6 | ||
1676 | |||
1677 | # Example of how to put a getty on a serial line (for a terminal) | ||
1678 | # | ||
1679 | #::respawn:/sbin/getty -L ttyS0 9600 vt100 | ||
1680 | #::respawn:/sbin/getty -L ttyS1 9600 vt100 | ||
1681 | # | ||
1682 | # Example how to put a getty on a modem line. | ||
1683 | #::respawn:/sbin/getty 57600 ttyS2 | ||
1684 | |||
1685 | # Stuff to do before rebooting | ||
1686 | ::ctrlaltdel:/bin/umount -a -r | ||
1687 | ::ctrlaltdel:/sbin/swapoff | ||
1688 | </screen> | ||
1689 | </para> | ||
1690 | </sect2> | ||
1691 | </sect1> | ||
1692 | |||
1693 | <sect1 id="insmod"> | ||
1694 | <title>insmod</title> | ||
1695 | |||
1696 | <para> | ||
1697 | Usage: insmod [OPTION]... MODULE [symbol=value]... | ||
1698 | </para> | ||
1699 | |||
1700 | <para> | ||
1701 | Load MODULE into the kernel. | ||
1702 | </para> | ||
1703 | |||
1704 | <para> | ||
1705 | Options: | ||
1706 | </para> | ||
1707 | |||
1708 | <para> | ||
1709 | <screen> | ||
1710 | -f Force module to load into the wrong kernel version. | ||
1711 | -k Make module autoclean-able. | ||
1712 | -v Verbose output | ||
1713 | -x Do not export externs | ||
1714 | -L Prevent simultaneous loads of the same module | ||
1715 | </screen> | ||
1716 | </para> | ||
1717 | </sect1> | ||
1718 | |||
1719 | <sect1 id="kill"> | ||
1720 | <title>kill</title> | ||
1721 | |||
1722 | <para> | ||
1723 | Usage: kill [OPTION] PID... | ||
1724 | </para> | ||
1725 | |||
1726 | <para> | ||
1727 | Send a signal (default is SIGTERM) to the specified | ||
1728 | PID(s). | ||
1729 | </para> | ||
1730 | |||
1731 | <para> | ||
1732 | Options: | ||
1733 | </para> | ||
1734 | |||
1735 | <para> | ||
1736 | <screen> | ||
1737 | -l List all signal names and numbers | ||
1738 | -SIG Send signal SIG | ||
1739 | </screen> | ||
1740 | </para> | ||
1741 | |||
1742 | <para> | ||
1743 | Example: | ||
1744 | </para> | ||
1745 | |||
1746 | <para> | ||
1747 | <screen> | ||
1748 | $ ps | grep apache | ||
1749 | 252 root root S [apache] | ||
1750 | 263 www-data www-data S [apache] | ||
1751 | 264 www-data www-data S [apache] | ||
1752 | 265 www-data www-data S [apache] | ||
1753 | 266 www-data www-data S [apache] | ||
1754 | 267 www-data www-data S [apache] | ||
1755 | $ kill 252 | ||
1756 | </screen> | ||
1757 | </para> | ||
1758 | </sect1> | ||
1759 | |||
1760 | <sect1 id="killall"> | ||
1761 | <title>killall</title> | ||
1762 | |||
1763 | <para> | ||
1764 | Usage: killall [OPTION] NAME... | ||
1765 | </para> | ||
1766 | |||
1767 | <para> | ||
1768 | Send a signal (default is SIGTERM) to the specified | ||
1769 | NAME(s). | ||
1770 | </para> | ||
1771 | |||
1772 | <para> | ||
1773 | Options: | ||
1774 | </para> | ||
1775 | |||
1776 | <para> | ||
1777 | <screen> | ||
1778 | -l List all signal names and numbers | ||
1779 | -SIG Send signal SIG | ||
1780 | </screen> | ||
1781 | </para> | ||
1782 | |||
1783 | <para> | ||
1784 | Example: | ||
1785 | </para> | ||
1786 | |||
1787 | <para> | ||
1788 | <screen> | ||
1789 | $ killall apache | ||
1790 | </screen> | ||
1791 | </para> | ||
1792 | </sect1> | ||
1793 | |||
1794 | <sect1 id="length"> | ||
1795 | <title>length</title> | ||
1796 | |||
1797 | <para> | ||
1798 | Usage: length STRING | ||
1799 | </para> | ||
1800 | |||
1801 | <para> | ||
1802 | Print the length of STRING. | ||
1803 | </para> | ||
1804 | |||
1805 | <para> | ||
1806 | Example: | ||
1807 | </para> | ||
1808 | |||
1809 | <para> | ||
1810 | <screen> | ||
1811 | $ length "Hello" | ||
1812 | 5 | ||
1813 | </screen> | ||
1814 | </para> | ||
1815 | </sect1> | ||
1816 | |||
1817 | <sect1 id="ln"> | ||
1818 | <title>ln</title> | ||
1819 | |||
1820 | <para> | ||
1821 | Usage: ln [OPTION]... TARGET FILE|DIRECTORY | ||
1822 | </para> | ||
1823 | |||
1824 | <para> | ||
1825 | Create a link named FILE or DIRECTORY to the specified | ||
1826 | TARGET. You may use '--' to indicate that all following | ||
1827 | arguments are non-options. | ||
1828 | </para> | ||
1829 | |||
1830 | <para> | ||
1831 | Options: | ||
1832 | </para> | ||
1833 | |||
1834 | <para> | ||
1835 | <screen> | ||
1836 | -s Make symbolic link instead of hard link | ||
1837 | -f Remove existing destination file | ||
1838 | </screen> | ||
1839 | </para> | ||
1840 | |||
1841 | <para> | ||
1842 | Example: | ||
1843 | </para> | ||
1844 | |||
1845 | <para> | ||
1846 | <screen> | ||
1847 | $ ln -s BusyBox /tmp/ls | ||
1848 | $ ls -l /tmp/ls | ||
1849 | lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox* | ||
1850 | </screen> | ||
1851 | </para> | ||
1852 | </sect1> | ||
1853 | |||
1854 | <sect1 id="loadfont"> | ||
1855 | <title>loadfont</title> | ||
1856 | |||
1857 | <para> | ||
1858 | Usage: loadfont | ||
1859 | </para> | ||
1860 | |||
1861 | <para> | ||
1862 | Load a console font from stdin. | ||
1863 | </para> | ||
1864 | |||
1865 | <para> | ||
1866 | Example: | ||
1867 | </para> | ||
1868 | |||
1869 | <para> | ||
1870 | <screen> | ||
1871 | $ loadfont < /etc/i18n/fontname | ||
1872 | </screen> | ||
1873 | </para> | ||
1874 | </sect1> | ||
1875 | |||
1876 | <sect1 id="loadkmap"> | ||
1877 | <title>loadkmap</title> | ||
1878 | |||
1879 | <para> | ||
1880 | Usage: loadkmap | ||
1881 | </para> | ||
1882 | |||
1883 | <para> | ||
1884 | Load a binary keyboard translation table from stdin. | ||
1885 | </para> | ||
1886 | |||
1887 | <para> | ||
1888 | Example: | ||
1889 | </para> | ||
1890 | |||
1891 | <para> | ||
1892 | <screen> | ||
1893 | $ loadkmap < /etc/i18n/lang-keymap | ||
1894 | </screen> | ||
1895 | </para> | ||
1896 | </sect1> | ||
1897 | |||
1898 | <sect1 id="logger"> | ||
1899 | <title>logger</title> | ||
1900 | |||
1901 | <para> | ||
1902 | Usage: logger [OPTION]... [MESSAGE] | ||
1903 | </para> | ||
1904 | |||
1905 | <para> | ||
1906 | Write MESSAGE to the system log. If MESSAGE is omitted, log | ||
1907 | stdin. | ||
1908 | </para> | ||
1909 | |||
1910 | <para> | ||
1911 | Options: | ||
1912 | </para> | ||
1913 | |||
1914 | <para> | ||
1915 | <screen> | ||
1916 | -s Log to stderr as well as the system log | ||
1917 | -t Log using the specified tag (defaults to user name) | ||
1918 | -p Enter the message with the specified priority | ||
1919 | This may be numerical or a ``facility.level'' pair | ||
1920 | </screen> | ||
1921 | </para> | ||
1922 | |||
1923 | <para> | ||
1924 | Example: | ||
1925 | </para> | ||
1926 | |||
1927 | <para> | ||
1928 | <screen> | ||
1929 | $ logger "hello" | ||
1930 | </screen> | ||
1931 | </para> | ||
1932 | </sect1> | ||
1933 | |||
1934 | <sect1 id="logname"> | ||
1935 | <title>logname</title> | ||
1936 | |||
1937 | <para> | ||
1938 | Usage: logname | ||
1939 | </para> | ||
1940 | |||
1941 | <para> | ||
1942 | Print the name of the current user. | ||
1943 | </para> | ||
1944 | |||
1945 | <para> | ||
1946 | Example: | ||
1947 | </para> | ||
1948 | |||
1949 | <para> | ||
1950 | <screen> | ||
1951 | $ logname | ||
1952 | root | ||
1953 | </screen> | ||
1954 | </para> | ||
1955 | </sect1> | ||
1956 | |||
1957 | <sect1 id="logread"> | ||
1958 | <title>logread</title> | ||
1959 | |||
1960 | <para> | ||
1961 | Usage: logread [OPTION]... | ||
1962 | </para> | ||
1963 | |||
1964 | <para> | ||
1965 | Shows the messages from syslogd (using circular buffer). | ||
1966 | </para> | ||
1967 | |||
1968 | <para> | ||
1969 | Options: | ||
1970 | </para> | ||
1971 | |||
1972 | <para> | ||
1973 | <screen> | ||
1974 | -f Output data as the log grows. | ||
1975 | </screen> | ||
1976 | </para> | ||
1977 | |||
1978 | <para> | ||
1979 | Example: | ||
1980 | </para> | ||
1981 | |||
1982 | <para> | ||
1983 | <screen> | ||
1984 | $ logread | ||
1985 | </screen> | ||
1986 | </para> | ||
1987 | </sect1> | ||
1988 | |||
1989 | <sect1 id="ls"> | ||
1990 | <title>ls</title> | ||
1991 | |||
1992 | <para> | ||
1993 | Usage: ls [OPTION]... [FILE]... | ||
1994 | </para> | ||
1995 | |||
1996 | <para> | ||
1997 | |||
1998 | </para> | ||
1999 | |||
2000 | <para> | ||
2001 | Options: | ||
2002 | </para> | ||
2003 | |||
2004 | <para> | ||
2005 | <screen> | ||
2006 | -a Do not hide entries starting with . | ||
2007 | -c With -l: show ctime (the time of last | ||
2008 | modification of file status information) | ||
2009 | -d List directory entries instead of contents | ||
2010 | -e List both full date and full time | ||
2011 | -l Use a long listing format | ||
2012 | -n List numeric UIDs and GIDs instead of names | ||
2013 | -p Append indicator (one of /=@|) to entries | ||
2014 | -u With -l: show access time (the time of last | ||
2015 | access of the file) | ||
2016 | -x List entries by lines instead of by columns | ||
2017 | -A Do not list implied . and .. | ||
2018 | -C List entries by columns | ||
2019 | -F Append indicator (one of */=@|) to entries | ||
2020 | -L list entries pointed to by symbolic links | ||
2021 | -R List subdirectories recursively | ||
2022 | </screen> | ||
2023 | </para> | ||
2024 | |||
2025 | <para> | ||
2026 | Example: | ||
2027 | </para> | ||
2028 | |||
2029 | <para> | ||
2030 | <screen> | ||
2031 | </screen> | ||
2032 | </para> | ||
2033 | </sect1> | ||
2034 | |||
2035 | <sect1 id="lsmod"> | ||
2036 | <title>lsmod</title> | ||
2037 | |||
2038 | <para> | ||
2039 | Usage: lsmod | ||
2040 | </para> | ||
2041 | |||
2042 | <para> | ||
2043 | List currently loaded kernel modules. | ||
2044 | </para> | ||
2045 | </sect1> | ||
2046 | |||
2047 | <sect1 id="makedevs"> | ||
2048 | <title>makedevs</title> | ||
2049 | |||
2050 | <para> | ||
2051 | Usage: makedevsf NAME TYPE MAJOR MINOR FIRST LAST [s] | ||
2052 | </para> | ||
2053 | |||
2054 | <para> | ||
2055 | Create a range of block or character special files. | ||
2056 | </para> | ||
2057 | |||
2058 | <para> | ||
2059 | TYPE may be: | ||
2060 | </para> | ||
2061 | |||
2062 | <para> | ||
2063 | <screen> | ||
2064 | b Make a block (buffered) device | ||
2065 | c or u Make a character (un-buffered) device | ||
2066 | p Make a named pipe. MAJOR and MINOR are ignored for named pipes | ||
2067 | </screen> | ||
2068 | </para> | ||
2069 | |||
2070 | <para> | ||
2071 | FIRST specifies the number appended to NAME to create | ||
2072 | the first device. LAST specifies the number of the last | ||
2073 | item that should be created. If 's' is the last | ||
2074 | argument, the base device is created as well. | ||
2075 | </para> | ||
2076 | |||
2077 | <para> | ||
2078 | Example: | ||
2079 | </para> | ||
2080 | |||
2081 | <para> | ||
2082 | <screen> | ||
2083 | $ makedevs /dev/ttyS c 4 66 2 63 | ||
2084 | [creates ttyS2-ttyS63] | ||
2085 | $ makedevs /dev/hda b 3 0 0 8 s | ||
2086 | [creates hda,hda1-hda8] | ||
2087 | </screen> | ||
2088 | </para> | ||
2089 | </sect1> | ||
2090 | |||
2091 | <sect1 id="md5sum"> | ||
2092 | <title>md5sum</title> | ||
2093 | |||
2094 | <para> | ||
2095 | Usage: md5sum [OPTION]... FILE... | ||
2096 | </para> | ||
2097 | |||
2098 | <para> | ||
2099 | Print or check MD5 checksums. | ||
2100 | </para> | ||
2101 | |||
2102 | <para> | ||
2103 | Options: | ||
2104 | </para> | ||
2105 | |||
2106 | <para> | ||
2107 | <screen> | ||
2108 | -b Read files in binary mode | ||
2109 | -c Check MD5 sums against given list | ||
2110 | -t Read files in text mode (default) | ||
2111 | -g Read a string | ||
2112 | </screen> | ||
2113 | </para> | ||
2114 | |||
2115 | <para> | ||
2116 | The following two options are useful only when verifying | ||
2117 | checksums: | ||
2118 | </para> | ||
2119 | |||
2120 | <para> | ||
2121 | <screen> | ||
2122 | -s Don't output anything, status code shows success | ||
2123 | -w Warn about improperly formated MD5 checksum lines | ||
2124 | </screen> | ||
2125 | </para> | ||
2126 | |||
2127 | <para> | ||
2128 | Example: | ||
2129 | </para> | ||
2130 | |||
2131 | <para> | ||
2132 | <screen> | ||
2133 | $ md5sum busybox | ||
2134 | 6fd11e98b98a58f64ff3398d7b324003 busybox | ||
2135 | $ md5sum -c | ||
2136 | 6fd11e98b98a58f64ff3398d7b324003 busybox | ||
2137 | 6fd11e98b98a58f64ff3398d7b324002 busybox | ||
2138 | md5sum: MD5 check failed for 'busybox' | ||
2139 | ^D | ||
2140 | </screen> | ||
2141 | </para> | ||
2142 | </sect1> | ||
2143 | |||
2144 | <sect1 id="mkdir"> | ||
2145 | <title>mkdir</title> | ||
2146 | |||
2147 | <para> | ||
2148 | Usage: mkdir [OPTION]... DIRECTORY... | ||
2149 | </para> | ||
2150 | |||
2151 | <para> | ||
2152 | Create the DIRECTORY(s), if they do not already exist. | ||
2153 | </para> | ||
2154 | |||
2155 | <para> | ||
2156 | Options: | ||
2157 | </para> | ||
2158 | |||
2159 | <para> | ||
2160 | <screen> | ||
2161 | -m Set permission mode (as in chmod), not rwxrwxrwx - umask | ||
2162 | -p No error if directory exists, make parent directories as needed | ||
2163 | </screen> | ||
2164 | </para> | ||
2165 | |||
2166 | <para> | ||
2167 | Example: | ||
2168 | </para> | ||
2169 | |||
2170 | <para> | ||
2171 | <screen> | ||
2172 | $ mkdir /tmp/foo | ||
2173 | $ mkdir /tmp/foo | ||
2174 | /tmp/foo: File exists | ||
2175 | $ mkdir /tmp/foo/bar/baz | ||
2176 | /tmp/foo/bar/baz: No such file or directory | ||
2177 | $ mkdir -p /tmp/foo/bar/baz | ||
2178 | </screen> | ||
2179 | </para> | ||
2180 | </sect1> | ||
2181 | |||
2182 | <sect1 id="mkfifo"> | ||
2183 | <title>mkfifo</title> | ||
2184 | |||
2185 | <para> | ||
2186 | Usage: mkfifo [OPTION] NAME | ||
2187 | </para> | ||
2188 | |||
2189 | <para> | ||
2190 | Create a named pipe (identical to 'mknod NAME p'). | ||
2191 | </para> | ||
2192 | |||
2193 | <para> | ||
2194 | Options: | ||
2195 | </para> | ||
2196 | |||
2197 | <para> | ||
2198 | <screen> | ||
2199 | -m MODE Create the pipe using the specified mode (default a=rw) | ||
2200 | </screen> | ||
2201 | </para> | ||
2202 | </sect1> | ||
2203 | |||
2204 | <sect1 id="mkfs.minix"> | ||
2205 | <title>mkfs.minix</title> | ||
2206 | |||
2207 | <para> | ||
2208 | Usage: mkfs.minix [OPTION]... NAME [BLOCKS] | ||
2209 | </para> | ||
2210 | |||
2211 | <para> | ||
2212 | Make a MINIX filesystem. | ||
2213 | </para> | ||
2214 | |||
2215 | <para> | ||
2216 | Options: | ||
2217 | </para> | ||
2218 | |||
2219 | <para> | ||
2220 | <screen> | ||
2221 | -c Check the device for bad blocks | ||
2222 | -n [14|30] Specify the maximum length of filenames | ||
2223 | -i Specify the number of inodes for the filesystem | ||
2224 | -l FILENAME Read the bad blocks list from FILENAME | ||
2225 | -v Make a Minix version 2 filesystem | ||
2226 | </screen> | ||
2227 | </para> | ||
2228 | </sect1> | ||
2229 | |||
2230 | <sect1 id="mknod"> | ||
2231 | <title>mknod</title> | ||
2232 | |||
2233 | <para> | ||
2234 | Usage: mknod [OPTION]... NAME TYPE MAJOR MINOR | ||
2235 | </para> | ||
2236 | |||
2237 | <para> | ||
2238 | Create a special file (block, character, or pipe). | ||
2239 | </para> | ||
2240 | |||
2241 | <para> | ||
2242 | Options: | ||
2243 | </para> | ||
2244 | |||
2245 | <para> | ||
2246 | <screen> | ||
2247 | -m Create the special file using the specified mode (default a=rw) | ||
2248 | </screen> | ||
2249 | </para> | ||
2250 | |||
2251 | <para> | ||
2252 | TYPE may be: | ||
2253 | </para> | ||
2254 | |||
2255 | <para> | ||
2256 | <screen> | ||
2257 | b Make a block (buffered) device | ||
2258 | c or u Make a character (un-buffered) device | ||
2259 | p Make a named pipe. MAJOR and MINOR are ignored for named pipes | ||
2260 | </screen> | ||
2261 | </para> | ||
2262 | |||
2263 | <para> | ||
2264 | Example: | ||
2265 | </para> | ||
2266 | |||
2267 | <para> | ||
2268 | <screen> | ||
2269 | $ mknod /dev/fd0 b 2 0 | ||
2270 | $ mknod -m 644 /tmp/pipe p | ||
2271 | </screen> | ||
2272 | </para> | ||
2273 | </sect1> | ||
2274 | |||
2275 | <sect1 id="mkswap"> | ||
2276 | <title>mkswap</title> | ||
2277 | |||
2278 | <para> | ||
2279 | Usage: mkswap [OPTION]... DEVICE [BLOCKS] | ||
2280 | </para> | ||
2281 | |||
2282 | <para> | ||
2283 | Prepare a disk partition to be used as a swap partition. | ||
2284 | </para> | ||
2285 | |||
2286 | <para> | ||
2287 | Options: | ||
2288 | </para> | ||
2289 | |||
2290 | <para> | ||
2291 | <screen> | ||
2292 | -c Check for read-ability. | ||
2293 | -v0 Make version 0 swap [max 128 Megs]. | ||
2294 | -v1 Make version 1 swap [big!] (default for kernels > 2.1.117). | ||
2295 | BLOCKS Number of block to use (default is entire partition). | ||
2296 | </screen> | ||
2297 | </para> | ||
2298 | </sect1> | ||
2299 | |||
2300 | <sect1 id="mktemp"> | ||
2301 | <title>mktemp</title> | ||
2302 | |||
2303 | <para> | ||
2304 | Usage: mktemp TEMPLATE | ||
2305 | </para> | ||
2306 | |||
2307 | <para> | ||
2308 | Creates a temporary file with its name based on | ||
2309 | TEMPLATE. TEMPLATE is any name with six `Xs' (i.e., | ||
2310 | /tmp/temp.XXXXXX). | ||
2311 | </para> | ||
2312 | |||
2313 | <para> | ||
2314 | Example: | ||
2315 | </para> | ||
2316 | |||
2317 | <para> | ||
2318 | <screen> | ||
2319 | $ mktemp /tmp/temp.XXXXXX | ||
2320 | /tmp/temp.mWiLjM | ||
2321 | $ ls -la /tmp/temp.mWiLjM | ||
2322 | -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM | ||
2323 | </screen> | ||
2324 | </para> | ||
2325 | </sect1> | ||
2326 | |||
2327 | <sect1 id="more"> | ||
2328 | <title>more</title> | ||
2329 | |||
2330 | <para> | ||
2331 | Usage: more [FILE]... | ||
2332 | </para> | ||
2333 | |||
2334 | <para> | ||
2335 | Page through text one screenful at a time. | ||
2336 | </para> | ||
2337 | |||
2338 | <para> | ||
2339 | Example: | ||
2340 | </para> | ||
2341 | |||
2342 | <para> | ||
2343 | <screen> | ||
2344 | $ dmesg | more | ||
2345 | </screen> | ||
2346 | </para> | ||
2347 | </sect1> | ||
2348 | |||
2349 | <sect1 id="mount"> | ||
2350 | <title>mount</title> | ||
2351 | |||
2352 | <para> | ||
2353 | Usage: mount [OPTION]... | ||
2354 | </para> | ||
2355 | |||
2356 | <para> | ||
2357 | <screen> | ||
2358 | or: mount [OPTION]... DEVICE DIRECTORY | ||
2359 | </screen> | ||
2360 | </para> | ||
2361 | |||
2362 | <para> | ||
2363 | Mount filesystems. | ||
2364 | </para> | ||
2365 | |||
2366 | <para> | ||
2367 | Options: | ||
2368 | </para> | ||
2369 | |||
2370 | <para> | ||
2371 | <screen> | ||
2372 | -a Mount all filesystems in /etc/fstab | ||
2373 | -o One of the many filesystem options listed below | ||
2374 | -r Mount the filesystem read-only | ||
2375 | -t TYPE Specify the filesystem type | ||
2376 | -w Mount the filesystem read-write | ||
2377 | </screen> | ||
2378 | </para> | ||
2379 | |||
2380 | <para> | ||
2381 | Options for use with the -o flag: | ||
2382 | </para> | ||
2383 | |||
2384 | <para> | ||
2385 | <screen> | ||
2386 | async/sync Writes are asynchronous / synchronous | ||
2387 | atime/noatime Enable / disable updates to inode access times | ||
2388 | dev/nodev Allow / disallow use of special device files | ||
2389 | exec/noexec Allow / disallow use of executable files | ||
2390 | loop Mount a file via loop device | ||
2391 | suid/nosuid Allow / disallow set-user-id-root programs | ||
2392 | remount Remount a currently mounted filesystem | ||
2393 | ro/rw Mount filesystem read-only / read-write | ||
2394 | </screen> | ||
2395 | </para> | ||
2396 | |||
2397 | <para> | ||
2398 | There are even more flags that are filesystem specific. | ||
2399 | You'll have to see the written documentation for those. | ||
2400 | </para> | ||
2401 | |||
2402 | <para> | ||
2403 | Example: | ||
2404 | </para> | ||
2405 | |||
2406 | <para> | ||
2407 | <screen> | ||
2408 | $ mount | ||
2409 | /dev/hda3 on / type minix (rw) | ||
2410 | proc on /proc type proc (rw) | ||
2411 | devpts on /dev/pts type devpts (rw) | ||
2412 | $ mount /dev/fd0 /mnt -t msdos -o ro | ||
2413 | $ mount /tmp/diskimage /opt -t ext2 -o loop | ||
2414 | </screen> | ||
2415 | </para> | ||
2416 | </sect1> | ||
2417 | |||
2418 | <sect1 id="mt"> | ||
2419 | <title>mt</title> | ||
2420 | |||
2421 | <para> | ||
2422 | Usage: mt [OPTION] OPCODE VALUE | ||
2423 | </para> | ||
2424 | |||
2425 | <para> | ||
2426 | Control magnetic tape drive operation. | ||
2427 | </para> | ||
2428 | |||
2429 | <para> | ||
2430 | Options: | ||
2431 | </para> | ||
2432 | |||
2433 | <para> | ||
2434 | <screen> | ||
2435 | -f DEVICE Control DEVICE | ||
2436 | </screen> | ||
2437 | </para> | ||
2438 | </sect1> | ||
2439 | |||
2440 | <sect1 id="mv"> | ||
2441 | <title>mv</title> | ||
2442 | |||
2443 | <para> | ||
2444 | Usage: mv SOURCE DEST | ||
2445 | </para> | ||
2446 | |||
2447 | <para> | ||
2448 | <screen> | ||
2449 | or: mv SOURCE... DIRECTORY | ||
2450 | </screen> | ||
2451 | </para> | ||
2452 | |||
2453 | <para> | ||
2454 | Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. | ||
2455 | </para> | ||
2456 | |||
2457 | <para> | ||
2458 | Example: | ||
2459 | </para> | ||
2460 | |||
2461 | <para> | ||
2462 | <screen> | ||
2463 | $ mv /tmp/foo /bin/bar | ||
2464 | </screen> | ||
2465 | </para> | ||
2466 | </sect1> | ||
2467 | |||
2468 | <sect1 id="nc"> | ||
2469 | <title>nc</title> | ||
2470 | |||
2471 | <para> | ||
2472 | Usage: nc HOST PORT | ||
2473 | </para> | ||
2474 | |||
2475 | <para> | ||
2476 | or: nc -p PORT -l | ||
2477 | </para> | ||
2478 | |||
2479 | |||
2480 | <para> | ||
2481 | Open a pipe to HOST:PORT or listen for a connection on PORT. | ||
2482 | </para> | ||
2483 | |||
2484 | <para> | ||
2485 | Example: | ||
2486 | </para> | ||
2487 | |||
2488 | <para> | ||
2489 | <screen> | ||
2490 | $ nc foobar.somedomain.com 25 | ||
2491 | 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600 | ||
2492 | help | ||
2493 | 214-Commands supported: | ||
2494 | 214- HELO EHLO MAIL RCPT DATA AUTH | ||
2495 | 214 NOOP QUIT RSET HELP | ||
2496 | quit | ||
2497 | 221 foobar closing connection | ||
2498 | </screen> | ||
2499 | </para> | ||
2500 | </sect1> | ||
2501 | |||
2502 | <sect1 id="nslookup"> | ||
2503 | <title>nslookup</title> | ||
2504 | |||
2505 | <para> | ||
2506 | Usage: nslookup [HOST] | ||
2507 | </para> | ||
2508 | |||
2509 | <para> | ||
2510 | Query the nameserver for the IP address of the given | ||
2511 | HOST. | ||
2512 | </para> | ||
2513 | |||
2514 | <para> | ||
2515 | Example: | ||
2516 | </para> | ||
2517 | |||
2518 | <para> | ||
2519 | <screen> | ||
2520 | $ nslookup localhost | ||
2521 | Server: default | ||
2522 | Address: default | ||
2523 | |||
2524 | Name: debian | ||
2525 | Address: 127.0.0.1 | ||
2526 | </screen> | ||
2527 | </para> | ||
2528 | </sect1> | ||
2529 | |||
2530 | <sect1 id="ping"> | ||
2531 | <title>ping</title> | ||
2532 | |||
2533 | <para> | ||
2534 | Usage: ping [OPTION]... HOST | ||
2535 | </para> | ||
2536 | |||
2537 | <para> | ||
2538 | Send ICMP ECHO_REQUEST packets to HOST. | ||
2539 | </para> | ||
2540 | |||
2541 | <para> | ||
2542 | Options: | ||
2543 | </para> | ||
2544 | |||
2545 | <para> | ||
2546 | <screen> | ||
2547 | -c COUNT Send only COUNT pings | ||
2548 | -s SIZE Send SIZE data bytes in packets (default=56) | ||
2549 | -q Quiet mode, only displays output at start and when finished | ||
2550 | </screen> | ||
2551 | </para> | ||
2552 | |||
2553 | <para> | ||
2554 | Example: | ||
2555 | </para> | ||
2556 | |||
2557 | <para> | ||
2558 | <screen> | ||
2559 | $ ping localhost | ||
2560 | PING slag (127.0.0.1): 56 data bytes | ||
2561 | 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms | ||
2562 | |||
2563 | --- debian ping statistics --- | ||
2564 | 1 packets transmitted, 1 packets received, 0% packet loss | ||
2565 | round-trip min/avg/max = 20.1/20.1/20.1 ms | ||
2566 | </screen> | ||
2567 | </para> | ||
2568 | </sect1> | ||
2569 | |||
2570 | <sect1 id="poweroff"> | ||
2571 | <title>poweroff</title> | ||
2572 | |||
2573 | <para> | ||
2574 | Usage: poweroff | ||
2575 | </para> | ||
2576 | |||
2577 | <para> | ||
2578 | Shut down the system, and request that the kernel turn | ||
2579 | off power upon halting. | ||
2580 | </para> | ||
2581 | </sect1> | ||
2582 | |||
2583 | <sect1 id="printf"> | ||
2584 | <title>printf</title> | ||
2585 | |||
2586 | <para> | ||
2587 | Usage: printf FORMAT [ARGUMENT]... | ||
2588 | </para> | ||
2589 | |||
2590 | <para> | ||
2591 | Format and print the given data in a manner similar to | ||
2592 | the C printf command. | ||
2593 | </para> | ||
2594 | |||
2595 | <para> | ||
2596 | Example: | ||
2597 | </para> | ||
2598 | |||
2599 | <para> | ||
2600 | <screen> | ||
2601 | $ printf "Val=%d\n" 5 | ||
2602 | Val=5 | ||
2603 | </screen> | ||
2604 | </para> | ||
2605 | </sect1> | ||
2606 | |||
2607 | <sect1 id="ps"> | ||
2608 | <title>ps</title> | ||
2609 | |||
2610 | <para> | ||
2611 | Usage: ps | ||
2612 | </para> | ||
2613 | |||
2614 | <para> | ||
2615 | Report process status. This version of ps accepts no | ||
2616 | options. | ||
2617 | </para> | ||
2618 | |||
2619 | <para> | ||
2620 | Options: | ||
2621 | </para> | ||
2622 | |||
2623 | <para> | ||
2624 | <screen> | ||
2625 | </screen> | ||
2626 | </para> | ||
2627 | |||
2628 | <para> | ||
2629 | Example: | ||
2630 | </para> | ||
2631 | |||
2632 | <para> | ||
2633 | <screen> | ||
2634 | $ ps | ||
2635 | PID Uid Gid State Command | ||
2636 | 1 root root S init | ||
2637 | 2 root root S [kflushd] | ||
2638 | 3 root root S [kupdate] | ||
2639 | 4 root root S [kpiod] | ||
2640 | 5 root root S [kswapd] | ||
2641 | 742 andersen andersen S [bash] | ||
2642 | 743 andersen andersen S -bash | ||
2643 | 745 root root S [getty] | ||
2644 | 2990 andersen andersen R ps | ||
2645 | </screen> | ||
2646 | </para> | ||
2647 | </sect1> | ||
2648 | |||
2649 | <sect1 id="pwd"> | ||
2650 | <title>pwd</title> | ||
2651 | |||
2652 | <para> | ||
2653 | Usage: pwd | ||
2654 | </para> | ||
2655 | |||
2656 | <para> | ||
2657 | Print the full filename of the current working | ||
2658 | directory. | ||
2659 | </para> | ||
2660 | |||
2661 | <para> | ||
2662 | Example: | ||
2663 | </para> | ||
2664 | |||
2665 | <para> | ||
2666 | <screen> | ||
2667 | $ pwd | ||
2668 | /root | ||
2669 | </screen> | ||
2670 | </para> | ||
2671 | </sect1> | ||
2672 | |||
2673 | <sect1 id="rdate"> | ||
2674 | <title>rdate</title> | ||
2675 | |||
2676 | <para> | ||
2677 | Usage: rdate [OPTION] HOST | ||
2678 | </para> | ||
2679 | |||
2680 | <para> | ||
2681 | Get and possibly set the system date and time from a remote HOST. | ||
2682 | </para> | ||
2683 | |||
2684 | <para> | ||
2685 | Options: | ||
2686 | </para> | ||
2687 | |||
2688 | <para> | ||
2689 | <screen> | ||
2690 | -s Set the system date and time (default). | ||
2691 | -p Print the date and time. | ||
2692 | </screen> | ||
2693 | </para> | ||
2694 | </sect1> | ||
2695 | |||
2696 | <sect1 id="reboot"> | ||
2697 | <title>reboot</title> | ||
2698 | |||
2699 | <para> | ||
2700 | Usage: reboot | ||
2701 | </para> | ||
2702 | |||
2703 | <para> | ||
2704 | Reboot the system. | ||
2705 | </para> | ||
2706 | </sect1> | ||
2707 | |||
2708 | <sect1 id="renice"> | ||
2709 | <title>renice</title> | ||
2710 | |||
2711 | <para> | ||
2712 | Usage: renice priority pid [pid ...] | ||
2713 | </para> | ||
2714 | |||
2715 | <para> | ||
2716 | Changes priority of running processes. Allowed priorities range | ||
2717 | from 20 (the process runs only when nothing else is running) to 0 | ||
2718 | (default priority) to -20 (almost nothing else ever gets to run). | ||
2719 | </para> | ||
2720 | </sect1> | ||
2721 | |||
2722 | <sect1 id="reset"> | ||
2723 | <title>reset</title> | ||
2724 | |||
2725 | <para> | ||
2726 | Usage: reset | ||
2727 | </para> | ||
2728 | |||
2729 | <para> | ||
2730 | Resets the screen. | ||
2731 | </para> | ||
2732 | </sect1> | ||
2733 | |||
2734 | <sect1 id="rm"> | ||
2735 | <title>rm</title> | ||
2736 | |||
2737 | <para> | ||
2738 | Usage: rm [OPTION]... FILE... | ||
2739 | </para> | ||
2740 | |||
2741 | <para> | ||
2742 | Remove (unlink) the FILE(s). You may use '--' to | ||
2743 | indicate that all following arguments are non-options. | ||
2744 | </para> | ||
2745 | |||
2746 | <para> | ||
2747 | Options: | ||
2748 | </para> | ||
2749 | |||
2750 | <para> | ||
2751 | <screen> | ||
2752 | -i Always prompt before removing each destinations | ||
2753 | -f Remove existing destinations, never prompt | ||
2754 | -r or -R Remove the contents of directories recursively | ||
2755 | </screen> | ||
2756 | </para> | ||
2757 | |||
2758 | <para> | ||
2759 | Example: | ||
2760 | </para> | ||
2761 | |||
2762 | <para> | ||
2763 | <screen> | ||
2764 | $ rm -rf /tmp/foo | ||
2765 | </screen> | ||
2766 | </para> | ||
2767 | </sect1> | ||
2768 | |||
2769 | <sect1 id="rmdir"> | ||
2770 | <title>rmdir</title> | ||
2771 | |||
2772 | <para> | ||
2773 | Usage: rmdir DIRECTORY... | ||
2774 | </para> | ||
2775 | |||
2776 | <para> | ||
2777 | Remove DIRECTORY(s) if they are empty. | ||
2778 | </para> | ||
2779 | |||
2780 | <para> | ||
2781 | Example: | ||
2782 | </para> | ||
2783 | |||
2784 | <para> | ||
2785 | <screen> | ||
2786 | $ rmdir /tmp/foo | ||
2787 | </screen> | ||
2788 | </para> | ||
2789 | </sect1> | ||
2790 | |||
2791 | <sect1 id="rmmod"> | ||
2792 | <title>rmmod</title> | ||
2793 | |||
2794 | <para> | ||
2795 | Usage: rmmod [OPTION]... [MODULE]... | ||
2796 | </para> | ||
2797 | |||
2798 | <para> | ||
2799 | Unload MODULE(s) from the kernel. | ||
2800 | </para> | ||
2801 | |||
2802 | <para> | ||
2803 | Options: | ||
2804 | </para> | ||
2805 | |||
2806 | <para> | ||
2807 | <screen> | ||
2808 | -a Remove all unused modules (recursively) | ||
2809 | </screen> | ||
2810 | </para> | ||
2811 | |||
2812 | <para> | ||
2813 | Example: | ||
2814 | </para> | ||
2815 | |||
2816 | <para> | ||
2817 | <screen> | ||
2818 | $ rmmod tulip | ||
2819 | </screen> | ||
2820 | </para> | ||
2821 | </sect1> | ||
2822 | |||
2823 | <sect1 id="run-parts"> | ||
2824 | <title>run-parts</title> | ||
2825 | |||
2826 | <para> | ||
2827 | Usage: run-parts [-t] [-a ARG] [-u MASK] DIRECTORY | ||
2828 | </para> | ||
2829 | |||
2830 | <para> | ||
2831 | Run a bunch of scripts in a directory. | ||
2832 | </para> | ||
2833 | |||
2834 | <para> | ||
2835 | Options: | ||
2836 | </para> | ||
2837 | |||
2838 | <para> | ||
2839 | <screen> | ||
2840 | -t Test only. It only print the file to be executed, | ||
2841 | without execute them. | ||
2842 | -a ARG Pass ARG as an a argument to the programs executed. | ||
2843 | -u MASK Set the umask to MASK before executing the programs. | ||
2844 | </screen> | ||
2845 | </para> | ||
2846 | </sect1> | ||
2847 | |||
2848 | |||
2849 | |||
2850 | <sect1 id="sed"> | ||
2851 | <title>sed</title> | ||
2852 | |||
2853 | <para> | ||
2854 | Usage: sed [OPTION]... SCRIPT [FILE]... | ||
2855 | </para> | ||
2856 | |||
2857 | <para> | ||
2858 | Allowed sed scripts come in the following form: | ||
2859 | </para> | ||
2860 | |||
2861 | <para> | ||
2862 | <screen> | ||
2863 | ADDR [!] COMMAND | ||
2864 | </screen> | ||
2865 | </para> | ||
2866 | |||
2867 | <para> | ||
2868 | ADDR can be: | ||
2869 | </para> | ||
2870 | |||
2871 | <para> | ||
2872 | <screen> | ||
2873 | NUMBER Match specified line number | ||
2874 | $ Match last line | ||
2875 | /REGEXP/ Match specified regexp | ||
2876 | </screen> | ||
2877 | </para> | ||
2878 | |||
2879 | <para> | ||
2880 | ! inverts the meaning of the match | ||
2881 | </para> | ||
2882 | |||
2883 | <para> | ||
2884 | COMMAND can be: | ||
2885 | </para> | ||
2886 | |||
2887 | <para> | ||
2888 | <screen> | ||
2889 | s/regexp/replacement/[igp] | ||
2890 | which attempt to match regexp against the pattern space | ||
2891 | and if successful replaces the matched portion with replacement. | ||
2892 | aTEXT | ||
2893 | which appends TEXT after the pattern space | ||
2894 | </screen> | ||
2895 | </para> | ||
2896 | |||
2897 | <para> | ||
2898 | This version of sed matches full regular expressions. | ||
2899 | </para> | ||
2900 | |||
2901 | <para> | ||
2902 | Options: | ||
2903 | </para> | ||
2904 | |||
2905 | <para> | ||
2906 | <screen> | ||
2907 | -e Add the script to the commands to be executed | ||
2908 | -n Suppress automatic printing of pattern space | ||
2909 | </screen> | ||
2910 | </para> | ||
2911 | |||
2912 | <para> | ||
2913 | Example: | ||
2914 | </para> | ||
2915 | |||
2916 | <para> | ||
2917 | <screen> | ||
2918 | $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g' | ||
2919 | bar | ||
2920 | </screen> | ||
2921 | </para> | ||
2922 | </sect1> | ||
2923 | |||
2924 | <sect1 id="setkeycodes"> | ||
2925 | <title>setkeycodes</title> | ||
2926 | |||
2927 | <para> | ||
2928 | Usage: setkeycodes SCANCODE KEYCODE ... | ||
2929 | </para> | ||
2930 | |||
2931 | <para> | ||
2932 | Set entries into the kernel's scancode-to-keycode map, | ||
2933 | allowing unusual keyboards to generate usable keycodes. | ||
2934 | </para> | ||
2935 | |||
2936 | <para> | ||
2937 | SCANCODE may be either xx or e0xx (hexadecimal), and | ||
2938 | KEYCODE is given in decimal. | ||
2939 | </para> | ||
2940 | |||
2941 | <para> | ||
2942 | Example: | ||
2943 | </para> | ||
2944 | |||
2945 | <para> | ||
2946 | <screen> | ||
2947 | $ setkeycodes e030 127 | ||
2948 | </screen> | ||
2949 | </para> | ||
2950 | </sect1> | ||
2951 | |||
2952 | |||
2953 | <sect1 id="sh"> | ||
2954 | <title>sh</title> | ||
2955 | |||
2956 | <para> | ||
2957 | Usage: sh | ||
2958 | </para> | ||
2959 | |||
2960 | <para> | ||
2961 | lash -- the BusyBox LAme SHell (command interpreter) | ||
2962 | </para> | ||
2963 | |||
2964 | <para> | ||
2965 | This command does not yet have proper documentation. | ||
2966 | </para> | ||
2967 | |||
2968 | <para> | ||
2969 | Use lash just as you would use any other shell. It | ||
2970 | properly handles pipes, redirects, job control, can be | ||
2971 | used as the shell for scripts (#!/bin/sh), and has a | ||
2972 | sufficient set of builtins to do what is needed. It does | ||
2973 | not (yet) support Bourne Shell syntax. If you need | ||
2974 | things like ``if-then-else'', ``while'', and such, use | ||
2975 | ash or bash. If you just need a very simple and | ||
2976 | extremely small shell, this will do the job. | ||
2977 | </para> | ||
2978 | </sect1> | ||
2979 | |||
2980 | <sect1 id="sleep"> | ||
2981 | <title>sleep</title> | ||
2982 | |||
2983 | <para> | ||
2984 | Usage: sleep N | ||
2985 | </para> | ||
2986 | |||
2987 | <para> | ||
2988 | Pause for N seconds. | ||
2989 | </para> | ||
2990 | |||
2991 | <para> | ||
2992 | Example: | ||
2993 | </para> | ||
2994 | |||
2995 | <para> | ||
2996 | <screen> | ||
2997 | $ sleep 2 | ||
2998 | [2 second delay results] | ||
2999 | </screen> | ||
3000 | </para> | ||
3001 | </sect1> | ||
3002 | |||
3003 | <sect1 id="sort"> | ||
3004 | <title>sort</title> | ||
3005 | |||
3006 | <para> | ||
3007 | Usage: sort [OPTION]... [FILE]... | ||
3008 | </para> | ||
3009 | |||
3010 | <para> | ||
3011 | Sort lines of text in FILE(s). | ||
3012 | </para> | ||
3013 | |||
3014 | <para> | ||
3015 | Options: | ||
3016 | </para> | ||
3017 | |||
3018 | <para> | ||
3019 | <screen> | ||
3020 | -n Compare numerically | ||
3021 | -r Reverse after sorting | ||
3022 | </screen> | ||
3023 | </para> | ||
3024 | |||
3025 | <para> | ||
3026 | Example: | ||
3027 | </para> | ||
3028 | |||
3029 | <para> | ||
3030 | <screen> | ||
3031 | $ echo -e "e\nf\nb\nd\nc\na" | sort | ||
3032 | a | ||
3033 | b | ||
3034 | c | ||
3035 | d | ||
3036 | e | ||
3037 | f | ||
3038 | </screen> | ||
3039 | </para> | ||
3040 | </sect1> | ||
3041 | |||
3042 | <sect1 id="swapoff"> | ||
3043 | <title>swapoff</title> | ||
3044 | |||
3045 | <para> | ||
3046 | Usage: swapoff [OPTION] [DEVICE] | ||
3047 | </para> | ||
3048 | |||
3049 | <para> | ||
3050 | Stop swapping virtual memory pages on DEVICE. | ||
3051 | </para> | ||
3052 | |||
3053 | <para> | ||
3054 | Options: | ||
3055 | </para> | ||
3056 | |||
3057 | <para> | ||
3058 | <screen> | ||
3059 | -a Stop swapping on all swap devices | ||
3060 | </screen> | ||
3061 | </para> | ||
3062 | </sect1> | ||
3063 | |||
3064 | <sect1 id="swapon"> | ||
3065 | <title>swapon</title> | ||
3066 | |||
3067 | <para> | ||
3068 | Usage: swapon [OPTION] [DEVICE] | ||
3069 | </para> | ||
3070 | |||
3071 | <para> | ||
3072 | Start swapping virtual memory pages on the given device. | ||
3073 | </para> | ||
3074 | |||
3075 | <para> | ||
3076 | Options: | ||
3077 | </para> | ||
3078 | |||
3079 | <para> | ||
3080 | <screen> | ||
3081 | -a Start swapping on all swap devices | ||
3082 | </screen> | ||
3083 | </para> | ||
3084 | </sect1> | ||
3085 | |||
3086 | <sect1 id="sync"> | ||
3087 | <title>sync</title> | ||
3088 | |||
3089 | <para> | ||
3090 | Usage: sync | ||
3091 | </para> | ||
3092 | |||
3093 | <para> | ||
3094 | Write all buffered filesystem blocks to disk. | ||
3095 | </para> | ||
3096 | </sect1> | ||
3097 | |||
3098 | <sect1 id="syslogd"> | ||
3099 | <title>syslogd</title> | ||
3100 | |||
3101 | <para> | ||
3102 | Usage: syslogd [OPTION]... | ||
3103 | </para> | ||
3104 | |||
3105 | <para> | ||
3106 | Linux system and kernel (provides klogd) logging | ||
3107 | utility. Note that this version of syslogd/klogd ignores | ||
3108 | /etc/syslog.conf. | ||
3109 | </para> | ||
3110 | |||
3111 | <para> | ||
3112 | Options: | ||
3113 | </para> | ||
3114 | |||
3115 | <para> | ||
3116 | <screen> | ||
3117 | -m NUM Interval between MARK lines (default=20min, 0=off) | ||
3118 | -n Run as a foreground process | ||
3119 | -K Do not start up the klogd process | ||
3120 | -O FILE Use an alternate log file (default=/var/log/messages) | ||
3121 | -R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP) | ||
3122 | -L Log locally as well as network logging (default is network only) | ||
3123 | -C [size(KiB)] Log to a circular buffer. Read this buffer using 'logread' | ||
3124 | </screen> | ||
3125 | </para> | ||
3126 | |||
3127 | <para> | ||
3128 | Example: | ||
3129 | </para> | ||
3130 | |||
3131 | <para> | ||
3132 | <screen> | ||
3133 | $ syslogd -R masterlog:514 | ||
3134 | $ syslogd -R 192.168.1.1:601 | ||
3135 | </screen> | ||
3136 | </para> | ||
3137 | </sect1> | ||
3138 | |||
3139 | <sect1 id="tail"> | ||
3140 | <title>tail</title> | ||
3141 | |||
3142 | <para> | ||
3143 | Usage: tail [OPTION] [FILE]... | ||
3144 | </para> | ||
3145 | |||
3146 | <para> | ||
3147 | Print last 10 lines of each FILE to standard output. | ||
3148 | With more than one FILE, precede each with a header | ||
3149 | giving the file name. With no FILE, or when FILE is -, | ||
3150 | read stdin. | ||
3151 | </para> | ||
3152 | |||
3153 | <para> | ||
3154 | Options: | ||
3155 | </para> | ||
3156 | |||
3157 | <para> | ||
3158 | <screen> | ||
3159 | -n NUM Print last NUM lines instead of last 10 | ||
3160 | -f Output data as the file grows. This version | ||
3161 | of 'tail -f' supports only one file at a time. | ||
3162 | </screen> | ||
3163 | </para> | ||
3164 | |||
3165 | <para> | ||
3166 | Example: | ||
3167 | </para> | ||
3168 | |||
3169 | <para> | ||
3170 | <screen> | ||
3171 | $ tail -n 1 /etc/resolv.conf | ||
3172 | nameserver 10.0.0.1 | ||
3173 | </screen> | ||
3174 | </para> | ||
3175 | </sect1> | ||
3176 | |||
3177 | <sect1 id="tar"> | ||
3178 | <title>tar</title> | ||
3179 | |||
3180 | <para> | ||
3181 | Usage: tar [MODE] [OPTION] [FILE]... | ||
3182 | </para> | ||
3183 | |||
3184 | <para> | ||
3185 | |||
3186 | </para> | ||
3187 | |||
3188 | <para> | ||
3189 | MODE may be chosen from | ||
3190 | </para> | ||
3191 | |||
3192 | <para> | ||
3193 | <screen> | ||
3194 | c Create | ||
3195 | x Extract | ||
3196 | t List | ||
3197 | </screen> | ||
3198 | </para> | ||
3199 | |||
3200 | <para> | ||
3201 | Options: | ||
3202 | </para> | ||
3203 | |||
3204 | <para> | ||
3205 | <screen> | ||
3206 | f FILE Use FILE for tarfile (or stdin if '-') | ||
3207 | O Extract to stdout | ||
3208 | exclude FILE File to exclude | ||
3209 | v List files processed | ||
3210 | </screen> | ||
3211 | </para> | ||
3212 | |||
3213 | <para> | ||
3214 | Example: | ||
3215 | </para> | ||
3216 | |||
3217 | <para> | ||
3218 | <screen> | ||
3219 | $ zcat /tmp/tarball.tar.gz | tar -xf - | ||
3220 | $ tar -cf /tmp/tarball.tar /usr/local | ||
3221 | </screen> | ||
3222 | </para> | ||
3223 | </sect1> | ||
3224 | |||
3225 | <sect1 id="tee"> | ||
3226 | <title>tee</title> | ||
3227 | |||
3228 | <para> | ||
3229 | Usage: tee [OPTION]... [FILE]... | ||
3230 | </para> | ||
3231 | |||
3232 | <para> | ||
3233 | Copy stdin to FILE(s), and also to stdout. | ||
3234 | </para> | ||
3235 | |||
3236 | <para> | ||
3237 | Options: | ||
3238 | </para> | ||
3239 | |||
3240 | <para> | ||
3241 | <screen> | ||
3242 | -a Append to the given FILEs, do not overwrite | ||
3243 | </screen> | ||
3244 | </para> | ||
3245 | |||
3246 | <para> | ||
3247 | Example: | ||
3248 | </para> | ||
3249 | |||
3250 | <para> | ||
3251 | <screen> | ||
3252 | $ echo "Hello" | tee /tmp/foo | ||
3253 | Hello | ||
3254 | $ cat /tmp/foo | ||
3255 | Hello | ||
3256 | </screen> | ||
3257 | </para> | ||
3258 | </sect1> | ||
3259 | |||
3260 | <sect1 id="telnet"> | ||
3261 | <title>telnet</title> | ||
3262 | |||
3263 | <para> | ||
3264 | Usage: telnet HOST [PORT] | ||
3265 | </para> | ||
3266 | |||
3267 | <para> | ||
3268 | Establish interactive communication with another | ||
3269 | computer over a network using the TELNET protocol. | ||
3270 | </para> | ||
3271 | </sect1> | ||
3272 | |||
3273 | <sect1 id="test"> | ||
3274 | <title>test, [</title> | ||
3275 | |||
3276 | <para> | ||
3277 | Usage: test EXPRESSION | ||
3278 | </para> | ||
3279 | |||
3280 | <para> | ||
3281 | or: [ EXPRESSION ] | ||
3282 | </para> | ||
3283 | |||
3284 | <para> | ||
3285 | Check file types and compare values returning an exit | ||
3286 | code determined by the value of EXPRESSION. | ||
3287 | </para> | ||
3288 | |||
3289 | <para> | ||
3290 | Example: | ||
3291 | </para> | ||
3292 | |||
3293 | <para> | ||
3294 | <screen> | ||
3295 | $ test 1 -eq 2 | ||
3296 | $ echo $? | ||
3297 | 1 | ||
3298 | $ test 1 -eq 1 | ||
3299 | $ echo $? | ||
3300 | 0 | ||
3301 | $ [ -d /etc ] | ||
3302 | $ echo $? | ||
3303 | 0 | ||
3304 | $ [ -d /junk ] | ||
3305 | $ echo $? | ||
3306 | 1 | ||
3307 | </screen> | ||
3308 | </para> | ||
3309 | </sect1> | ||
3310 | |||
3311 | <sect1 id="touch"> | ||
3312 | <title>touch</title> | ||
3313 | |||
3314 | <para> | ||
3315 | Usage: touch [OPTION]... FILE... | ||
3316 | </para> | ||
3317 | |||
3318 | <para> | ||
3319 | Update the last-modified date on (or create) FILE(s). | ||
3320 | </para> | ||
3321 | |||
3322 | <para> | ||
3323 | Options: | ||
3324 | </para> | ||
3325 | |||
3326 | <para> | ||
3327 | <screen> | ||
3328 | -c Do not create files | ||
3329 | </screen> | ||
3330 | </para> | ||
3331 | |||
3332 | <para> | ||
3333 | Example: | ||
3334 | </para> | ||
3335 | |||
3336 | <para> | ||
3337 | <screen> | ||
3338 | $ ls -l /tmp/foo | ||
3339 | /bin/ls: /tmp/foo: No such file or directory | ||
3340 | $ touch /tmp/foo | ||
3341 | $ ls -l /tmp/foo | ||
3342 | -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo | ||
3343 | </screen> | ||
3344 | </para> | ||
3345 | </sect1> | ||
3346 | |||
3347 | <sect1 id="tr"> | ||
3348 | <title>tr</title> | ||
3349 | |||
3350 | <para> | ||
3351 | Usage: tr [OPTION]... STRING1 [STRING2] | ||
3352 | </para> | ||
3353 | |||
3354 | <para> | ||
3355 | Translate, squeeze, and/or delete characters from stdin, | ||
3356 | writing to stdout. | ||
3357 | </para> | ||
3358 | |||
3359 | <para> | ||
3360 | Options: | ||
3361 | </para> | ||
3362 | |||
3363 | <para> | ||
3364 | <screen> | ||
3365 | -c Take complement of STRING1 | ||
3366 | -d Delete input characters coded STRING1 | ||
3367 | -s Squeeze multiple output characters of STRING2 into one character | ||
3368 | </screen> | ||
3369 | </para> | ||
3370 | |||
3371 | <para> | ||
3372 | Example: | ||
3373 | </para> | ||
3374 | |||
3375 | <para> | ||
3376 | <screen> | ||
3377 | $ echo "gdkkn vnqkc" | tr [a-y] [b-z] | ||
3378 | hello world | ||
3379 | </screen> | ||
3380 | </para> | ||
3381 | </sect1> | ||
3382 | |||
3383 | <sect1 id="true"> | ||
3384 | <title>true</title> | ||
3385 | |||
3386 | <para> | ||
3387 | Usage: true | ||
3388 | </para> | ||
3389 | |||
3390 | <para> | ||
3391 | Return an exit code of TRUE (1). | ||
3392 | </para> | ||
3393 | |||
3394 | <para> | ||
3395 | Example: | ||
3396 | </para> | ||
3397 | |||
3398 | <para> | ||
3399 | <screen> | ||
3400 | $ true | ||
3401 | $ echo $? | ||
3402 | 0 | ||
3403 | </screen> | ||
3404 | </para> | ||
3405 | </sect1> | ||
3406 | |||
3407 | <sect1 id="tty"> | ||
3408 | <title>tty</title> | ||
3409 | |||
3410 | <para> | ||
3411 | Usage: tty | ||
3412 | </para> | ||
3413 | |||
3414 | <para> | ||
3415 | Print the file name of the terminal connected to stdin. | ||
3416 | </para> | ||
3417 | |||
3418 | <para> | ||
3419 | Options: | ||
3420 | </para> | ||
3421 | |||
3422 | <para> | ||
3423 | <screen> | ||
3424 | -s Print nothing, only return an exit status | ||
3425 | </screen> | ||
3426 | </para> | ||
3427 | |||
3428 | <para> | ||
3429 | Example: | ||
3430 | </para> | ||
3431 | |||
3432 | <para> | ||
3433 | <screen> | ||
3434 | $ tty | ||
3435 | /dev/tty2 | ||
3436 | </screen> | ||
3437 | </para> | ||
3438 | </sect1> | ||
3439 | |||
3440 | <sect1 id="umount"> | ||
3441 | <title>umount</title> | ||
3442 | |||
3443 | <para> | ||
3444 | Usage: umount [OPTION]... DEVICE|DIRECTORY [...] | ||
3445 | </para> | ||
3446 | |||
3447 | <para> | ||
3448 | |||
3449 | </para> | ||
3450 | |||
3451 | <para> | ||
3452 | Options: | ||
3453 | </para> | ||
3454 | |||
3455 | <para> | ||
3456 | <screen> | ||
3457 | -a Unmount all file systems | ||
3458 | -r Try to remount devices as read-only if mount is busy | ||
3459 | -f Force filesystem umount (i.e., unreachable NFS server) | ||
3460 | -l Do not free loop device (if a loop device has been used) | ||
3461 | </screen> | ||
3462 | </para> | ||
3463 | |||
3464 | <para> | ||
3465 | Example: | ||
3466 | </para> | ||
3467 | |||
3468 | <para> | ||
3469 | <screen> | ||
3470 | $ umount /dev/hdc1 | ||
3471 | </screen> | ||
3472 | </para> | ||
3473 | </sect1> | ||
3474 | |||
3475 | <sect1 id="uname"> | ||
3476 | <title>uname</title> | ||
3477 | |||
3478 | <para> | ||
3479 | Usage: uname [OPTION]... | ||
3480 | </para> | ||
3481 | |||
3482 | <para> | ||
3483 | Print certain system information. With no OPTION, same | ||
3484 | as -s. | ||
3485 | </para> | ||
3486 | |||
3487 | <para> | ||
3488 | Options: | ||
3489 | </para> | ||
3490 | |||
3491 | <para> | ||
3492 | <screen> | ||
3493 | -a Print all information | ||
3494 | -m Print the machine (hardware) type | ||
3495 | -n Print the machine's network node hostname | ||
3496 | -r Print the operating system release | ||
3497 | -s Print the operating system name | ||
3498 | -p Print the host processor type | ||
3499 | -v Print the operating system version | ||
3500 | </screen> | ||
3501 | </para> | ||
3502 | |||
3503 | <para> | ||
3504 | Example: | ||
3505 | </para> | ||
3506 | |||
3507 | <para> | ||
3508 | <screen> | ||
3509 | $ uname -a | ||
3510 | Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown | ||
3511 | </screen> | ||
3512 | </para> | ||
3513 | </sect1> | ||
3514 | |||
3515 | <sect1 id="uniq"> | ||
3516 | <title>uniq</title> | ||
3517 | |||
3518 | <para> | ||
3519 | Usage: uniq [INPUT [OUTPUT]] | ||
3520 | </para> | ||
3521 | |||
3522 | <para> | ||
3523 | Discard all but one of successive identical lines from | ||
3524 | INPUT (or stdin), writing to OUTPUT (or stdout). | ||
3525 | </para> | ||
3526 | |||
3527 | <para> | ||
3528 | Options: | ||
3529 | </para> | ||
3530 | |||
3531 | <para> | ||
3532 | <screen> | ||
3533 | -c prefix lines by the number of occurrences | ||
3534 | -d only print duplicate lines | ||
3535 | -u only print unique lines | ||
3536 | </screen> | ||
3537 | </para> | ||
3538 | |||
3539 | <para> | ||
3540 | Example: | ||
3541 | </para> | ||
3542 | |||
3543 | <para> | ||
3544 | <screen> | ||
3545 | $ echo -e "a\na\nb\nc\nc\na" | sort | uniq | ||
3546 | a | ||
3547 | b | ||
3548 | c | ||
3549 | </screen> | ||
3550 | </para> | ||
3551 | </sect1> | ||
3552 | |||
3553 | <sect1 id="unix2dos"> | ||
3554 | <title>unix2dos</title> | ||
3555 | |||
3556 | <para> | ||
3557 | Usage: unix2dos < unixfile > dosfile | ||
3558 | </para> | ||
3559 | |||
3560 | <para> | ||
3561 | Converts a text file from unix format to dos format. | ||
3562 | </para> | ||
3563 | |||
3564 | </sect1> | ||
3565 | |||
3566 | <sect1 id="unrpm"> | ||
3567 | <title>unrpm</title> | ||
3568 | |||
3569 | <para> | ||
3570 | Usage: unrpm < package.rpm | gzip -d | cpio -idmuv | ||
3571 | </para> | ||
3572 | |||
3573 | <para> | ||
3574 | Extracts an rpm archive. | ||
3575 | </para> | ||
3576 | |||
3577 | </sect1> | ||
3578 | |||
3579 | <sect1 id="update"> | ||
3580 | <title>update</title> | ||
3581 | |||
3582 | <para> | ||
3583 | Usage: update [OPTION]... | ||
3584 | </para> | ||
3585 | |||
3586 | <para> | ||
3587 | Periodically flush filesystem buffers. | ||
3588 | </para> | ||
3589 | |||
3590 | <para> | ||
3591 | Options: | ||
3592 | </para> | ||
3593 | |||
3594 | <para> | ||
3595 | <screen> | ||
3596 | -S Force use of sync(2) instead of flushing | ||
3597 | -s SECS Call sync this often (default 30) | ||
3598 | -f SECS Flush some buffers this often (default 5) | ||
3599 | </screen> | ||
3600 | </para> | ||
3601 | </sect1> | ||
3602 | |||
3603 | <sect1 id="uptime"> | ||
3604 | <title>uptime</title> | ||
3605 | |||
3606 | <para> | ||
3607 | Usage: uptime | ||
3608 | </para> | ||
3609 | |||
3610 | <para> | ||
3611 | Display how long the system has been running since boot. | ||
3612 | </para> | ||
3613 | |||
3614 | <para> | ||
3615 | Example: | ||
3616 | </para> | ||
3617 | |||
3618 | <para> | ||
3619 | <screen> | ||
3620 | $ uptime | ||
3621 | 1:55pm up 2:30, load average: 0.09, 0.04, 0.00 | ||
3622 | </screen> | ||
3623 | </para> | ||
3624 | </sect1> | ||
3625 | |||
3626 | <sect1 id="usleep"> | ||
3627 | <title>usleep</title> | ||
3628 | |||
3629 | <para> | ||
3630 | Usage: usleep N | ||
3631 | </para> | ||
3632 | |||
3633 | <para> | ||
3634 | Pause for N microseconds. | ||
3635 | </para> | ||
3636 | |||
3637 | <para> | ||
3638 | Example: | ||
3639 | </para> | ||
3640 | |||
3641 | <para> | ||
3642 | <screen> | ||
3643 | $ usleep 1000000 | ||
3644 | [pauses for 1 second] | ||
3645 | </screen> | ||
3646 | </para> | ||
3647 | </sect1> | ||
3648 | |||
3649 | <sect1 id="uudecode"> | ||
3650 | <title>uudecode</title> | ||
3651 | |||
3652 | <para> | ||
3653 | Usage: uudecode [OPTION] [FILE] | ||
3654 | </para> | ||
3655 | |||
3656 | <para> | ||
3657 | Uudecode a uuencoded file. | ||
3658 | </para> | ||
3659 | |||
3660 | <para> | ||
3661 | Options: | ||
3662 | </para> | ||
3663 | |||
3664 | <para> | ||
3665 | <screen> | ||
3666 | -o FILE Direct output to FILE | ||
3667 | </screen> | ||
3668 | </para> | ||
3669 | |||
3670 | <para> | ||
3671 | Example: | ||
3672 | </para> | ||
3673 | |||
3674 | <para> | ||
3675 | <screen> | ||
3676 | $ uudecode -o busybox busybox.uu | ||
3677 | $ ls -l busybox | ||
3678 | -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox | ||
3679 | </screen> | ||
3680 | </para> | ||
3681 | </sect1> | ||
3682 | |||
3683 | <sect1 id="uuencode"> | ||
3684 | <title>uuencode</title> | ||
3685 | |||
3686 | <para> | ||
3687 | Usage: uuencode [OPTION] [INFILE] OUTFILE | ||
3688 | </para> | ||
3689 | |||
3690 | <para> | ||
3691 | Uuencode a file. | ||
3692 | </para> | ||
3693 | |||
3694 | <para> | ||
3695 | Options: | ||
3696 | </para> | ||
3697 | |||
3698 | <para> | ||
3699 | <screen> | ||
3700 | -m Use base64 encoding as of RFC1521 | ||
3701 | </screen> | ||
3702 | </para> | ||
3703 | |||
3704 | <para> | ||
3705 | Example: | ||
3706 | </para> | ||
3707 | |||
3708 | <para> | ||
3709 | <screen> | ||
3710 | $ uuencode busybox busybox | ||
3711 | begin 755 busybox | ||
3712 | M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``& | ||
3713 | ..... | ||
3714 | $ uudecode busybox busybox > busybox.uu | ||
3715 | $ | ||
3716 | </screen> | ||
3717 | </para> | ||
3718 | </sect1> | ||
3719 | |||
3720 | <sect1 id="watchdog"> | ||
3721 | <title>watchdog</title> | ||
3722 | |||
3723 | <para> | ||
3724 | Usage: watchdog device | ||
3725 | </para> | ||
3726 | |||
3727 | <para> | ||
3728 | Periodically writes to watchdog device B<device>. | ||
3729 | </para> | ||
3730 | </sect1> | ||
3731 | |||
3732 | <sect1 id="wc"> | ||
3733 | <title>wc</title> | ||
3734 | |||
3735 | <para> | ||
3736 | Usage: wc [OPTION]... [FILE]... | ||
3737 | </para> | ||
3738 | |||
3739 | <para> | ||
3740 | Print line, word, and byte counts for each FILE, and a | ||
3741 | total line if more than one FILE is specified. With no | ||
3742 | FILE, read stdin. | ||
3743 | </para> | ||
3744 | |||
3745 | <para> | ||
3746 | Options: | ||
3747 | </para> | ||
3748 | |||
3749 | <para> | ||
3750 | <screen> | ||
3751 | -c Print the byte counts | ||
3752 | -l Print the newline counts | ||
3753 | -L Print the length of the longest line | ||
3754 | -w Print the word counts | ||
3755 | </screen> | ||
3756 | </para> | ||
3757 | |||
3758 | <para> | ||
3759 | Example: | ||
3760 | </para> | ||
3761 | |||
3762 | <para> | ||
3763 | <screen> | ||
3764 | $ wc /etc/passwd | ||
3765 | 31 46 1365 /etc/passwd | ||
3766 | </screen> | ||
3767 | </para> | ||
3768 | </sect1> | ||
3769 | |||
3770 | <sect1 id="which"> | ||
3771 | <title>which</title> | ||
3772 | |||
3773 | <para> | ||
3774 | Usage: which [COMMAND]... | ||
3775 | </para> | ||
3776 | |||
3777 | <para> | ||
3778 | Locate COMMAND(s). | ||
3779 | </para> | ||
3780 | |||
3781 | <para> | ||
3782 | Example: | ||
3783 | </para> | ||
3784 | |||
3785 | <para> | ||
3786 | <screen> | ||
3787 | $ which login | ||
3788 | /bin/login | ||
3789 | </screen> | ||
3790 | </para> | ||
3791 | </sect1> | ||
3792 | |||
3793 | <sect1 id="whoami"> | ||
3794 | <title>whoami</title> | ||
3795 | |||
3796 | <para> | ||
3797 | Usage: whoami | ||
3798 | </para> | ||
3799 | |||
3800 | <para> | ||
3801 | Print the user name associated with the current | ||
3802 | effective user id. | ||
3803 | </para> | ||
3804 | |||
3805 | <para> | ||
3806 | Example: | ||
3807 | </para> | ||
3808 | |||
3809 | <para> | ||
3810 | <screen> | ||
3811 | $ whoami | ||
3812 | andersen | ||
3813 | </screen> | ||
3814 | </para> | ||
3815 | </sect1> | ||
3816 | |||
3817 | <sect1 id="xargs"> | ||
3818 | <title>xargs</title> | ||
3819 | |||
3820 | <para> | ||
3821 | Usage: xargs [OPTIONS] [COMMAND] [ARGS...] | ||
3822 | </para> | ||
3823 | |||
3824 | <para> | ||
3825 | Executes COMMAND on every item given by standard input. | ||
3826 | </para> | ||
3827 | |||
3828 | <para> | ||
3829 | Options: | ||
3830 | </para> | ||
3831 | |||
3832 | <para> | ||
3833 | <screen> | ||
3834 | -t Print the command just before it is run | ||
3835 | </screen> | ||
3836 | </para> | ||
3837 | |||
3838 | |||
3839 | <para> | ||
3840 | Example: | ||
3841 | </para> | ||
3842 | |||
3843 | <para> | ||
3844 | <screen> | ||
3845 | $ ls | xargs gzip | ||
3846 | $ find . -name '*.c' -print | xargs rm | ||
3847 | </screen> | ||
3848 | </para> | ||
3849 | </sect1> | ||
3850 | |||
3851 | <sect1 id="yes"> | ||
3852 | <title>yes</title> | ||
3853 | |||
3854 | <para> | ||
3855 | Usage: yes [STRING]... | ||
3856 | </para> | ||
3857 | |||
3858 | <para> | ||
3859 | Repeatedly output a line with all specified STRING(s), | ||
3860 | or `y'. | ||
3861 | </para> | ||
3862 | </sect1> | ||
3863 | |||
3864 | <sect1 id="zcat"> | ||
3865 | <title>zcat</title> | ||
3866 | |||
3867 | <para> | ||
3868 | Usage: zcat [OPTION]... FILE | ||
3869 | </para> | ||
3870 | |||
3871 | <para> | ||
3872 | Uncompress FILE (or stdin if FILE is '-') to stdout. | ||
3873 | </para> | ||
3874 | |||
3875 | <para> | ||
3876 | Options: | ||
3877 | </para> | ||
3878 | |||
3879 | <para> | ||
3880 | <screen> | ||
3881 | -t Test compressed file integrity | ||
3882 | </screen> | ||
3883 | </para> | ||
3884 | |||
3885 | <para> | ||
3886 | Example: | ||
3887 | </para> | ||
3888 | |||
3889 | <para> | ||
3890 | <screen> | ||
3891 | </screen> | ||
3892 | </para> | ||
3893 | </sect1> | ||
3894 | </chapter> | ||
3895 | |||
3896 | <chapter id="LIBC-NSS"> | ||
3897 | <title>LIBC NSS</title> | ||
3898 | |||
3899 | <para> | ||
3900 | GNU Libc uses the Name Service Switch (NSS) to configure the | ||
3901 | behavior of the C library for the local environment, and to | ||
3902 | configure how it reads system data, such as passwords and group | ||
3903 | information. BusyBox has made it Policy that it will never use | ||
3904 | NSS, and will never use libc calls that make use of NSS. This | ||
3905 | allows you to run an embedded system without the need for | ||
3906 | installing an /etc/nsswitch.conf file and without /lib/libnss_* | ||
3907 | libraries installed. | ||
3908 | </para> | ||
3909 | |||
3910 | <para> | ||
3911 | If you are using a system that is using a remote LDAP server for | ||
3912 | authentication via GNU libc NSS, and you want to use BusyBox, | ||
3913 | then you will need to adjust the BusyBox source. Chances are | ||
3914 | though, that if you have enough space to install of that stuff | ||
3915 | on your system, then you probably want the full GNU utilities. | ||
3916 | </para> | ||
3917 | </chapter> | ||
3918 | |||
3919 | <chapter id="SEE-ALSO"> | ||
3920 | <title>SEE ALSO</title> | ||
3921 | |||
3922 | <para> | ||
3923 | <literal>textutils(1),</literal> | ||
3924 | <literal>shellutils(1),</literal> | ||
3925 | etc... | ||
3926 | </para> | ||
3927 | </chapter> | ||
3928 | |||
3929 | <chapter id="MAINTAINER"> | ||
3930 | <title>MAINTAINER</title> | ||
3931 | |||
3932 | <para> | ||
3933 | Erik Andersen <andersen@codepoet.org> | ||
3934 | </para> | ||
3935 | </chapter> | ||
3936 | |||
3937 | <chapter id="AUTHORS"> | ||
3938 | <title>AUTHORS</title> | ||
3939 | |||
3940 | <para> | ||
3941 | The following people have made significant contributions to | ||
3942 | BusyBox -- whether they know it or not. | ||
3943 | </para> | ||
3944 | |||
3945 | <para> | ||
3946 | Erik Andersen <andersen@codepoet.org> | ||
3947 | </para> | ||
3948 | |||
3949 | <para> | ||
3950 | Edward Betts <edward@debian.org> | ||
3951 | </para> | ||
3952 | |||
3953 | <para> | ||
3954 | John Beppu <beppu@codepoet.org> | ||
3955 | </para> | ||
3956 | |||
3957 | <para> | ||
3958 | Brian Candler <B.Candler@pobox.com> | ||
3959 | </para> | ||
3960 | |||
3961 | <para> | ||
3962 | Randolph Chung <tausq@debian.org> | ||
3963 | </para> | ||
3964 | |||
3965 | <para> | ||
3966 | Dave Cinege <dcinege@psychosis.com> | ||
3967 | </para> | ||
3968 | |||
3969 | <para> | ||
3970 | Karl M. Hegbloom <karlheg@debian.org> | ||
3971 | </para> | ||
3972 | |||
3973 | <para> | ||
3974 | Daniel Jacobowitz <dan@debian.org> | ||
3975 | </para> | ||
3976 | |||
3977 | <para> | ||
3978 | Matt Kraai <kraai@alumni.carnegiemellon.edu> | ||
3979 | </para> | ||
3980 | |||
3981 | <para> | ||
3982 | John Lombardo <john@deltanet.com> | ||
3983 | </para> | ||
3984 | |||
3985 | <para> | ||
3986 | Glenn McGrath <bug1@netconnect.com.au> | ||
3987 | </para> | ||
3988 | |||
3989 | <para> | ||
3990 | Bruce Perens <bruce@perens.com> | ||
3991 | </para> | ||
3992 | |||
3993 | <para> | ||
3994 | Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com> | ||
3995 | </para> | ||
3996 | |||
3997 | <para> | ||
3998 | Pavel Roskin <proski@gnu.org> | ||
3999 | </para> | ||
4000 | |||
4001 | <para> | ||
4002 | Gyepi Sam <gyepi@praxis-sw.com> | ||
4003 | </para> | ||
4004 | |||
4005 | <para> | ||
4006 | Linus Torvalds <torvalds@transmeta.com> | ||
4007 | </para> | ||
4008 | |||
4009 | <para> | ||
4010 | Mark Whitley <markw@codepoet.org> | ||
4011 | </para> | ||
4012 | |||
4013 | <para> | ||
4014 | Charles P. Wright <cpwright@villagenet.com> | ||
4015 | </para> | ||
4016 | |||
4017 | <para> | ||
4018 | Enrique Zanardi <ezanardi@ull.es> | ||
4019 | </para> | ||
4020 | |||
4021 | <para> | ||
4022 | Vladimir Oleynik <dzo@simtreas.ru> | ||
4023 | </para> | ||
4024 | |||
4025 | |||
4026 | </chapter> | ||
4027 | </book> <!-- End of the book --> | ||