aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/coreutils.xml
blob: c65ca6a347e71619d1b4cb85e17721013c63bac3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>
<sect1 id="ch-system-coreutils" xreflabel="Coreutils">
<title>Coreutils-&coreutils-version;</title>
<?dbhtml filename="coreutils.html"?>

<indexterm zone="ch-system-coreutils"><primary sortas="a-Coreutils">Coreutils</primary></indexterm>

<para>The Coreutils package contains utilities for showing and setting the
basic system characteristics.</para>

<screen>&buildtime; 0.9 SBU
&diskspace; 69 MB</screen>

<para>Coreutils installation depends on: Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, Perl, Sed.</para>



<sect2>
<title>Installation of Coreutils</title>

<para>Normally the functionality of <command>uname</command> is somewhat
broken, in that the <emphasis>-p</emphasis> switch always returns
<quote>unknown</quote>.  The following patch fixes this behavior for Intel
architectures:</para>

<screen><userinput>patch -Np1 -i ../coreutils-&coreutils-version;-uname-2.patch</userinput></screen>

<para>Prevent Coreutils from installing binaries that will be later be installed
by other programs:</para>

<screen><userinput>patch -Np1 -i ../coreutils-&coreutils-version;-dupes-1.patch</userinput></screen>

<para>Now prepare Coreutils for compilation:</para>

<screen><userinput>DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr</userinput></screen>

<para>Compile the package:</para>

<screen><userinput>make</userinput></screen>

<para>The test suite of Coreutils makes several assumptions about the presence
of files and users that aren't valid this early in the LFS build. We will
therefore have to set up a few things before being able to run the tests. If
you choose not to run these tests, skip down to <quote>Install the
package</quote>.</para>

<para>Create two dummy groups and a dummy user name:</para>

<screen><userinput>echo "dummy1:x:1000" &gt;&gt; /etc/group
echo "dummy2:x:1001:dummy" &gt;&gt; /etc/group
echo "dummy:x:1000:1000:::/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>

<para>Now you're all set to run the test suite. First run the few tests that
are meant to be run as <emphasis>root</emphasis>:</para>

<screen><userinput>make NON_ROOT_USERNAME=dummy check-root</userinput></screen>

<para>Then run the remainder of the tests as the <emphasis>dummy</emphasis>
user:</para>

<screen><userinput>src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>

<para>When you're done testing, remove the dummy user and groups:</para>

<screen><userinput>sed -i '/dummy/d' /etc/passwd /etc/group</userinput></screen>

<para>Install the package:</para>

<screen><userinput>make install</userinput></screen>

<para>And move some programs to their proper locations:</para>

<screen><userinput>mv /usr/bin/{[,basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin</userinput></screen>

<para>Finally, create a symlink to be FHS-compliant:</para>

<screen><userinput>ln -s ../../bin/install /usr/bin</userinput></screen>

</sect2>


<sect2 id="contents-coreutils"><title>Contents of Coreutils</title>

<para><emphasis>Installed programs</emphasis>: basename, cat, chgrp, chmod,
chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors,
dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head,
hostid, hostname, id, install, join, link, ln, logname, ls, md5sum,
mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr,
printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep,
sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true,
tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who,
whoami and yes</para>

</sect2>


<sect2><title>Short descriptions</title>

<indexterm zone="ch-system-coreutils basename"><primary sortas="b-basename">basename</primary></indexterm>
<para id="basename"><command>basename</command> strips any path and a given suffix from
the given file name.</para>

<indexterm zone="ch-system-coreutils cat"><primary sortas="b-cat">cat</primary></indexterm>
<para id="cat"><command>cat</command> concatenates files to standard output.</para>

<indexterm zone="ch-system-coreutils chgrp"><primary sortas="b-chgrp">chgrp</primary></indexterm>
<para id="chgrp"><command>chgrp</command> changes the group ownership of each given
file to the given group. The group can be either given a a name or a numeric
ID.</para>

<indexterm zone="ch-system-coreutils chmod"><primary sortas="b-chmod">chmod</primary></indexterm>
<para id="chmod"><command>chmod</command> changes the permissions of each given file
to the given mode. The mode can be either a symbolic representation of the
changes to make, or an octal number representing the new permissions.</para>

<indexterm zone="ch-system-coreutils chown"><primary sortas="b-chown">chown</primary></indexterm>
<para id="chown"><command>chown</command> changes the user and/or group ownership of
each given file to the given user:group pair.</para>

<indexterm zone="ch-system-coreutils chroot"><primary sortas="b-chroot">chroot</primary></indexterm>
<para id="chroot"><command>chroot</command> runs a given command with the specified
directory as the <filename>/</filename> directory. The given command can be an
interactive shell. On most systems only <emphasis>root</emphasis> can do
this.</para>

<indexterm zone="ch-system-coreutils cksum"><primary sortas="b-cksum">cksum</primary></indexterm>
<para id="cksum"><command>cksum</command> prints the CRC (Cyclic Redundancy Check) checksum and the byte
counts of each specified file.</para>

<indexterm zone="ch-system-coreutils comm"><primary sortas="b-comm">comm</primary></indexterm>
<para id="comm"><command>comm</command> compares two sorted files, outputting in
three columns the lines that are unique, and the lines that are common.</para>

<indexterm zone="ch-system-coreutils cp"><primary sortas="b-cp">cp</primary></indexterm>
<para id="cp"><command>cp</command> copies files.</para>

<indexterm zone="ch-system-coreutils csplit"><primary sortas="b-csplit">csplit</primary></indexterm>
<para id="csplit"><command>csplit</command> splits a given file into several new files,
separating them according to given patterns or line numbers, and outputting
the byte count of each new file.</para>

<indexterm zone="ch-system-coreutils cut"><primary sortas="b-cut">cut</primary></indexterm>
<para id="cut"><command>cut</command> prints parts of lines, selecting the parts
according to given fields or positions.</para>

<indexterm zone="ch-system-coreutils date"><primary sortas="b-date">date</primary></indexterm>
<para id="date"><command>date</command> displays the current time in the given
format, or sets the system date.</para>

<indexterm zone="ch-system-coreutils dd"><primary sortas="b-dd">dd</primary></indexterm>
<para id="dd"><command>dd</command> copies a file using the given block size and
count, while optionally performing conversions on it.</para>

<indexterm zone="ch-system-coreutils df"><primary sortas="b-df">df</primary></indexterm>
<para id="df"><command>df</command> reports the amount of disk space available
(and used) on all mounted file systems, or only on the file systems holding the
given files.</para>

<indexterm zone="ch-system-coreutils dir"><primary sortas="b-dir">dir</primary></indexterm>
<para id="dir"><command>dir</command> is the same as ls.</para>

<indexterm zone="ch-system-coreutils dircolors"><primary sortas="b-dircolors">dircolors</primary></indexterm>
<para id="dircolors"><command>dircolors</command> outputs commands to set the LS_COLOR
environment variable, to change the color scheme used by ls.</para>

<indexterm zone="ch-system-coreutils dirname"><primary sortas="b-dirname">dirname</primary></indexterm>
<para id="dirname"><command>dirname</command> strips the non-directory suffix from
a given file name.</para>

<indexterm zone="ch-system-coreutils du"><primary sortas="b-du">du</primary></indexterm>
<para id="du"><command>du</command> reports the amount of disk space used by the
current directory, or by each of the given directories including all their
subdirectories, or by each of the given files.</para>

<indexterm zone="ch-system-coreutils echo"><primary sortas="b-echo">echo</primary></indexterm>
<para id="echo"><command>echo</command> displays the given strings.</para>

<indexterm zone="ch-system-coreutils env"><primary sortas="b-env">env</primary></indexterm>
<para id="env"><command>env</command> runs a command in a modified environment.</para>

<indexterm zone="ch-system-coreutils expand"><primary sortas="b-expand">expand</primary></indexterm>
<para id="expand"><command>expand</command> converts tabs to spaces.</para>

<indexterm zone="ch-system-coreutils expr"><primary sortas="b-expr">expr</primary></indexterm>
<para id="expr"><command>expr</command> evaluates expressions.</para>

<indexterm zone="ch-system-coreutils factor"><primary sortas="b-factor">factor</primary></indexterm>
<para id="factor"><command>factor</command> prints the prime factors of all specified
integer numbers.</para>

<indexterm zone="ch-system-coreutils false"><primary sortas="b-false">false</primary></indexterm>
<para id="false"><command>false</command> does nothing, unsuccessfully. It always
exits with a status code indicating failure.</para>

<indexterm zone="ch-system-coreutils mt"><primary sortas="b-mt">mt</primary></indexterm>
<para id="mt"><command>fmt</command> reformats the paragraphs in the given files.</para>

<indexterm zone="ch-system-coreutils fold"><primary sortas="b-fold">fold</primary></indexterm>
<para id="fold"><command>fold</command> wraps the lines in the given files.</para>

<indexterm zone="ch-system-coreutils groups-coreutils"><primary sortas="b-groups-coreutils">groups</primary></indexterm>
<para id="groups-coreutils"><command>groups</command> reports a user's group memberships.</para>

<indexterm zone="ch-system-coreutils head"><primary sortas="b-head">head</primary></indexterm>
<para id="head"><command>head</command> prints the first ten lines (or the given
number of lines) of each given file.</para>

<indexterm zone="ch-system-coreutils hostid"><primary sortas="b-hostid">hostid</primary></indexterm>
<para id="hostid"><command>hostid</command> reports the numeric identifier
(in hexadecimal) of the host.</para>

<indexterm zone="ch-system-coreutils hostname-coreutils"><primary sortas="b-hostname-coreutils">hostname</primary></indexterm>
<para id="hostname-coreutils"><command>hostname</command> reports or sets the name of the
host.</para>

<indexterm zone="ch-system-coreutils id"><primary sortas="b-id">id</primary></indexterm>
<para id="id"><command>id</command> reports the effective user ID, group ID, and
group memberships of the current user, or of a given user.</para>

<indexterm zone="ch-system-coreutils install"><primary sortas="b-install">install</primary></indexterm>
<para id="install"><command>install</command> copies files while setting their
permission modes and, if possible, their owner and group.</para>

<indexterm zone="ch-system-coreutils join"><primary sortas="b-join">join</primary></indexterm>
<para id="join"><command>join</command> joins from two files the lines that have
identical join fields.</para>

<indexterm zone="ch-system-coreutils link"><primary sortas="b-link">link</primary></indexterm>
<para id="link"><command>link</command> creates a hard link with the given name
to the given file.</para>

<indexterm zone="ch-system-coreutils ln"><primary sortas="b-ln">ln</primary></indexterm>
<para id="ln"><command>ln</command> makes hard links or soft links between files.</para>

<indexterm zone="ch-system-coreutils logname"><primary sortas="b-logname">logname</primary></indexterm>
<para id="logname"><command>logname</command> reports the current user's login name.</para>

<indexterm zone="ch-system-coreutils ls"><primary sortas="b-ls">ls</primary></indexterm>
<para id="ls"><command>ls</command> lists the contents of each given directory.
By default it orders the files and subdirectories alphabetically.</para>

<indexterm zone="ch-system-coreutils md5sum"><primary sortas="b-md5sum">md5sum</primary></indexterm>
<para id="md5sum"><command>md5sum</command> reports or checks MD5 (Message Digest 5) checksums.</para>

<indexterm zone="ch-system-coreutils mkdir"><primary sortas="b-mkdir">mkdir</primary></indexterm>
<para id="mkdir"><command>mkdir</command> creates directories with the given names.</para>

<indexterm zone="ch-system-coreutils mkfifo"><primary sortas="b-mkfifo">mkfifo</primary></indexterm>
<para id="mkfifo"><command>mkfifo</command> creates FIFOs (First-In, First-Out, a "named pipe" in UNIX parlance) with the given names.</para>

<indexterm zone="ch-system-coreutils mknod"><primary sortas="b-mknod">mknod</primary></indexterm>
<para id="mknod"><command>mknod</command> creates device nodes with the given names.
A device node is a character special file, or a block special file, or a FIFO.</para>

<indexterm zone="ch-system-coreutils mv"><primary sortas="b-mv">mv</primary></indexterm>
<para id="mv"><command>mv</command> moves or renames files or directories.</para>

<indexterm zone="ch-system-coreutils nice"><primary sortas="b-nice">nice</primary></indexterm>
<para id="nice"><command>nice</command> runs a program with modified scheduling priority.</para>

<indexterm zone="ch-system-coreutils nl"><primary sortas="b-nl">nl</primary></indexterm>
<para id="nl"><command>nl</command> numbers the lines from the given files.</para>

<indexterm zone="ch-system-coreutils nohup"><primary sortas="b-nohup">nohup</primary></indexterm>
<para id="nohup"><command>nohup</command> runs a command immune to hangups, with
output redirected to a log file.</para>

<indexterm zone="ch-system-coreutils od"><primary sortas="b-od">od</primary></indexterm>
<para id="od"><command>od</command> dumps files in octal and other formats.</para>

<indexterm zone="ch-system-coreutils paste"><primary sortas="b-paste">paste</primary></indexterm>
<para id="paste"><command>paste</command> merges the given files, joining
sequentially corresponding lines side by side, separated by tab characters..</para>

<indexterm zone="ch-system-coreutils pathchk"><primary sortas="b-pathchk">pathchk</primary></indexterm>
<para id="pathchk"><command>pathchk</command> checks whether file names are valid
or portable.</para>

<indexterm zone="ch-system-coreutils pinky"><primary sortas="b-pinky">pinky</primary></indexterm>
<para id="pinky"><command>pinky</command> is a lightweight finger. It reports
some information about the given users.</para>

<indexterm zone="ch-system-coreutils pr"><primary sortas="b-pr">pr</primary></indexterm>
<para id="pr"><command>pr</command> paginates and columnates files for printing.</para>

<indexterm zone="ch-system-coreutils printenv"><primary sortas="b-printenv">printenv</primary></indexterm>
<para id="printenv"><command>printenv</command> prints the environment.</para>

<indexterm zone="ch-system-coreutils printf"><primary sortas="b-printf">printf</primary></indexterm>
<para id="printf"><command>printf</command> prints the given arguments according to the
given format -- much like the C printf function.</para>

<indexterm zone="ch-system-coreutils ptx"><primary sortas="b-ptx">ptx</primary></indexterm>
<para id="ptx"><command>ptx</command> produces from the contents of the given files
a permuted index, with each keyword in its context.</para>

<indexterm zone="ch-system-coreutils pwd"><primary sortas="b-pwd">pwd</primary></indexterm>
<para id="pwd"><command>pwd</command> reports the name of the current directory.</para>

<indexterm zone="ch-system-coreutils readlink"><primary sortas="b-readlink">readlink</primary></indexterm>
<para id="readlink"><command>readlink</command> reports the value of the given symbolic
link.</para>

<indexterm zone="ch-system-coreutils rm"><primary sortas="b-rm">rm</primary></indexterm>
<para id="rm"><command>rm</command> removes files or directories.</para>

<indexterm zone="ch-system-coreutils rmdir"><primary sortas="b-rmdir">rmdir</primary></indexterm>
<para id="rmdir"><command>rmdir</command> removes directories, if they are empty.</para>

<indexterm zone="ch-system-coreutils seq"><primary sortas="b-seq">seq</primary></indexterm>
<para id="seq"><command>seq</command> prints a sequence of numbers, within a given
range and with a given increment.</para>

<indexterm zone="ch-system-coreutils sha1sum"><primary sortas="b-sha1sum">sha1sum</primary></indexterm>
<para id="sha1sum"><command>sha1sum</command> prints or checks 160-bit SHA1
checksums.</para>

<indexterm zone="ch-system-coreutils shred"><primary sortas="b-shred">shred</primary></indexterm>
<para id="shred"><command>shred</command> overwrites the given files repeatedly with
strange patterns, to make it real hard to recover the data.</para>

<indexterm zone="ch-system-coreutils sleep"><primary sortas="b-sleep">sleep</primary></indexterm>
<para id="sleep"><command>sleep</command> pauses for the given amount of time.</para>

<indexterm zone="ch-system-coreutils sort"><primary sortas="b-sort">sort</primary></indexterm>
<para id="sort"><command>sort</command> sorts the lines from the given files.</para>

<indexterm zone="ch-system-coreutils split"><primary sortas="b-split">split</primary></indexterm>
<para id="split"><command>split</command> splits the given file into pieces, by size
or by numbspliter of lines.</para>

<indexterm zone="ch-system-coreutils stty"><primary sortas="b-stty">stty</primary></indexterm>
<para id="stty"><command>stty</command> sets or reports terminal line settings.</para>

<indexterm zone="ch-system-coreutils su"><primary sortas="b-su">su</primary></indexterm>
<para id="su"><command>su</command> runs a shell with substitute user and group IDs.</para>

<indexterm zone="ch-system-coreutils sum"><primary sortas="b-sum">sum</primary></indexterm>
<para id="sum"><command>sum</command> prints checksum and block counts for each
given file.</para>

<indexterm zone="ch-system-coreutils sync"><primary sortas="b-sync">sync</primary></indexterm>
<para id="sync"><command>sync</command> flushes file system buffers. It forces
changed blocks to disk and updates the super block.</para>

<indexterm zone="ch-system-coreutils tac"><primary sortas="b-tac">tac</primary></indexterm>
<para id="tac"><command>tac</command> concatenates the given files in reverse.</para>

<indexterm zone="ch-system-coreutils tail"><primary sortas="b-tail">tail</primary></indexterm>
<para id="tail"><command>tail</command> prints the last ten lines (or the given
number of lines) of each given file.</para>

<indexterm zone="ch-system-coreutils tee"><primary sortas="b-tee">tee</primary></indexterm>
<para id="tee"><command>tee</command> reads from standard input while writing both
to standard output and to the given files.</para>

<indexterm zone="ch-system-coreutils test"><primary sortas="b-test">test</primary></indexterm>
<para id="test"><command>test</command> compares values and checks file types.</para>

<indexterm zone="ch-system-coreutils touch"><primary sortas="b-touch">touch</primary></indexterm>
<para id="touch"><command>touch</command> changes file timestamps, setting the access
and modification times of the given files to the current time. Files that do
not exist are created with zero length.</para>

<indexterm zone="ch-system-coreutils tr"><primary sortas="b-tr">tr</primary></indexterm>
<para id="tr"><command>tr</command> translates, squeezes, and deletes the given
characters from standard input.</para>

<indexterm zone="ch-system-coreutils true"><primary sortas="b-true">true</primary></indexterm>
<para id="true"><command>true</command> does nothing, successfully. It always exits
with a status code indicating success.</para>

<indexterm zone="ch-system-coreutils tsort"><primary sortas="b-tsort">tsort</primary></indexterm>
<para id="tsort"><command>tsort</command> performs a topological sort. It writes a
totally ordered list according to the partial ordering in a given file.</para>

<indexterm zone="ch-system-coreutils tty"><primary sortas="b-tty">tty</primary></indexterm>
<para id="tty"><command>tty</command> reports the file name of the terminal
connected to standard input.</para>

<indexterm zone="ch-system-coreutils uname"><primary sortas="b-uname">uname</primary></indexterm>
<para id="uname"><command>uname</command> reports system information.</para>

<indexterm zone="ch-system-coreutils unexpand"><primary sortas="b-unexpand">unexpand</primary></indexterm>
<para id="unexpand"><command>unexpand</command> converts spaces to tabs.</para>

<indexterm zone="ch-system-coreutils uniq"><primary sortas="b-uniq">uniq</primary></indexterm>
<para id="uniq"><command>uniq</command> discards all but one of successive
identical lines.</para>

<indexterm zone="ch-system-coreutils unlink"><primary sortas="b-unlink">unlink</primary></indexterm>
<para id="unlink"><command>unlink</command> removes the given file.</para>

<indexterm zone="ch-system-coreutils uptime-coreutils"><primary sortas="b-uptime-coreutils">uptime</primary></indexterm>
<para id="uptime-coreutils"><command>uptime</command> reports how long the system has been
running, how many users are logged on, and the system load averages.</para>

<indexterm zone="ch-system-coreutils users"><primary sortas="b-users">users</primary></indexterm>
<para id="users"><command>users</command> reports the names of the users currently
logged on.</para>

<indexterm zone="ch-system-coreutils vdir"><primary sortas="b-vdir">vdir</primary></indexterm>
<para id="vdir"><command>vdir</command> is the same as ls -l.</para>

<indexterm zone="ch-system-coreutils wc"><primary sortas="b-wc">wc</primary></indexterm>
<para id="wc"><command>wc</command> reports the number of lines, words, and bytes
for each given file, and a total line when more than one file is given.</para>

<indexterm zone="ch-system-coreutils who"><primary sortas="b-who">who</primary></indexterm>
<para id="who"><command>who</command> reports who is logged on.</para>

<indexterm zone="ch-system-coreutils whoami"><primary sortas="b-whoami">whoami</primary></indexterm>
<para id="whoami"><command>whoami</command> reports the user name associated with the
current effective user ID.</para>

<indexterm zone="ch-system-coreutils yes"><primary sortas="b-yes">yes</primary></indexterm>
<para id="yes"><command>yes</command> outputs 'y' or a given string repeatedly,
until killed.</para>

</sect2>



</sect1>