OSDN Git Service

info/GNU_coreutils: corrections and modifications.
[linuxjm/jm.git] / info / GNU_coreutils / release / coreutils-ja.info
1 This is coreutils-ja.info, produced by makeinfo version 4.13 from
2 coreutils-ja.texi.
3
4 INFO-DIR-SECTION Basics (in Japanese)
5 START-INFO-DIR-ENTRY
6 * Coreutils-ja: (coreutils-ja).  Core GNU (file, text, shell) utilities.
7 * Common options-ja: (coreutils-ja)Common options.
8 * File permissions-ja: (coreutils-ja)File permissions.  Access modes.
9 * Date input formats-ja: (coreutils-ja)Date input formats.
10 END-INFO-DIR-ENTRY
11
12 INFO-DIR-SECTION Individual utilities (in Japanese)
13 START-INFO-DIR-ENTRY
14 * arch-ja: (coreutils-ja)arch invocation.          Print machine hardware name.
15 * base64-ja: (coreutils-ja)base64 invocation.      Base64 encode/decode data.
16 * basename-ja: (coreutils-ja)basename invocation.  Strip directory and suffix.
17 * cat-ja: (coreutils-ja)cat invocation.            Concatenate and write files.
18 * chcon-ja: (coreutils-ja)chcon invocation.        Change SELinux CTX of files.
19 * chgrp-ja: (coreutils-ja)chgrp invocation.        Change file group
20 * chmod-ja: (coreutils-ja)chmod invocation.        Change access permissions.
21 * chown-ja: (coreutils-ja)chown invocation.        Change file owners and groups.
22 * chroot-ja: (coreutils-ja)chroot invocation.      Specify the root directory.
23 * cksum-ja: (coreutils-ja)cksum invocation.        Print POSIX CRC checksum.
24 * comm-ja: (coreutils-ja)comm invocation.          Compare sorted files by line.
25 * cp-ja: (coreutils-ja)cp invocation.              Copy files.
26 * csplit-ja: (coreutils-ja)csplit invocation.      Split by context.
27 * cut-ja: (coreutils-ja)cut invocation.            Print selected parts of lines.
28 * date-ja: (coreutils-ja)date invocation.          Print/set system date and time.
29 * dd-ja: (coreutils-ja)dd invocation.              Copy and convert a file.
30 * df-ja: (coreutils-ja)df invocation.              Report file system disk usage.
31 * dir-ja: (coreutils-ja)dir invocation.            List directories briefly.
32 * dircolors-ja: (coreutils-ja)dircolors invocation.  Color setup for ls.
33 * dirname-ja: (coreutils-ja)dirname invocation.    Strip last file name component.
34 * du-ja: (coreutils-ja)du invocation.              Report on disk usage.
35 * echo-ja: (coreutils-ja)echo invocation.          Print a line of text.
36 * env-ja: (coreutils-ja)env invocation.            Modify the environment.
37 * expand-ja: (coreutils-ja)expand invocation.      Convert tabs to spaces.
38 * expr-ja: (coreutils-ja)expr invocation.          Evaluate expressions.
39 * factor-ja: (coreutils-ja)factor invocation.      Print prime factors.
40 * false-ja: (coreutils-ja)false invocation.        Do nothing, unsuccessfully.
41 * fmt-ja: (coreutils-ja)fmt invocation.            Reformat paragraph text.
42 * fold-ja: (coreutils-ja)fold invocation.          Wrap long input lines.
43 * groups-ja: (coreutils-ja)groups invocation.      Print group names a user is in.
44 * head-ja: (coreutils-ja)head invocation.          Output the first part of files.
45 * hostid-ja: (coreutils-ja)hostid invocation.      Print numeric host identifier.
46 * hostname-ja: (coreutils-ja)hostname invocation.  Print or set system name.
47 * id-ja: (coreutils-ja)id invocation.              Print user identity.
48 * install-ja: (coreutils-ja)install invocation.    Copy and change attributes.
49 * join-ja: (coreutils-ja)join invocation.          Join lines on a common field.
50 * kill-ja: (coreutils-ja)kill invocation.          Send a signal to processes.
51 * link-ja: (coreutils-ja)link invocation.          Make hard links between files.
52 * ln-ja: (coreutils-ja)ln invocation.              Make links between files.
53 * logname-ja: (coreutils-ja)logname invocation.    Print current login name.
54 * ls-ja: (coreutils-ja)ls invocation.              List directory contents.
55 * md5sum-ja: (coreutils-ja)md5sum invocation.      Print or check MD5 digests.
56 * mkdir-ja: (coreutils-ja)mkdir invocation.        Create directories.
57 * mkfifo-ja: (coreutils-ja)mkfifo invocation.      Create FIFOs (named pipes).
58 * mknod-ja: (coreutils-ja)mknod invocation.        Create special files.
59 * mktemp-ja: (coreutils-ja)mktemp invocation.      Create temporary files.
60 * mv-ja: (coreutils-ja)mv invocation.              Rename files.
61 * nice-ja: (coreutils-ja)nice invocation.          Modify niceness.
62 * nl-ja: (coreutils-ja)nl invocation.              Number lines and write files.
63 * nohup-ja: (coreutils-ja)nohup invocation.        Immunize to hangups.
64 * nproc-ja: (coreutils-ja)nproc invocation.        Print the number of processors.
65 * numfmt-ja: (coreutils-ja)numfmt invocation.      Reformat numbers.
66 * od-ja: (coreutils-ja)od invocation.              Dump files in octal, etc.
67 * paste-ja: (coreutils-ja)paste invocation.        Merge lines of files.
68 * pathchk-ja: (coreutils-ja)pathchk invocation.    Check file name portability.
69 * pr-ja: (coreutils-ja)pr invocation.              Paginate or columnate files.
70 * printenv-ja: (coreutils-ja)printenv invocation.  Print environment variables.
71 * printf-ja: (coreutils-ja)printf invocation.      Format and print data.
72 * ptx-ja: (coreutils-ja)ptx invocation.            Produce permuted indexes.
73 * pwd-ja: (coreutils-ja)pwd invocation.            Print working directory.
74 * readlink-ja: (coreutils-ja)readlink invocation.  Print referent of a symlink.
75 * realpath-ja: (coreutils-ja)realpath invocation.  Print resolved file names.
76 * rm-ja: (coreutils-ja)rm invocation.              Remove files.
77 * rmdir-ja: (coreutils-ja)rmdir invocation.        Remove empty directories.
78 * runcon-ja: (coreutils-ja)runcon invocation.      Run in specified SELinux CTX.
79 * seq-ja: (coreutils-ja)seq invocation.            Print numeric sequences.
80 * sha1sum-ja: (coreutils-ja)sha1sum invocation.    Print or check SHA-1 digests.
81 * sha2-ja: (coreutils-ja)sha2 utilities.           Print or check SHA-2 digests.
82 * shred-ja: (coreutils-ja)shred invocation.        Remove files more securely.
83 * shuf-ja: (coreutils-ja)shuf invocation.          Shuffling text files.
84 * sleep-ja: (coreutils-ja)sleep invocation.        Delay for a specified time.
85 * sort-ja: (coreutils-ja)sort invocation.          Sort text files.
86 * split-ja: (coreutils-ja)split invocation.        Split into pieces.
87 * stat-ja: (coreutils-ja)stat invocation.          Report file(system) status.
88 * stdbuf-ja: (coreutils-ja)stdbuf invocation.      Modify stdio buffering.
89 * stty-ja: (coreutils-ja)stty invocation.          Print/change terminal settings.
90 * sum-ja: (coreutils-ja)sum invocation.            Print traditional checksum.
91 * sync-ja: (coreutils-ja)sync invocation.          Synchronize memory and disk.
92 * tac-ja: (coreutils-ja)tac invocation.            Reverse files.
93 * tail-ja: (coreutils-ja)tail invocation.          Output the last part of files.
94 * tee-ja: (coreutils-ja)tee invocation.            Redirect to multiple files.
95 * test-ja: (coreutils-ja)test invocation.          File/string tests.
96 * timeout-ja: (coreutils-ja)timeout invocation.    Run with time limit.
97 * touch-ja: (coreutils-ja)touch invocation.        Change file timestamps.
98 * tr-ja: (coreutils-ja)tr invocation.              Translate characters.
99 * true-ja: (coreutils-ja)true invocation.          Do nothing, successfully.
100 * truncate-ja: (coreutils-ja)truncate invocation.  Shrink/extend size of a file.
101 * tsort-ja: (coreutils-ja)tsort invocation.        Topological sort.
102 * tty-ja: (coreutils-ja)tty invocation.            Print terminal name.
103 * uname-ja: (coreutils-ja)uname invocation.        Print system information.
104 * unexpand-ja: (coreutils-ja)unexpand invocation.  Convert spaces to tabs.
105 * uniq-ja: (coreutils-ja)uniq invocation.          Uniquify files.
106 * unlink-ja: (coreutils-ja)unlink invocation.      Removal via unlink(2).
107 * uptime-ja: (coreutils-ja)uptime invocation.      Print uptime and load.
108 * users-ja: (coreutils-ja)users invocation.        Print current user names.
109 * vdir-ja: (coreutils-ja)vdir invocation.          List directories verbosely.
110 * wc-ja: (coreutils-ja)wc invocation.              Line, word, and byte counts.
111 * who-ja: (coreutils-ja)who invocation.            Print who is logged in.
112 * whoami-ja: (coreutils-ja)whoami invocation.      Print effective user ID.
113 * yes-ja: (coreutils-ja)yes invocation.            Print a string indefinitely.
114 END-INFO-DIR-ENTRY
115
116    このマニュアルは、GNU core utilities version 8.22
117 の詳細な解説である。 core utilities
118 には、テキストやファイルを操作するための標準的な
119 プログラムが入っている。
120
121    Copyright (C) 1994-2013 Free Software Foundation, Inc.
122
123      Permission is granted to copy, distribute and/or modify this
124      document under the terms of the GNU Free Documentation License,
125      Version 1.3 or any later version published by the Free Software
126      Foundation; with no Invariant Sections, with no Front-Cover Texts,
127      and with no Back-Cover Texts.  A copy of the license is included
128      in the section entitled "GNU Free Documentation License".
129
130    【訳者から御注意】 この文書を info コマンドで閲覧なさっている場合
131 には、info コマンドは日本語の行末の表示があまり上手ではないため、
132 しばしば行末に余計な文字が入って、読みにくいことがある。そうしたときは、
133 Ctrl キーと l (エル) キーを同時に押して、画面を再描画していただきたい。
134 たぶん、表示が正常になるはずである。
135
136    お手元の coreutils のバージョンが 8.22 以外の場合、この文書の
137 説明と動作が違うことがあるかもしれない (たとえば、この文書に書いてある
138 オプションが使えない、あるいは、使えるはずのオプションの説明がないなど)。
139 そうした場合は、お使いの coreutils と同じバージョンの info マニュアルや
140 man ページに当ってみていただきたい。そちらの方が正しいはずである。
141
142 \1f
143 File: coreutils-ja.info,  Node: Top,  Next: Introduction,  Up: (dir)
144
145 GNU Coreutils
146 *************
147
148 このマニュアルは、GNU core utilities version 8.22 の詳細な解説である。
149 core utilities には、テキストやファイルを操作するための標準的な
150 プログラムが入っている。
151
152    Copyright (C) 1994-2013 Free Software Foundation, Inc.
153
154      Permission is granted to copy, distribute and/or modify this
155      document under the terms of the GNU Free Documentation License,
156      Version 1.3 or any later version published by the Free Software
157      Foundation; with no Invariant Sections, with no Front-Cover Texts,
158      and with no Back-Cover Texts.  A copy of the license is included
159      in the section entitled "GNU Free Documentation License".
160
161    【訳者から御注意】 この文書を info コマンドで閲覧なさっている場合
162 には、info コマンドは日本語の行末の表示があまり上手ではないため、
163 しばしば行末に余計な文字が入って、読みにくいことがある。そうしたときは、
164 Ctrl キーと l (エル) キーを同時に押して、画面を再描画していただきたい。
165 たぶん、表示が正常になるはずである。
166
167    お手元の coreutils のバージョンが 8.22 以外の場合、この文書の
168 説明と動作が違うことがあるかもしれない (たとえば、この文書に書いてある
169 オプションが使えない、あるいは、使えるはずのオプションの説明がないなど)。
170 そうした場合は、お使いの coreutils と同じバージョンの info マニュアルや
171 man ページに当ってみていただきたい。そちらの方が正しいはずである。
172
173 * Menu:
174
175 * Introduction::             注意事項、概観、著者
176 * Common options::           共通オプション
177 * Output of entire files::   ファイル全体の出力 (cat tac nl od base64)
178 * Formatting file contents:: ファイルの整形 (fmt numfmt pr fold)
179 * Output of parts of files:: ファイルの部分出力 (head tail split csplit)
180 * Summarizing files::      チェックサムなど (wc sum cksum md5sum sha1sum sha2)
181 * Operating on sorted files::  ソートなど (sort shuf uniq comm ptx tsort)
182 * Operating on fields::      フィールド操作 (cut paste join)
183 * Operating on characters::  文字操作 (tr expand unexpand)
184 * Directory listing::        ディレクトリ一覧 (ls dir vdir dircolors)
185 * Basic operations::         基本操作 (cp dd install mv rm shred)
186 * Special file types::       特殊ファイル型 (mkdir rmdir unlink mkfifo mknod
187                                ln link readlink)
188 * Changing file attributes::  ファイルの属性変更 (chgrp chmod chown touch)
189 * Disk usage::               ディスク使用量など (df du stat sync truncate)
190 * Printing text::            テキストの表示 (echo printf yes)
191 * Conditions::               条件 (false true test expr)
192 * Redirection::              リダイレクション (tee)
193 * File name manipulation::   ファイル名の操作 (dirname basename pathchk
194                                mktemp realpath)
195 * Working context::          作業環境 (pwd stty printenv tty)
196 * User information::         ユーザ情報 (id logname whoami groups users who)
197 * System context::           システム情報 (date arch nproc uname hostname
198                                hostid uptime)
199 * SELinux context::          SELinux コンテキスト (chcon runcon)
200 * Modified command invocation::  実行環境の変更 (chroot env nice nohup stdbuf
201                                    timeout)
202 * Process control::          プロセス制御 (kill)
203 * Delaying::                 一時停止 (sleep)
204 * Numeric operations::       数値の操作 (factor seq)
205 * File permissions::         アクセス・モード
206 * Date input formats::       日付文字列の指定法
207 * Opening the software toolbox::  ソフトウェア工具という考え方
208 * About the translation::    翻訳について
209 * GNU Free Documentation License::  Copying and sharing this manual
210 * Concept index::            General index
211
212  --- ノードの詳細なリスト ---
213
214 共通オプション
215
216 * Exit status::              プログラムが実行に成功したか失敗したかの指標
217 * Backup options::           バックアップ・オプション
218 * Block size::               ブロックサイズ
219 * Floating point::           浮動小数点数の表現
220 * Signal specifications::    シグナルの指定
221 * Disambiguating names and IDs::  chgrp や chown のシンタクス
222 * Random sources::           ランダムデータのソース
223 * Target directory::         出力先ディレクトリ
224 * Trailing slashes::         末尾のスラッシュ
225 * Traversing symlinks::      ディレクトリを指すシンボリックリンクのたどり方
226 * Treating / specially::     / (ルート) を特別扱いする
227 * Standards conformance::    規格への準拠
228
229 ファイル全体の出力
230
231 * cat invocation::           ファイルを結合して、書き出す
232 * tac invocation::           ファイルを結合して、ファイルごとに逆順で書き出す
233 * nl invocation::            行番号を付けて、ファイルを書き出す
234 * od invocation::            ファイルを 8 進数などの形式で書き出す
235 * base64 invocation::        データを ASCII 文字で表示可能なデータに変換する
236
237 ファイル内容の整形
238
239 * fmt invocation::           パラグラフに分かれたテキストを整形し直す
240 * numfmt invocation::        数値を整形し直す
241 * pr invocation::            ページ付けや段組みをしてファイルを表示する
242 * fold invocation::          入力行を指定された幅に合わせて折り返す
243
244 `numfmt': 数値を整形し直す
245
246 * General options in numfmt::  一般オプション
247 * Possible UNITs::             使用できる UNIT
248 * Examples of using numfmt::   numfmt の使用例
249
250 ファイルの部分出力
251
252 * head invocation::          ファイルの先頭部分を出力する
253 * tail invocation::          ファイルの末尾部分を出力する
254 * split invocation::         ファイルを一定のサイズに分割する
255 * csplit invocation::        ファイルを内容を目印にして分割する
256
257 ファイルの要約
258
259 * wc invocation::            行数、単語数、バイト数を表示する
260 * sum invocation::           チェックサムとブロック数を表示する
261 * cksum invocation::         CRC チェックサムとバイト数を表示する
262 * md5sum invocation::        MD5 ダイジェストの表示、または検査をする
263 * sha1sum invocation::       SHA-1 ダイジェストの表示、または検査をする
264 * sha2 utilities::           SHA-2 ダイジェストの表示、または検査をする
265
266 ソートしたファイルの操作
267
268 * sort invocation::          テキストファイルを並べ替える
269 * shuf invocation::          テキストファイルをシャッフルする
270 * uniq invocation::          ファイルから重複を省く
271 * comm invocation::          ソート済みの二つのファイルを一行づつ比較する
272 * ptx invocation::           ファイル内容の permuted index を作成する
273 * tsort invocation::         トポロジカル・ソート
274
275 `ptx': パミューテド・インデックスを作成する
276
277 * General options in ptx::   プログラム全体の動作に関係するオプション
278 * Charset selection in ptx:: 使用している文字セットについて
279 * Input processing in ptx::  入力のフィールドと文脈、及びキーワードの選択
280 * Output formatting in ptx:: 出力フォーマットのタイプ、及びフィールドの幅
281 * Compatibility in ptx::     GNU による `ptx' の拡張
282
283 フィールド操作
284
285 * cut invocation::           各行の選択した部分を表示する
286 * paste invocation::         複数のファイルの各行をマージする
287 * join invocation::          共通のフィールドに基づいて行を連結する
288
289 文字操作
290
291 * tr invocation::            文字の置換、圧縮、削除を行う
292 * expand invocation::        タブをスペースに変換する
293 * unexpand invocation::      スペースをタブに変換する
294
295 `tr': 文字の置換、圧縮、削除を行う
296
297 * Character sets::           文字集合の指定
298 * Translating::              ある文字集合を別の文字集合に変換する
299 * Squeezing::                連続する文字の圧縮と文字の削除
300
301 ディレクトリの一覧表示
302
303 * ls invocation::            ディレクトリの内容を一覧表示する
304 * dir invocation::           ディレクトリの内容を簡潔に表示する
305 * vdir invocation::          ディレクトリの内容を詳細に表示する
306 * dircolors invocation::     `ls' のカラー設定
307
308 `ls': ディレクトリの内容を一覧表示する
309
310 * Which files are listed::      表示対象にするファイル
311 * What information is listed::  表示する情報
312 * Sorting the output::          出力のソート
313 * Details about version sort::  バージョン・ソートの詳細
314 * General output formatting::   出力全体の形式
315 * Formatting file timestamps::  タイムスタンプのフォーマット
316 * Formatting the file names::   ファイル名のフォーマット
317
318 基本的なファイル操作
319
320 * cp invocation::            ファイルやディレクトリをコピーする
321 * dd invocation::            ファイルの変換とコピー
322 * install invocation::       ファイルをコピーし属性をセットする
323 * mv invocation::            ファイルの移動 (名前の変更) を行う
324 * rm invocation::            ファイルやディレクトリを削除する
325 * shred invocation::         セキュリティを向上させたファイルの削除
326
327 特殊なファイル型
328
329 * link invocation::     システムコール link を使って、ハードリンクを作成する
330 * ln invocation::       ファイル間のリンクを作成する
331 * mkdir invocation::    ディレクトリを作成する
332 * mkfifo invocation::   FIFO (名前付きパイプ) を作成する
333 * mknod invocation::    ブロック型やキャラクタ型のスペシャルファイルを作成する
334 * readlink invocation:: シムリンクの値、または正規化されたファイル名を表示する
335 * rmdir invocation::    空のディレクトリを削除する
336 * unlink invocation::   システムコール unlink を使って、ファイルを削除する
337
338 ファイルの属性変更
339
340 * chown invocation::         ファイルの所有者やグループを変更する
341 * chgrp invocation::         ファイルの所有グループを変更する
342 * chmod invocation::         アクセス権を変更する
343 * touch invocation::         ファイルのタイムスタンプを変更する
344
345 ディスク使用量
346
347 * df invocation::            ファイルシステムのディスク使用状態を報告する
348 * du invocation::            ファイルのディスク使用量を概算する
349 * stat invocation::          ファイルやファイルシステムの状態を報告する
350 * sync invocation::          ディスク上のデータをメモリと同期する
351 * truncate invocation::      ファイルサイズの短縮・伸長を行う
352
353 テキストの表示
354
355 * echo invocation::          テキストを 1 行表示する
356 * printf invocation::        データを整形して表示する
357 * yes invocation::           中断されるまで文字列を表示する
358
359 条件
360
361 * false invocation::         何もせず、実行失敗のステータスを返す
362 * true invocation::          何もせず、正常終了する
363 * test invocation::          ファイルタイプのチェックや値の比較を行う
364 * expr invocation::          式を評価する
365
366 `test': ファイルタイプのチェックや値の比較を行う
367
368 * File type tests::            ファイルタイプのテスト
369 * Access permission tests::    アクセス許可のテスト
370 * File characteristic tests::  ファイル特性のテスト
371 * String tests::               文字列のテスト
372 * Numeric tests::              数値のテスト
373
374 `expr': 式を評価する
375
376 * String expressions::       文字列式 (+ : match substr index length)
377 * Numeric expressions::      数式 (+ - * / %)
378 * Relations for expr::       論理結合と関係表現 (| & < <= = == != >= >)
379 * Examples of expr::         `expr' の使用例
380
381 リダイレクション
382
383 * tee invocation::           出力を複数のファイルやプロセスにリダイレクトする
384
385 ファイル名操作
386
387 * basename invocation::      ファイル名からディレクトリと接尾辞を取り除く
388 * dirname invocation::       ファイル名から最後の要素を取り除く
389 * pathchk invocation::       ファイル名の有効性や可搬性を検査する
390 * mktemp invocation::        テンポラリファイルやディレクトリを作成する
391 * realpath invocation::      ファイル名を展開して表示する
392
393 作業環境
394
395 * pwd invocation::           現在作業中のディレクトリを表示する
396 * stty invocation::          端末の諸特性を表示・変更する
397 * printenv invocation::      環境変数のすべて、あるいは一部を表示する
398 * tty invocation::           標準出力に接続している端末のファイル名を表示する
399
400 `stty': 端末の諸特性を表示・変更する
401
402 * Control::                  制御関係の設定
403 * Input::                    入力に関する設定
404 * Output::                   出力に関する設定
405 * Local::                    ローカル設定
406 * Combination::              組み合わせ設定
407 * Characters::               特殊文字
408 * Special::                  特殊設定
409
410 ユーザ情報
411
412 * id invocation::            ユーザの ID を表示する
413 * logname invocation::       現在のログイン名を表示する
414 * whoami invocation::        実効ユーザ ID を表示する
415 * groups invocation::        ユーザが所属しているグループ名を表示する
416 * users invocation::         現在ログインしている全ユーザのログイン名を表示する
417 * who invocation::           現在誰がログインしているかを表示する
418
419 システム情報
420
421 * arch invocation::          マシンのハードウェア名を表示する
422 * date invocation::          システムの日付や時刻を表示、設定する
423 * nproc invocation::         プロセッサ数を表示する
424 * uname invocation::         システムについて情報を表示する
425 * hostname invocation::      システム名を表示、設定する
426 * hostid invocation::        数値によるホストの識別名を表示する
427 * uptime invocation::        システムの連続稼働時間と負荷を表示する
428
429 `date': システムの日付や時刻を表示、設定する
430
431 * Time conversion specifiers:: 時刻関係の変換指定子 %[HIklMNpPrRsSTXzZ]
432 * Date conversion specifiers:: 日付関係の変換指定子 %[aAbBcCdDeFgGhjmuUVwWxyY]
433 * Literal conversion specifiers::  文字変換指定子 %[%nt]
434 * Padding and other flags::  0 や空白による空き埋め、その他。
435 * Setting the time::         システムクロックの変更
436 * Options for date::         現在時以外の指定
437 * Date input formats::       日付文字列の指定法
438 * Examples of date::         用例
439
440 SELinux コンテキスト
441
442 * chcon invocation::     ファイルの SELinux コンテキストを変更する
443 * runcon invocation::    指定された SELinux コンテキストでコマンドを実行する
444
445 コマンド実行条件の変更
446
447 * chroot invocation::    ルートディレクトリを変更して、コマンドを実行する
448 * env invocation::       変更した環境でコマンドを実行する
449 * nice invocation::      niceness を変更して、コマンドを実行する
450 * nohup invocation::     ハングアップ・シグナルで終了しないコマンドを実行する
451 * stdbuf invocation::    入出力バッファリングを変更して、コマンドを実行する
452 * timeout invocation::   タイムリミット付きでコマンドを実行する
453
454 プロセス制御
455
456 * kill invocation::          プロセスにシグナルを送る。
457
458 一時停止
459
460 * sleep invocation::         指定された時間、停止する
461
462 数値の操作
463
464 * factor invocation::        素因数を表示する
465 * seq invocation::           数列を表示する
466
467 ファイルの許可属性
468
469 * Mode Structure::           ファイルのモードビットの構成
470 * Symbolic Modes::           ファイルのモードビットの憶えやすい表記
471 * Numeric Modes::            ファイルのモードビットの 8 進数による表記
472 * Directory Setuid and Setgid::  ディレクトリの Set-User-ID と
473                                    Set-Group-ID ビット
474
475 日付入力の書式
476
477 * General date syntax::      共通規則
478 * Calendar date items::      19 Dec 1994
479 * Time of day items::        9:20pm
480 * Time zone items::          EST, PDT, UTC, ...
481 * Combined date and time of day items::  1972-09-24T20:02:00,000000-0500
482 * Day of week items::        Monday, Tuesday
483 * Relative items in date strings::  next tuesday, 2 years ago
484 * Pure numbers in date strings::  19931219, 1440
485 * Seconds since the Epoch::  @1078100502
486 * Specifying time zone rules::  TZ="America/New_York", TZ="UTC0"
487 * Authors of parse_datetime::  Bellovin, Eggert, Salz, Berets, et al.
488
489 ソフトウェアの道具箱
490
491 * Toolbox introduction::     はじめに
492 * I/O redirection::          I/O リダイレクション
493 * The who command::          `who' コマンド
494 * The cut command::          `cut' コマンド
495 * The sort command::         `sort' コマンド
496 * The uniq command::         `uniq' コマンド
497 * Putting the tools together::  工具を組み合わせる
498
499 翻訳について
500
501 * About the translation::    翻訳について
502
503 Copying This Manual
504
505 * GNU Free Documentation License::  Copying and sharing this manual
506
507 \1f
508 File: coreutils-ja.info,  Node: Introduction,  Next: Common options,  Prev: Top,  Up: Top
509
510 1 序
511 *****
512
513 このマニュアルは作成の途上にある。たとえば、多くのセクションで、基本的な
514 概念を初心者にわかりやすく説明するといった試みがなされていない。そこで、
515 お願いがある。もし、関心がおありなら、このマニュアルの改良に参加して
516 いただきたい。そうしていただければ、GNU コミュニティ全体が恩恵に浴する
517 ことになる。
518
519    このマニュアルで解説している GNU ユーティリティは、POSIX の規格に
520 おおむね準拠している。 バグの報告は、<bug-coreutils@gnu.org> になさって
521 いただきたい。そのとき、バージョン番号、マシンのアーキテクチャ、入力に
522 使ったファイルといった情報はもとより、バグの再現に必要な他のいかなる
523 情報も、忘れずに記載していただきたい。たとえば、どんな入力をしたか、
524 どんな結果を期待していたか、実際の結果はどうだったか、それがおかしいと
525 考える理由は何なのかといったことである。差分の投稿は歓迎するが、何がどう
526 問題なのかの説明もやはり付けていただきたい。推測するのが難しいこともある
527 からだ。*Note Bugs: (gcc)Bugs.
528
529    このマニュアルは、ユーティリティ・プログラムの配布に含まれる Unix
530 man page を元にして作られたものである。そうした man page は、David
531 MacKenzie によって書かれ、Jim Meyering によって改訂されていた。現在読者
532 がお読みになっているこのマニュアルは、そうしたユーティリティについての
533 公式文書であり、man page の方は、今では改訂作業が行われていない。なお、
534 `fmt' の最初の man page の著者は、 Ross Paterson だった。Texinfo 形式
535 への変換を最初に行ったのは、Franc,ois Pinard である。Karl Berry が索引を
536 作成し、構成に若干の変更を加えて、その結果に手を入れた。Free Software
537 Foundation の職員である Brian Youman が textutils, fileutils, sh-utils
538 のマニュアルを統合し、多数の項目を含む現在のマニュアルを作成した。こうした
539 作業全般に渡って、Richard Stallman が例によって洞察力に富む貴重な意見を
540 寄せてくれた。
541
542 \1f
543 File: coreutils-ja.info,  Node: Common options,  Next: Output of entire files,  Prev: Introduction,  Up: Top
544
545 2 共通オプション
546 ***********************
547
548 いくつかのオプションは、このマニュアルで取り上げるすべてのプログラムで
549 利用することができる。そうしたオプションについては、個々のプログラムで
550 同じ説明を繰り返すことはせず、この場で説明しておく (実のところ、こうした
551 オプションは、GNU のすべてのプログラムで使用できる (はずである))。
552
553    通常、オプションとオペランドは、どんな順番で指定してもよい。プログ
554 ラムは、すべてのオプションがいかなるオペランドよりも前にあるかのごとく
555 振る舞うようになっている。たとえば、`sort -r passwd -t :' は、`:' が
556 `-t' のオプション引数 (option-argument) なので、`sort -r -t : passwd'
557 と同じ動作をする。しかしながら、環境変数 `POSIXLY_CORRECT' が設定されて
558 いる場合は、オプションはオペランドの前に置かなければならない。ただし、
559 オプションとオペランドの順番について、そのコマンドに別の決まりがある
560 ときはこのかぎりではない。
561
562    若干のプログラムでは、二番目以降のオペランドとして先頭に `-' が付く
563 オペランドが使えると都合がよい。そうしたプログラムでは、`POSIXLY_CORRECT'
564 が設定されていない場合でも、オプションをオペランドの前に置く必要がある。
565 そこで、そうしたプログラムの説明には、その旨注意書きを付けておいた。
566 たとえば、`env' コマンドのオプションは、オペランドの前に置かなければ
567 ならない。オペランドとして指定したコマンドが、それ自身のオプションを
568 伴うことがあるからだ。
569
570    ロングオプションが使えるたいていのプログラムは、誤解の余地がない
571 かぎり、そうしたオプションの省略形を認識する。たとえば、`rmdir
572 --ignore-fail-on-non-empty' は、`rmdir --ignore-fail' という形でも
573 起動できるし、`rmdir --i' でも大丈夫だ。`ls --h' のような誤解の余地の
574 あるオプションは、まさに曖昧だと判定される。
575
576    このマニュアルで説明するプログラムの中には、`--help' や `--version'
577 オプションを、それが唯一のコマンドライン引数である場合にしか、認識
578 しないものがある。そうしたプログラムの場合、ロングオプションの省略形
579 は、常に認識されるとはかぎらない。
580
581 `--help'
582      使用法を表示して利用できるすべてのオプションを列挙し、正常終了する。
583
584 `--version'
585      バージョン番号を表示し、正常終了する。
586
587 `--'
588      オプション群の末尾を示す。これ以降に引数があれば、それが `-' で
589      始まっている場合でも、オペランドとして扱われる。たとえば、`sort --
590      -r' は、`-r' という名前のファイルから読み込むということである。
591
592
593    単独の `-' はオペランドであって、オプションのように見えるが、オプ
594 ションでは全くない。単独の `-' は、標準入力、または標準出力を表して
595 いる。後者は、前後の状況からそれが明らかな場合だ。たとえば、`sort -'
596 は、標準入力から読み込むということであり、ただの `sort' と同じである。
597 また、`tee -' は、入力したもののコピーを標準出力に二重に書き出す。使用
598 できないとはっきり断っていないかぎり、`-' は、ファイル名が要求される
599 いかなるところでもオペランドとして使用することができる。
600
601 * Menu:
602
603 * Exit status::              プログラムが成功したか失敗したかの指標。
604 * Backup options::           バックアップ・オプション (-b と -S)。
605 * Block size::               ブロックサイズ (BLOCK_SIZE と --block-size)。
606 * Floating point::           浮動小数点数の表現。
607 * Signal specifications::    --signal オプションによるシグナルの指定。
608 * Disambiguating names and IDs::  chgrp や chown のシンタクス。
609 * Random sources::           ランダムデータのソース (--random-source)。
610 * Target directory::         出力先ディレクトリの指定。
611 * Trailing slashes::         末尾のスラッシュ (--strip-trailing-slashes)。
612 * Traversing symlinks::      シムリンクをたどる (-H, -L, -P)。
613 * Treating / specially::     --preserve-root や --no-preserve-root の使用。
614 * Special built-in utilities::  組み込みコマンド `break', `:' など。
615 * Standards conformance::    POSIX 規格への準拠。
616
617 \1f
618 File: coreutils-ja.info,  Node: Exit status,  Next: Backup options,  Up: Common options
619
620 2.1 終了ステータス
621 =========================
622
623 ほとんどすべてのコマンドは、実行すると、整数の終了ステータス ("exit
624 status") を返し、それは他のコマンドの動作を変更するために使用することが
625 できる。大多数のコマンドにとって、終了ステータス `0' は成功を意味して
626 いる。失敗は `0' 以外の値によって示され、通常は `1' であるが、非標準的な
627 プラットフォームでは違うこともある。POSIX の規定が、`0' 以外であること
628 しか要求していないからである。
629
630    しかしながら、ここで詳述しているプログラムの中にも、終了ステータスと
631 して上記以外の値を返すものがあり、`0' や `1' という値に別の意味を与えて
632 いるプログラムさえ、少数ながら存在する。そうした例外的なプログラムとして
633 は、`chroot', `env', `expr', `nice', `nohup', `numfmt', `printenv',
634 `sort', `stdbuf', `test', `timeout', `tty' などを挙げることができる。
635
636 \1f
637 File: coreutils-ja.info,  Node: Backup options,  Next: Block size,  Prev: Exit status,  Up: Common options
638
639 2.2 バックアップ・オプション
640 ========================================
641
642 GNU のプログラムの中には、ファイルの新しいバージョンを書き出す前に、
643 もしそうしたければ、バックアップを作成できるものがある (少なくとも
644 `cp', `install', `ln', `mv' がそうだ)。下記のオプションは、そうした
645 バックアップを細かく制御する。こうしたオプションについては、個々の
646 プログラムの説明でも簡単に触れている。
647
648 `-b'
649 `--backup[=METHOD]'
650      通常では上書きされたり、消去されたりする各ファイルのバックアップを
651      作成する。このオプションを指定しないと、元のバージョンは破棄される
652      わけだ。作成するバックアップのタイプを決めるには、METHOD を使用
653      する。METHOD を指定せずに、このオプションを使った場合は、環境変数
654      `VERSION_CONTROL' の値が使用される。`VERSION_CONTROL' が設定されて
655      いない場合、デフォルトのバックアップタイプは `existing' である。
656
657      このオプションの短縮形である `-b' は、引数を取らないことに注意して
658      いただきたい。`-b' の使用は、`--backup=existing' を使用するのと
659      同じことである。
660
661      このオプションは、Emacs の `version-control' 変数に対応している。
662      すなわち、METHOD に指定する値は、Emacs で使用される値と同じもの
663      である。とは言え、このオプションでは、より説明的な名前も使用できる。
664      METHOD の有効な値は、以下のものである (他と区別できるならば、省略
665      した表現も使用できる)。
666
667     `none'
668     `off'
669           バックアップを作成しない。
670
671     `numbered'
672     `t'
673           どんな場合でも番号付きのバックアップを作成する。
674
675     `existing'
676     `nil'
677           番号付きのバックアップがすでに存在する場合は番号付きで、それ
678           以外の場合は単純形式で、ファイルのバックアップを作成する。
679           (訳注: 単純形式というのは、バックアップファイル名に番号を付け
680           ない形式である、`--suffix=SUFFIX' の説明を参照。)
681
682     `simple'
683     `never'
684           どんな場合でも単純形式のバックアップを作成する。`never' と
685           `none' を混同なさらないようにしていただきたい。
686
687
688 `-S SUFFIX'
689 `--suffix=SUFFIX'
690      `-b' で作成される各バックアップファイルの名前の末尾に SUFFIX を
691      付ける。このオプションが指定されていない場合は、環境変数
692      `SIMPLE_BACKUP_SUFFIX' の値が使用される。`SIMPLE_BACKUP_SUFFIX'
693      が設定されていない場合、デフォルトの SUFFIX は Emacs の場合と
694      同じで、チルダ `~' である。
695
696
697 \1f
698 File: coreutils-ja.info,  Node: Block size,  Next: Floating point,  Prev: Backup options,  Up: Common options
699
700 2.3 ブロックサイズ
701 =========================
702
703 GNU プログラムには、ディスクの使用量を「ブロック数」で表示するものが
704 いくつかある (少なくとも、`df', `du',`ls' がそうだ)。ブロックのサイズや
705 表示の書式は、使用量をわかりやすくするために、変更することができる。
706 表示に使用されるブロックサイズは、ファイルシステムのブロックサイズとは、
707 無関係である。ブロック数に端数が出る場合は、切り上げて整数にする。
708
709    デフォルトのブロックサイズの選択は、次の環境変数を順番に調べることで
710 行われる。設定されている最初のものがブロックサイズを決めることになる。
711
712 `DF_BLOCK_SIZE'
713      この環境変数は、`df' コマンドで使うデフォルトのブロックサイズを
714      指定している。同様に、`DU_BLOCK_SIZE' は `du' のデフォルトを、
715      `LS_BLOCK_SIZE' は `ls' のデフォルトを指定している。
716
717 `BLOCK_SIZE'
718      この環境変数は、上記のようなコマンド専用の環境変数が設定されて
719      いない場合に、三つのコマンドのすべてが使用するデフォルトの
720      ブロックサイズを指定している。
721
722 `BLOCKSIZE'
723      この環境変数は、上記のようなコマンド専用の環境変数と `BLOCK_SIZE'
724      のどちらも設定されていない場合に、通常、ブロック数として表示される
725      すべての値が使用するデフォルトのブロックサイズを指定している。
726      ほかの環境変数とは違って、`BLOCKSIZE' は、たとえば `ls -l' の出力に
727      含まれるファイルサイズのような、通常バイト数として表示される値には
728      影響を及ぼさない。
729
730 `POSIXLY_CORRECT'
731      `COMMAND_BLOCK_SIZE', `BLOCK_SIZE', `BLOCKSIZE' のいづれも
732      設定されていず、この変数が設定されている場合は、ブロックサイズの
733      デフォルトは、512 バイトになる。
734
735
736    上記の環境変数のいづれも設定されていない場合、ブロックサイズの
737 デフォルトは、現在のところたいていの場合、 1024 バイトである。ただし、
738 この数値は、将来変更されるかもしれない。なお、`ls' の表示するファイル
739 サイズについては、ブロックサイズのデフォルトは 1 バイトである。
740
741    ブロックサイズの指定には、1 ブロックあたりのバイト数を示す正の整数を
742 使えばよい。あるいは、`human-readable' や `si' を指定して、「人間に読み
743 やすい」書式を選ぶこともできる。整数には接尾辞 (suffix) を付けることが
744 できるが、そうした接尾辞は、`10' の累乗倍 (訳注: 10^3 倍、10^6 倍など)
745 を示す場合は、SI (国際単位系) の単位の前に付ける接頭辞 (prefix) の上位
746 互換であり、`2' の累乗倍 (訳注: 2^10 倍、2^20 倍など) を示す場合は、
747 ISO/IEC 80000-13 (以前は IEC 60027-2 だった) の接頭辞の上位互換である。
748 単位の前に付ける接頭辞については、次の URL を参照していただきたい。
749 SI prefixes:
750 (http://www.bipm.org/en/si/si_brochure/chapter3/prefixes.html).
751 ISO/IEC 80000-13 prefixes:
752 (http://physics.nist.gov/cuu/Units/binary.html).
753
754    「人間に読みやすい」書式の場合、出力するサイズの後ろに、メガバイト
755 なら `M' といった、大きさを表す文字が続く。`BLOCK_SIZE=human-readable'
756 の方は、1024 の累乗を使うので、`M' は 1,048,576 バイトを意味している。
757 `BLOCK_SIZE=si' も似ているが、こちらは 1000 の累乗を使用し、さらに `B'
758 という文字を追加する。そこで、`MB' は 1,000,000 バイトを意味すること
759 になる。
760
761    ブロックサイズの指定の先頭に `'' を付けると、出力するサイズを数桁
762 ごとに区切って表示することができる。区切りに使う記号や区切りの位置は、
763 `LC_NUMERIC' のロケールによって決まる。たとえば、アメリカ英語のロケール
764 では、`--block-size="'1kB"' と指定すれば、1234000 バイトという容量が
765 `1,234' と表示されることになるだろう。デフォルトの C ロケールの場合は、
766 区切り記号が存在しないので、先頭の `'' に効果はない。
767
768    ブロックサイズを指定する整数の後ろには、接尾辞を付けて、その整数の
769 何倍かを示すことができる。大きさを表す (訳注: M, G などの) 文字の後ろに
770 何も続けないときや、`iB' を続けるときは、1024 の累乗倍ということである。
771 それに対して、大きさを表す文字に `B' を続ける場合は、1000 の累乗倍
772 ということになる。たとえば、`1M' や `1MiB' は `1048576' と同じであり、
773 `1MB' は `1000000' と同じである。
774
775    整数を前に付けずに、接尾辞だけを指定したときの動作は、`1' が前に
776 付いているときとほぼ同じだが、大きさの表示が出力の後ろに付く点が違う。
777 たとえば、`--block-size="kB"' は、3000 を `3kB' という形で表示する。
778
779    以下の接尾辞が定義されている。`1Y' のような大きな量は、算術計算の
780 限界のためにお使いのコンピュータでは使用できないかもしれない。
781
782 `kB'
783      キロバイト (kilobyte): 10^3 = 1000 バイト。
784
785 `k'
786 `K'
787 `KiB'
788      キビバイト (kibibyte): 2^10 = 1024 バイト。`K' も使えるのは、おまけ
789      である。なお本来、SI の接頭辞 (訳注: すなわち 10^3 倍を表す接頭辞)
790      が `k' であり、ISO/IEC 80000-13 の接頭辞 (訳注: すなわち 2^10 倍を
791      表す接頭辞) が `Ki' だが、これまでの習慣や POSIX の用法では、`KiB'
792      の意味で `k' を使っている。
793
794 `MB'
795      メガバイト (megabyte): 10^6 = 1,000,000 バイト。
796
797 `M'
798 `MiB'
799      メビバイト (mebibyte): 2^20 = 1,048,576 バイト。
800
801 `GB'
802      ギガバイト (gigabyte): 10^9 = 1,000,000,000 バイト。
803
804 `G'
805 `GiB'
806      ギビバイト (gibibyte): 2^30 = 1,073,741,824 バイト。
807
808 `TB'
809      テラバイト (terabyte): 10^12 = 1,000,000,000,000 バイト。
810
811 `T'
812 `TiB'
813      テビバイト (tebibyte): 2^40 = 1,099,511,627,776 バイト。
814
815 `PB'
816      ペタバイト (petabyte): 10^15 = 1,000,000,000,000,000 バイト。
817
818 `P'
819 `PiB'
820      ペビバイト (pebibyte): 2^50 = 1,125,899,906,842,624 バイト。
821
822 `EB'
823      エクサバイト (exabyte): 10^18 = 1,000,000,000,000,000,000 バイト。
824
825 `E'
826 `EiB'
827      エクスビバイト (exbibyte): 2^60 = 1,152,921,504,606,846,976
828      バイト。
829
830 `ZB'
831      ゼタバイト (zettabyte): 10^21 = 1,000,000,000,000,000,000,000
832      バイト。
833
834 `Z'
835 `ZiB'
836      ゼビバイト (zebibyte): 2^70 = 1,180,591,620,717,411,303,424
837      バイト。
838
839 `YB'
840      ヨタバイト (yottabyte): 10^24 = 1,000,000,000,000,000,000,000,000
841      バイト。
842
843 `Y'
844 `YiB'
845      ヨビバイト (yobibyte): 2^80 = 1,208,925,819,614,629,174,706,176
846      バイト。
847
848    デフォルトのブロックサイズは、コマンドに対して `--block-size=SIZE'
849 オプションを明示的に指定することで、上書きすることができる。`-k'
850 オプションは、`--block-size=1K' と同じであり、環境変数 `POSIXLY_CORRECT'
851 が設定されていないときのデフォルトである。`-h' オプションや `--human
852 -readable' オプションは、`--block-size=human-readable' と同じである。
853 `--si' オプションは、`--block-size=si' と同じだ。なお、`ls' コマンドの
854 場合、`-k' オプションはファイルの見かけのサイズの表示に影響しないのに
855 対し、`--block-size' オプションは影響することに注意していただきたい。
856
857 \1f
858 File: coreutils-ja.info,  Node: Floating point,  Next: Signal specifications,  Prev: Block size,  Up: Common options
859
860 2.4 浮動小数点数
861 ======================
862
863 浮動小数点数を受け取ったり、生成したりするコマンドは、下層で動いている
864 システムの浮動小数点表現法を使用しており、丸めエラー、オーバーフローなど、
865 浮動小数点にかかわる問題をかかえている。最近のシステムでは、ほとんど
866 すべてが IEEE-754 の浮動小数点を採用しているので、今日では IEEE-754 の
867 動作を想定しておけば、たいていどこでも問題がない。IEEE-754 には、正と負
868 の無限があり、正と負のゼロを区別する。また、NaN (訳注: not a number)
869 という特別な値を使って、ゼロをゼロで割るといった無効な演算を表現する。
870 より詳しい情報については、デイビッド・ゴールドバーグの論文 "What Every
871 Computer Scientist Should Know About Floating-Point Arithmetic"
872 (http://www.validlab.com/goldberg/paper.pdf) をご覧になるとよい。
873
874    浮動小数点数をオプションやオペランドや入力として受け取るコマンドは、
875 C の標準関数 `strtod' や `strtold' を使って、テキストを浮動小数点数に
876 変換している。従って、そうした浮動小数点数には、`1.0e-34' や `-10e100'
877 といった指数表現が使用できる。最近の C の実装では、16 進の浮動小数点数
878 も使える。たとえば、`-0x.ep-3' といったものだが、これは -14/16 掛ける
879 2^-3 を表し、-0.109375 に等しい。小数点を表す記号が何になるかは、
880 `LC_NUMERIC' のロケールによって決まる。*Note Parsing of Floats:
881 (libc)Parsing of Floats.
882
883 \1f
884 File: coreutils-ja.info,  Node: Signal specifications,  Next: Disambiguating names and IDs,  Prev: Floating point,  Up: Common options
885
886 2.5 シグナルの指定
887 =========================
888
889 SIGNAL の指定には、`HUP' のようなシグナル名や `1' のようなシグナル番号、
890 それに、シグナルによって終了させられるときのプロセスの終了ステータスを
891 使うことができる (訳注: 最後のものは、GNU coreutils の `kill' コマンド
892 では使用できるが、シェルの組み込みコマンドのような、他の系統の `kill'
893 では使えないかもしれない)。シグナル名は、標準的な形式でも、頭に `SIG'
894 を付けた形式でも構わない。大文字小文字は区別されない。以下に挙げる
895 シグナル名とシグナル番号は、POSIX の規格に従っているすべてのシステムで
896 使用できる。
897
898 `HUP'
899      1.  ハングアップ (Hangup)。
900
901 `INT'
902      2.  端末からの割り込みシグナル (Terminal interrupt)。
903
904 `QUIT'
905      3.  端末からの中止シグナル (Terminal quit)。
906
907 `ABRT'
908      6. プロセスの中断 (Process abort)。
909
910 `KILL'
911      9.  強制終了 (Kill) (キャッチすることも無視することもできない)。
912
913 `ALRM'
914      14.  アラームクロック (Alarm Clock)。
915
916 `TERM'
917      15.  終了 (Termination)。
918
919 これ以外にもサポートされているシグナル名があるが、それに対応する
920 シグナル番号はシステムによって様々である。POSIX 1003.1-2001
921 に準拠しているすべてのシステムでは、以下のシグナルも使用できる。
922
923 `BUS'
924      メモリオブジェクトの未定義領域へのアクセス。
925
926 `CHLD'
927      チャイルドプロセスが終了 (terminate)、一時停止 (stop)、または再開
928      (continue) した。
929
930 `CONT'
931      実行が停止 (stop) しているならば、再開 (continue) する。
932
933 `FPE'
934      誤った算術演算。
935
936 `ILL'
937      不正な命令。
938
939 `PIPE'
940      読み手のないパイプへの書き出し。
941
942 `SEGV'
943      無効なメモリ参照。
944
945 `STOP'
946      実行を一時停止する (stop) (キャッチすることも無視することも
947      できない)。
948
949 `TSTP'
950      端末からの一時停止シグナル。
951
952 `TTIN'
953      バックグラウンドプロセスが端末から読み込もうとしている。
954
955 `TTOU'
956      バックグラウンドプロセスが端末へ書き出そうとしている。
957
958 `URG'
959      高帯域幅のデータがソケットに達している。
960
961 `USR1'
962      ユーザ定義シグナル 1。
963
964 `USR2'
965      ユーザ定義シグナル 2。
966
967 XSI 拡張に対応している POSIX 1003.1-2001 のシステムでは、以下の
968 シグナルも使用できる。
969
970 `POLL'
971      ポーリング可能なイベント。
972
973 `PROF'
974      プロファイリング・タイマーがタイムアウトした。
975
976 `SYS'
977      不正なシステムコール。
978
979 `TRAP'
980      Trace/breakpoint トラップ。
981
982 `VTALRM'
983      バーチャル・タイマーがタイムアウトした。
984
985 `XCPU'
986      CPU 時間の上限を超過した。
987
988 `XFSZ'
989      ファイルサイズの上限を超過した。
990
991 XRT 拡張に対応している POSIX 1003.1-2001 のシステムでは、上記以外にも、
992 少なくとも 8 個のリアルタイム・シグナルが使用できる。すなわち、`RTMIN',
993 `RTMIN+1', ..., `RTMAX-1', `RTMAX' などだ。
994
995 \1f
996 File: coreutils-ja.info,  Node: Disambiguating names and IDs,  Next: Random sources,  Prev: Signal specifications,  Up: Common options
997
998 2.6 chown と chgrp: ユーザ名かユーザ ID かを明確にする
999 ======================================================================
1000
1001 `chown' や `chgrp' コマンドでは、引数として OWNER や GROUP を渡す際に
1002 名前で指定しても、ID 番号で指定してもよい。この指定法が曖昧であること
1003 は明らかである。もし、ユーザ名やグループ名が数字の連続だったら、どう
1004 だろう? (1) コマンドはそれをユーザ名と解釈すべきだろうか? ID 番号と
1005 解釈すべきだろうか? POSIX では、「`chown' や `chgrp' は、指定された
1006 文字列をまず名前として解決することを試み、それに失敗した場合のみ、ID
1007 番号として解釈しようとすること」と規定している。この規定では、ユーザが
1008 引数として ID 番号、たとえば 42 を指定しようとすると、厄介なことになる。
1009 42 というユーザ名が存在し、それにユーザ ID として別の数字、たとえば
1010 1000 が割り当てられているといったややこしい状況でも、うまく処理でき
1011 なければならないとすると、困ったことになるのだ。単に `chown 42 F' を
1012 実行したのでは、ファイル `F' の所有者の ID 番号が 1000 になってしまう。
1013 これはユーザが意図した動作ではない。
1014
1015    GNU の `chown' や `chgrp' は、この問題に対する回避策を提供している。
1016 この回避策を使用すると、データベースの検索を省略するので、処理速度が
1017 著しく向上することがあるというおまけまである。ユーザ ID 番号やグループ
1018 ID 番号を指定する際には、その前に `+' を付けさえすればよいのだ。そうする
1019 ことで、整数として解釈するように強制できるのである。
1020
1021      chown +42 F
1022      chgrp +$numeric_group_id another-file
1023      chown +0:+0 /
1024
1025    GNU の `chown' や `chgrp' は、`+' が前に付く各文字列に対してユーザ名
1026 の検索プロセスを省略する。何故なら、`+' を含む文字列が有効なユーザ名や
1027 グループ名であることは絶対にないからだ。この書き方は、よく使われている
1028 たいていの Unix システムで使用できるが、Solaris 10 では使用できない。
1029
1030    ---------- Footnotes ----------
1031
1032    (1) 環境によっては、ユーザ名に数字を使うのは、よくあることである。
1033
1034 \1f
1035 File: coreutils-ja.info,  Node: Random sources,  Next: Target directory,  Prev: Disambiguating names and IDs,  Up: Common options
1036
1037 2.7 ランダムデータのソース
1038 =====================================
1039
1040 `shuf', `shred', `sort' コマンドは、作業を行うためにランダムデータを
1041 必要とすることがある。たとえば、`sort -R' ではハッシュ関数をランダムに
1042 選ばねばならず、その選択のためにランダムデータを必要としている。
1043
1044    デフォルトでは、こうしたコマンドは、プログラム内部の擬似乱数ジェネ
1045 レータを、少量のエントロピーによって初期化して使用するが、
1046 `--random-source=FILE' オプションで、外部ソースを使うように指示すること
1047 も可能だ。FILE の中身のバイト数が不十分なときは、エラーが通知される。
1048
1049    たとえば、デバイスファイル `/dev/urandom' を、ランダムデータのソース
1050 として使用してもよい。通常、このデバイスは、デバイスドライバーなどのソース
1051 から環境ノイズを集めて、エントロピー・プールに入れ、そのプールを使って、
1052 ランダムなビットを生成する。プールにデータが足りない場合は、内部プールを
1053 再利用し、暗号的に安全な擬似乱数ジェネレータを使って、より多くのビットを
1054 作り出す。とは言え、このデバイスは、大量のランダムデータの生成のために
1055 設計されたものではなく、比較的動作が遅いことは、承知しておいた方がよい。
1056
1057    たいていの実用には、`/dev/urandom' で十分だが、プライベートなデータの
1058 高度で長期に渡る保護が必要になるアプリケーションでは、`/dev/random' や
1059 `/dev/arandom' のような他のデータソースが必要になるかもしれない。どんな
1060 データソースが利用できるかは、ご使用のオペレーティング・システム次第である。
1061
1062    前回コマンドを実行したときの結果を再現するには、何らかのランダム
1063 データをファイルに保存しておき、そのコマンドの一回目の実行でも二回目
1064 の実行でも、ランダムソースとしてそのファイルを使用すればよい。
1065
1066 \1f
1067 File: coreutils-ja.info,  Node: Target directory,  Next: Trailing slashes,  Prev: Random sources,  Up: Common options
1068
1069 2.8 出力先ディレクトリ
1070 ===============================
1071
1072 通常、`cp', `install', `ln', `mv' といったコマンドは、最後のオペランドが
1073 ディレクトリやディレクトリへのシンボリックリンクの場合、それを特別
1074 扱いする。たとえば、`cp source dest' は、`dest' がディレクトリならば、
1075 `cp source dest/source' と同じことである。時には、そうした動作が、
1076 ユーザが求めている動作とは違うこともある。そこで、こうしたコマンドは、
1077 よりきめ細かな制御ができるように、以下のオプションをサポートしている。
1078
1079 `-T'
1080 `--no-target-directory'
1081      最後のオペランドが、ディレクトリやディレクトリへのシンボリック
1082      リンクであっても、それを特別扱いしない。このオプションは、共有領域
1083      で作業する複数のプログラムが、競合状態にならないようにしてくれる。
1084      たとえば、`mv /tmp/source /tmp/dest' というコマンドが正常終了して
1085      も、`/tmp/source' が `/tmp/dest' にリネームされたという保証はない。
1086      もし、何かほかのプロセスが `/tmp/dest' をディレクトリとして作成して
1087      いたら、`/tmp/dest/source' という名前のファイルになってしまうかも
1088      しれないのだ。それに対して、`mv -T /tmp/source /tmp/dest' が正常
1089      終了した場合は、`/tmp/source' は間違いなく `/tmp/dest' にリネーム
1090      されている。
1091
1092      反対に、最後のオペランドをディレクトリとして扱わせたい、それが
1093      できない場合は、エラーメッセージを出したい、ということもある。
1094      そういうときは、`--target-directory' (`-t') オプションを使用すれば
1095      よい。(訳注: ターゲット・ディレクトリをコマンドラインの最後に置く
1096      代わりに、`--target-directory' オプションの引数にするということ
1097      である。)
1098
1099 `-t DIRECTORY'
1100 `--target-directory=DIRECTORY'
1101      DIRECTORY を、出力されるファイルすべてのディレクトリ部分として
1102      使用する。
1103
1104      ほとんどのプログラムで、コマンドラインの扱いは次のようになって
1105      いる。オプションや、一定数の (0 個のこともある) 位置の固定した
1106      引数の処理が終われば、引数リストにはもう何も残っていないか、
1107      残っているとすれば、それはすべて同じように処理されることになる
1108      項目 (通常はファイル) のリストのはずある。`xargs' プログラムは、
1109      こうした約束ごとに沿ってうまく動くように作られている。
1110
1111      `mv' ファミリーのコマンドが変わっているのは、引数の数が不定であり、
1112      しかも最後の引数を特別扱いするという点である (すなわちターゲット・
1113      ディレクトリとして扱う)。そのため、ある種の作業の実行は、一筋縄では
1114      いかない。たとえば、「すべてのファイルをここから ../d/ に移動する」
1115      がそうだ。何故なら、`mv * ../d/' では、引数を入れておくための領域を
1116      使い切ってしまうかもしれないし、そうかと言って、`ls | xargs ...'
1117      には、実行対象コマンド (訳注: ここでは、`mv') を起動するたびに
1118      最後の引数を特別に指定するためのすっきりした方法がないからである。
1119      (あるシェル・コマンドを駆使すれば、やることができるが、それでは、
1120      人間の労力と脳力を過当に要求することになる。)
1121
1122      `--target-directory' (`-t') オプションを使用すると、`cp', `mv',
1123      `ln', `install' といったプログラムを `xargs' と一緒に使うとき、
1124      たいへん都合がよい。たとえば、カレントディレクトリから、同じディ
1125      レクトリ階層にある  `d' ディレクトリへファイルを移動するには、
1126      こんなふうにすればよい。
1127
1128           ls | xargs mv -t ../d --
1129
1130      しかし、これでは、ファイル名の先頭に `.' の付くファイルが移動しな
1131      い。GNU `find' プログラムを使用しているなら、次のコマンドでそうした
1132      ファイルも移動させることができる。
1133
1134           find . -mindepth 1 -maxdepth 1 \
1135             | xargs mv -t ../d
1136
1137      とは言え、上記のどちらの方法も、カレントディレクトリにファイルが
1138      一つもない場合や、空白などの特殊文字を名前に含むファイルがある場合
1139      には、うまく行かない。次の例はそうした制限を一掃しているが、GNU
1140      `find' と GNU `xargs' の両方が必要である。
1141
1142           find . -mindepth 1 -maxdepth 1 -print0 \
1143             | xargs --null --no-run-if-empty \
1144                 mv -t ../d
1145
1146
1147 `--target-directory' (`-t') オプションと `--no-target-directory' (`-T')
1148 オプションを一緒に使うことはできない。
1149
1150 \1f
1151 File: coreutils-ja.info,  Node: Trailing slashes,  Next: Traversing symlinks,  Prev: Target directory,  Up: Common options
1152
1153 2.9 末尾のスラッシュ
1154 ============================
1155
1156 いくつかの GNU プログラム (少なくとも、`cp' と `mv') では、SOURCE 引数を
1157 処理する前に、その引数の末尾にスラッシュが付いていたら、それを除去する
1158 ことができるようになっている。`--strip-trailing-slashes' オプションを
1159 使用することによって、この動作が有効になる。
1160
1161    これが役に立つのは、SOURCE 引数の末尾にスラッシュが付いていて、
1162 しかも、その引数がディレクトリへのシンボリックリンクを指定している
1163 かもしれないときだ。そうした状況は、実のところ、それほど珍しくない。
1164 と言うのも、シェルの中には、そうしたシンボリックリンクに対して
1165 ファイル名の補完を行うとき、末尾にスラッシュを自動的に付加するものが
1166 あるからだ。このオプションを指定しないと、たとえば `mv' は、(システムの
1167 rename 関数を通してだが、) 末尾にスラッシュが付いていることを、「シン
1168 ボリックリンクの参照をたどれ」という指示として解釈しなければならず、
1169 その結果、シンボリックリンクではなく、間接的に参照されているディレク
1170 トリの方をリネームしなければならなくなる。こうした動作がデフォルトに
1171 なっているのは意外に思えるかもしれないが、POSIX で要求されている動作
1172 であり、POSIX 規格のほかの部分とも首尾一貫している。
1173
1174 \1f
1175 File: coreutils-ja.info,  Node: Traversing symlinks,  Next: Treating / specially,  Prev: Trailing slashes,  Up: Common options
1176
1177 2.10 シンボリックリンクをたどる
1178 ============================================
1179
1180 以下のオプションは、`--recursive' (`-R') オプションも同時に指定されて
1181 いるとき、`chown' コマンドや `chgrp' コマンドがディレクトリ階層をどう
1182 たどるか、そのたどり方を変更する。以下のオプションを複数個指定した
1183 場合は、最後に指定したものだけが効果を持つ。こうしたオプションが指定
1184 しているのは、ディレクトリに対するシンボリックリンクを処理する際に、
1185 そのシンボリックリンクそのものを操作の対象にするのか、それとも、その
1186 ディレクトリ以下の階層にあるすべてのファイルを操作の対象にするのかと
1187 いうことである。
1188
1189    こうしたオプションは、`--dereference' や `--no-dereference' (`-h')
1190 とは、全く別のものである。あちらは、シンボリックリンクを変更するのか、
1191 それとも、その参照先を変更するのかを制御している。
1192
1193 `-H'
1194      `--recursive' (`-R') オプションが指定されている場合に、コマンド
1195      ラインで指定された引数がディレクトリへのシンボリックリンクならば、
1196      それをたどる。
1197
1198 `-L'
1199      ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
1200      リックリンクに出会ったら、必ずそれをたどる。
1201
1202 `-P'
1203      シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
1204      どれも指定されていないときの、デフォルトである。
1205
1206
1207 \1f
1208 File: coreutils-ja.info,  Node: Treating / specially,  Next: Special built-in utilities,  Prev: Traversing symlinks,  Up: Common options
1209
1210 2.11 `/' (ルート) を特別扱いする
1211 ==========================================
1212
1213 ある種のコマンドは、ディレクトリ階層全体に対して破壊的な作用を及ぼす
1214 可能性がある。たとえば、しかるべき特権を持ったユーザが、間違えて `rm
1215 -rf / tmp/junk' を実行したら、システム全体のすべてのファイルが消えて
1216 しまうかもしれないのだ。そうしたコマンドの使用が正当であることは、
1217 めったにないので、GNU の `rm' は、`/' に還元されるようないかなる
1218 ディレクトリに対しても、通常では、操作を拒否するようになっている。
1219 もし、本当にシステムのすべてのファイルを消去しようと思うのなら、
1220 `--no-preserve-root' オプションを使用すればよい。とは言え、ほとんどの
1221 用途で、デフォルトの動作 (明示的に指定するには、`--preserve-root'
1222 オプションを使う) の方が安全である。
1223
1224    `chgrp', `chmod', `chown' などのコマンドも、ディレクトリ階層全体に
1225 対して破壊的な作用を及ぼす可能性がある。従って、こうしたコマンドもまた、
1226 上記のオプションをサポートしている。こうしたコマンドは、`rm' とは
1227 違って、ファイルを実際に削除してしまうわけではないが、`/' から再帰的に
1228 働くときは、一層危険だと言うこともできる。と言うのは、たいていの場合、
1229 処理速度がずっと早いので、注意力のあるユーザがコマンドを中断できるより
1230 前に、`rm' の場合より、もっと多くのファイルに被害を与えてしまうからだ。
1231 Unix の習慣も POSIX の規格も、こうしたコマンドが `/' から再帰的に働く
1232 ことを要求している。それ故、デフォルトが `--no-preserve-root' になって
1233 いるのだが、こうしたコマンドは、`--preserve-root' オプションを使った方
1234 が、ほとんどの用途でより安全である。面倒ならば、エイリアスか、シェル関数
1235 を作って、`--preserve-root' を指定しておけばよいのだ。
1236
1237    また、`--preserve-root' を指定すると、`/' を指しているシンボリック
1238 リンクの参照をたどる場合でも、`chgrp' や `chown' が、`/' のグループや
1239 所有者を変更しなくなることも、憶えておいていただきたい。(訳注: `chgrp'
1240 や `chown' の解説を見ていただけばわかるが、これは、`--recursive' (`-R')
1241 を同時に使っているときの話である。)
1242
1243 \1f
1244 File: coreutils-ja.info,  Node: Special built-in utilities,  Next: Standards conformance,  Prev: Treating / specially,  Up: Common options
1245
1246 2.12 特殊ビルトイン・ユーティリティ
1247 ==================================================
1248
1249 プログラムの中には、`nice' のように、ほかのプログラムを起動できるものが
1250 ある。たとえば、`nice cat file' というコマンドは、コマンド `cat file' を
1251 実行することによって、`cat' プログラムを起動する。しかしながら、`exit'
1252 のような特殊ビルトイン・ユーティリティ ("special built-in utilities")
1253 は、この方法で起動することができない。一例を挙げれば、`nice exit' と
1254 いうコマンドは、どんな動作をするかが明確に定義されていない。終了する
1255 代わりに、エラーメッセージを出すかもしれないのだ。
1256
1257    POSIX 1003.1-2004 の規格では、特殊ビルトイン・ユーティリティとして
1258 次のものを挙げている。
1259
1260      . : break continue eval exec exit export readonly return set shift
1261      times trap unset
1262
1263    たとえば、`.', `:', `exec' は、特殊ビルトイン・ユーティリティなので、
1264 `nice . foo.sh', `nice :', `nice exec pwd' といったコマンドの動作は、
1265 読者が予想なさるかもしれないようなものにはならない。
1266
1267    (訳注: exec, exit など対して、同じシェルの組み込みコマンドでも、cd,
1268 alias, fg, kill, pwd, true, umask などは、通常ビルトイン・ユーティリティ
1269 ("regular built-in utilities") と呼ばれている。もっとも、nice などから
1270 実行できないという点では、特殊ビルトイン・ユーティリティも通常ビルト
1271 イン・ユーティリティも変わりがない。nice などから起動できるとすれば、
1272 それは同名の実行ファイルが存在するからだ)。
1273
1274    多くのシェルは、上記のリストを拡張している。たとえば、bash では、
1275 `history' や `suspend' といったコマンドが特殊ビルトイン・ユーティリティ
1276 に追加されている。そこで、bash の場合、`nice suspend' というコマンドを
1277 実行すると、シェルのサスペンドは起こらず、エラーメッセージが出力される。
1278
1279 \1f
1280 File: coreutils-ja.info,  Node: Standards conformance,  Prev: Special built-in utilities,  Up: Common options
1281
1282 2.13 規格への準拠
1283 =======================
1284
1285 GNU ユーティリティのデフォルトの動作が POSIX の規格と一致しない場合
1286 が、若干ながら存在する。そうした非互換性を抑制するには、環境変数
1287 `POSIXLY_CORRECT' を設定すればよい。もっとも、POSIX に準拠しているか
1288 否かを点検しているのでもないかぎり、`POSIXLY_CORRECT' を設定する必要は、
1289 おそらくないだろうが。
1290
1291    POSIX の新しいバージョンが、古いバージョンと非互換であることが、
1292 ときどきある。たとえば、POSIX の昔のバージョンでは、`sort +1' という
1293 コマンドは、各入力行の二番目以後のフィールドに基づいて、行の並べ替えを
1294 行うことになっていた。ところが、POSIX 1003.1-2001 以降では、同じコマンド
1295 が `+1' という名前のファイルの行を並べ替えることになっている。そこで、
1296 フィールドに基づいた並べ替えを行うには、`sort -k 2' という別のコマンド
1297 を使わなければならないのだ。
1298
1299    通常 GNU のユーティリティは、お使いのシステムが規格として採用して
1300 いる POSIX のバージョンに従っている。GNU ユーティリティを POSIX の別の
1301 バージョンに準拠させるには、環境変数 `_POSIX2_VERSION' を設定すれば
1302 よい。この環境変数の値は、YYYYMM という形式であり、その規格が何年の
1303 何月に採択されたかを示している。`_POSIX2_VERSION' の値としては、現在
1304 のところ、次の三つがサポートされている。すなわち、`199209', `200112',
1305 `200809' であり、それぞれ POSIX 1003.2-1992, POSIX 1003.1-2001, POSIX
1306 1003.1-2008 を表している。一例を挙げよう。使っているシステムが比較的
1307 新しいのに、動かしているソフトウェアが POSIX の昔のバージョンを前提と
1308 していて、`sort +1' や `tail +10' を使用している場合は、環境に
1309 `_POSIX2_VERSION=199209' を設定することで、互換性の問題を回避する
1310 ことができる。
1311
1312 \1f
1313 File: coreutils-ja.info,  Node: Output of entire files,  Next: Formatting file contents,  Prev: Common options,  Up: Top
1314
1315 3 ファイル全体の出力
1316 *****************************
1317
1318 次のコマンドはファイル全体を読み込んで、書き出す。内容に対して何らかの
1319 変換を行うこともある。
1320
1321 * Menu:
1322
1323 * cat invocation::           ファイルを結合して、書き出す。
1324 * tac invocation::           ファイルを結合し、ファイルごとに逆順で書き出す。
1325 * nl invocation::            行番号を付けて、ファイルを書き出す。
1326 * od invocation::            ファイルを 8 進数などの形式で書き出す。
1327 * base64 invocation::        データを ASCII 文字で表示可能なデータに変換する。
1328
1329 \1f
1330 File: coreutils-ja.info,  Node: cat invocation,  Next: tac invocation,  Up: Output of entire files
1331
1332 3.1 `cat': ファイルを結合して、書き出す
1333 =====================================================
1334
1335 `cat' は、各 FILE (`-' は標準入力を意味する) を標準出力にコピーする。
1336 FILE が一つも指定されていない場合は、標準入力から読み込む。
1337
1338    書式:
1339
1340      cat [OPTION] [FILE]...
1341
1342    このプログラムでは以下のオプションが使用できる。参照: *note Common
1343 options::.
1344
1345 `-A'
1346 `--show-all'
1347      `-vET' と同じ。
1348
1349 `-b'
1350 `--number-nonblank'
1351      空行以外のすべての出力行に、1 から始まる番号を付ける。
1352
1353 `-e'
1354      `-vE' と同じ。
1355
1356 `-E'
1357 `--show-ends'
1358      各行の末尾に `$' 記号を付ける。
1359
1360 `-n'
1361 `--number'
1362      すべての出力行に、1 から始まる番号を付ける。このオプションは、`-b'
1363      が有効になっているときは、無視される。
1364
1365 `-s'
1366 `--squeeze-blank'
1367      連続する空行の表示を抑制する。すなわち、連続する複数の空行の代わりに、
1368      たった 1 行だけ空行を出力する。
1369
1370 `-t'
1371      `-vT' と同じ。
1372
1373 `-T'
1374 `--show-tabs'
1375      TAB 文字を `^I' と表示する。
1376
1377 `-u'
1378      無視される。POSIX との互換のためにある。
1379
1380 `-v'
1381 `--show-nonprinting'
1382      LFD と TAB 以外の制御文字を `^' 表記を使って表示する。高位ビットの
1383      セットされている文字の前には、`M-' を付ける。
1384
1385
1386    テキストファイルとバイナリファイルを区別する MS-DOS のようなシステム
1387 では、`cat' は通常、バイナリモードで読み書きを行う。しかしながら、
1388 `-bensAE' といったオプションの一つが使われている場合や、読み込みの
1389 対象が標準入力で、しかも、標準入力が端末である場合は、`cat' はテキスト
1390 モードで読み込みを行う。同様に出力においても、`-bensAE' といったオプ
1391 ションの一つが使用されていたり、標準出力が端末である場合は、`cat' は
1392 テキストモードで書き出しを行う。
1393
1394    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1395
1396    用例:
1397
1398      # f の内容、標準入力、g の内容の順で出力する。
1399      cat f - g
1400
1401      # 標準入力を標準出力にコピーする。
1402      cat
1403
1404 \1f
1405 File: coreutils-ja.info,  Node: tac invocation,  Next: nl invocation,  Prev: cat invocation,  Up: Output of entire files
1406
1407 3.2 `tac': ファイルを結合し、ファイルごとに逆順で書き出す
1408 ================================================================================
1409
1410 `tac' は、各 FILE (`-' は標準入力を意味する) を、FILE ごとにレコード
1411 (records、デフォルトでは行) の順番を逆にして、標準出力にコピーする。
1412 FILE が一つも指定されていない場合は、標準入力から読み込む。
1413
1414    書式:
1415
1416      tac [OPTION]... [FILE]...
1417
1418    レコード ("records") は、ある文字列 (デフォルトでは改行) が出現する
1419 ことによって区切られる。出力の際、デフォルトでは、この区切り文字列は、
1420 ファイル中でその区切り文字列の直前にあるレコードの末尾に付加される。
1421
1422    このプログラムでは以下のオプションが使用できる。参照: *note Common
1423 options::.
1424
1425 `-b'
1426 `--before'
1427      出力の際、区切り文字列は、ファイル中でその区切り文字列の直後に来る
1428      レコードの先頭に付加される。
1429
1430 `-r'
1431 `--regex'
1432      区切り文字列を正規表現として処理する。
1433
1434 `-s SEPARATOR'
1435 `--separator=SEPARATOR'
1436      改行の代わりに、SEPARATOR をレコード区切り文字列 (record separator)
1437      として使用する。
1438
1439
1440    テキストファイルとバイナリファイルを区別する MS-DOS のようなシステム
1441 では、`tac' はバイナリモードで読み書きを行う。
1442
1443    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1444
1445    用例:
1446
1447      # ファイルを一字一字逆にする。
1448      tac -r -s 'x\|[^x]'
1449
1450 \1f
1451 File: coreutils-ja.info,  Node: nl invocation,  Next: od invocation,  Prev: tac invocation,  Up: Output of entire files
1452
1453 3.3 `nl': 行番号を付けて、ファイルを書き出す
1454 =============================================================
1455
1456 `nl' は、各 FILE (`-' は標準入力を意味する) を、全部の行、または、
1457 一部の行に行番号を付けて、標準出力に書き出す。FILE が一つも指定されて
1458 いない場合は、標準入力から読み込む。
1459
1460    書式:
1461
1462      nl [OPTION]... [FILE]...
1463
1464    `nl' は、入力されたものを (論理) ページに分解する。デフォルトでは、
1465 行番号は各論理ページの先頭で 1 にリセットされる。`nl' は、すべての
1466 入力ファイルをまとめて、一つのドキュメントとして扱う。従って、入力
1467 ファイルが変わるたびに、論理ページや行番号がリセットされることはない。
1468
1469    論理ページは、三つのセクションからなる。すなわち、ヘッダ、本文、
1470 フッタである。どのセクションも空であって構わない。セクションごとに
1471 他のセクションとは異なる番号付けの方式を選ぶこともできる。
1472
1473    入力ファイル中で論理ページの各セクションが始まる位置を指示するには、
1474 以下の区切り文字列の一つのみからなる行を使用する。
1475
1476 `\:\:\:'
1477      ヘッダの先頭。
1478
1479 `\:\:'
1480      本文の先頭。
1481
1482 `\:'
1483      フッタの先頭。
1484
1485    上記の文字列を構成する二文字は、オプションを使って (下記参照)、`\'
1486 と `:' の組み合わせ以外のものに、変更することができる。だが、各文字列
1487 のパターンや長さは、変えることができない。
1488
1489    セクションの区切りは、出力では空行に置き換えられる。入力ファイル中の
1490 最初のセクション区切り文字列より前にあるテキストは、いかなるテキストも、
1491 本文セクションの一部と見なされる。従って、`nl' は、セクションの区切りを
1492 全く含まないファイルを、一個の本文セクションとして扱う。
1493
1494    このプログラムでは以下のオプションが使用できる。参照: *note Common
1495 options::.
1496
1497 `-b STYLE'
1498 `--body-numbering=STYLE'
1499      各論理ページの本文セクションにおける行の番号付けの方式を選択する。
1500      行に番号が付かない場合、行番号の現在値は増加しないが、それでも
1501      行番号の区切り文字は行の前に付く (訳注: ここで言う行番号の区切り
1502      文字 (line number separator character) とは、行番号とテキストの
1503      区切り文字ではなく、行番号を揃えるために行頭と行番号との間に
1504      置かれる空白のことらしい)。番号付けの方式には、以下のものがある。
1505
1506     `a'
1507           すべての行に番号を振る。
1508
1509     `t'
1510           空ではない行にのみ番号を振る (本文のデフォルト)。
1511
1512     `n'
1513           行番号を付けない (ヘッダとフッタのデフォルト)。
1514
1515     `pBRE'
1516           基本正規表現 BRE にマッチする部分を含む行にのみ番号を振る。
1517           *Note Regular Expressions: (grep)Regular Expressions.
1518
1519 `-d CD'
1520 `--section-delimiter=CD'
1521      セクションの区切り文字を CD にする。デフォルトは `\:'。C のみを指定
1522      すると、二番目の文字は、デフォルトと同じ `:' になる。(`\' などの
1523      メタ文字は、シェルが展開しないように、引用符やバックスラッシュで保護
1524      するのをお忘れなく。)
1525
1526 `-f STYLE'
1527 `--footer-numbering=STYLE'
1528      `--body-numbering' と同様。
1529
1530 `-h STYLE'
1531 `--header-numbering=STYLE'
1532      `--body-numbering' と同様。
1533
1534 `-i NUMBER'
1535 `--line-increment=NUMBER'
1536      行番号を NUMBER づつ増やす (デフォルトは 1)。
1537
1538 `-l NUMBER'
1539 `--join-blank-lines=NUMBER'
1540      空行にも番号を付けるとき、連続する NUMBER (デフォルトは 1) 行の
1541      空行を 1 論理行と数え、最後の空行にのみ番号を振る。連続する空行が
1542      NUMBER 行未満のときは、番号を振らない。空行というのは、文字を全く
1543      含まない、スペースやタブさえも含まない行のことである。
1544
1545 `-n FORMAT'
1546 `--number-format=FORMAT'
1547      行番号付けのフォーマットを選択する (デフォルトは `rn')。
1548
1549     `ln'
1550           左詰めにする。先頭を 0 で埋めない。
1551
1552     `rn'
1553           右詰めにする。先頭を 0 で埋めない。
1554
1555     `rz'
1556           右詰めにする。先頭を 0 で埋める。
1557
1558 `-p'
1559 `--no-renumber'
1560      論理ページの先頭で行番号をリセットしない。
1561
1562 `-s STRING'
1563 `--number-separator=STRING'
1564      出力中で行番号とテキスト部分との区切りに STRING を使う (デフォルト
1565      はタブ文字)。
1566
1567 `-v NUMBER'
1568 `--starting-line-number=NUMBER'
1569      論理ページごとに行番号を NUMBER から始める (デフォルトは 1)。
1570
1571 `-w NUMBER'
1572 `--number-width=NUMBER'
1573      行番号に  NUMBER 個の文字を使用する (デフォルトは 6 文字)。
1574
1575
1576    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1577
1578 \1f
1579 File: coreutils-ja.info,  Node: od invocation,  Next: base64 invocation,  Prev: nl invocation,  Up: Output of entire files
1580
1581 3.4 `od': ファイルを 8 進数などの形式で書き出す
1582 ================================================================
1583
1584 `od' は、各 FILE (`-' は標準入力を意味する) の内容を、曖昧さの余地がない
1585 形で標準出力に書き出す。FILE が一つも指定されていない場合は、標準入力
1586 から読み込む。
1587
1588    書式:
1589
1590      od [OPTION]... [FILE]...
1591      od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
1592      od [OPTION]... --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
1593
1594    各出力行の構成は、入力中の位置をオフセットで表したものの後に、
1595 ファイルのデータをいくつかのまとまりに分けたものが続くという形に
1596 なっている。デフォルトでは、`od' はオフセットを 8 進数で表示する。
1597 ファイル・データの個々のまとまりは、入力を C 言語の `short int' ごとに
1598 分けたものであり、1 個の 8 進数として表示される。
1599
1600    OFFSET を指定した場合、それは、整形と出力を始める前に、入力を
1601 何バイト読み飛ばすかを示している。デフォルトでは、OFFSET は 8 進数と
1602 見なされるが、数字の後ろに小数点を付ければ、10 進数と見なされる。
1603 小数点が指定されず、オフセットの数字が `0x' や `0X' で始まっている場合
1604 は、16 進数として解釈される。もし、数字の後ろに `b' が付いているなら
1605 ば、読み飛ばすバイト数は、OFFSET に 512 を掛けたものになる。
1606
1607    (訳注: 数字の後ろに小数点を付けることで OFFSET が 10 進数であること
1608 を示す方法は、現在では無効のようである。オフセットを 10 進数で指定した
1609 ければ、`-j' オプションを使用した方がよい。)
1610
1611    コマンドが「書式」における第一の型と第二の型のどちらとも取れるとき
1612 は、最後のオペランドが `+' で始まっている場合や、オペランドが 2 個で 2
1613 番目のオペランドが数字で始まっている場合は、第二の型だと見なされる。
1614 たとえば、`od foo 10' や `od +10' では、`10' はオフセットである。
1615 それに対して、`od 10' では、`10' はファイル名である。
1616
1617    このプログラムでは以下のオプションが使用できる。参照: *note Common
1618 options::.
1619
1620 `-A RADIX'
1621 `--address-radix=RADIX'
1622      ファイル・オフセットの表示に使う基数を選択する。RADIX には、
1623      以下の一つが使える。
1624
1625     `d'
1626           10 進数
1627
1628     `o'
1629           8 進数
1630
1631     `x'
1632           16 進数
1633
1634     `n'
1635           なし (オフセットを表示しない)
1636
1637      デフォルトは 8 進数である。
1638
1639 `-j BYTES'
1640 `--skip-bytes=BYTES'
1641      整形と出力を行う前に、入力を BYTES バイト読み飛ばす。BYTES が `0x'
1642      や `0X' で始まっている場合は、16 進数と見なされる。`0' のみで
1643      始まっている場合は、8 進数だ。どちらでもない場合は、10 進数である。
1644      BYTES は、整数であり、 以下に挙げるような何倍かを示す接尾辞を
1645      後ろに付けることもできる。 接尾辞だけ指定してもよい (訳注:
1646      その場合は、1 が前にあるものと 見なされる)。
1647           `b'  =>            512 ("blocks")
1648           `KB' =>           1000 (KiloBytes)
1649           `K'  =>           1024 (KibiBytes)
1650           `MB' =>      1000*1000 (MegaBytes)
1651           `M'  =>      1024*1024 (MebiBytes)
1652           `GB' => 1000*1000*1000 (GigaBytes)
1653           `G'  => 1024*1024*1024 (GibiBytes)
1654      `T', `P', `E', `Z', `Y' についても同様。
1655
1656 `-N BYTES'
1657 `--read-bytes=BYTES'
1658      入力から最大で BYTES バイト出力する。`bytes' に接頭辞や接尾辞を
1659      付けると、`-j' オプションの場合と同じように解釈される。
1660
1661 `-S BYTES'
1662 `--strings[=BYTES]'
1663      通常の出力はせず、文字列定数 ("string constants") のみを出力する。
1664      すなわち、BYTES バイト以上の連続する ASCII 表示文字で、ゼロバイト
1665      (ASCII NUL) が続くものを出力するわけだ。BYTES に接頭辞や接尾辞を
1666      付けると、`-j' オプションの場合と同じように解釈される。
1667
1668      `--strings' に続く BYTES が省略された場合、デフォルトは 3 である。
1669
1670 `-t TYPE'
1671 `--format=TYPE'
1672      ファイルデータの出力形式を選択する。TYPE は、1 個以上の下記の形式
1673      指定文字からなる文字列である。一つの TYPE 文字列に複数の形式指定
1674      文字が含まれている場合や、このオプションを複数回使用した場合は、`od'
1675      は出力行ごとに、指定された各データ形式で表現したその行を、指定された
1676      順番で書き出す。
1677
1678      どんな形式指定であれ、その最後に "z" を付けると、形式指定によって
1679      生成された出力行の後ろに、表示可能文字を 1 バイト文字によって表現
1680      したものが、出力される。
1681
1682     `a'
1683           文字の名称 (訳注: たとえば、A は A、改行文字は nl)。最上位
1684           ビットは無視する。
1685
1686     `c'
1687           表示可能な 1 バイト文字、C 言語のバックスラッシュ・
1688           エスケープ、あるいは 3 桁の 8 進数。
1689
1690     `d'
1691           符号付き 10 進数
1692
1693     `f'
1694           浮動小数点数 (*note Floating point::)
1695
1696     `o'
1697           8 進数
1698
1699     `u'
1700           符号なし 10 進数
1701
1702     `x'
1703           16 進数
1704
1705      `a' 形式の出力では、空白文字は `sp'、改行文字は `nl'、ゼロバイトは
1706      `nul' といった具合に表現される。このとき、各バイトの下位 7 ビット
1707      のみが使われ、最上位ビットは無視される。`c' 形式の出力では、上記の
1708      例は、それぞれ ` '、`\n'、`\0' になる。
1709
1710      `a' と `c' 形式を除き、形式指定文字の後ろに 10 進数の整数を続ける
1711      ことによって、入力データの各数値を読み込んで、指定されたデータ形式に
1712      変換して行く際に、何バイトづつ使用するかを指定することができる。
1713      あるいは、形式指定文字の後ろに以下の文字の一つを続けることによって、
1714      C コンパイラの組み込みデータ型のいづれかのサイズを指定することも
1715      可能だ。すなわち、整数 (`d', `o', `u', `x') に対しては、以下を
1716      後置する。
1717
1718     `C'
1719           char
1720
1721     `S'
1722           short
1723
1724     `I'
1725           int
1726
1727     `L'
1728           long
1729
1730      浮動小数点数 (`f') に対しては、次のものが使用できる。
1731
1732     F
1733           float
1734
1735     D
1736           double
1737
1738     L
1739           long double
1740
1741 `-v'
1742 `--output-duplicates'
1743      連続する行が同一であっても出力する。デフォルトでは、出力する行が、
1744      二行以上連続して全く同一になりそうな場合、`od' は最初の行だけを
1745      出力し、次の行にはアステリスクのみを置いて、二行目以下を省略した
1746      ことを示す。
1747
1748 `-w[N]'
1749 `--width[=N]'
1750      1 出力行当たり、`n' バイトの入力をダンプする。この値は、指定した
1751      各出力形式に結び付いているサイズの最小公倍数の倍数でなければ
1752      ならない。
1753
1754      このオプションが全く指定されないときのデフォルトは 16 である。
1755      このオプションが N なしで指定されたときのデフォルトは 32 である。
1756
1757
1758    以下に挙げるいくつかのオプションは、形式指定の簡易版である。GNU `od'
1759 では、形式指定オプションと簡易版オプションをどのように組み合わせても
1760 構わない。こうしたオプションは、累加されていく。
1761
1762 `-a'
1763      文字の名称で出力する。`-t a' と同じ。
1764
1765 `-b'
1766      1 バイトづつ 8 進数として出力する。`-t o1' と同じ。
1767
1768 `-c'
1769      表示可能な 1 バイト文字か、C 言語のバックスラッシュ・エスケープ、
1770      あるいは 3 桁の 8 進数として出力する。`-t c' と同じ。
1771
1772 `-d'
1773      2 バイトづつ符号なし 10 進数として出力する。`-t u2' と同じ。
1774
1775 `-f'
1776      浮動小数点数として出力する。`-t fF' と同じ。
1777
1778 `-i'
1779      10 進数の int として出力する。`-t dI' と同じ。
1780
1781 `-l'
1782      10 進数の long int として出力する。`-t dL' と同じ。
1783
1784 `-o'
1785      2 バイトづつ 8 進数として出力する。`-t o2' と同じ。
1786
1787 `-s'
1788      2 バイトづつ 10 進数として出力する。`-t d2' と同じ。
1789
1790 `-x'
1791      2 バイトづつ 16 進数として出力する。`-t x2' と同じ。
1792
1793 `--traditional'
1794      昔の `od' で使用できた、オプションではない引数 LABEL を認識する。
1795      書式は次のようになる。
1796
1797           od --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
1798
1799      この書式を使用すると、ファイルは 1 個までしか指定できないが、必要
1800      なら、オフセットを示す引数や、LABEL という、開始位置の仮アドレス
1801      を示す引数を、続けて指定することができる。引数 LABEL は OFFSET と
1802      全く同じように解釈されるが、出力を開始する位置の仮アドレスを指定
1803      している。仮アドレスは、通常のアドレスの後ろに、カッコで囲まれて、
1804      表示される。
1805
1806
1807    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1808
1809 \1f
1810 File: coreutils-ja.info,  Node: base64 invocation,  Prev: od invocation,  Up: Output of entire files
1811
1812 3.5 `base64': データを表示可能データ (printable data) に変換する
1813 ================================================================================
1814
1815 "`base64' はファイル、または標準入力から読み込んだデータを、base64 で
1816 エンコードした形式に変換する (あるいは、その逆を行う)。base64 で
1817 エンコードした形式は、表示可能な ASCII 文字を用いて、バイナリデータを
1818 表現する。
1819
1820    書式:
1821
1822      base64 [OPTION]... [FILE]
1823      base64 --decode [OPTION]... [FILE]
1824
1825    base64 でエンコードすると、データが元のデータのほぼ 133% に増大する。
1826 base64 エンコード形式は、RFC4648 に準拠している。
1827 `ftp://ftp.rfc-editor.org/in-notes/rfc4648.txt'
1828
1829    このプログラムでは以下のオプションが使用できる。参照: *note Common
1830 options::.
1831
1832 `-w COLS'
1833 `--wrap=COLS'
1834      エンコード中に、出力が COLS 文字に達したら改行する。この値は、正の
1835      整数でなければならない。
1836
1837      デフォルトでは、76 文字で改行する。改行を全く行わないようにする
1838      には、値を 0 にする。
1839
1840 `-d'
1841 `--decode'
1842      動作モードを変更する。デフォルトの、データをエンコードするモード
1843      ではなく、データをデコードするモードになる。入力には、base64 で
1844      エンコードしたデータが期待され、出力は、エンコードする前のデータ
1845      になる。
1846
1847 `-i'
1848 `--ignore-garbage'
1849      デコードする際、改行文字がどこに現れても、適切に処理する。デコード
1850      中に ASCII 表示可能文字以外を表すバイトが現れたら、一部壊れたデータ
1851      でもデコードできるように、それを無視する。
1852
1853
1854    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1855
1856 \1f
1857 File: coreutils-ja.info,  Node: Formatting file contents,  Next: Output of parts of files,  Prev: Output of entire files,  Up: Top
1858
1859 4 ファイル内容の整形
1860 *****************************
1861
1862 以下のコマンドは、ファイルの内容を整形し直す。
1863
1864 * Menu:
1865
1866 * fmt invocation::           パラグラフに分かれたテキストを整形し直す。
1867 * numfmt invocation::        数値を整形し直す。
1868 * pr invocation::            ページ付けや段組みをしてファイルを表示する。
1869 * fold invocation::          入力行を指定された幅に合わせて折り返す。
1870
1871 \1f
1872 File: coreutils-ja.info,  Node: fmt invocation,  Next: numfmt invocation,  Up: Formatting file contents
1873
1874 4.1 `fmt': パラグラフに分かれたテキストを整形し直す
1875 =======================================================================
1876
1877 `fmt' は行を折り返したり、結合したりして、出力する各行が指定された
1878 文字数に納まるように調整する。1 行のデフォルトはアスキー文字で 75 文字
1879 である。(訳注: 日本語のテキストは、通常単語を空白で区切らないので、
1880 うまく整形できない。)
1881
1882    書式:
1883
1884      fmt [OPTION]... [FILE]...
1885
1886    `fmt' は、指定された引数 FILE から (指定されていない場合は、標準
1887 出力から) テキストを読み込んで、標準出力に書き出す。
1888
1889    デフォルトでは、空行、単語間の空白、インデント (字下げ) は、出力でも
1890 そのまま維持される。インデントの違う入力行が連続する場合は、行の結合は
1891 行われない。タブは入力のときにスペースに展開され、出力でタブに戻される。
1892
1893    `fmt' は、できるだけ文の終わりで改行しようとする。また、文の最初の
1894 単語の直後や、文の最後の単語の直前で改行するのは避けようとする。「文の
1895 終わり ("sentence break")」の定義は、パラグラフがそこで終わっているか、
1896 あるいは、単語の末尾に `.?!' のどれかが付き、さらにスペースが 2 個
1897 続くか、行末が来ることである。後者の場合、ピリオドなどとスペース 2 個、
1898 あるいは行末の間にカッコや引用符が入っていてもよい。TeX と同様、`fmt'
1899 は、どこで行を折り返すかを決める前に、パラグラフ全体を読み込む。使用して
1900 いるアルゴリズムは、Donald E. Knuth と Michael F. Plass が "Breaking
1901 Paragraphs Into Lines" で提示しているものに変更を加えたものである
1902 (`Software--Practice & Experience 誌'、第 11 巻 第 11 号 (November
1903 1981) 1119-1184 ページ)。
1904
1905    このプログラムでは以下のオプションが使用できる。参照: *note Common
1906 options::.
1907
1908 `-c'
1909 `--crown-margin'
1910      クラウンマージン・モード ("Crown margin" mode) である。パラグラフの
1911      最初の 2 行のインデントはそのまま踏襲し、それに続く各行の左の余白を
1912      2 行目のインデントに揃える。
1913
1914 `-t'
1915 `--tagged-paragraph'
1916      タグ付きパラグラフ・モード ("Tagged paragraph" mode)。クラウンマー
1917      ジン・モードに似ているが、次の点が違う。パラグラフの最初の行と
1918      二番目の行のインデントが同じ場合、最初の行は 1 行からなるパラグラフ
1919      として扱われる。
1920
1921 `-s'
1922 `--split-only'
1923      行の分割のみを行う。短い行を結合して、長い行を作ることはしない。
1924      その結果、サンプル・コードの行のような、すでに整形されたテキストを
1925      むやみに結合しないで済む。
1926
1927 `-u'
1928 `--uniform-spacing'
1929      空白の数を一定にする。すなわち、単語間の空白は 1 個に、文の間の
1930      空白は 2 個にする。
1931
1932 `-WIDTH'
1933 `-w WIDTH'
1934 `--width=WIDTH'
1935      出力する各行を、長くても WIDTH 文字までにする (デフォルトは 75
1936      文字。GOAL が指定されている場合は、GOAL プラス 10 文字)。
1937
1938 `-g GOAL'
1939 `--goal=GOAL'
1940      とりあえず、各行を GOAL 文字の長さにしてみようとする。これは、
1941      デフォルトでは WIDTH より 7% 短い。
1942
1943 `-p PREFIX'
1944 `--prefix=PREFIX'
1945      PREFIX で始まる行のみを整形の対象にする (PREFIX の前にホワイト
1946      スペースがあってもよい)。PREFIX とそれに先行するホワイトスペース
1947      は、整形の際に取り除かれ、整形後に各出力行に付け直される。この
1948      オプションの用途を一つ挙げると、プログラムのコメントのような行
1949      だけを整形し、コードには手を加えないことが考えられる。
1950
1951
1952    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1953
1954 \1f
1955 File: coreutils-ja.info,  Node: numfmt invocation,  Next: pr invocation,  Prev: fmt invocation,  Up: Formatting file contents
1956
1957 4.2 `numfmt': 数値を整形し直す
1958 ======================================
1959
1960 `numfmt' はさまざまな表記の数値を読み込んで、それを要求された形に
1961 整形し直す。一番よく使うのは、数値を人間が読みやすい形に変換する場合や、
1962 その逆を行う場合である (たとえば、`4G' ==> `4,000,000,000')。
1963
1964      numfmt [OPTION]... [NUMBER]
1965
1966    `numfmt' は、コマンドラインで与えられた各 NUMBER を、指定された
1967 オプション (以下の節を参照) に従って変換する。NUMBER の指定がない
1968 場合は、標準入力から数値を読み込む。また、`numfmt' は、入力行中の
1969 特定のフィールドから数値を取り出すこともできる。その場合、列が揃う
1970 ようにパディング (訳注: フィールドの空き埋め) が行われていれば、
1971 それも適切に維持する。
1972
1973    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1974
1975    終了ステータスについては追加情報がある。`--invalid' をご覧になって
1976 いただきたい。
1977
1978 * Menu:
1979
1980 * General options in numfmt::  一般オプション
1981 * Possible UNITs::             使用できる UNIT
1982 * Examples of using numfmt::   numfmt の使用例
1983
1984 \1f
1985 File: coreutils-ja.info,  Node: General options in numfmt,  Next: Possible UNITs,  Up: numfmt invocation
1986
1987 4.2.1 一般オプション
1988 ---------------------------
1989
1990 このプログラムでは以下のオプションが使用できる。参照: *note Common
1991 options::.
1992
1993 `--debug'
1994      間違えた使い方をしている疑いがあるとき、それについて警告メッセージを
1995      (標準エラーに) 表示する。
1996
1997 `-d D'
1998 `--delimiter=D'
1999      文字 D を入力フィールドの区切りとして使用する (デフォルトはホワイト
2000      スペース)。区切りにデフォルト以外の文字を使うと、自動的なパディングが
2001      行われなくなるのに注意してほしい。
2002
2003 `--field=N'
2004      N 番目の入力フィールドの数値を変換する (N のデフォルトは 1)。
2005
2006 `--format=FORMAT'
2007      浮動小数点数を表す printf 形式の FORMAT 文字列を出力の整形に
2008      使用する。文字列 FORMAT には、1 個の `%f' 変換指定子が含まれて
2009      いなければならない。なお、そうしたければ、`'' や `-' 修飾子、
2010      あるいは、フィールド幅修飾子 (訳注: 数値) を `%f' に付けることも
2011      できる。`'' 修飾子は `--grouping' オプションを有効にし、`-' 修飾子
2012      は `--padding' オプションを左詰めで有効に、フィールド幅修飾子は
2013      `--padding' オプションを右詰めで有効にする。(訳注: `-' 修飾子は、
2014      数値であるフィールド幅修飾子と併せて用いなければならない。)
2015
2016 `--from=UNIT'
2017      入力された数値の大きさや桁数を UNIT に従って自動調整 (auto-scaling)
2018      する (訳注: 一例を挙げると、入力数値が `1K' だったとき、`--from=si'
2019      が指定されていれば 1000 に変換し、`--from=iec' が指定されていれば
2020      1024 に変換する)。UNIT については、次節「使用できる UNIT」を参照
2021      していただきたい。デフォルトでは数値の大きさや桁数の調節を行わない。
2022      それはまた、入力数値に接尾辞 (たとえば、`M', `G' など) が付いて
2023      いると、エラーになるということでもある。
2024
2025 `--from-unit=N'
2026      入力の 1 単位の大きさを (すなわち、デフォルトの 1 に代えて使う
2027      大きさを) 指定する。入力する数値の 1 単位の大きさが、デフォルトの
2028      1 以外の場合に、このオプションを使用するわけだ (たとえば、入力する
2029      数値の `10' が、1 単位 512 バイトの 10 単位を表している場合には、
2030      `--from-unit=512' を使用する)。
2031
2032 `--grouping'
2033      現在のロケールの桁区切りルールに従って、出力する数値を数桁ごとに
2034      区切る (たとえば、3 桁ごとの区切り記号は、たいてい `.' (ドット) か
2035      `,' (コンマ) である)。ロケールが `POSIX/C' の場合は、このオプション
2036      に効果はない。
2037
2038 `--header[=N]'
2039      最初の N (デフォルトは 1) 行を、いかなる変換もせずに出力する。
2040
2041 `--invalid=MODE'
2042      入力エラーに出会ったときのデフォルトの動作は、ステータスコード 2 で
2043      即座に終了することである。`--invalid=`abort'' は、このデフォルト
2044      の動作を明示的に指定することになる。MODE に `fail' を指定すると、
2045      変換エラーがあるごとに警告メッセージを表示して、ステータス 2 で終了
2046      する。MODE が `warn' の場合は、変換エラーがあっても、ステータス 0
2047      で終了する。MODE が `ignore' の場合は、ステータス 0 で終了する
2048      だけでなく、診断メッセージを出すことすらしない。
2049
2050 `--padding=N'
2051      出力する数値が N 字分を占めるように、スペースを加えることで
2052      パディングをする。N が正の数の場合は、数値が右詰めになり、負の
2053      数の場合は、数値が左詰めになる。デフォルトでは、数値は、入力行の
2054      幅に基づいて (訳注: 詳しく言うと、入力各行の数値のあるフィールド
2055      が固定幅の場合、その幅に基づいて)、自動的に揃えられる (これが
2056      行われるのは、フィールドの区切り文字がデフォルトの場合だけである)。
2057
2058 `--round=METHOD'
2059      数値の表現を変換するときに、METHOD に従って、数値を丸める。METHOD
2060      には、`up', `down', `from-zero' (デフォルト), `towards-zero',
2061      `nearest' が使用できる。(訳注: `up' は切り上げ、`down' は切り下げ、
2062      `from-zero' はゼロから離れる方向へ、`towards-zero' はゼロに近づく
2063      方向へ、`nearest' は四捨五入である。)
2064
2065 `--suffix=SUFFIX'
2066      出力する数値に `SUFFIX' を付ける。また、入力する数値に `SUFFIX'
2067      が付いていても、エラーにしない。
2068
2069 `--to=UNIT'
2070      出力する数値の大きさや桁数を UNIT に従って自動調整する。UNIT に
2071      ついては、次節「使用できる UNIT」を参照していただきたい。デフォルト
2072      では、数値の大きさや桁数の調節をしないので、数値を構成するすべての
2073      数字が表示されることになる。
2074
2075 `--to-unit=N'
2076      出力の 1 単位の大きさを (すなわち、デフォルトの 1 に代えて使う
2077      大きさを) 指定する。出力する数値の 1 単位の大きさが、デフォルトの
2078      1 以外の場合に、このオプションを使用するわけだ (たとえば、1
2079      ブロック 1KB のブロック数で `4,000,000' バイトを表現するには、
2080      `--to=si --to-unit=1000' が使用できる)。
2081
2082
2083 \1f
2084 File: coreutils-ja.info,  Node: Possible UNITs,  Next: Examples of using numfmt,  Prev: General options in numfmt,  Up: numfmt invocation
2085
2086 4.2.2 使用できる UNIT
2087 --------------------------
2088
2089 `--from=UNIT' や `--to=UNIT' で指定する UNIT には、次のものを選択する
2090 ことができる。(訳注: UNIT の名前は、大文字ではなく、si, iec などの
2091 小文字で指定すること。)
2092
2093 NONE
2094      数値の大きさや桁数の調整を行わない。入力する数値には、いかなる
2095      接尾辞も付けることができない。従って、数値の直後に文字が続くと
2096      エラーになる。出力する数値については、その数値を構成するすべての
2097      数字を表示する。
2098
2099 SI
2100      国際単位系 (International System of Units (SI)) の規格に従って、
2101      数値の大きさや桁数を自動調整する。入力する数値には、以下の接尾辞の
2102      一つが使用できる。出力する数値については、1000 以上の値は丸められ
2103      て、以下の接尾辞の一つを付けて表示される。
2104
2105           `K'  =>  1000^1 = 10^3 (Kilo)
2106           `M'  =>  1000^2 = 10^6 (Mega)
2107           `G'  =>  1000^3 = 10^9 (Giga)
2108           `T'  =>  1000^4 = 10^12 (Tera)
2109           `P'  =>  1000^5 = 10^15 (Peta)
2110           `E'  =>  1000^6 = 10^18 (Exa)
2111           `Z'  =>  1000^7 = 10^21 (Zetta)
2112           `Y'  =>  1000^8 = 10^24 (Yotta)
2113
2114 IEC
2115      International Electronical Commission (IEC) の規格に従って、数値の
2116      大きさや桁数を自動調整する。入力する数値では、以下の接尾辞の一つが
2117      使用できる。出力する数値については、1024 以上の値は丸められて、
2118      以下の接尾辞の一つを付けて表示される。
2119
2120           `K'  =>  1024^1 = 2^10 (Kibi)
2121           `M'  =>  1024^2 = 2^20 (Mebi)
2122           `G'  =>  1024^3 = 2^30 (Gibi)
2123           `T'  =>  1024^4 = 2^40 (Tebi)
2124           `P'  =>  1024^5 = 2^50 (Pebi)
2125           `E'  =>  1024^6 = 2^60 (Exbi)
2126           `Z'  =>  1024^7 = 2^70 (Zebi)
2127           `Y'  =>  1024^8 = 2^80 (Yobi)
2128
2129      `iec' を選択すると、接尾辞に (`G' など) 1 文字の記号が使用される
2130      ことになるが、これは規格に完全にかなってるとは言えない。IEC の
2131      規格では (`Gi' など) 2 字の記号を推奨しているからだ。しかし、実際の
2132      使用では、1 文字の表記法が普通に使われている。`iec-i' を指定した
2133      場合と比較していただきたい。
2134
2135 IEC-I
2136      International Electronical Commission (IEC) の規格に従って、数値の
2137      大きさや桁数を自動調整する。入力する数値では、以下の接尾辞の一つが
2138      使用できる。出力する数値については、1024 以上の値は丸められて、
2139      以下の接尾辞の一つを付けて表示される。
2140
2141           `Ki'  =>  1024^1 = 2^10 (Kibi)
2142           `Mi'  =>  1024^2 = 2^20 (Mebi)
2143           `Gi'  =>  1024^3 = 2^30 (Gibi)
2144           `Ti'  =>  1024^4 = 2^40 (Tebi)
2145           `Pi'  =>  1024^5 = 2^50 (Pebi)
2146           `Ei'  =>  1024^6 = 2^60 (Exbi)
2147           `Zi'  =>  1024^7 = 2^70 (Zebi)
2148           `Yi'  =>  1024^8 = 2^80 (Yobi)
2149
2150      `iec-i' を選択すると、接尾辞に (`Gi' など) 2 文字の記号が使用
2151      されることになる。これは、IEC の規格が推奨しているとおりだが、
2152      実際の使用では、必ずしもよく使われているわけではない。`iec'
2153      を指定した場合と、比較していただきたい。
2154
2155 AUTO
2156      `auto' は `--from' でしか使えない。これを選んだ場合、`K',`M',
2157      `G',`T',`P',`E',`Z',`Y' といった接尾辞が付いていれば、数値は SI
2158      の値と見なされる。接尾辞が `Ki',`Mi',`Gi',`Ti',`Pi',`Ei',`Zi',
2159      `Yi' などの場合は、数値は IEC の値と見なされることになる。
2160
2161
2162 \1f
2163 File: coreutils-ja.info,  Node: Examples of using numfmt,  Prev: Possible UNITs,  Up: numfmt invocation
2164
2165 4.2.3 `nunfmt' の使用例
2166 ---------------------------
2167
2168 1 個の数値を人間に読みやすい形に変換する (あるいは、その逆を行う)。
2169      $ numfmt --to=si 500000
2170      500K
2171
2172      $ numfmt --to=iec 500000
2173      489K
2174
2175      $ numfmt --to=iec-i 500000
2176      489Ki
2177
2178      $ numfmt --from=si 1M
2179      1000000
2180
2181      $ numfmt --from=iec 1M
2182      1048576
2183
2184      # '--from=auto' を使用する。M=Mega, Mi=Mebi
2185      $ numfmt --from=auto 1M
2186      1000000
2187      $ numfmt --from=auto 1Mi
2188      1048576
2189
2190    `SI' 表記を `IEC' 表記に換算する (たとえば、ハードディスクの容量が
2191 メーカー表示では `1TB' となっているが、実際に容量をチェックすると、
2192 それより少ない場合)。
2193
2194      $ numfmt --from=si --to=iec 1T
2195      932G
2196
2197    ファイルやパイプから読み込んだ入力行にある、ある一つのフィールドを
2198 変換する (ここに示す数例は、あくまでも説明のために作ったものである。
2199 実際には、`ls' と `df' のどちらにも、人間に読みやすい形式でサイズを
2200 表示するための `--human-readable' オプションが存在している)。
2201
2202      # 3 番目のフィールド (ファイルサイズ) を SI 表記で表示する
2203      $ ls -log | numfmt --field 3 --header --to=si | head -n4
2204      -rw-r--r--  1     94K Aug 23  2011 ABOUT-NLS
2205      -rw-r--r--  1    3.7K Jan  7 16:15 AUTHORS
2206      -rw-r--r--  1     36K Jun  1  2011 COPYING
2207      -rw-r--r--  1       0 Jan  7 15:15 ChangeLog
2208      (訳注: 実際には、この一番下の行は表示されず、一番上に「total ...
2209      といった行が現れるはずである。)
2210
2211      # 二番目のフィールド (サイズ) を IEC 表記で表示する
2212      $ df --block-size=1 | numfmt --field 2 --header --to=iec | head -n4
2213      File system   1B-blocks        Used  Available Use% Mounted on
2214      rootfs             132G   104741408   26554036  80% /
2215      tmpfs              794M        7580     804960   1% /run/shm
2216      /dev/sdb1          694G   651424756   46074696  94% /home
2217
2218    出力は `--padding' や `--format' オプションを使って加工することが
2219 できる。
2220
2221      # フィールド幅が 10 字になるまで空白で埋める。右詰め表示。
2222      $ du -s * | numfmt --to=si --padding=10
2223            2.5K config.log
2224             108 config.status
2225            1.7K configure
2226              20 configure.ac
2227
2228      # フィールド幅が 10 字になるまで空白で埋める。左詰め表示。
2229      $ du -s * | numfmt --to=si --padding=-10
2230      2.5K       config.log
2231      108        config.status
2232      1.7K       configure
2233      20         configure.ac
2234
2235      # `--format' オプションを使用して、フィールド幅が 10 文字になるまで
2236      # 空白で埋める。右詰め表示。
2237      $ du -s * | numfmt --to=si --format="%10f"
2238            2.5K config.log
2239             108 config.status
2240            1.7K configure
2241              20 configure.ac
2242
2243      # `--format' オプションを使用して、フィールド幅が 10 文字になるまで
2244      # 空白で埋める。左詰め表示。
2245      $ du -s * | numfmt --to=si --padding="%-10f"
2246      2.5K       config.log
2247      108        config.status
2248      1.7K       configure
2249      20         configure.ac
2250
2251    桁区切りをサポートしているロケールでは、`--grouping' や `--format'
2252 オプションを使って、数値を数桁ごとに区切ることができる。ロケールが
2253 `POSIX' や `C' の場合は、桁区切りを指定しても、単に無視される。
2254
2255      $ LC_ALL=C numfmt --from=iec --grouping 2G
2256      2147483648
2257
2258      $ LC_ALL=en_US.utf8 numfmt --from=iec --grouping 2G
2259      2,147,483,648
2260
2261      $ LC_ALL=ta_IN numfmt --from=iec --grouping 2G
2262      2,14,74,83,648
2263
2264      $ LC_ALL=C numfmt --from=iec --format="==%'15f==" 2G
2265      ==     2147483648==
2266
2267      $ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'15f==" 2G
2268      ==  2,147,483,648==
2269
2270      $ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'-15f==" 2G
2271      ==2,147,483,648  ==
2272
2273      $ LC_ALL=ta_IN numfmt --from=iec --format="==%'15f==" 2G
2274      == 2,14,74,83,648==
2275
2276 \1f
2277 File: coreutils-ja.info,  Node: pr invocation,  Next: fold invocation,  Prev: numfmt invocation,  Up: Formatting file contents
2278
2279 4.3 `pr': ページ付けや段組みをしてファイルを表示する
2280 =========================================================================
2281
2282 `pr' は、各 FILE (`-' は標準入力を表す) を標準出力に書き出す。FILE が
2283 指定されていない場合は、標準入力を対象にする。その際、ページ付けを行い、
2284 指定があれば段組みをして出力する。また、すべての FILE を一つに統合し、
2285 1 段 1 ファイルの形式で平行して表示することもできる。(訳注: `pr' の
2286 日本語対応は完全ではない。とくに段組みがうまく行かない。)
2287
2288    書式:
2289
2290      pr [OPTION]... [FILE]...
2291
2292    デフォルトでは、5 行のヘッダが各ページに付く。2 行の空行、日付・
2293 ファイル名・ページ番号からなる 1 行、そしてもう 2 行の空行である。 5
2294 行の空行からなるフッタも出力される。デフォルトのページ長 (PAGE_LENGTH)
2295 は 66 行なので、本文に使用されるデフォルトの行数は、56 行である。
2296 ヘッダのテキスト行は、`DATE STRING PAGE' の形を取り、STRING の両側に
2297 空白を入れて、行の幅がページ幅 (PAGE_WIDTH) いっぱいになるように
2298 している。DATE は日付であり (詳細については、`--date-format' (`-D')
2299 オプションを参照)、STRING は中央揃えのヘッダ文字列 (訳注: デフォルト
2300 ではファイル名)、PAGE はページ番号である。PAGE という単語の綴りは、
2301 `LC_MESSAGES' ロケール・カテゴリによって変わってくる。デフォルトの C
2302 ロケールでは、`Page NUMBER' であり、NUMBER は 10 進数のページ番号だ。
2303
2304    入力にフォームフィード (Form feed) があると、出力では改ページが行われ
2305 る。フォームフィードが続くと、白紙のページが生ずる。
2306
2307    段組みをした場合、どの段の幅も同じであり、段と段の間には任意の文字列
2308 (デフォルトはスペース) が置かれる。多段組みの出力では、`-J' オプション
2309 を使用しないかぎり、各行は常に PAGE_WIDTH (デフォルトは 72) 文字までに
2310 切り詰められる (訳注: これは、各段や段間の空白などを合計した 1 行の
2311 長さが、最長でも PAGE_WIDTH 文字までになるということであって、各段が
2312 それぞれ PAGE_WIDTH 文字になるということではない)。1 段のみの出力では、
2313 デフォルトでは行の切り詰めは行われない。その場合でも、行の切り詰めを
2314 行うには、`-W' を使用する。
2315
2316    このプログラムでは以下のオプションが使用できる。参照: *note Common
2317 options::.
2318
2319 `+FIRST_PAGE[:LAST_PAGE]'
2320 `--pages=FIRST_PAGE[:LAST_PAGE]'
2321      表示を FIRST_PAGE ページから始めて、 LAST_PAGE ページで終了する。
2322      `:LAST_PAGE' の指定を省略するのは、ファイルの最後までということで
2323      ある。スキップするページ数を計算する際、入力ファイル中にフォーム
2324      フィードがあると、そのたびに 1 ページ進むことになる。ページ番号
2325      は、`+FIRST_PAGE' があってもなくても、同じになる。デフォルトでは、
2326      入力ファイルの最初のページからページ数を数えるからだ (表示される
2327      最初のページからではない)。行番号については `-N' オプションで変更す
2328      ることができる。
2329
2330 `-COLUMN'
2331 `--columns=COLUMN'
2332      個々の FILE に対して COLUMN 段に段組みした出力を生成する (デフォ
2333      ルトは 1 段)。`-a' オプションを使用しない場合、ページ内で本文は、
2334      段内を上から下へと進む。段が増えると、段の幅は自動的に狭くなる。
2335      ただし、`-W/-w' を同時に使用して、PAGE_WIDTH を増加させている
2336      場合は、そのかぎりではない。このオプションを使うと、切り詰められる
2337      行がおそらく生じるだろう。ページごとの各段の行数は、できるだけ揃え
2338      られる。多段組みの本文出力では、オプション `-e' と `-i' が
2339      有効になる。`-J' オプションと一緒に使った場合は、段の整列と行の
2340      切り詰めは行われない。各行は、元の長さのまま、不定長フィールド
2341      として (free field format) 結合されるのである。その際、`-S' オプ
2342      ションによってフィールド・セパレータを指定することが可能だ。なお
2343      `-COLUMN' は、`-m' オプションと一緒に使用できない。
2344
2345 `-a'
2346 `--across'
2347      個々の FILE を段組みで表示するとき、本文の各行が、段内を上から
2348      下へではなく、左の段から右の段へと進むようにする。`-COLUMN'
2349      オプションに指定する段の数は、2 以上でなければならない。行が
2350      段の幅に納まらないほど長い場合、その行は切り詰められる。
2351
2352 `-c'
2353 `--show-control-chars'
2354      制御文字をハット表記 (たとえば、`^G') を使って表示する。他の非表示
2355      文字は、バックスラッシュ付きの 8 進数表記になる。`pr' のデフォルト
2356      では、非表示文字の表示文字化は行われない。
2357
2358 `-d'
2359 `--double-space'
2360      ダブルスペースで出力する (訳注: すなわち、行間を 1 行分あける)。
2361
2362 `-D FORMAT'
2363 `--date-format=FORMAT'
2364      ヘッダの日付を FORMAT を用いて整形する。FORMAT には、コマンド
2365      `date +FORMAT' で使うのと同じ指定法が使用できる。*Note date
2366      invocation::.  `%' で始まる日時の指定を除いて、FORMAT 中の文字は
2367      そのまま表示される。従って、このオプションを使用すれば、ヘッダの
2368      日付の位置に任意の文字列を指定することもできるわけだ。たとえば、
2369      `--date-format="Monday morning"' といった具合に。
2370
2371      デフォルトの日付書式は `%Y-%m-%d %H:%M' という形である (たとえば、
2372      `2001-12-04 23:59')。だが、環境変数 `POSIXLY_CORRECT' が設定され、
2373      しかも `LC_TIME' ロケール・カテゴリが POSIX ロケールを指定して
2374      いる場合は、デフォルトの書式は `%b %e %H:%M %Y' になる (たとえば、
2375      `Dec  4 23:59 2001')。
2376
2377      タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
2378      ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
2379      いない場合は、システムのデフォルトのルールに従って表示される。
2380      *Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
2381
2382 `-e[IN-TABCHAR[IN-TABWIDTH]]'
2383 `--expand-tabs[=IN-TABCHAR[IN-TABWIDTH]]'
2384      入力の際にタブをスペースに展開する。省略できる引数 IN-TABCHAR は、
2385      入力で使われるタブ文字である (デフォルトは TAB 文字)。これも省略
2386      できる二番目の引数 IN-TABWIDTH は、入力で使われるタブ文字の幅で
2387      ある。(デフォルトは 8 桁)。
2388
2389 `-f'
2390 `-F'
2391 `--form-feed'
2392      複数個の改行文字ではなく、1 個のフォームフィードを使用して、出力
2393      する各ページを分離する。このオプションによって、66 行というデフォ
2394      ルトのページの長さが変わることはない。
2395
2396 `-h HEADER'
2397 `--header=HEADER'
2398      ヘッダのファイル名の部分を、中央揃えの HEADER という文字列で置き換
2399      える。シェル上では、HEADER はクォートするべきである。また、`-h'
2400      との間に空白を入れた方がよい。
2401
2402 `-i[OUT-TABCHAR[OUT-TABWIDTH]]'
2403 `--output-tabs[=OUT-TABCHAR[OUT-TABWIDTH]]'
2404      出力の際にスペースをタブで置き換える。省略できる引数 OUT-TABCHAR
2405      は、出力で使われるタブ文字である (デフォルトは TAB 文字)。これも
2406      省略できる二番目の引数 OUT-TABWIDTH は、出力で使われるタブ文字の
2407      幅である (デフォルトは 8 桁)。
2408
2409 `-J'
2410 `--join-lines'
2411      長い行は長いまま結合する。段組みオプション `-COLUMN', `-a -COLUMN',
2412      `-m' と併せて使用する。`-W/-w' による行の切り詰めが無効になる。段の
2413      整列も行わなくなる。`--sep-string[=STRING]' と併せて使ってもよい。
2414      `-J' というオプションが (`-W' や `--sep-string' とともに) 新たに
2415      設けられたのは、`-w' や `-s' という、前からある (POSIX に準拠した)
2416      オプションを 3 種の段組みオプションと組み合わせて使ったときの混乱を
2417      解消するためである。
2418
2419 `-l PAGE_LENGTH'
2420 `--length=PAGE_LENGTH'
2421      1 ページの行数を、ヘッダ行 (及び フッタ行) を含めて、PAGE_LENGTH
2422      行にする (デフォルトは 66 行)。PAGE_LENGTH が 10 行以下だったら、
2423      `-t' オプションが指定されたかのように、 ヘッダとフッタは省略する。
2424
2425 `-m'
2426 `--merge'
2427      すべての FILE を統合し、各段に 1 ファイルを割り当てて、平行表示
2428      する。長すぎて段に納まらない行があれば、`-J' オプションが使用
2429      されていないかぎり、切り詰めが行われる。`--sep-string[=STRING]' を
2430      指定してもよい。いづれかの FILE に (フォームフィードの指定により)
2431      空白のページが存在すると、空白の段が生ずるが、それでも段を分離する
2432      記号の STRING は表示される。すなわち、統合されたファイルの最初から
2433      最後まで、行番号と (訳注: これはもちろん、`-n' オプションが指定され
2434      ている場合) 段の分離記号は、連続して表示されるわけだ。ただし、統合
2435      されたページのどの段も空白の場合は、分離記号も行番号も表示されない。
2436      デフォルトのヘッダは、`DATE PAGE' という形式になり、中央には空白が
2437      挿入される。`-h' や `--header' オプションを `-m' と一緒に使えば、
2438      この中央の空白部分に文字列を入れることができる。
2439
2440 `-n[NUMBER-SEPARATOR[DIGITS]]'
2441 `--number-lines[=NUMBER-SEPARATOR[DIGITS]]'
2442      DIGITS の幅の行番号を表示する (DIGITS のデフォルトは 5 桁)。通常の
2443      多段組みの出力では、行番号は、各段ごとに本文の最初の DIGITS 桁分の
2444      位置を占めるが、`-m' の出力の場合は、各行の先頭だけに表示される。
2445      1 段組みでは、`-m' の場合と同様、各行の先頭に付く。デフォルトでは、
2446      行数は、入力ファイルの最初の行から数え始める (表示される最初の行
2447      からではない。`--page' や `-N' オプションを参照)。省略可能な引数
2448      NUMBER-SEPARATOR は、行番号の後ろに付けて、後に続く本文と区別する
2449      ための文字であり、デフォルトのセパレータはタブ文字である。厳密に
2450      言うと、常にタブが表示されるのは、1 段組みの出力のときだけである。
2451      タブの幅は、本来タブの現れる位置によって変化し、たとえば、`-o'
2452      オプションで指定される左の余白 (MARGIN) によって変わってくるもの
2453      である。しかし、多段組みの出力では、「出力される段の幅が同じになる」
2454      ことが優先されるため (POSIX の仕様)、タブの幅は、最初の段における
2455      値に固定され、左の余白の値が変わっても、変化することはない。従って、
2456      NUMBER-SEPARATOR であるタブの位置には、常に一定数のスペースが表示
2457      されることになる。スペースをタブに置き換えるかどうかは、出力される
2458      位置次第である。
2459
2460 `-N LINE_NUMBER'
2461 `--first-line-number=LINE_NUMBER'
2462      表示される最初のページの最初の行を LINE_NUMBER として行を数えて
2463      行く (入力ファイルの最初の行以外から表示を始めるときによく使う)。
2464
2465 `-o MARGIN'
2466 `--indent=MARGIN'
2467      スペース MARGIN 個分の余白で各行をインデントする (デフォルトは、
2468      スペース 0 個)。ページの横幅は、`-W/-w' で指定した PAGE_WIDTH と
2469      余白を合計したサイズになる。行番号付きの 1 段組み出力では、行から
2470      少しはみ出す文字が生ずるかもしれない (`-n' オプション参照)。
2471
2472 `-r'
2473 `--no-file-warnings'
2474      引数 FILE がオープンできないときも、警告メッセージを表示しない
2475      (終了ステータスは、それでもやはり 0 以外になる)。
2476
2477 `-s[CHAR]'
2478 `--separator[=CHAR]'
2479      段と段の区切りに 1 個の文字 CHAR を使う。`-s' オプションを
2480      指定したときのデフォルトの CHAR は、`-w' オプションを同時に
2481      指定しなければタブ、指定すれば「なし」である。なお、`-s'
2482      オプションを指定しない場合のデフォルトのセパレータはスペースだ。
2483      `-s[char]' オプションを使用すると、`-w' も同時に指定しないかぎり、
2484      3 種の段組みオプション (`-COLUMN'|`-a -COLUMN'|`-m')
2485      のすべてにおいて、行の切り詰めが行われない。 これは、POSIX
2486      に準拠した仕様である。
2487
2488 `-S[STRING]'
2489 `--sep-string[=STRING]'
2490      出力される段の区切りに、文字列 STRING を使用する。`-s' オプション
2491      が `-W/-w' オプションに影響を及ぼすのとは異なり、`-S' オプション
2492      は `-W/-w' オプションに影響を及ぼさない。また、行の切り詰めや段の
2493      整列にも影響しない。`-S' オプションを指定せずに、`-J' オプション
2494      を指定すると、`pr' はデフォルトの出力セパレータであるタブを使用
2495      する (訳注: `-J' 使用時のデフォルトということだと思う)。`-S' も
2496      `-J' も指定しない場合、`pr' が区切りに使用するのはスペースである
2497      (`-S" "' と同じこと)。`-S' だけで、引数の `STRING' を指定しないと、
2498      空文字列 (`""') を指定したことになる。
2499
2500 `-t'
2501 `--omit-header'
2502      常とは異なり、各ページにヘッダ (とフッタ) を表示しない。また、
2503      ページの最下部を (空行やフォームフィードで) 埋めることもしない。
2504      ページ構成は行わないが、入力ファイルにあるフォームフィードは、
2505      そのままにしておく。つまり、あらかじめ決めておいたページ分割は、
2506      変わらないわけだ。`-t' や `-T' オプションは、他のオプションと
2507      組み合わせて使うと、便利なことがある。たとえば、`-t -e4' は、入力
2508      ファイルのタブ文字を 4 個のスペースに展開するが、それ以外何の
2509      変更も行わない。`-t' オプションを使用すると、`-h' オプションが
2510      無効になる。
2511
2512 `-T'
2513 `--omit-pagination'
2514      ヘッダ (とフッタ) を表示しない。さらに、入力ファイルにあるフォーム
2515      フィードをすべて取り除く。
2516
2517 `-v'
2518 `--show-nonprinting'
2519      非表示文字をバックスラッシュ付きの 8 進数表記で表示する。
2520
2521 `-w PAGE_WIDTH'
2522 `--width=PAGE_WIDTH'
2523      本文を多段組み出力にしたときのみ、ページの幅を PAGE_WIDTH 文字に
2524      する (PAGE_WIDTH のデフォルトは 72 字)。多段組みで `-w' オプション
2525      を指定せず、`-s[CHAR]' オプションだけ指定すると、デフォルトの
2526      ページ幅が無効になり、行の切り詰めや段の整列も行われなくなる。
2527      すなわち、多段組みのオプションが指定されているのに、各行が、
2528      長いものは長いまま結合されてしまうのだ。なお、1 段組みの出力では、
2529      PAGE_WIDTH の指定はできない。以上は、POSIX に準拠した仕様である。
2530
2531 `-W PAGE_WIDTH'
2532 `--page_width=PAGE_WIDTH'
2533      ページの幅を PAGE_WIDTH 文字にする。この指定は、段組みオプションが
2534      あってもなくても、有効である。`-J' オプションを使用しないかぎり、
2535      本文の行が切り詰められる。3 種の段組みオプション (`-COLUMN', `-a
2536      -COLUMN', `-m') と組み合わせて使った場合、段の整列が常に行われる。
2537      セパレータを指定するオプションの `-S' や `-s' は、`-W' オプションに
2538      影響を及ぼさない。デフォルトは 72 文字である。`-W PAGE_WIDTH' も
2539      なく、段組みオプションも全く指定されていない場合に、行の切り詰めが
2540      行われることは絶対にない (下位互換を維持しつつ、よく行われる作業の
2541      ほとんどに対応するために、そうなっている)。この動作は、`-W 72 -J'
2542      と同じである。なお、ヘッダ行が切り詰められることは絶対にない。
2543
2544
2545    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2546
2547 \1f
2548 File: coreutils-ja.info,  Node: fold invocation,  Prev: pr invocation,  Up: Formatting file contents
2549
2550 4.4 `fold': 入力行を指定された幅に合わせて折り返す
2551 =====================================================================
2552
2553 `fold' は、各 FILE (`-' は標準入力を表す) を、長い行は折り返して、標準
2554 出力に書き出す。FILE が指定されていない場合は、標準入力を対象にする。
2555 (訳注: `fold' の日本語対応は完全ではない。出力行の長さによっては、
2556 あるいは、日本語にアルファベットが混じると、文字化けすることがある。)
2557
2558    書式:
2559
2560      fold [OPTION]... [FILE]...
2561
2562    デフォルトでは、`fold' は 80 桁よりも長い行を折り返す。出力は必要なら
2563 何行にも分割されることになる。
2564
2565    `fold' はデフォルトでは、画面上の桁数を数える。従って、タブは 2 桁
2566 以上に数えられるかもしれないし、バックスペースは桁数を減らすことになる。
2567 また、復帰文字 (carriage return) は、桁数を 0 にする。
2568
2569    このプログラムでは以下のオプションが使用できる。参照: *note Common
2570 options::.
2571
2572 `-b'
2573 `--bytes'
2574      桁数ではなく、バイト数を数える。従って、タブ、バックスペース、復帰
2575      文字も、他の文字と全く同じように、それぞれ 1 桁を占めるものとして
2576      計算される。
2577
2578 `-s'
2579 `--spaces'
2580      単語境界で折り返す。行は、行の最大長より前にある最後の空白の後ろで
2581      折り返される。行にそうした空白がない場合は、通常通り、行の最大長で
2582      折り返される。
2583
2584 `-w WIDTH'
2585 `--width=WIDTH'
2586      行の最大長に 80 桁ではなく、WIDTH 桁を使用する。
2587
2588      互換性のために、`fold' は古い書式のオプション `-WIDTH' もサポート
2589      している。新しいスクリプトでは、`-w WIDTH' の方を使用すべきである。
2590
2591
2592    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2593
2594 \1f
2595 File: coreutils-ja.info,  Node: Output of parts of files,  Next: Summarizing files,  Prev: Formatting file contents,  Up: Top
2596
2597 5 ファイルの部分出力
2598 *****************************
2599
2600 以下のコマンドは、入力の一部を出力する。
2601
2602 * Menu:
2603
2604 * head invocation::          ファイルの先頭部分を出力する。
2605 * tail invocation::          ファイルの末尾部分を出力する。
2606 * split invocation::         ファイルを分割する
2607 * csplit invocation::        ファイルを内容を目印にして分割する。
2608
2609 \1f
2610 File: coreutils-ja.info,  Node: head invocation,  Next: tail invocation,  Up: Output of parts of files
2611
2612 5.1 `head': ファイルの先頭部分を出力する
2613 ======================================================
2614
2615 `head' は、各 FILE の先頭部分 (デフォルトでは 10 行) を表示する。
2616 ファイルが指定されていない場合や、FILE として `-' が指定されている
2617 場合は、標準入力から読み込む。
2618
2619    書式:
2620
2621      head [OPTION]... [FILE]...
2622
2623    指定された FILE が 2 個以上あると、`head' は、次のような 1 行
2624 からなるヘッダを出力する。
2625
2626      ==> FILE NAME <==
2627
2628 このヘッダは、各 FILE の出力の前に置かれる。
2629
2630    このプログラムでは以下のオプションが使用できる。参照: *note Common
2631 options::.
2632
2633 `-c K'
2634 `--bytes=K'
2635      ファイルの先頭数行を表示する代わりに、先頭から K バイトを表示する。
2636      ただし、K が `-' で始まっている場合は、各ファイルについて、末尾の
2637      K バイトを除いたすべてを表示することになる。K は、整数であり、
2638      以下に挙げるような何倍かを示す接尾辞を 後ろに付けることもできる。
2639      接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと
2640      見なされる)。
2641           `b'  =>            512 ("blocks")
2642           `KB' =>           1000 (KiloBytes)
2643           `K'  =>           1024 (KibiBytes)
2644           `MB' =>      1000*1000 (MegaBytes)
2645           `M'  =>      1024*1024 (MebiBytes)
2646           `GB' => 1000*1000*1000 (GigaBytes)
2647           `G'  => 1024*1024*1024 (GibiBytes)
2648      `T', `P', `E', `Z', `Y' についても同様。
2649
2650 `-n K'
2651 `--lines=K'
2652      ファイルの先頭から K 行を表示する。ただし、K が `-' で始まっている
2653      場合は、各ファイルについて、末尾の K 行を除いたすべてを表示すること
2654      になる。サイズの乗数接尾辞は、`-c' オプションの場合と同様である。
2655
2656 `-q'
2657 `--quiet'
2658 `--silent'
2659      ファイル名を示すヘッダを出力しない。
2660
2661 `-v'
2662 `--verbose'
2663      ファイル名を示すヘッダを常に出力する。
2664
2665
2666    `head' は、互換性を考慮して、`-COUNT[OPTIONS]' というオプション指定
2667 の古い書式もサポートしている。ただし、この書式が認識されるのは、最初の
2668 オプションとして指定されたときだけである。COUNT は 10 進数であり、`-c'
2669 オプションの場合と同様、サイズを示す文字 (`b', `k', `m') を後ろに続けて
2670 もよく、また、行数であることを明示する `l' や、ほかのオプション文字
2671 (`cqv') を続けることもできる。標準的なホストで使うことを意図したスク
2672 リプトでは、古い書式ではなく、`-c COUNT' や `-n COUNT' を使用するべきで
2673 ある。そのスクリプトが、古い書式にしか対応していないホストでも動作する
2674 必要がある場合は、`head' を使わないで済ました方が、たいていの場合
2675 簡明である。たとえば、`head -5' の代わりに、`sed 5q' を使用するわけだ。
2676
2677    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2678
2679 \1f
2680 File: coreutils-ja.info,  Node: tail invocation,  Next: split invocation,  Prev: head invocation,  Up: Output of parts of files
2681
2682 5.2 `tail': ファイルの末尾部分を出力する
2683 ======================================================
2684
2685 `tail' は、各 FILE の末尾部分 (デフォルトでは 10 行) を表示する。
2686 ファイルが指定されていない場合や、FILE として `-' が指定されている
2687 場合は、標準入力から読み込む。
2688
2689    書式:
2690
2691      tail [OPTION]... [FILE]...
2692
2693    指定された FILE が 2 個以上あると、`tail' は、以下のような 1 行
2694 からなるヘッダを出力する。
2695
2696      ==> FILE NAME <==
2697
2698 このヘッダは、各 FILE の出力の前に置かれる。
2699
2700    GNU の `tail' は、出力するデータの量に制限がない (ほかの系統の
2701 `tail' には、制限があるものもある)。また、GNU の `tail' には、 `-r'
2702 オプション (逆順で表示する) が存在しない。ファイルを逆順にするのは、
2703 ファイルの末端部分を表示するのとは、全く別の仕事だからだ。BSD の `tail'
2704 には、`-r' があるが、バッファの大きさまでのファイルしか逆順にできず、
2705 それは通常 32 KiB である。ファイルを逆順にするなら、GNU の `tac'
2706 コマンドの方が、信頼性という点でも、用途の広さという点でも優れている。
2707
2708    このプログラムでは以下のオプションが使用できる。参照: *note Common
2709 options::.
2710
2711 `-c K'
2712 `--bytes=K'
2713      ファイルの末尾数行を出力する代わりに、末尾の K バイトを出力する。
2714      ただし、K が `+' で始まっている場合は、各ファイルの末端から K
2715      バイト目ではなく、先頭から K バイト目を始点として出力を開始する。
2716      K は、整数であり、 以下に挙げるような何倍かを示す接尾辞を
2717      後ろに付けることもできる。 接尾辞だけ指定してもよい (訳注:
2718      その場合は、1 が前にあるものと 見なされる)。
2719           `b'  =>            512 ("blocks")
2720           `KB' =>           1000 (KiloBytes)
2721           `K'  =>           1024 (KibiBytes)
2722           `MB' =>      1000*1000 (MegaBytes)
2723           `M'  =>      1024*1024 (MebiBytes)
2724           `GB' => 1000*1000*1000 (GigaBytes)
2725           `G'  => 1024*1024*1024 (GibiBytes)
2726      `T', `P', `E', `Z', `Y' についても同様。
2727
2728 `-f'
2729 `--follow[=HOW]'
2730      ファイルの末端まで達しても、さらに文字を読み込もうとして、無限
2731      ループする。たぶん、ファイルのサイズが増加し続けているからである。
2732      複数のファイルが指定されている場合、`tail' は、異なるファイル
2733      から出力があるたびに、その出力がどのファイルから来たものかわかる
2734      ように、ヘッダを表示する。
2735
2736      このオプションを使ってファイルの追跡をするとき、二つの方法が選択
2737      できるが、その違いがわかるのは、追いかけているファイルが消去され
2738      たり、名前を変更されたりしたときだけである。もし、増大しつつある
2739      ファイルが削除されたあとでも、そのファイルの末尾の追跡を続行したい
2740      ならば、`--follow=descriptor' を使用すればよい。これがデフォルト
2741      の動作だが、ログファイルを追跡している際には、役に立たない。ログ
2742      ファイルは、ローテートされる (すなわち、消去、または名前を変更
2743      されてから、改めてオープンされる) 可能性があるからだ。そうした
2744      場合には、`--follow=name' を使用すれば、指定した名前のファイルを
2745      追跡することができる。おそらく追跡には、定期的にその名前のファイル
2746      をオープンし直すことで、何らかのプログラムによってファイルが消去
2747      されてから再作成されなかったかどうかを確かめるといった方法が、
2748      使われることだろう。なお、inotify をベースにした実装では、こうした
2749      ケースを処理するのに、ファイルを定期的に再オープンする必要がない
2750      ことを付記しておく。
2751
2752      どちらの方法を使った場合でも、追跡中のファイルのサイズが小さく
2753      なっていることがわかると、 `tail' は、ファイルが短縮されたという
2754      メッセージを出し、ファイルの末端と改めて判断したところからファイル
2755      の追尾を再開する。
2756
2757      ファイルが消去されたときの `tail' の動作は、追いかけているものが、
2758      名前か (`--follow=name')、ディスクリプタか (`--follow=descriptor')
2759      によって異なっている。名前による追跡の場合、tail はファイルが消去
2760      されたことを検出できるので、その旨メッセージを表示する。このとき、
2761      `--retry' も指定されていると、同じ名前のファイルが再作成されている
2762      かどうか、定期的な検査を継続して行う。ディスクリプタを追跡する場合は、
2763      ファイルが削除されたり、名前の変更が行われたりしても、tail はそれを
2764      検出しないので、メッセージを出さない。そうしたファイルが、もはや元の
2765      名前ではアクセスできなくなっていても、なお増大し続けているということ
2766      もありえる。
2767
2768      `descriptor' や `name' というオプションの値は、長い方のオプションの
2769      形式によってのみ指定できる。`-f' では指定できない。
2770
2771      オペランド FILE が全く指定されていず、しかも標準入力が FIFO や
2772      パイプである場合、`-f' オプションは無視される。また、標準入力が
2773      FIFO やパイプである場合には、`-' という形で指定されたオペランドが
2774      あっても、`-f' はそれに対して効果を持たない。
2775
2776      カーネルが inotify をサポートしていると、出力はファイルの変更が
2777      引き金になるので、一般に反応がキビキビしている。それに対して、
2778      カーネルが inotify をサポートしていないと、`tail' はチェック
2779      ごとに 1 秒間スリープするので (このデフォルトを変更するには、
2780      `--sleep-interval=N' を使用する)、出力の反応がやや遅めに感じられ
2781      たり、断続的に感じられたりするかもしれない。inotify のサポート
2782      なしで tail を使用する場合、反応を向上させるには、sleep する間隔を
2783      1 秒以下に設定すればよい。たとえば、次のようなエイリアスを作成する
2784      わけだ。
2785
2786           alias tail='tail -s.1'
2787
2788 `-F'
2789      このオプションは `--follow=name --retry' と同じである。すなわち、
2790      ファイルが消去された場合、tail はその名前のファイルをオープン
2791      し直そうとする。それに失敗しても、ファイルに再びアクセスできるように
2792      なるまで、再オープンを試み続ける。
2793
2794 `--retry'
2795      指定された名前のファイルを繰り返し何度でもオープンしようとする。
2796      このオプションが役に立つのは、ファイルの末尾を追跡している場合が
2797      ほとんどである (それ以外の場合は、警告メッセージを出す)。
2798
2799      ファイル・ディスクリプタによって追跡している場合は (すなわち、
2800      `--follow=descriptor' の場合は)、このオプションは、最初に
2801      ファイルをオープンするときの動作にしか影響しない。ひとたび
2802      オープンに成功してしまえば、`tail' は、ファイル名ではなく、
2803      ファイル・ディスクリプタを追跡することになるからである。
2804
2805      ファイル名によって追跡している場合は (すなわち、`--follow=name'
2806      の場合は)、`tail' は、ユーザによって中断 (kill) されるまで、
2807      いつまでも繰り返しその名前のファイルを再オープンしようとする。
2808
2809      このオプションを付けないと、 `tail' は、ファイルが存在しなく
2810      なったり、何かほかの理由でファイルにアクセスできなくなったりする
2811      ことがあっても、その旨報告するだけで、以後再検査を行うことがない。
2812
2813 `--sleep-interval=NUMBER'
2814      何秒間隔で追尾・表示動作を行うかを変更する (デフォルトは 1.0 秒
2815      間隔)。`tail' は動作の繰り返しごとに、指定されたすべてのファイル
2816      について、サイズが変わっていないかどうかのチェックを行う。`tail'
2817      の伝統的な実装では、NUMBER は整数でなければならなかったが、GNU の
2818      `tail' では、任意の浮動小数点数を指定することが可能になっている。
2819      *Note Floating point::.  `tail' が inotify を使用していると、
2820      このポーリング関係の (polling-related) オプションは通常無視される。
2821      ただし、`--pid=P' も一緒に指定されている場合は別で、その場合は、
2822      プロセス P が生きているかどうかを、`tail' が少なくとも NUMBER
2823      間隔でチェックすることになる。
2824
2825 `--pid=PID'
2826      追跡が名前によって行われていようと、ディスクリプタによって行われて
2827      いようと、FILE 引数で指定されたすべてのファイルに書き込みを行う
2828      プログラムがたった一つならば、そのプログラムのプロセス番号 PID
2829      を指定することができる。そうしておくと、そのプロセスが終了する直後に
2830      tail も終了するようになるのだ。これがきちんと動作するのは、書き込み
2831      プログラムと tail のプロセスが、同じマシンで動いているときだけで
2832      ある。たとえば、プログラムをビルドするとき、その出力をファイルに
2833      保存しながら、ファイルが増大して行くのを見守りたいならば、下記の
2834      ように `make' と `tail' を実行すればよい。そうすれば、ビルドが完了
2835      したとき、tail のプロセスも終了する。このオプションを使わない
2836      場合は、`tail -f' のプロセスを自分で止めなければならないだろう。
2837
2838           $ make >& makerr & tail --pid=$! -f makerr
2839
2840      使用されていない PID を指定した場合や、tail が対象とするファイルに
2841      書き込んでいるプロセスとは別のプロセスの PID を指定した場合は、
2842      `tail' は、FILE の増大が止まるずっと前に終了してしまうかもしれ
2843      ないし、実際に書き込んでいるプログラムが終了してしまっても、当分
2844      の間終了しないかもしれない。気をつけてほしいが、システムによっては、
2845      `--pid' が使えないことがある。その場合、`tail' は警告メッセージ
2846      を出すはずだ。
2847
2848 `--max-unchanged-stats=N'
2849      名前によってファイルの追尾を行っているとき、連続して N 回 (デフォ
2850      ルトは n=5) 追尾動作を実行しても、その間にファイルに変更がなかった
2851      場合に、ファイルを `open' し、`fstat' して、そのファイル名と結び
2852      ついている「デバイス番号/inode 番号」の組み合わせが、今でも前と同じ
2853      ままかどうかを確認する。ローテートを行うログファイルを追跡している
2854      場合、この N は、tail がローテートする前に最後の行を表示してから、
2855      新しいログファイルに溜まっている行を表示するまでの秒数に、ほぼ等
2856      しい。このオプションに意味があるのは、ポーリングを使用して (すな
2857      わち、inotify を使わずに)、名前による追跡を行うときだけである。
2858
2859 `-n K'
2860 `--lines=K'
2861      末尾の  K 行を出力する。ただし、K が `+' で始まっている場合は、
2862      各ファイルの末端から K 行目ではなく、先頭から K 行目を始点として
2863      出力を開始する。サイズの乗数接尾辞は、`-c' の場合と同様である。
2864
2865 `-q'
2866 `--quiet'
2867 `--silent'
2868      ファイル名を示すヘッダを出力しない。
2869
2870 `-v'
2871 `--verbose'
2872      ファイル名を示すヘッダを常に出力する。
2873
2874
2875    `tail' は互換性のために、`tail -[COUNT][bcl][f] [FILE]' という古い
2876 用法もサポートしているが、それが認識されるのは、上で説明した用法と衝突
2877 しないときだけである。この旧式の書式では、オプションはただ 1 個しか指定
2878 できず、ファイルも 1 個までしか指定できない。オプション中の COUNT は、
2879 省略可能な 10 進数であり、サイズを表す文字 (`b', `c', `l') を後ろに
2880 続けて、1 ブロック当たり 512 バイトのブロック数か、バイト数か、行数かを
2881 示すことができる。また、`-f' と同じ意味を持つ、`f' を続けてもよい。
2882
2883    古いシステムでは、旧式のオプション書式において、先頭の `-' を `-c'
2884 や `-n' オプションの場合と同じ意味で `+' に置き換えることができる。
2885 また、そうしたシステムでは、古い用法と標準の用法が衝突する場合には、
2886 古い用法が優先される。そうした古い動作を有効にしたり、無効にしたりする
2887 には、環境変数 `_POSIX2_VERSION' を使用すればよい (*note Standards
2888 conformance::)。
2889
2890    標準的なホストで使用するためのスクリプトでは、古い書式を使わずに、
2891 `-c COUNT[b]', `-n COUNT' オプションや `-f' オプションの方を使うべきで
2892 ある。そのスクリプトが、古い書式にしか対応していないホストでも動作しな
2893 ければならない場合でも、問題を起こしかねない表現を避けるように書き直す
2894 ことが、たいていはできるものだ。たとえば、`tail -1' の代わりに、 `sed
2895 -n '$p'' を使うといった具合である。それさえ不可能な場合は、どちらの
2896 書式を使うべきかを判断するために、`if tail -c +1 </dev/null >/dev/null
2897 2>&1; then ...' といった条件文をスクリプトで使用すればよい。
2898
2899    作成するスクリプトが標準的な動作を想定している場合でも、POSIX の
2900 バージョンによって動作に違いのある用法には、気を付けた方がよい。
2901 たとえば、`tail - main.c' は避けるべきである。`tail main.c' と解釈する
2902 ことも、`tail -- - main.c' と解釈することもできるからだ。`tail -c 4'
2903 も避けるべきである。`tail -c4' を意味するかもしれないし、`tail -c 10 4'
2904 を意味するかもしれない。`tail +4' も使わない方がよい。`tail ./+4' の
2905 意味にも、`tail -n +4' の意味にも取れるからである。
2906
2907    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2908
2909 \1f
2910 File: coreutils-ja.info,  Node: split invocation,  Next: csplit invocation,  Prev: tail invocation,  Up: Output of parts of files
2911
2912 5.3 `split': ファイルを分割する。
2913 ===========================================
2914
2915 `split' は、入力ファイル INPUT を分割して複数の出力ファイルを作成する。
2916 各出力ファイルには、INPUT の断片が、連続した形で、あるいは 1 行づつ
2917 順番に分配された形で含まれることになる (訳注: 前者は単純な分割であり、
2918 後者は後述の「ラウンド・ロビン方式」である。`-n' オプションを参照)。
2919 INPUT が指定されていない場合や、`-' である場合には、標準入力から
2920 読み込む。
2921
2922    書式:
2923
2924      split [OPTION] [INPUT [PREFIX]]
2925
2926    デフォルトでは、`split' は INPUT を 1000 行づつ各出力ファイルに
2927 書き込む (最後の断片については、何行であれ残っている行を書き込む)。
2928
2929    出力ファイルの名前は、上記書式の PREFIX (デフォルトでは `x') に複数
2930 の文字 (デフォルトでは、`aa', `ab', ...) を続けたものであり、各出力
2931 ファイルをファイル名による伝統的なソート順で結合すると、元の入力ファイル
2932 が再構成されるようになっている (ただし、`-nr/N' オプションを指定した場合
2933 は除く)。デフォルトでは、split はまず、作成するファイルに 2 文字からなる
2934 接尾辞 (訳注: suffix、すなわち上記の `aa', `ab' など) を生成して付け、
2935 その接尾辞の 1 番目の文字がアルファベットの最後に達した時点で、接尾辞を
2936 2 文字づつ増やして行く (`yz' の次は `zaaa', `zaab', ... という具合)。
2937 こうした命名法を使えば、出力ファイルがいくつあっても対応できるし、また
2938 `--additional-suffix' オプションを付けたときでも、出力ファイルが上で
2939 述べたような順に並ぶことになるわけだ。`-a' オプションが指定されている
2940 場合に、出力ファイルの名前が種切れになってしまうと、`split' はエラー
2941 メッセージを出すが、作成した出力ファイルを消去することはない。
2942
2943    このプログラムでは以下のオプションが使用できる。参照: *note Common
2944 options::.
2945
2946 `-l LINES'
2947 `--lines=LINES'
2948      INPUT から LINES 行づつ各出力ファイルに書き込む。
2949
2950      互換性を考慮して、`split' は `-LINES' という古いオプションの書式も
2951      サポートしている。新規にスクリプトを書くなら、`-l LINES' の方を使う
2952      べきである。
2953
2954 `-b SIZE'
2955 `--bytes=SIZE'
2956      INPUT から SIZE バイトづつ各出力ファイルに書き込む。 SIZE
2957      は、整数であり、 以下に挙げるような何倍かを示す接尾辞を
2958      後ろに付けることもできる。 接尾辞だけ指定してもよい (訳注:
2959      その場合は、1 が前にあるものと 見なされる)。
2960           `b'  =>            512 ("blocks")
2961           `KB' =>           1000 (KiloBytes)
2962           `K'  =>           1024 (KibiBytes)
2963           `MB' =>      1000*1000 (MegaBytes)
2964           `M'  =>      1024*1024 (MebiBytes)
2965           `GB' => 1000*1000*1000 (GigaBytes)
2966           `G'  => 1024*1024*1024 (GibiBytes)
2967      `T', `P', `E', `Z', `Y' についても同様。
2968
2969 `-C SIZE'
2970 `--line-bytes=SIZE'
2971      各出力ファイルに、ファイルサイズが SIZE バイトを超過しない範囲で、
2972      INPUT の完全な行をできるだけ多く書き込む。1 行の長さが SIZE バイト
2973      を越える行は、複数のファイルに分割される。SIZE の書式は、`--bytes'
2974      オプションの場合と同じである。
2975
2976 `--filter=COMMAND'
2977      このオプションを使用すると、各出力は、そのままファイルに書き出さ
2978      れるのではなく、パイプを通して一つづつ、指定されたシェルコマンド
2979      COMMAND に引き渡される。COMMAND 中では、環境変数 $FILE を使用する
2980      べきであり、この変数には、シェルコマンドを実行するごとに、異なる
2981      出力ファイル名が代入される。たとえば、1TiB の圧縮ファイルがあると
2982      しよう。伸長したら、サイズが大きすぎて、ディスクに納まり切らない。
2983      しかし、それを分割して、もっと扱いやすいサイズの、それぞれ圧縮した
2984      ファイルを作らねばならない。そうした課題を解決するには、次のような
2985      コマンドを実行すればよいだろう。
2986
2987           xz -dc BIG.xz | split -b200G --filter='xz > $FILE.xz' - big-
2988
2989      圧縮率が 10:1 だとすると、上のコマンドは 20GiB のファイルを 50 個
2990      ほど生成することになるだろう。ファイルの名前は、`big-aa.xz',
2991      `big-ab.xz', `big-ac.xz' などになる。
2992
2993 `-n CHUNKS'
2994 `--number=CHUNKS'
2995      INPUT を CHUNKS 個の出力ファイルに分割する。CHUNKS の部分には以下の
2996      ものが指定できる。
2997
2998           N      INPUT の現在のサイズに基づいて N 個のファイルを生成する。
2999           K/N    N 個中の K 番目のみを標準出力へ出力する。
3000           l/N    N 個のファイルを生成する。行の途中で分割しない。
3001           l/K/N  同上。ただし、N 個中の K 番目のみを標準出力に出力する。
3002           r/N    `l' に似ている。ただし、行をラウンド・ロビン方式で分配する。
3003                  (訳注: トランプの親がカードを 1 枚づつ子に配るように、
3004                          入力から 1 行づつ各出力ファイルに分配して行く。)
3005           r/K/N  同上。ただし、N 個中の K 番目のみを標準出力に出力する。
3006
3007      INPUT を  N 個の「部分 (chunk)」に分けたときに出た余りのバイトは、
3008      最後の「部分」に割り振られる。最初に行われる分割のための計算の後で
3009      追加されるバイトがあっても、それは捨て去られる (`r' モードを使用
3010      している場合を除く)。
3011
3012      INPUT の行数が N 行に足りなかったり、INPUT が短縮された場合でも、
3013      N 個のファイルすべてが作成される。
3014
3015      `l' モードについて言うと、「部分」の大きさは、「INPUT サイズ / N」
3016      前後になる。INPUT は、まず N 個の同一サイズの区画 (partition) に
3017      分割され、余りがあれば、それは最後の区画に割り当てられる。ある行の
3018      先頭が、ある区画の内側にある場合、その行は行末まで、その区画に対応
3019      するファイルに書き込まれる。行は、たとえ後続する区画にまではみ出して
3020      いても分割されないので、書き出されるファイルは、区画のサイズより
3021      大きくなることもあれば、小さくなることもある。行が後続する区画を
3022      すっぽり覆ってしまうほど長い場合には、空っぽのファイルができること
3023      さえある。
3024
3025      `r' モードでは、INPUT のサイズは問題にならない。だから、入力は、
3026      たとえば、パイプからであっても構わない。
3027
3028 `-a LENGTH'
3029 `--suffix-length=LENGTH'
3030      使用する接尾辞の長さを LENGTH 文字にする。LENGTH に 0 を指定する
3031      と、`-a' オプションを (すでに指定していた場合でも) 全く指定しな
3032      かったのと、同じことになり、従って、デフォルトの動作が有効になる。
3033      すなわち、接尾辞は、2 文字から始まり、`-n' や `--numeric-suffixes
3034      =FROM' オプションが指定されていないかぎり、必要になるごとに、2 文字
3035      づつ自動的に増えて行く。
3036
3037 `-d'
3038 `--numeric-suffixes[=FROM]'
3039      接尾辞にアルファベットの小文字ではなく、数字を使用する。数字の接尾
3040      辞では、 FROM が指定されていれば FROM から、指定されていなければ 0
3041      から数を数えて行く。注意していただきたいが、FROM の値を指定すると、
3042      上で述べた接尾辞の長さを自動的に増やして行くデフォルトの機能まで無効
3043      になる。そこで、ユーザとしては、99 を越える数字を接尾辞として使える
3044      ようにするため、`-a' オプションも併せて指定したくなるかもしれない。
3045
3046 `--additional-suffix=SUFFIX'
3047      出力ファイル名の末尾に SUFFIX をさらに追加する。SUFFIX 中に
3048      スラッシュが含まれていてはならない。
3049
3050 `-e'
3051 `--elide-empty-files'
3052      サイズ 0 の出力ファイルができないようにする。そうしたものが生成
3053      されることがあるのは、`--number' を使ったときである。入力ファイル
3054      が (短縮されて) 指定された数の出力ファイルを作るには分量が
3055      足りなくなっている場合や、1 行が長すぎて、後続する「部分」を
3056      すっぽり飲み込んでしまっている場合などがそれに当たる。この
3057      オプションが指定されているときでも、出力ファイルの連続番号が、
3058      順番に増えていくことに変わりはない。
3059
3060 `-u'
3061 `--unbuffered'
3062      `--number r/...' モードにおいて入力を即座に出力する。このモードは、
3063      作業にかなり時間がかかるのだ。
3064
3065 `--verbose'
3066      各出力ファイルをオープンする直前に、診断メッセージを表示する。
3067
3068
3069    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3070
3071    `--number' (`-n') の動作を理解していただくために、用例をいくつか
3072 挙げてみる。
3073
3074    デフォルトでは、1 行が 2 行以上に分割されることがあるのに、注目して
3075 いただきたい。
3076
3077      $ seq -w 6 10 > k; split -n3 k; head xa?
3078      ==> xaa <==
3079      06
3080      07
3081      ==> xab <==
3082
3083      08
3084      0
3085      ==> xac <==
3086      9
3087      10
3088
3089    "l/" 修飾子を使用して、行の途中で分割しないようにする。
3090
3091      $ seq -w 6 10 > k; split -nl/3 k; head xa?
3092      ==> xaa <==
3093      06
3094      07
3095
3096      ==> xab <==
3097      08
3098      09
3099
3100      ==> xac <==
3101      10
3102
3103    "r/" 修飾子を使用して、ラウンド・ロビン方式で分配する。
3104
3105      $ seq -w 6 10 > k; split -nr/3 k; head xa?
3106      ==> xaa <==
3107      06
3108      09
3109
3110      ==> xab <==
3111      07
3112      10
3113
3114      ==> xac <==
3115      08
3116
3117    K 番目の「部分」だけ取り出すこともできる。次の例は、33 の「部分」に
3118 分け、そのうちの  7 番目だけを取り出して、表示している。
3119
3120      $ seq 100 > k; split -nl/7/33 k
3121      20
3122      21
3123      22
3124
3125 \1f
3126 File: coreutils-ja.info,  Node: csplit invocation,  Prev: split invocation,  Up: Output of parts of files
3127
3128 5.4 `csplit': ファイルを内容を目印にして分割する。
3129 ====================================================================
3130
3131 `csplit' は、入力ファイル INPUT を分割して 0 個以上の出力ファイルを
3132 生成する。INPUT が `-' である場合は、標準入力から読み込む。
3133
3134    書式:
3135
3136      csplit [OPTION]... INPUT PATTERN...
3137
3138    出力ファイルの中身がどうなるかは、以下で詳しく述べるように、引数
3139 PATTERN によって決まってくる。引数 PATTERN が、入力ファイル中に存在
3140 しない行を指している場合は、エラーになる (たとえば、入力の残りの
3141 部分に、指定された正規表現にマッチする行がもう存在しない場合)。
3142 すべてのパターン・マッチが終わったとき、残っている入力があれば、
3143 最後の出力ファイルに書き出される。
3144
3145    デフォルトでは、`csplit' は、出力ファイルを生成した後で、各出力
3146 ファイルに書き込んだバイト数を表示する。
3147
3148    パターン引数 PATTERN には、以下のタイプがある。
3149
3150 `N'
3151      入力の最初から N 行目の直前までを含む (つまり、N-1 行目までの)
3152      出力ファイルを作成する (N は正の整数)。繰り返し回数の指定が後に
3153      続く場合は、繰り返しごとに、入力ファイルの次の N 行分を含む出力
3154      ファイルを作成していく。
3155
3156 `/REGEXP/[OFFSET]'
3157      現在行から、入力ファイル中の次に REGEXP にマッチする行の直前までを
3158      内容とする (すなわち、マッチする行は含まない) 出力ファイルを作成
3159      する。整数の OFFSET を指定してもよい。指定した場合は、マッチする行
3160      にプラス/マイナス OFFSET した行の直前までの入力が (つまり、その行は
3161      含まない)、出力ファイルに書き込まれ、書き込まれた次の行から入力の
3162      後続部分が始まることになる。
3163
3164 `%REGEXP%[OFFSET]'
3165      上記のタイプと同様だが、出力ファイルを作成しない点が異なる。要するに、
3166      入力ファイルのその部分は捨てられることになるわけだ。
3167
3168 `{REPEAT-COUNT}'
3169      直前に行ったパターンの検索を、さらに REPEAT-COUNT 回繰り返す。
3170      REPEAT-COUNT には正の整数か、アステリスクを指定できる。後者は、
3171      入力がなくなるまで、必要なだけ何回でも繰り返すことを意味する。
3172      (訳注: `csplit INPUT '/PATTERN_1/' '{3}' '/PATTERN_2/' '{*}''
3173      のように使用する。)
3174
3175
3176    出力ファイルの名前は、接頭辞 (prefix、デフォルトでは `xx') に接尾辞
3177 (suffix) を続けたものになる。デフォルトの接尾辞は、二桁の 10 進数を `00'
3178 から `99' まで順番に増やして行ったものである。いかなる場合でも、出力
3179 ファイルを、ファイルの名前によってソートした順番で結合すると、元の入力
3180 ファイルが生成されるようになっている。
3181
3182    `csplit' のデフォルトでは、エラーになった場合や、ハングアップ、
3183 割り込み、中止、終了といったシグナルを受け取った場合には、それまでに
3184 作成した出力ファイルをすべて消去してから終了する。
3185
3186    このプログラムでは以下のオプションが使用できる。参照: *note Common
3187 options::.
3188
3189 `-f PREFIX'
3190 `--prefix=PREFIX'
3191      PREFIX を出力ファイル名の接頭辞として使用する。
3192
3193 `-b SUFFIX'
3194 `--suffix=SUFFIX'
3195      SUFFIX を出力ファイル名の接尾辞として使用する。このオプションを
3196      指定する場合、接尾辞として指定する文字列には、`printf(3)' 方式の
3197      変換指定が必ず一つは (それも、一つだけ) 含まれていなければなら
3198      ない。変換指定には、形式指定フラグ、フィールド幅、精度指定と
3199      いった修飾子を付けてもよく、3 種の修飾子をすべて付けることも
3200      できる。フォーマット文字は、バイナリの符号なし整数である引数を、
3201      人間に読みやすい形式に変換するものでなければならない。フォーマット
3202      文字の `d' と `i' は、`u' の別名であり、`u', `o', `x', `X' 変換が
3203      可能である。SUFFIX の全体が (現在の出力ファイルが何番目かという
3204      情報とともに) `sprintf(3)' 関数に引き渡され、出力ファイルの一つ一つ
3205      に対して、ファイル名に使う接尾辞が順番に作られることになる。なお、
3206      このオプションを使用すると、`--digits' オプションは無視される。
3207
3208 `-n DIGITS'
3209 `--digits=DIGITS'
3210      出力ファイル名に含まれる数字の桁数を、デフォルトの 2 桁から DIGITS
3211      桁にする。
3212
3213 `-k'
3214 `--keep-files'
3215      エラーが起きても、出力ファイルを消去しない。
3216
3217 `--suppress-matched'
3218      指定した PATTERN にマッチする行を出力しない。言い換えれば、境界に
3219      なる行が、分割されたファイルの 2 番目以降の断片の先頭に現れない
3220      ようにする。(coreutils-8.22 の新機能。訳注: PATTERN が正規表現の
3221      場合には、境界になる行がファイル中にたとえ 1 箇所しかなくても、
3222      その行の表示を抑制するには、`csplit --suppress-matched INPUT
3223      PATTERN '{*}'' などと、繰り返しの指定をする必要があるようだ。)
3224
3225 `-z'
3226 `--elide-empty-files'
3227      サイズ 0 の出力ファイルができないようにする (入力ファイルを各部分
3228      に区切る行が、どの部分においても最初の行になることを期待している
3229      場合に、このオプションを使わないと、一番目の出力ファイルがたいてい
3230      サイズ 0 になる)。このオプションが指定されているときでも、出力
3231      ファイルの連続番号が 0 から始まって、順番に増えていくことに変わり
3232      はない。
3233
3234 `-s'
3235 `-q'
3236 `--silent'
3237 `--quiet'
3238      出力ファイルのサイズを表示しない。
3239
3240
3241    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3242
3243    用例を挙げてみよう。まず、練習用に空のディレクトリを作って、そこに
3244 移動する。
3245
3246      $ mkdir d && cd d
3247
3248    次に、1 から 14 まで連続する数を、0 または 5 で終わる行で分割する。
3249
3250      $ seq 14 | csplit - '/[05]$/' '{*}'
3251      8
3252      10
3253      15
3254
3255    ここで表示された各数字は、csplit が今作成した出力ファイルのサイズ
3256 である。その出力ファイルの名前をリストする。
3257
3258      $ ls
3259      xx00  xx01  xx02
3260
3261    `head' を使って、内容を見る。
3262
3263      $ head xx*
3264      ==> xx00 <==
3265      1
3266      2
3267      3
3268      4
3269
3270      ==> xx01 <==
3271      5
3272      6
3273      7
3274      8
3275      9
3276
3277      ==> xx02 <==
3278      10
3279      11
3280      12
3281      13
3282      14
3283
3284    次の例では、入力を空行で分割している。
3285
3286      $ csplit --suppress-matched INPUT.TXT '/^$/' '{*}'
3287
3288 \1f
3289 File: coreutils-ja.info,  Node: Summarizing files,  Next: Operating on sorted files,  Prev: Output of parts of files,  Up: Top
3290
3291 6 ファイルの要約 (行数、単語数、チェックサム)
3292 *****************************************************************
3293
3294 以下のコマンドは、ファイル内容全体を表現する若干の数字を生成する。
3295
3296 * Menu:
3297
3298 * wc invocation::            行数、単語数、バイト数を表示する。
3299 * sum invocation::           チェックサムとブロック数を表示する。
3300 * cksum invocation::         CRC チェックサムとバイト数を表示する。
3301 * md5sum invocation::        MD5 ダイジェストの表示、または検査をする。
3302 * sha1sum invocation::       SHA-1 ダイジェストの表示、または検査をする。
3303 * sha2 utilities::           SHA-2 ダイジェストの表示、または検査をする。
3304
3305 \1f
3306 File: coreutils-ja.info,  Node: wc invocation,  Next: sum invocation,  Up: Summarizing files
3307
3308 6.1 `wc': 行数、単語数、バイト数を表示する
3309 ==========================================================
3310
3311 `wc' は、指定された各 FILE に含まれる、バイト数、文字数、ホワイト
3312 スペース (訳注: 空白、タブ、改行など) で区切られた単語数、改行数を算出
3313 する。FILE が指定されなかった場合や、FILE として `-' が指定された
3314 場合は、標準入力を対象とする。
3315
3316    書式:
3317
3318      wc [OPTION]... [FILE]...
3319
3320    `wc' は各ファイルにつき、一行の算出結果を出力する。引数として
3321 ファイルが指定されていれば、そのファイル名を数値の後ろに表示する。
3322 複数の FILE が指定されている場合は、最後の行で合計を表示し、ファイル
3323 名の部分に、`total' と書き込む。表示される数値の順番は、改行数、単語数、
3324 文字数、バイト数、最長行の長さになる。各数値は、フィールドに右詰めで
3325 表示され、フィールド間には、少なくとも一個の空白が置かれる。そうする
3326 ことで、複数の数字とファイル名が、たいていの場合きちんと整列するように
3327 なっているのだ。数値の入るフィールドの幅は、入力に応じて変化するので、
3328 一定のフィールド幅を当てにするべきではない。ただし、GNU の拡張として、
3329 表示される数値がただ 1 個だけの場合は、その数値の頭に空白を入れない
3330 ことになっている。
3331
3332    デフォルトでは、`wc' は 3 個の数値を表示する。すなわち、改行数、単語
3333 数、バイト数である。オプションによって、特定の数値のみを表示するように
3334 指定することもできる。どんなオプションも、それ以前に指定されたオプション
3335 を取り消すことはない。従って、
3336
3337      wc --bytes --words
3338
3339 上記のコマンドは、バイト数と単語数の両方を表示することになる。
3340
3341    `--max-line-length' を指定すると、`wc' はファイルごとの最長行の
3342 長さを表示する。さらに、複数のファイルが存在する場合は、(各最長行の
3343 合計ではなく) 最長行中の最長のものを表示する。ここで言う行の長さは、
3344 画面に表示される桁数のことである。表示桁数の計算は現在のロケールに
3345 従って行われ、タブ位置は 8 桁ごとに来るものとされる。
3346
3347    このプログラムでは以下のオプションが使用できる。参照: *note Common
3348 options::.
3349
3350 `-c'
3351 `--bytes'
3352      バイト数のみを表示する。
3353
3354 `-m'
3355 `--chars'
3356      文字数のみを表示する。
3357
3358 `-w'
3359 `--words'
3360      単語数のみを表示する。
3361
3362 `-l'
3363 `--lines'
3364      改行数のみを表示する。
3365
3366 `-L'
3367 `--max-line-length'
3368      最長行の長さのみを表示する。
3369
3370 `--files0-from=FILE'
3371      コマンドラインで名前を指定されたファイルの処理を行わない。その代わり
3372      に、ファイル FILE に名前が書き込まれているファイルの処理を行う。
3373      なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL)
3374      で終端されていなければならない。このオプションは、ファイル名のリスト
3375      が長すぎて、コマンドライン長の上限を超過してしまいそうなときに、
3376      便利である。そうした場合、`wc' を `xargs' 経由で実行するのは、
3377      望ましくない。なぜなら、`xargs' はファイルのリストをいくつかの部分
3378      に分割して `wc' に渡すので、`wc' はリスト全体の合計ではなく、
3379      部分リストごとの合計を表示してしまうからである。 ASCII NUL
3380      で終端されたファイル名のリストを得る方法の一つは、 GNU `find' に
3381      `-print0' を付けて使うことである。FILE に `-' を指定すれば、 ASCII
3382      NUL で終端されたファイル名を標準入力から読み込むことが できる。
3383
3384      たとえば、カレント・ディレクトリ以下にある、すべての `.c' ファイル
3385      や `.h' ファイルの内で、最長の行の長さを知るには、次のようにする。
3386
3387           find . -name '*.[ch]' -print0 |
3388             wc -L --files0-from=- | tail -n1
3389
3390
3391    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3392
3393 \1f
3394 File: coreutils-ja.info,  Node: sum invocation,  Next: cksum invocation,  Prev: wc invocation,  Up: Summarizing files
3395
3396 6.2 `sum': チェックサムとブロック数を表示する
3397 ==============================================================
3398
3399 `sum' は、指定された各 FILE の 16-bit チェックサムを計算する。 FILE
3400 が指定されなかった場合や、FILE として `-' が指定された場合は、
3401 標準入力を対象とする。
3402
3403    書式:
3404
3405      sum [OPTION]... [FILE]...
3406
3407    `sum' は各 FILE のチェックサムを表示し、その後にファイルのブロック数
3408 (整数に切り上げたもの) を続ける。複数の FILE が指定されていると、
3409 ファイル名も表示される (デフォルト)。(`--sysv' オプションが指定されて
3410 いる場合は、引数に一つでもファイルがあれば、そのファイル名が表示される。)
3411
3412    デフォルトでは、GNU の `sum' は、BSD の `sum' と互換性のある
3413 アルゴリズムを使って、チェックサムを計算し、1 ブロック 1024 バイトの
3414 ブロック数でファイルサイズを表示する。
3415
3416    このプログラムでは以下のオプションが使用できる。参照: *note Common
3417 options::.
3418
3419 `-r'
3420      デフォルトの (BSD と互換性のある) アルゴリズムを使用する。この
3421      オプションが存在しているのは、System V の `sum' との互換性のため
3422      である。前方に `-s' オプションも指定されているとき以外、このオプ
3423      ションは効果を持たない。
3424
3425 `-s'
3426 `--sysv'
3427      System V の `sum' のデフォルトと互換性のあるアルゴリズムを使って、
3428      チェックサムを計算し、1 ブロック 512 バイトのブロック数でファイル
3429      サイズを表示する。
3430
3431
3432    `sum' は、互換性のために提供されている。新しいアプリケーションでは、
3433 `cksum' プログラム (次のセクションを参照) を使う方がよい。
3434
3435    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3436
3437 \1f
3438 File: coreutils-ja.info,  Node: cksum invocation,  Next: md5sum invocation,  Prev: sum invocation,  Up: Summarizing files
3439
3440 6.3 `cksum': CRC チェックサムとバイト数を表示する
3441 =================================================================
3442
3443 `cksum' は、指定された各 FILE の CRC (cyclic redundancy check、巡回
3444 冗長検査) チェックサムを計算する。FILE が指定されなかった場合や、 FILE
3445 として `-' が指定された場合は、標準入力を対象とする。
3446
3447    書式:
3448
3449      cksum [OPTION]... [FILE]...
3450
3451    `cksum' は、各ファイルの CRC チェックサムとバイト数を表示する。また、
3452 引数が指定されていない場合を除いて、ファイル名も表示する。
3453
3454    `cksum' は通常、信頼性の低い方法 (たとえば、netnews) によって転送
3455 されたファイルに損傷がないことを確認するために使用される。受信した
3456 ファイルに対する `cksum' の出力を、転送元のファイルに対する `cksum'
3457 の出力 (たいてい、配布物中に入っている) と比較するわけである。
3458
3459    CRC のアルゴリズムは、POSIX 規格によって規定されており、BSD や
3460 System V の `sum' のアルゴリズム (直前のセクションを参照) と互換性が
3461 ない。CRC アルゴリズムの方が信頼性が高い。
3462
3463    オプションは、`--help' と `--version' だけである。*Note Common
3464 options::.
3465
3466    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3467
3468 \1f
3469 File: coreutils-ja.info,  Node: md5sum invocation,  Next: sha1sum invocation,  Prev: cksum invocation,  Up: Summarizing files
3470
3471 6.4 `md5sum': MD5 ダイジェストの表示、または検査をする
3472 ========================================================================
3473
3474 `md5sum' は、指定された各 FILE の 128-bit チェックサムを計算する。
3475 チェックサムは、指紋 ("fingerprint") とか、メッセージ・ダイジェスト
3476 ("message-digest") とも呼ばれる (訳注: ハッシュ値と呼ばれることもある)。
3477
3478    注意: MD5 ダイジェストは、ファイルの不測の損傷を検知することに
3479 関して、単純な CRC (`cksum' コマンドで使用できる) よりも信頼性が高い。
3480 二つのファイルがたまたま同一の MD5 値を持っている確率は、ほとんどゼロ
3481 だからである。だからと言って、悪意のある改竄に対して安全だと考えては
3482 ならない。ある特定の MD5 指紋を持つファイルを見つけ出すことは、現在の
3483 ところ事実上不可能だと考えられているが、デジタル証明書などのファイルが
3484 署名に MD5 ダイジェストを使用しているとき、そうしたファイルに手を
3485 加えて、正当に見えるようする方法なら、周知のことだからである。もっと
3486 安全なハッシュ値が必要なら、SHA-2 の使用を考慮した方がよい。 *Note sha2
3487 utilities::.
3488
3489    指定された FILE が `-' の場合や、ファイルが全く指定されなかった
3490 場合は、`md5sum' は標準入力のチェックサムを計算する。また、`md5sum' は、
3491 ファイルとチェックサムの間に矛盾がないかどうかを判定することもできる。
3492
3493    書式:
3494
3495      md5sum [OPTION]... [FILE]...
3496
3497    各 FILE に対して `md5sum' は、MD5 チェックサム、入力モードがバイ
3498 ナリかテキストかを示すフラグ、それにファイル名を出力する。FILE に
3499 バックスラッシュや改行文字が含まれている場合は、出力する行の先頭に
3500 バックスラッシュを付け、さらに、ファイル名中の問題のある各文字を
3501 バックスラッシュでエスケープする。そうすることで、わがままなファイル
3502 名があっても、出力に誤解の余地がないようにしているわけだ。FILE が
3503 指定されていなかったり、`-' という形で指定されている場合は、標準入力
3504 から読み込む。
3505
3506    このプログラムでは以下のオプションが使用できる。参照: *note Common
3507 options::.
3508
3509 `-b'
3510 `--binary'
3511      各入力ファイルをバイナリとして扱う。すなわち、入力ファイルをバイナリ
3512      モードで読み込み、出力に `*' というフラグを付ける。このオプションは
3513      `--text' の反対である。バイナリファイルとテキストファイルを区別しな
3514      い GNU のようなシステムでは、このオプションは入力モードがバイナリ
3515      であるとのフラグを付けるだけであり、MD5 チェックサムの値には影響を
3516      及ぼさない。このオプションは、バイナリファイルとテキストファイルを
3517      区別する MS-DOS のようなシステムでは、デフォルトである。だだし、
3518      読み込みを標準入力から行い、その標準入力が端末であるときは除く。
3519
3520 `-c'
3521 `--check'
3522      各 FILE から (FILE が指定されなかった場合は、標準入力から)、ファ
3523      イル名とチェックサム情報を読み込み (FILE をチェックサム計算の対象と
3524      なるデータとして読み込むわけはない)、そのチェックサム情報が、名前を
3525      挙げられているファイルの内容に対応しているかどうかを報告する。この
3526      モードの `md5sum' に対する入力は、たいていの場合、事前に `md5sum'
3527      を実行してチェックサムを作成したときの出力である。入力の有効な行は
3528      それぞれ、MD5 チェックサム、バイナリかテキストかのフラグ、ファイル
3529      名の順になっている。バイナリモードには `*' の指標が付き、テキスト
3530      モードには、` ' (空白) の指標が付く。そうした各行に対して、`md5sum'
3531      は、そこに名前を挙げられたファイルを読み込み、その MD5 チェックサム
3532      を計算する。そして、算出したメッセージダイジェストが、そのファイル名
3533      と同じ行にあるチェックサムと一致しない場合は、そのファイルがテストに
3534      失敗したことを報告するのである。両者が一致した場合は、テストにパス
3535      したことになる。デフォルトでは、有効な各行に対して標準出力にメッ
3536      セージを 1 行づつ書き出し、指名されたファイルがテストにパスしたか
3537      どうかを明かにする。また、すべてのチェックが完了したとき、テストに
3538      失敗したものが一つでもあれば、警告メッセージを標準エラーに出力する。
3539      この出力を抑制したければ、`--status' オプションを使用すればよい。
3540      リストされたファイルの中に、オープンできなかったり、読み込めなかっ
3541      たりするものがあった場合や、有効な行に書いてあるチェックサムが対応
3542      するファイルの実際の値と一致しなかった場合、それに、有効な行が全く
3543      存在しなかった場合は、`md5sum' は 0 以外のステータスで終了する。
3544      それ以外の場合は正常終了することになる。
3545
3546 `--quiet'
3547      このオプションが役に立つのは、チェックサムを照合するときだけである。
3548      このオプションを指定すると、チェックサムを照合する際、検査に成功した
3549      ファイルごとに 'OK' (訳注: 日本語では、「成功」または「完了」) の
3550      メッセージを出さなくなる。ただし、ファイルが照合に失敗した場合は、
3551      デフォルトと同じ 1 ファイル 1 行の形式で結果を報告する。チェック
3552      サムに何らかの不一致があった場合は、失敗を総括した警告メッセージも
3553      標準出力に表示する。
3554
3555 `--status'
3556      このオプションが役に立つのは、チェックサムを照合するときだけである。
3557      このオプションを指定すると、チェックサムを照合する際、デフォルトの
3558      1 ファイルに付き 1 行の判定メッセージを出さなくなる。また、照合の
3559      失敗があっても、それを総括した警告メッセージを出力することがない。
3560      とは言え、ファイルのオープンや読み込みに失敗した場合は、やはり
3561      それぞれの診断結果を標準エラーに表示する。リストされたすべての
3562      ファイルを読み込むことができ、しかも、すべてのファイルについて、
3563      対応する MD5 チェックサムと矛盾がなければ、正常終了する。それ以外
3564      の場合は、失敗があったことを示すステータスコードで終了する。
3565
3566 `--tag'
3567      BSD スタイルのチェックサムを出力する。つまり、使用したチェックサム
3568      のアルゴリズムも表示するということだ。GNU の拡張として、問題を起こ
3569      しかねない文字を含むファイル名は、上述したようにエスケープされ、
3570      さらに、行の先頭に エスケープの指標に使われたのと同じ `\' 文字が
3571      付けられる。`--tag' オプションはバイナリ・モードを意味し、`--text'
3572      オプションと一緒に使うことは認められていない。そんなことをサポート
3573      しても、出力の書式をむやみに繁雑にするだけで、利益はほとんどない
3574      からである。
3575
3576 `-t'
3577 `--text'
3578      各入力ファイルをテキストとして扱う。すなわち、入力ファイルをテキスト
3579      モードで読み込み、出力に ` ' というフラグを付ける。このオプションは
3580      `--binary' の反対である。バイナリファイルとテクストファイルを区別
3581      しない GNU のようなシステムでは、このオプションはデフォルトである。
3582      ほかのシステムでも、読み込みを標準入力から行い、その標準入力が端末で
3583      あるときは、デフォルトになる。ただし、`--tag' が使用されているとき
3584      に、このモードがデフォルトになることはない。
3585
3586 `-w'
3587 `--warn'
3588      チェックサムを照合する際、MD5 チェックサムを記載した行の書式に
3589      正しくないものがあると、その旨警告を発する。このオプションが
3590      役に立つのは、チェックされる入力中の、数行を除いたすべての行が、
3591      有効なときだけである。
3592
3593 `--strict'
3594      チェックサムを照合する際、無効な入力行が 1 行でもあれば、そうした
3595      行のすべてについて警告を発したのち、0 以外の終了ステータスで終了
3596      する。
3597
3598
3599    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3600
3601 \1f
3602 File: coreutils-ja.info,  Node: sha1sum invocation,  Next: sha2 utilities,  Prev: md5sum invocation,  Up: Summarizing files
3603
3604 6.5 `sha1sum': SHA-1 ダイジェストの表示、または検査をする
3605 ===========================================================================
3606
3607 `sha1sum' は、指定された各 FILE の 160-bit チェックサムを計算する。
3608 このコマンドの使用法やオプションは、`md5sum' と全く同じである。 *Note
3609 md5sum invocation::.
3610
3611    注意: SHA-1 ダイジェストは MD5 より安全であり、コリジョン
3612 (collision、衝突。別のファイルが同一の指紋を持つこと) が起きたという
3613 話を聞いたことはない。しかしながら、大量の -- と言っても非現実的な
3614 ほどではない -- リソースがあれば、コリジョンを作り出せることがわかって
3615 いる。この理由から、SHA-1 は、もっと安全な SHA-2 ハッシュ・アルゴリズム
3616 に徐々に移行すべきだと、一般に考えられている。 *Note sha2 utilities::.
3617
3618 \1f
3619 File: coreutils-ja.info,  Node: sha2 utilities,  Prev: sha1sum invocation,  Up: Summarizing files
3620
3621 6.6 sha2 utilities: SHA-2 ダイジェストの表示、または検査をする
3622 ================================================================================
3623
3624 コマンド `sha224sum', `sha256sum', `sha384sum', `sha512sum' は、一まとめ
3625 にして SHA-2 ハッシュと呼ばれる様々な長さのチェックサムを計算する
3626 (それぞれ、224, 256, 384, 512 bits である)。こうしたコマンドの使用法
3627 とオプションは、`md5sum' と全く同じである。*Note md5sum invocation::.
3628
3629    注意: SHA384 と SHA512 のダイジェストは、SHA224 や SHA256 に比べて、
3630 計算にかなり時間がかかる。32 ビットのコンピュータではなおさらである。
3631
3632 \1f
3633 File: coreutils-ja.info,  Node: Operating on sorted files,  Next: Operating on fields,  Prev: Summarizing files,  Up: Top
3634
3635 7 ソートしたファイルの操作
3636 **************************************
3637
3638 以下のコマンドは、ソートしたファイルを操作 (生成) する。
3639
3640 * Menu:
3641
3642 * sort invocation::          テキストファイルを並べ替える。
3643 * shuf invocation::          テキストファイルをシャッフルする。
3644 * uniq invocation::          ファイルから重複を省く。
3645 * comm invocation::          ソート済みの二つのファイルを一行づつ比較する。
3646 * ptx invocation::           ファイル内容の permuted index を作成する。
3647 * tsort invocation::         トポロジカル・ソート。
3648
3649 \1f
3650 File: coreutils-ja.info,  Node: sort invocation,  Next: shuf invocation,  Up: Operating on sorted files
3651
3652 7.1 `sort': テキストファイルを並べ替える
3653 ======================================================
3654
3655 `sort' は、指定されたファイルから読み込んだすべての行に対して、ソート
3656 (sort、一定の基準に従った並べ替え)、マージ (merge、統合)、比較を行う。
3657 ファイルが一つも指定されなかった場合や、FILE として `-' が指定された
3658 場合は、標準入力から読み込む。デフォルトでは、`sort' は結果を標準出力
3659 に書き出す。
3660
3661    書式:
3662
3663      sort [OPTION]... [FILE]...
3664
3665    `sort' には三つの動作モードがある。ソート (これがデフォルト)、
3666 マージ、それに、すでにソートされているかどうかのチェックである。
3667 動作モードの変更には、以下のオプションを使用する。
3668
3669 `-c'
3670 `--check'
3671 `--check=diagnose-first'
3672      指定されたファイルがすでにソートされているかどうかをチェックする。
3673      ファイル全体がソート済みでない場合は、診断メッセージを出し、順番
3674      から外れている最初の箇所を示してから、ステータス 1 で終了する。
3675      ファイルがソート済みの場合は、正常終了する。入力ファイルは、1 個
3676      しか指定できない。
3677
3678 `-C'
3679 `--check=quiet'
3680 `--check=silent'
3681      指定されたファイルがすでにソート済みだったら、正常終了する。
3682      さもなければ、ステータス 1 で終了。入力ファイルは、1 個しか指定
3683      できない。このオプションは `-c' と同様だが、診断メッセージを
3684      出さない点が異なる。
3685
3686 `-m'
3687 `--merge'
3688      指定された複数のファイルを、一つのグループとしてソートすることで
3689      統合を行う。各入力ファイルは、必ずそれぞれがソート済みでなければ
3690      ならない。マージモードの代わりにソートモードを使えば、そうした条件
3691      なしで、ソートとマージを行うことができる。マージモードがあるのは、
3692      それが使える場合は、その方が高速だからである。
3693
3694
3695    二つの行の比較は、次のように行われる。`sort' は、対になる各フィールド
3696 を、コマンドラインで指定された順番で、そのフィールドに結びついた順序関係
3697 のオプションに従いつつ比較し、相違が見つかるか、比較するフィールドが
3698 なくなるまでそれを続ける。キーとなるフィールドが指定されていない場合は、
3699 デフォルトのキーである行全体が比較に使用される。最後に、すべてのキーが
3700 同じだったときは、最後の手段として、`--reverse' (`-r') 以外の順序関係の
3701 どんなオプションも指定されていないかのように、行全体を比較する。
3702 `--stable' オプションを指定すると、この最後の手段の比較 ("last-resort
3703 comparison") を行わないようになり、その結果、すべてのキー・フィールドが
3704 等価である行は、互いに対する元の順序がそのまま維持される。 `--unique'
3705 (`-u') オプションも、最後の手段の比較を無効にする。
3706
3707    別の指定がなされていないかぎり、すべての比較は、`LC_COLLATE' の
3708 ロケールによって指定されている、文字の照合順序で行われる。 (1)
3709
3710    GNU の `sort' では (GNU のすべてのユーティリティについて規定されて
3711 いるとおり)、入力行の長さに上限がない。言い換えれば、各行に含まれる
3712 バイト数に制限がない。また、入力ファイルの最後のバイトが改行でなければ、
3713 GNU の `sort' は黙って改行を追加する。なお、行末の改行は、比較に当たって
3714 は、行の一部として扱われない。
3715
3716    終了ステータス:
3717
3718      0: エラーが起きなかった。
3719      1: `-c' や `-C' を付けて実行した際に、入力がソートされていなかった。
3720      2: エラーが起きた。
3721
3722    環境変数 `TMPDIR' が設定されていれば、`sort' はその値をテンポラリ・
3723 ファイルを置くディレクトリとして `/tmp' の代わりに使用する。
3724 `--temporary-directory' (`-T') オプションは、環境変数よりさらに優先さ
3725 れる。
3726
3727    以下に挙げるオプションは、出力する行の順序に影響を与える。こうした
3728 オプションは、グローバルなオプションとして指定することもできるし、キー
3729 となる特定のフィールドに対してのみ働くように指定することもできる。キー
3730 となるフィールドが全く指定されていない場合は、グローバルなオプションが
3731 行全体の比較に使用される。キー・フィールドの指定がある場合は、グローバル
3732 なオプションは、キー・フィールドのうち、それ自身のオプションが特に指定
3733 されていないフィールドに継承される。POSIX 以前の `sort' のバージョンを
3734 使用している場合、グローバルなオプションが効果を持つのは、それより後で
3735 指定されるキー・フィールドに対してだけなので、移植を考慮したシェルスク
3736 リプトでは、グローバル・オプションを最初に指定した方がよい。
3737
3738 `-b'
3739 `--ignore-leading-blanks'
3740      各行中でソートに使うキーを捜すときに、文字の前にある空白を無視する。
3741      デフォルトの空白は、スペースまたはタブだが、`LC_CTYPE' のロケールに
3742      よっては違うかもしれない。なお、次のことに留意してほしい。空白は、
3743      使用しているロケールの照合ルールによっては無視されることがあるが、
3744      このオプションを指定しておかないと、`-k' オプションで指定される
3745      キー中の文字の位置に関して、空白が意味を持つことになる。
3746
3747 `-d'
3748 `--dictionary-order'
3749      電話帳 ("phone directory") 順にソートする。ソートする際、表示可能
3750      文字、数字、空白以外のすべての文字を無視する。デフォルトの表示可能
3751      文字と数字は ASCII のそれであり、空白はスペースまたはタブだが、後者
3752      は `LC_CTYPE' のロケールによっては違うかもしれない。
3753
3754 `-f'
3755 `--ignore-case'
3756      アルファベットの小文字を、一回すべて対応する大文字に直してから、
3757      比較する。その結果、たとえば、`b' と `B' は等価なものとしてソート
3758      される。どの文字がどのタイプに属するか (訳注: たとえば、大文字か
3759      小文字か) を決めているのは、`LC_CTYPE' のロケールである。`--unique'
3760      オプションと一緒に使用したとき、小文字を使っている等価な行があると、
3761      その小文字の行は捨てられることになる。(大文字を使っている等価な行の
3762      方を捨てる方法は、現在のところ存在しない。(`--reverse' オプションが
3763      あっても、それが効果を発揮するのは、小文字の行が捨てられた後の最終
3764      結果に対してだけなのだ。)) (訳注: 実際の動作はこの説明と少し違う。
3765      最近の `sort' では、`--unique' と併せて使用した場合、小文字を
3766      使っている行が捨てられるのではなく、等価な行のうち、最初に現れた
3767      行が残り、それ以外のすべてが捨てられるようである。)
3768
3769 `-g'
3770 `--general-numeric-sort'
3771 `--sort=general-numeric'
3772      各行の先頭部分を倍精度浮動小数点数 (long double-precision floating
3773      point number) に変換して、数値としてソートする。 *Note Floating
3774      point::.  オーバーフロー、アンダーフロー、変換エラーが起きても、
3775      通知しない。行の並ぶ順番は以下のようになる。
3776
3777         * 数字で始まっていない行 (すべて同じ数値と見なされる)。
3778
3779         * NaN (IEEE の浮動小数点演算で使う "Not a Number" を表す値) を
3780           一貫した、ただし、マシンに依存する順番で並べる。
3781
3782         * マイナスの無限大。
3783
3784         * 有限数を数値として昇順で並べる (-0 と +0 は等価とする)。
3785
3786         * プラスの無限大。
3787
3788      このオプションを使うのは、他に方法がないときのみにすること。
3789      処理速度が `--numeric-sort' (`-n') よりずっと遅いし、浮動小数点数に
3790      変換するとき、情報を失う恐れがある。
3791
3792 `-h'
3793 `--human-numeric-sort'
3794 `--sort=human-numeric'
3795      数値としてソートする。その際、ソートを、まず数が正か負かによって
3796      行い (負の数、ゼロ、正の数の順)、次に SI 接尾辞 によって行い
3797      (接尾辞なし、`k' や `K'、そして `MGTPEZY' の順  *note Block
3798      size::)、 最後に数値によって行う。たとえば、`1023M' は `1G' の
3799      前に来る。SI 接尾辞として `M'(メガ) は `G' (ギガ) の前になるから
3800      だ。つまり、このオプションでソートする対象は、接尾辞の意味が 1000
3801      の累乗か、1024 の累乗かを問わず、一貫したやり方で、数値の規模に
3802      もっともふさわしい接尾辞を付けられている数値である。従って、この
3803      オプションは、`df', `du', `ls' などのコマンドに `--human-readable'
3804      や `--si' オプションを付けて実行したときの、一回分の出力をソート
3805      するのに用いられる。数値の書式は、`--numeric-sort' の場合と同じ
3806      であり (訳注: すなわち、数値の前に付けた `+' 符号を理解しない)、
3807      SI 接尾辞は、数値の後ろに直接続いていなければならない。なお、
3808      `numfmt' コマンドを使用することも考慮していただきたい。`numfmt'
3809      を使用すれば、数値をソートした後で、人間に読みやすい形に整形し直す
3810      ことができるので、たいていの場合 `sort' の対象に、より精密な数値を
3811      使うことが可能になるからだ。
3812
3813 `-i'
3814 `--ignore-nonprinting'
3815      表示できない文字を無視する。どの文字がどのタイプに属するかを決めて
3816      いるのは、 `LC_CTYPE' のロケールである。より強力なオプションである
3817      `--dictionary-order' (`-d') が一緒に指定されていると、このオプ
3818      ションは効果を持たない。
3819
3820 `-M'
3821 `--month-sort'
3822 `--sort=month'
3823      比較する部分の先頭が、0 個以上の空白に続いて、月名の短縮形になって
3824      いるとき、すべての文字を大文字に直して `JAN' < `FEB' < ... < `DEC'
3825      の順序で比較する。月名として無効な名前は、有効な月名より前に置かれる。
3826      月名のつづりを決めているのは、`LC_TIME' カテゴリのロケールである
3827      (訳注: だから、英語の月名によってソートするには、ロケールを英語か
3828      C にしておく必要がある)。デフォルトの空白は、スペースまたはタブ
3829      だが、`LC_CTYPE' のロケールによっては違うかもしれない。
3830
3831 `-n'
3832 `--numeric-sort'
3833 `--sort=numeric'
3834      数値としてソートする。数値は行頭から始まり (訳注: 比較する位置が
3835      指定されていれば、実は行頭でなくてもよい)、任意個の空白、必要なら
3836      `-' 符号、それに、0 個以上の数字から構成される。数値は、区切り
3837      記号で 3 桁づつ区切られていてもよく、小数点記号と 0 個以上の数字
3838      が続いていてもよい。数字がない場合は、`0' と見なされる。小数点記号
3839      や桁区切りの記号を規定しているのは、`LC_NUMERIC' のロケールである。
3840      デフォルトの空白は、スペースまたはタブだが、`LC_CTYPE' のロケール
3841      によっては違うかもしれない。
3842
3843      比較は厳密であり、丸めによるエラーはない。
3844
3845      このオプションは、数値に前置した `+' 符号や、指数表記を理解しない。
3846      そうした文字列を数値として比較するには、`--general-numeric-sort'
3847      (`-g') を使用するべきである。
3848
3849 `-V'
3850 `--version-sort'
3851      バージョン名とバージョン番号によってソートする。標準用法のソートと
3852      動作が似ているが、10 進数の数字が連続する各部分をインデックス番号や
3853      バージョン番号と見なし、(文字列としてではなく) 数値として取り扱う
3854      点が違う。(*Note Details about version sort::.)
3855
3856 `-r'
3857 `--reverse'
3858      比較の結果を逆順にする。その結果、出力ではより大きなキーの値を
3859      持つ行が、後ではなく、先に表示される。
3860
3861 `-R'
3862 `--random-sort'
3863 `--sort=random'
3864      ソートを行うのに、入力中のキーをハッシュしてから、そのハッシュ値
3865      をソートするという方法を用いる。ハッシュ関数はランダムに選択する。
3866      その際、衝突 (collision) が絶対起きないように関数を選択するので、
3867      値の違うキーは必ず違うハッシュ値を持つようになる。これは、入力の
3868      ランダムな並び替えに似ているが (*note shuf invocation::)、同じ値を
3869      持つキーは一緒に並べるという点が、異なっている。
3870
3871      ランダムソートを行うフィールドが複数指定されている場合は、ランダムに
3872      選択された一つの同じハッシュ関数が、すべてのフィールドで使用される。
3873      フィールドごとに別のランダムなハッシュ関数を使うようにするには、
3874      `sort' を複数回呼び出せばよい。
3875
3876      ハッシュ関数の選択は、 `--random-source' オプションの影響を受ける。
3877
3878
3879    その他のオプション。
3880
3881 `--compress-program=PROG'
3882      テンポラリ・ファイルを PROG というプログラムで圧縮する。
3883
3884      PROG プログラムは、引数が一つも存在しない場合に、標準入力を圧縮
3885      して標準出力に書き出し、`-d' オプションの指定があれば、標準入力を
3886      展開して標準出力に書き出すものでなければならない。
3887
3888      PROG が 0 以外のステータスで終了した場合は、エラーメッセージを
3889      出して、`sort' の実行を中止する。
3890
3891      PROG の指定中でホワイトスペース (訳注: 空白、タブ、改行など) や
3892      バックスラッシュ文字を使ってはならない。そうした文字は、将来の
3893      使用のために、予約されている。
3894
3895 `--files0-from=FILE'
3896      コマンドラインで名前を指定されたファイルの処理を行わない。その代わり
3897      に、ファイル FILE に名前が書き込まれているファイルの処理を行う。
3898      なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL)
3899      で終端されていなければならない。このオプションは、ファイル名のリスト
3900      が長すぎて、コマンドライン長の上限を超過してしまいそうなときに、
3901      便利である。そうした場合、`sort' を `xargs' 経由で実行するのは、
3902      望ましくない。なぜなら、`xargs' はファイルのリストをいくつかの部分
3903      に分割して `sort' に渡すので、`sort'
3904      はリスト全体のソートした結果ではなく、
3905      部分リストごとのソートした結果を表示してしまうからである。 ASCII
3906      NUL で終端されたファイル名のリストを得る方法の一つは、 GNU `find'
3907      に `-print0' を付けて使うことである。FILE に `-' を指定すれば、
3908      ASCII NUL で終端されたファイル名を標準入力から読み込むことが
3909      できる。
3910
3911 `-k POS1[,POS2]'
3912 `--key=POS1[,POS2]'
3913      行中の POS1 から POS2 までの部分 (両者を含む) を、ソートの対象
3914      となる場所として指定する。POS2 が省略されている場合は、POS1 から
3915      行末までがソートの対象になる。
3916
3917      各 POS は、`F[.C][OPTS]' という形式を取る。F は、比較に使用する
3918      フィールドは何番目かということであり、C は、そのフィールドの始め
3919      から数えて何番目の文字かということである。フィールドや文字の位置は、
3920      1 から数える。なお、POS2 の文字の位置として 0 を指定すると、その
3921      フィールドの最後の文字を指すことになる。`.C' が、POS1 で省略されて
3922      いる場合は、デフォルトの 1 (フィールドの最初の文字) を指定したこと
3923      になり、POS2 で省略されている場合は、デフォルトの 0 (フィールドの
3924      最後の文字) を指定したことになる。OPTS は順序関連のオプションで
3925      あり、これを指定することで、各キーを異なったルールでソートすること
3926      が可能になる。詳細については後述しているので、参照していただきたい。
3927      なお、キーは複数のフィールドにまたがることができる。
3928
3929      たとえば、二番目のフィールドでソートするには、`--key=2,2' (`-k
3930      2,2') を使用する。後述部分で、キーについてさらに説明し、用例も
3931      もっとたくさん挙げているので、ご覧になっていただきたい。また、
3932      `--debug' オプションの説明もご覧になるとよい。`--debug' オプション
3933      を使うと、行中のどの部分がソートに使用されているかが明らかになる。
3934
3935 `--debug'
3936      各行のソートに使われている部分を強調表示する。また、使用法に問題が
3937      あるときは、標準エラーに警告メッセージを出す。
3938
3939 `--batch-size=NMERGE'
3940      一度にマージする入力ファイルの数を多くても NMERGE 個までとする。
3941
3942      NMERGE 個を越える入力ファイルをマージしなければならない場合、`sort'
3943      は NMERGE 個のファイルからなるグループを作ってマージし、その結果を
3944      テンポラリ・ファイルに保存する。そして、今度はそれを入力として使用
3945      して、後に続くマージを行うのである。
3946
3947      NMERGE の値が大きいと、実行速度が向上し、ハードディスクの一時的な
3948      使用が減るかもしれないが、その分、メモリの使用量と I/O が増加する。
3949      逆に、NMERGE の値が小さいと、メモリに対する要求と I/O は減少する
3950      かもしれないが、その分、ハードディスクの一時的な使用が増え、実行速度
3951      が低下することになる。
3952
3953      NMERGE の値は、2 以上でなければならない。デフォルトの値は 16 だが、
3954      これは実装次第なので、将来は変わるかもしれない。
3955
3956      NMERGE の値は、オープンできるファイル・ディスクリプタの上限によって
3957      制限されているかもしれない。`ulimit -n' や `getconf OPEN_MAX'
3958      コマンドを使えば、使用しているシステムの上限を知ることができる。
3959      ただし、そうした上限がさらに小さくなっていることもあり、使用中の
3960      プログラムがすでにファイルをいくつかオープンしている場合や、オープン
3961      できるファイルの数についてオペレーティング・システムに他の制限がある
3962      場合が、それに当たる。NMERGE がリソースの上限を越えているときは、
3963      `sort' は警告メッセージを出さずに、より小さい値を使用する。
3964
3965 `-o OUTPUT-FILE'
3966 `--output=OUTPUT-FILE'
3967      出力を標準出力ではなく、OUTPUT-FILE に書き出す。通常、`sort' は、
3968      入力をすべて読み込んでから、OUTPUT-FILE をオープンする。従って、
3969      `sort -o F F' や "`cat F | sort -o F' といったコマンドを使って、
3970      ファイルを直接書き変えるやり方で、ソートをしても問題がない。
3971      これに対して、`--merge' (`-m') オプションを指定した場合は、 `sort'
3972      は、入力をすべて読み込む前に、出力ファイルをオープンするかも
3973      しれない。そのため、`cat F | sort -m -o F - G' といったコマンドは
3974      安全ではない。`cat' が `F' の読み込みを済ます前に、 `sort' が `F'
3975      への書き込みを始めてしまうかもしれないからだ。
3976
3977      比較的新しいシステムでも、環境変数 `POSIXLY_CORRECT' を設定して
3978      いる場合は、たとえば `sort F -o F' のように、入力ファイルの後に
3979      `-o' オプションを置くことはできない。移植を考慮したスクリプトでは、
3980      `-o OUTPUT-FILE' を入力ファイルの前で指定するべきである。
3981
3982 `--random-source=FILE'
3983      FILE をランダムデータのソースとして使用する。そのランダムデータは、
3984      `-R' オプションでどのランダムハッシュ関数を使うかを決めるのに使用
3985      される。 *Note Random sources::.
3986
3987 `-s'
3988 `--stable'
3989      最後の手段の比較 (last-resort comparison) を行うのを止めて、`sort'
3990      を入力順尊重 (stable) にする。このオプションは、フィールド指定オプ
3991      ションや、`--reverse' (`-r') 以外のグローバルな順序関係のオプション
3992      が指定されていなければ、効果を持たない。(訳注: いわゆる stable sort
3993      (普通、安定ソート、固定ソートと訳される) である。たとえば、`-b'
3994      オプションを使って、先行する空白を無視して比較した場合に、等価となる
3995      行があったとしよう。通常では、それでも、最後の手段の比較によって、
3996      先行する空白の有無も考慮に入れた行全体の比較が行われ、等価な行に
3997      順序を付けることになるが、`--stable' オプションが指定されていると、
3998      それをしないので、等価な行は入力されたときの順序で出力される)。
3999
4000 `-S SIZE'
4001 `--buffer-size=SIZE'
4002      指定された SIZE のメインメモリをソート用のバッファとして使用する。
4003      デフォルトでは、SIZE は 1024 バイトを 1 単位とする数値である。`%'
4004      を後ろに付けると、SIZE は、物理メモリの何パーセントの意味になる。
4005      後置するのが `K' ならば、SIZE は 1024 倍され (デフォルトと同じ)、
4006      `M' なら 1,048,576 倍、`G' なら 1,073,741,824 倍される。`T', `P',
4007      `E', `Z', `Y' の後置も、同じ理屈である。`b' を後置すると、SIZE は
4008      バイト数と見なされ、掛け算は行われない。
4009
4010      このオプションを指定すると、`sort' は作業を始めるとき、デフォルト
4011      よりも大きかったり、小さかったりするソート用のバッファを使用する
4012      ことになり、そのために動作速度が向上することがある。とは言え、この
4013      オプションは起動直後のバッファサイズにしか影響を持たない。`sort' が
4014      SIZE を越える入力行に出会うと、バッファのサイズは SIZE 以上に拡大
4015      されるからである。
4016
4017 `-t SEPARATOR'
4018 `--field-separator=SEPARATOR'
4019      各行でソートに使うキーを探すとき、文字 SEPARATOR をフィールド・
4020      セパレータとして使用する。デフォルトでフィールドを区分するのは、
4021      非空白文字と空白文字の間の空文字列である。デフォルトの空白は、
4022      スペースとタブだが、`LC_CTYPE' のロケールによっては、違うかも
4023      しれない。
4024
4025      たとえば、入力行が ` foo bar' だったとしよう。`sort' はこれを
4026      ` foo' と ` bar' のフィールドに分割する。フィールド・セパレータは
4027      前後どちらのフィールドにも属さないことになっている。そこで、 `sort
4028      -t " "' を使用した場合は、同じ入力行が、空っぽのフィールド、
4029      `foo'、それに `bar' という 3 個のフィールドを持つことになる。
4030      とは言え、キー・フィールドが、`-k 2' のように、行末まで続く場合や、
4031      `-k 2,3' のように、範囲からなる場合は、範囲の両端の間に存在する
4032      フィールド・セパレータは、キー・フィールド中にそのまま保持される。
4033
4034      ASCII NUL をフィールド・セパレータに指定するには、二文字からなる
4035      文字列 `\0' を使用すればよい。`sort -t '\0'' のようにだ。
4036
4037 `-T TEMPDIR'
4038 `--temporary-directory=TEMPDIR'
4039      テンポラリファイルの置き場所にディレクトリ TEMPDIR を使用する。
4040      この指定は、環境変数 `TMPDIR' に優先する。このオプションを二回
4041      以上指定すると、テンポラリファイルの置き場所として、指定された
4042      すべてのディレクトリが使用されることになる。大規模なソートや
4043      マージを行って、I/O が足枷になる場合、このオプションを使って、
4044      別のディスク上にあり、別のコントローラを使用している複数の
4045      ディレクトリを指定すると、実行速度が向上することがよくある。
4046
4047 `--parallel=N'
4048      平行して実行するソートの数を  N に設定する。デフォルトでは、 N
4049      は、利用できるプロセッサーの数になっている。ただし、上限は 8
4050      であり、これは、それ以上にしても、速度の向上が頭打ちになるからだ。
4051      N 個のスレッドを使用すると、メモリの使用量が log N 倍になること
4052      にも注意していただきたい。参照 *note nproc invocation::.
4053
4054 `-u'
4055 `--unique'
4056      通常は、等価と評価される複数の行の内、最初のもののみを出力する。
4057      `--check' (`-c' または `-C') オプションが指定されている場合は、
4058      等価と評価される行が、2 行連続していないかをチェックする (訳注:
4059      等価な行の連続があると、終了ステータスが 1 になる)。
4060
4061      また、このオプションを指定すると、デフォルトでは実行する、最後の
4062      手段の比較を行わなくなる。
4063
4064      コマンド `sort -u' と `sort | uniq' は等価である。しかし、その
4065      等価性は、`sort' に何か他のオプションが付いたときにまでは及ばない。
4066      たとえば、`sort -n -u' は、唯一性のチェックをするとき、行頭にある
4067      数字の並びの値しか調べないが、`sort -n | uniq' の方は、行全体を検査
4068      するのである。*Note uniq invocation::.
4069
4070 `-z'
4071 `--zero-terminated'
4072      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
4073      すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
4074      各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
4075      `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
4076      ことがある。そうしたコマンドも、わがままなファイル名を (空白など
4077      の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
4078      同様なことをしているのである。
4079
4080
4081    `sort' の従来の (すなわち BSD と System V の) 実装では、いくつかの
4082 オプションの解釈が互いに異なっていた。とりわけ、`-b', `-f', `-n' に
4083 ついてそうだった。GNU の sort は、POSIX 規格の動作に従っており、これは、
4084 たいていの場合 (常にではない!)、System V の動作と同じである。POSIX
4085 によると、`-n' はもはや `-b' を自動的に設定しない。そこで、動作の
4086 一貫性のために、`-M' も同様に変更した。この変更によって、フィールドを
4087 指定するとき、文字の位置がどこを指すかが、微妙なケースでは変わってくる
4088 かもしれない。これに対する唯一の対処法は、明示的に `-b' オプションを
4089 指定することである。
4090
4091    `-k' によってソート・フィールドを指定するとき、その位置指定の後ろに
4092 オプション文字 `MbdfghinRrV' のうち任意のものを付けることができる。その
4093 場合、そのフィールドは、グローバルな順序関係のオプションを一切引き継が
4094 ないことになる。`-b' オプションは、フィールド限定のオプションとしては、
4095 フィールド指定の開始位置と終端位置の片方、あるいは両方に付けることが
4096 できるが、グローバル・オプションから継承した場合は、両方に付いている
4097 ことになる。入力行が、行頭やフィールド間に複数の空白を含んでいる可能性
4098 があって、しかも `-t' を使っていない場合は、`-k' を使用するとき、`-b'
4099 と組み合わせるか、先行する空白を暗黙のうちに無視するオプション (すなわち
4100 `Mghn') と組み合わせるのが普通だ。そうしないと、フィールドにある先行する
4101 空白の数の違いのせいで、結果がわけのわからないものになりかねないからで
4102 ある。
4103
4104    ソートフィールド指定の開始位置が、行末より後ろや、終端側のフィールド
4105 より後ろに来てしまうと、そのフィールドは空になる。`-b' オプションを
4106 指定した場合、フィールド指定の `.C' の部分は、そのフィールドの最初の
4107 非空白文字から数えることになる。
4108
4109    古いシステムの `sort' では、ソート・キーの指定に、`+POS1 [-POS2]'
4110 という 0 から数える旧式の書式が使用できる。`sort +A.X -B.Y' という
4111 旧式の表現は、もし Y が `0' であるか、指定されていない場合は、 `sort -k
4112 A+1.X+1,B' と同じである。それ以外の場合は、 `sort -k A+1.X+1,B+1.Y'
4113 と同じだ。
4114
4115    (訳注: 旧式の書式と新しい書式の違いは、フィールドやフィールド中の
4116 文字の位置を 0 から数えるか、1 から数えるかだけではない。終端指定の
4117 位置が旧式の書式ではキー・フィールドに含まれないのに対し (つまり、
4118 その直前までなのに対し)、新しい書式では含まれるという違いもある。
4119 そこで、上のようになる。)
4120
4121    この旧式の動作は、環境変数 `_POSIX2_VERSION' を使って (*note
4122 Standards conformance::) 有効にしたり、無効にしたりすることができる。
4123 また、`POSIXLY_CORRECT' が設定されていないときに、`-POS2' が存在する旧式
4124 の書式を使っても、有効になる。
4125
4126    標準的なホストで使用することを意図したスクリプトでは、旧式の書式は
4127 使わずに、`-k' の方を使用するべきである。たとえば、`sort +2' は使わない
4128 方がよい。`sort ./+2' と解釈されるか、`sort -k 3' と解釈されるか、わから
4129 ないからである。そのスクリプトが、旧式の書式にしか対応していないホスト
4130 でも動作しなければならないのなら、スクリプト中で
4131 `if sort -k 1 </dev/null >/dev/null 2>&1; then ...' といったテストを
4132 行って、どちらの書式を使うべきかを判断すればよい。
4133
4134    用例をいくつか挙げて、オプションの様々な組み合わせを説明する。
4135
4136    * 数値としてソートし、降順に (つまり、通常の逆に) 並べる。
4137
4138           sort -n -r
4139
4140    * 同時にソートを 4 つまで行う。バッファサイズを 10M にする。
4141
4142           sort --parallel=4 -S 10M
4143
4144    * 1 番目と 2 番目のフィールドを無視し、さらに 3 番目のフィールドの
4145      先頭の空白も無視して、アルファベット順に並べる。ここで使っている
4146      キーは一つであり、それは 3 番目のフィールドの最初の非空白文字に
4147      始まって、各行の末尾まで続くすべての文字からなっている。
4148
4149           sort -k 3b
4150
4151    * 2 番目のフィールドを数値としてソートし、同点の決着を付けるために、
4152      5 番目のフィールドの 3 番目と 4 番目の文字をアルファベット順で
4153      ソートする。フィールドの区切りには `:' を使用する。
4154
4155           sort -t : -k 2,2n -k 5.3,5.4
4156
4157      ここで注意していただきたいが、もし `-k 2,2n' の代わりに `-k 2n'
4158      と書いたなら、`sort' は、2 番目のフィールドに始まり、行末まで
4159      続くすべての文字を、主キー (primary key) として、それも「数値」の
4160      キーとして使用したことだろう。`sort' を実行するたいていの場合に
4161      ついて言えることだが、複数のフィールドにまたがるキーを数値として
4162      使用しても、期待する結果は得られないものである。
4163
4164      もう一つ注意していただきたい。上の例では、`n' 修飾子を最初のキーの
4165      フィールド終端指定に付けている。これは、`-k 2n,2' とか `-k 2n,2n'
4166      とか指定しても、同じことだったろう。`b' を除くすべての修飾子は、
4167      キー指定のフィールド開始側に付けるか、フィールド終端側に付けるか、
4168      あるいは、その両方に付けるかにかかわりなく、付けられた「キー・
4169      フィールド全体」に適用されるのである。
4170
4171    * パスワードファイルを 5 番目のフィールドでソートする。このとき、
4172      先頭の空白は無視する。5 番目のフィールドが同じ値になる行について
4173      は、3 番目のフィールドのユーザ ID 番号でソートする。フィールドの
4174      区切りは、`:' という文字である。
4175
4176           sort -t : -k 5b,5 -k 3,3n /etc/passwd
4177           sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
4178           sort -t : -b -k 5,5 -k 3,3n /etc/passwd
4179
4180      この三つのコマンドは同じ働きをする。1 番目のコマンドは、最初の
4181      キーの開始位置では先行する空白を無視し、二番目のキーを数値として
4182      ソートするように指定している。他の二つのコマンドは、グローバル・
4183      オプションは修飾子がないソート・キーによって継承されるという
4184      特性を利用している。この場合、継承がうまく働くのは、`-k 5b,5b' と
4185      `-k 5b,5' が同じことだからだ (訳注: 「`-b' オプションは ...
4186      グローバル・オプションから継承した場合は、(開始位置と終端位置の)
4187      両方に付いていることになる」ので、3 番目のコマンドは、`-k 5b,5b'
4188      と指定するのと事実上等しい)。両者が同じになるのは、`.C' という
4189      文字位置を欠いたフィールド終端の指定では、先頭の空白をスキップしても
4190      しなくても、終端位置は変わらないからである。
4191
4192    * 一群のログファイルをソートする。主キーとして IPv4 アドレスを
4193      使用し、副キーとしてタイムスタンプを使用する。二つの行の
4194      主キーと副キーが全く同じ場合は、入力されたときと同じ順番で、
4195      その行を出力する。ログファイルは、次のような行からなっている。
4196
4197           4.150.156.3 - - [01/Apr/2004:06:31:51 +0000] message 1
4198           211.24.3.231 - - [24/Apr/2004:20:17:39 +0000] message 2
4199
4200      フィールドは、ただ 1 個の空白で区切られている。IPv4 アドレスの
4201      ソートは辞書順で行う。たとえば、212.61.52.2 は 212.129.233.201 の
4202      前に来る。61 は 129 よりも小さいからだ。
4203
4204           sort -s -t ' ' -k 4.9n -k 4.5M -k 4.2n -k 4.14,4.21 file*.log |
4205           sort -s -t '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n
4206
4207      この例の場合は、`sort' を一回起動するだけでは、ことがすまない。
4208      日付が空白 1 個のすぐ後に置かれているだけなのに対して、IPv4 の
4209      構成要素は `.' で区切られているからである。そこで、作業を分割し、
4210      `sort' を 2 回起動している。1 回目はタイムスタンプでソートし、 2
4211      回目は IPv4 アドレスでソートするわけだ。タイムスタンプは、年、月、
4212      日のフィールドの順番でソートし、最後に、時・分・秒のフィールドで
4213      ソートしているが、それは `-k' オプションを使って、各フィールドを
4214      分離することで実現している。時・分・秒を除いて、各キー・フィールド
4215      の終端を指定する必要はない。`n' や `M' 修飾子は、フィールドの先頭
4216      にある数値や月名の短縮形に基づいてソートを行うが、そうしたものは、
4217      フィールドの境界を越えられないからである。IPv4 アドレスのソートは、
4218      辞書順で行っている。なお、二回目のソートで `-s' を使っているのは、
4219      主キーで一ヶ所にまとめられる行が、副キーによってソートされている
4220      ようにするためである。それに対して、一回目のソートで  `-s' を使って
4221      いるのは、二つのソートの組み合わせ全体を入力順尊重 (stable) にする
4222      ためだ。
4223
4224    * アルファベットの大文字小文字の違いを無視してソートし、その順番で
4225      tags ファイルを作成する。
4226
4227           find src -type f -print0 | sort -z -f | xargs -0 etags --append
4228
4229      この例では、`-print0', `-z', `-0' といったオプションを使っている。
4230      そのため、空白などの特殊文字を含んでいるファイル名が、ソート操作に
4231      よって分断されることがない。
4232
4233    * 慣用句 DSU (Decorate Sort Undecorate) の手法 (訳注: 指標を付けて、
4234      ソートして、指標を取る) を採用して、短いものから長いものへと、
4235      行を並べる。
4236
4237           awk '{print length, $0}' /etc/passwd | sort -n | cut -f2- -d' '
4238
4239      一般に、あるデータが `sort' コマンドでは直接ソートできないとか、
4240      効率が悪いというとき、そうしたデータをソートするのに、この手法が
4241      役に立つ。
4242
4243    * ディレクトリをランダムな順番でで並べる。ただし、各ディレクトリ内の
4244      ファイルについては、その順番を維持する。一例を挙げると、この方法で
4245      演奏リストを作成すれば、アルバムはシャッフルするけれど、各アルバム
4246      内の曲は通常のソート順で演奏するといったことが可能になる。
4247
4248           ls */* | sort -t / -k 1,1R -k 2,2
4249
4250
4251    ---------- Footnotes ----------
4252
4253    (1) POSIX 以外のロケールを使用すると (たとえば、`LC_ALL' を `en_US'
4254 に設定すると)、`sort' の出力が、見慣れない順序でソートされたものに
4255 なるかもしれない。その場合は、環境変数 `LC_ALL' を `C' にすればよい。
4256 注意すべきは、`LC_COLLATE' だけを設定したのでは、二つの問題が生じて
4257 しまうということだ。一つは、`LC_ALL' も設定されている場合、`LC_COLLATE'
4258 は無効だということ。二つ目は、`LC_CTYPE' が (`LC_CTYPE' が設定されて
4259 いないときは、`LANG' が) `LC_COLLATE' と矛盾する値に設定されている場合、
4260 動作が未定義だということである。たとえば、`LC_CTYPE' が `ja_JP.PCK' で
4261 あるのに、`LC_COLLATE' が `en_US.UTF-8' の場合、`sort' の動作は未定義
4262 なのである。
4263
4264 \1f
4265 File: coreutils-ja.info,  Node: shuf invocation,  Next: uniq invocation,  Prev: sort invocation,  Up: Operating on sorted files
4266
4267 7.2 `shuf': テキストをシャッフルする
4268 ================================================
4269
4270 `shuf' は、入力された行をランダムに並べ替えてから出力することによって、
4271 入力のシャッフルを行う。どの並び替えが出力されるかは、確率的に等しい。
4272
4273    書式:
4274
4275      shuf [OPTION]... [FILE]
4276      shuf -e [OPTION]... [ARG]...
4277      shuf -i LO-HI [OPTION]...
4278
4279    `shuf' には三つの動作モードがあり、それぞれ、入力行をどこから取得
4280 するかが違っている。デフォルトでは、標準入力から行を読み込む。以下の
4281 オプションは、動作モードを変更する。
4282
4283 `-e'
4284 `--echo'
4285      コマンドラインの各オペランドを入力行として扱う。
4286
4287 `-i LO-HI'
4288 `--input-range=LO-HI'
4289      LO から HI の範囲の符号なしの 10 進整数を 1 行に 1 個含むファイル
4290      から入力があったかのように動作する。
4291
4292
4293    `shuf' の他のオプションは、どの動作モードでも、その動作に影響を
4294 与える。
4295
4296 `-n LINES'
4297 `--head-count=COUNT'
4298      最大でも COUNT 行までしか出力しない。デフォルトでは、入力された
4299      すべての行を出力する。
4300
4301 `-o OUTPUT-FILE'
4302 `--output=OUTPUT-FILE'
4303      出力を、標準出力ではなく、OUTPUT-FILE に書き出す。`shuf' は、
4304      入力をすべて読み込んでから、OUTPUT-FILE をオープンする。従って、
4305      `shuf -o F <F' や `cat F | shuf -o F' というコマンドを使って、
4306      ファイルを直接書き変える形でシャッフルしても安全である。
4307
4308 `--random-source=FILE'
4309      ランダムデータのソースとして  FILE を使用する。そのランダムデータは
4310      どんな並べ替えになるかを決めるのに使用される。*Note Random
4311      sources::.
4312
4313 `-r'
4314 `--repeat'
4315      値の反復出力を行う。別の言い方をすると、置き換えるものについて
4316      そのつど選択を行う。このオプションを使用した場合、出力は入力を
4317      並び替えたものになるのではない。そうではなく、各出力行がすべての
4318      入力からランダムに選ばれるのである。このオプションは、たいてい
4319      `--head-count' と組み合わせて使用する。`--head-count' を指定
4320      しないと、`shuf' はいつまでも出力を続けることになる。
4321      (coreutils-8.22 の新機能)
4322
4323 `-z'
4324 `--zero-terminated'
4325      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
4326      すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
4327      各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
4328      `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
4329      ことがある。そうしたコマンドも、わがままなファイル名を (空白など
4330      の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
4331      同様なことをしているのである。
4332
4333
4334    例を挙げる。
4335
4336      shuf <<EOF
4337      A man,
4338      a plan,
4339      a canal:
4340      Panama!
4341      EOF
4342
4343 上記の結果は、こんな出力になるかもしれない。
4344
4345      Panama!
4346      A man,
4347      a canal:
4348      a plan,
4349
4350 同様に、次のコマンドの出力は、
4351
4352      shuf -e clubs hearts diamonds spades
4353
4354 こうなるかもしれない。
4355
4356      clubs
4357      diamonds
4358      spades
4359      hearts
4360
4361 下記は、`shuf -i 1-4' というコマンドの出力の一例である。
4362
4363      4
4364      2
4365      1
4366      3
4367
4368 上記のどの例でも、入力行は 4 行である。従って、入力は 24 とおりに並べ
4369 替えることが可能であり、`shuf' が生成するのは、そのどれか一つである。
4370 一般的に言うと、入力行が N 行なら、N! とおりに (N の階乗、すなわち、
4371 N * (N - 1) * ... * 1 とおりに) 並べ替えて、出力することができる。
4372
4373 それぞれが 0 から 9 までの範囲にある数値を 50 回ランダムに出力する
4374 には、次のようにする。
4375
4376      shuf -r -n 50 -i 0-9
4377
4378 コイン・トス 100 回をシミュレートする。
4379
4380      shuf -r -n 100 -e Head Tail
4381
4382    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4383
4384 \1f
4385 File: coreutils-ja.info,  Node: uniq invocation,  Next: comm invocation,  Prev: shuf invocation,  Up: Operating on sorted files
4386
4387 7.3 `uniq': ファイルから重複を省く
4388 =============================================
4389
4390 `uniq' は、指定された INPUT ファイルにある行を、重複を省いて書き出す。
4391 ファイルが指定されていない場合や、INPUT として `-' が指定されている
4392 場合は、標準入力を対象とする。
4393
4394    書式:
4395
4396      uniq [OPTION]... [INPUT [OUTPUT]]
4397
4398    デフォルトでは、`uniq' は入力された行を表示するとき、隣接する同一行
4399 があれば、出力に重複する行が現れないように、最初の行だけを残して、残りの
4400 行を捨ててしまう。また、オプションによっては、重複しない行を捨てることや、
4401 すべての隣接する同一行を捨てることもできる。
4402
4403    入力はソートされている必要はないが、重複する入力行が検出されるのは、
4404 それが隣接しているときだけである。もし、隣接していない重複行も捨てたい
4405 のなら、`sort -u' を使うとよいだろう。 *Note sort invocation::.
4406
4407    比較には `LC_COLLATE' ロケール・カテゴリが指定しているルールを使用
4408 する。
4409
4410    OUTPUT ファイルが指定されていない場合、`uniq' は標準出力に書き出す。
4411
4412    このプログラムでは以下のオプションが使用できる。参照: *note Common
4413 options::.
4414
4415 `-f N'
4416 `--skip-fields=N'
4417      重複の検査を行う前に、各行のフィールドを N 個スキップする。その行に
4418      N 個より少ないフィールドしかない場合は、比較に null 文字列を使用
4419      する。フィールドとは、少なくとも 1 個以上のスペースやタブで間を区切
4420      られた、スペースやタブを含まない文字の連続である。
4421
4422      互換性のために、`uniq' は `-N' という古いオプションの書式をサポート
4423      している。新しいスクリプトでは、`-f N' の方を使うべきである。
4424
4425 `-s N'
4426 `--skip-chars=N'
4427      重複の検査を行う前に、N 文字スキップする。その行に N 個より少ない
4428      文字しかない場合は、比較に null 文字列を使用する。フィールドを
4429      スキップするオプションと、文字をスキップするオプションの両方を
4430      使っている場合は、フィールドのスキップが先に行われる。
4431
4432      古めのシステムでは、`uniq' が `+N' という古いオプションの書式を
4433      サポートしている。環境変数 `_POSIX2_VERSION' を使えば、この旧式の
4434      動作を有効したり、無効にしたりできる (*note Standards
4435      conformance::)。 とは言え、移植を考慮したスクリプトでは、
4436      この環境変数に動作が依存するコマンドの使用は、避けた方がよい。
4437      たとえば、`uniq +10' ではなく、`uniq ./+10' や `uniq -s 10' を使う
4438      べきである。前者では、`+10' が、オプションかファイル名か、まぎらわ
4439      しいからだ。
4440
4441 `-c'
4442 `--count'
4443      各行に出現回数を付けて表示する。
4444
4445 `-i'
4446 `--ignore-case'
4447      行を比較するとき、アルファベットの大文字小文字を区別しない。
4448
4449 `-d'
4450 `--repeated'
4451      重複していない行を除去する。このオプションを単独で使った場合、`uniq'
4452      は、連続する同一行のうち、最初の 1 行だけを表示し、それ以外の何も
4453      表示しない。
4454
4455 `-D'
4456 `--all-repeated[=DELIMIT-METHOD]'
4457      入力行のうち、連続する同一行の二行目以降を除去せず、重複していない
4458      行だけを除去する。このオプションが役に立つのは、主として、大文字
4459      小文字を無視するとか、選択したフィールドのみを比較するとかいった、
4460      他のオプションと組み合わせて使うときである。DELIMIT-METHOD は
4461      省略可能であり、指定した場合は、重複行のグループ間の区切り方を
4462      指示することになる。DELIMIT-METHOD は、以下の一つでなければ
4463      ならない。
4464
4465     `none'
4466           重複行のグループ間に、区切りの印を置かない。`--all-repeated'
4467           (`-D') とのみ指定するのと同じことである。
4468
4469     `prepend'
4470           重複行の各グループの前に改行を出力する。 `--zero-terminated'
4471           (`-z') を指定している場合は、区切りの印として 改行の代わりに、
4472           ゼロバイト (ASCII NUL) を使用する。
4473
4474     `separate'
4475           重複行のグループ間を 1 個の改行で分離する。これは、`prepend'
4476           を使うのとほぼ同じだが、最初のグループの前に区切りの印を挿入
4477           しないのが異なっている。それ故、ユーザが出力を直接見る場合に、
4478           より適しているかもしれない。`--zero-terminated' (`-z')
4479           を指定している場合は、区切りの印として 改行の代わりに、
4480           ゼロバイト (ASCII NUL) を使用する。
4481
4482      注意していただきたいが、グループ同士を改行で分離しているとき、
4483      入力ストリームに連続する 2 行以上の空行があると、出力がまぎらわ
4484      しいものになる。これを避けるには、入力を `tr -s '\n'' でフィルタ
4485      リングして、連続する改行をそれぞれの場所で 1 個の改行に置き換え
4486      ればよい。
4487
4488      このオプションは、GNU による拡張である。
4489
4490 `--group[=DELIMIT-METHOD]'
4491      すべての行を出力し、他と区別される各グループの間に区切りを入れる。
4492      `--zero-terminated' (`-z') を指定している場合は、区切りの印として
4493      改行の代わりに、 ゼロバイト (ASCII NUL) を使用する。 DELIMIT-METHOD
4494      は省略可能であり、指定した場合は、グループ間の区切り方を指示する
4495      ことになる。DELIMIT-METHOD は、以下の一つでなければならない。
4496      (coreutils-8.22 の新機能)
4497
4498     `separate'
4499           他と区別されるグループを 1 個の区切りの印で分離する。これが、
4500           何も指定されていないときの、デフォルトの区切り方であり、出力を
4501           ユーザに直接見せる場合に適している。
4502
4503     `prepend'
4504           他と区別される各グループの前に区切りの印を出力する。
4505
4506     `append'
4507           他と区別される各グループの後ろに区切りの印を出力する。
4508
4509     `both'
4510           他と区別される各グループの前後に区切りの印を出力する。
4511
4512      注意していただきたいが、グループ同士を改行で分離しているとき、
4513      入力ストリームに連続する 2 行以上の空行があると、出力がまぎらわ
4514      しいものになる。これを避けるには、入力を `tr -s '\n'' でフィルタ
4515      リングして、連続する改行をそれぞれの場所で 1 個の改行に置き換え
4516      ればよい。
4517
4518      このオプションは、GNU による拡張である。
4519
4520 `-u'
4521 `--unique'
4522      連続する同一行は、1 行目も除去する。このオプションを単独で使うと、
4523      `uniq' はユニークな (訳注: この場合、同一行が直後に続かないという
4524      意味) 行だけを表示し、それ以外の何も表示しない。
4525
4526 `-w N'
4527 `--check-chars=N'
4528      各行で (フィールドや文字をスキップする指定があれば、スキップした
4529      後で) 文字を何個まで比較するかを指定する。デフォルトでは、行の残り
4530      全部が比較の対象になる。
4531
4532 `-z'
4533 `--zero-terminated'
4534      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
4535      すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
4536      各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
4537      `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
4538      ことがある。そうしたコマンドも、わがままなファイル名を (空白など
4539      の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
4540      同様なことをしているのである。
4541
4542
4543    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4544
4545 \1f
4546 File: coreutils-ja.info,  Node: comm invocation,  Next: ptx invocation,  Prev: uniq invocation,  Up: Operating on sorted files
4547
4548 7.4 `comm': ソート済みの二つのファイルを一行づつ比較する
4549 ==============================================================================
4550
4551 `comm' は、二つの入力ファイルの共通する行と独自な行を、標準出力に区別
4552 して書き出す。`-' というファイル名は、標準入力を意味している。
4553
4554    書式:
4555
4556      comm [OPTION]... FILE1 FILE2
4557
4558    入力ファイルは、`comm' に渡す前に、`LC_COLLATE' のロケールによって
4559 規定された照合順序でソートされていなければならない。入力ファイルが
4560 改行以外の文字で終わっている場合は、自動的に改行が追加される。 `sort'
4561 コマンドをオプションなしで実行すると、`comm' の入力にふさわしい
4562 ファイルが必ず得られる。
4563
4564    オプションを付けずに実行すると、`comm' は 3 列の出力を生成する。 1
4565 列目は FILE1 にのみある行であり、2 列目は FILE2 にのみある行、そして 3
4566 列目は両方のファイルに共通する行である。各列は、1 個のタブ文字で
4567 区切られる。
4568
4569    `-1', `-2', `-3' というオプションは、対応する列 (と区切り記号) を
4570 表示しないようにする。オプションについては、「共通オプション」の章も
4571 参照すること。*note Common options::.
4572
4573    比較のための他のユーティリティとは違って、`comm' の終了ステータスは、
4574 比較結果の如何によらない。`comm' は、正常終了すると 0 の終了コードを
4575 返す。エラーがあれば、0 以外のステータスで終了する。
4576
4577    `--check-order' を指定した場合、入力がソートされていないと、エラー
4578 メッセージを出して、実行を中断する。`--nocheck-order' オプションを指定
4579 した場合は、入力がソートされていなくても、エラーメッセージを出すことは
4580 ない。どちらのオプションも指定されていない場合に、入力がソートされて
4581 いないとの診断を下すのは、 片方の入力ファイルにもう一方と対にならない
4582 行が見つかったときだけである。 入力ファイルがソートされていないと診断
4583 すると、`comm' は 0 以外のステータスで終了する (従って、そうした出力は
4584 使用するべき ではない)。
4585
4586    入力ファイルがきちんとソートされていず、しかも、対にならない行を
4587 含む場合に、`--nocheck-order' を指定して、そうしたファイルを `comm' で
4588 無理矢理処理しても、何か特定の結果をもたらすことは保証できない。おそらく
4589 出力は、期待に添わないものになるだろう。
4590
4591 `--check-order'
4592      入力ファイルのどちらかの内容がきちんとソートされていないと、
4593      エラーメッセージを出して、実行に失敗する。
4594
4595 `--nocheck-order'
4596      入力ファイルの内容がソートされた順番になっているかどうかを、
4597      どちらのファイルについてもチェックしない。
4598
4599      その他のオプション。
4600
4601 `--output-delimiter=STR'
4602      出力における隣り合う列の間に、デフォルトのタブ文字 1 個ではなく、
4603      STR を出力する。
4604
4605      区切り記号の STR は、空であってはならない。
4606
4607
4608 \1f
4609 File: coreutils-ja.info,  Node: ptx invocation,  Next: tsort invocation,  Prev: comm invocation,  Up: Operating on sorted files
4610
4611 7.5 `ptx': パミューテド・インデックスを作成する
4612 =================================================================
4613
4614 `ptx' の基本的な働きは、テキストファイルを読み込んで、パミューテド・
4615 インデックスを作成することである。パミューテド・インデックスというのは、
4616 各キーワードに前後の文脈を付けて索引項目にするインデックスのことだ。
4617
4618    (訳注: パミューテド・インデックスは、KWIC (Key Word In Context)
4619 インデックスとも言われる。簡単に言えば、本文にあるとおり、キーワードに
4620 前後の文脈を付けて項目として立てる索引のことである。たとえば、"The cow
4621 jumped over the moon." という文があるとしよう。今、キーワードを
4622 角カッコ ([]) で示すとすると、`ptx' による一番素朴なパミューテド・
4623 インデックスの作成では、この文から、
4624 "[The] cow jumped over the moon.", "The [cow] jumped over the moon.",
4625 "The cow [jumped] over the moon.", "The cow jumped [over] the moon.",
4626 "The cow jumped over [the] moon.", "The cow jumped over the [moon]."
4627 という、キーワードの位置だけが違う 6 個の索引項目が作られ、キーワード
4628 によってソートされて、出力されるのである。「パミューテド (permuted)」
4629 というのは、文中でキーワードが順番に移動するのを、円順列 (cyclic
4630 permutation) に見立てているかららしい。「順列索引」と訳されることも
4631 ある。パミューテド・インデックスの代表的な例としては、英語などの聖書の
4632 巻末に付属している文脈付きの語句索引、「コンコーダンス」を挙げることが
4633 できる。実際、この文書でもコンコーダンスをパミューテド・インデックスの
4634 同義語として使用している。なお、この `ptx' プログラムは、日本語に
4635 対応していない。)
4636
4637    `ptx' 実行の書式は次のうちのどちらかである。
4638
4639      ptx [OPTION ...] [FILE ...]
4640      ptx -G [OPTION ...] [INPUT [OUTPUT]]
4641
4642    `-G' (または、それと等価な `--traditional') オプションを指定すると、
4643 GNU によるすべての拡張が無効になり、従来のモードで動作するようになる。
4644 従って、いくつかの制限が課されるようになり、プログラムのオプションの
4645 デフォルトの値がいくつか変更される。`-G' が指定されていない場合は、GNU
4646 による拡張が常に有効になる。`ptx' に対する GNU の拡張については、
4647 この文書では折に触れて説明している。拡張の詳細なリストについては、
4648 「GNU による `ptx' の拡張」の節を御覧になっていただきたい。 *Note
4649 Compatibility in ptx::.
4650
4651    個々のオプションについては、以下に続く節で説明する。
4652
4653    GNU による拡張が有効になっていれば、オプションの後ろに 0 個以上の
4654 FILE を指定することができる。FILE を一つも指定しない場合は、標準入力が
4655 読み込まれる。FILE を 1 個以上指定した場合、それは入力ファイルの名前で
4656 あり、入力ファイルはすべて順番に、あたかもすべてのファイルが結合されて
4657 いるかのように読み込まれる。とは言え、各ファイル同士は文脈的に完全に分離
4658 しており、参照先情報の自動作成を指定している場合に、参照先のファイル名や
4659 行番号が指し示すのは、個々の入力テキストファイルのそれである。どの場合
4660 でも、`ptx' は、パミューテド・インデックスを標準出力に出力する。
4661
4662    GNU による拡張が有効になっていない場合、すなわち、プログラムが従来
4663 モードで動作する場合は、オプションのほかに 0 から 2 個のパラメータを
4664 指定できる。パラメータがない場合、プログラムは標準入力を読み込んで、
4665 標準出力にパミューテド・インデックスを出力する。パラメータが 1 個だけ
4666 の場合、それが示しているのは、標準入力の代わりに読み込まれるテキスト
4667 ファイル (訳注: 上記書式の INPUT) の名前である。パラメータが二つある
4668 場合、それぞれが示しているのは、読み込み対象の INPUT ファイルと出力先
4669 の OUTPUT ファイルの名前だ。この場合、二番目のパラメータによって指定
4670 されたファイルの内容が破壊されることに、くれぐれも気をつけていただき
4671 たい。この動作は、System V の `ptx' との互換性を維持するために必要に
4672 なっているものだが、通常 GNU の規格では、オプションによって指定される
4673 のではない出力パラメータを、使用しないように勧めている。
4674
4675    オプションの値や入力テキストファイルとして指定するいかなるファイルに
4676 対しても、ファイル名の代わりに 1 個のダッシュ `-' を使用することが
4677 できる。その場合は、標準入力が使われることになる。もっとも、この習慣を
4678 プログラム 1 回の起動につき 1 回以上使うのは、たぶん理屈に合わない。
4679
4680 * Menu:
4681
4682 * General options in ptx::   プログラム全体の動作に関係するオプション。
4683 * Charset selection in ptx:: 使用している文字セットについて。
4684 * Input processing in ptx::  入力のフィールドと文脈、及びキーワードの選択。
4685 * Output formatting in ptx:: 出力フォーマットのタイプ、及びフィールドの幅。
4686 * Compatibility in ptx::
4687
4688 \1f
4689 File: coreutils-ja.info,  Node: General options in ptx,  Next: Charset selection in ptx,  Up: ptx invocation
4690
4691 7.5.1 一般オプション
4692 ---------------------------
4693
4694 `-G'
4695 `--traditional'
4696      すでに述べたように、このオプションは `ptx' に対する GNU による
4697      拡張のすべてを無効にして、動作を従来モードに切り替える。
4698
4699 `--help'
4700      簡単なヘルプメッセージを標準出力に表示し、それ以上の処理をせずに
4701      終了する。
4702
4703 `--version'
4704      プログラムのバージョンを標準出力に表示し、それ以上の処理をせずに
4705      終了する。
4706
4707
4708    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4709
4710 \1f
4711 File: coreutils-ja.info,  Node: Charset selection in ptx,  Next: Input processing in ptx,  Prev: General options in ptx,  Up: ptx invocation
4712
4713 7.5.2 `ptx' が使用する文字セット
4714 ------------------------------------------
4715
4716 現在の設定では、`ptx' プログラムは、入力ファイルが符号化に 8-bit の ISO
4717 8859-1 コード (Latin-1 文字セットとも言われる) を使用しているものと
4718 見なすようになっている。ただし、MS-DOS 用にコンパイルされている場合は
4719 別で、その場合は、IBM-PC の文字セットを使用する (GNU の `ptx' が小型の
4720 MS-DOS マシンで使えるかどうか、今ではわからないけれど)。7-bit ASCII と
4721 比べると、ISO 8859-1 の文字セットは、アルファベットの部分が異なって
4722 いる。そのため、正規表現におけるマッチングの振る舞いが変わってくる。
4723 キーワードに対するデフォルトの正規表現が (訳注: つまり、GNU の拡張が
4724 有効なときの `\w+' が)、英語で使用しない文字や、ウムラウトやアクセント
4725 のような発音区別符の付いた文字を受け入れることになるわけである。
4726 とは言え、キーワードのソート方法は今だに大雑把であり、使用している
4727 文字セットの順序にきわめて盲目的に従っている。
4728
4729 `-f'
4730 `--ignore-case'
4731      ソートするとき、小文字を大文字と同じものとして扱う。
4732
4733
4734 \1f
4735 File: coreutils-ja.info,  Node: Input processing in ptx,  Next: Output formatting in ptx,  Prev: Charset selection in ptx,  Up: ptx invocation
4736
4737 7.5.3 単語の選択と入力の処理
4738 ---------------------------------------
4739
4740 `-b FILE'
4741 `--break-file=FILE'
4742      このオプションを使えば、単語を構成するのはどんな文字かを、`-W' とは
4743      別のやり方で定義することができる。このオプションでファイルを指名し、
4744      そこに、単語の構成要素になることができない文字のリストを入れておく
4745      のである。このファイルは、"Break file" と呼ばれる。Break file に
4746      含まれていないいかなる文字も、単語の構成要素になるわけだ。`-b' と
4747      `-W' の両方のオプションが指定されている場合は、`-W' の方が優先
4748      され、`-b' は無視される。
4749
4750      GNU の拡張が有効になっているとき、改行を単語区切り文字 (break
4751      character) にしない唯一の方法は、単語区切り文字をすべて Break file
4752      に書き込み、そこに改行を全く含めないことである。Break file 末尾の
4753      改行も除かなければならない。GNU の拡張が無効な場合、スペース、
4754      タブ、改行は、それが Break file に含まれていなくても、常に単語
4755      区切り文字と見なされる。
4756
4757 `-i FILE'
4758 `--ignore-file=FILE'
4759      このオプションで指名するファイルには、出力するコンコーダンスで
4760      キーワードとして採用しない単語のリストを入れておく。このファイルは、
4761      "Ignore file" と呼ばれる。このファイルは、1 行 1 単語の形式であり、
4762      単語の分離は常に行末によって行われて、`-S' オプションの値の影響を
4763      受けることはない。
4764
4765 `-o FILE'
4766 `--only-file=FILE'
4767      このオプションで指名するファイルには、出力するコンコーダンスで
4768      キーワードとして採用する単語のリストを入れておく。このファイルに
4769      書かれていないどんな単語も、キーワードとして採用されることはない。
4770      このファイルは、"Only file" と呼ばれる。このファイルは、1 行 1 単語
4771      の形式であり、単語の分離は常に行末によって行われて、`-S' オプション
4772      の値の影響を受けることはない。
4773
4774      Only file として使われるデフォルトのファイルは存在しない。Only file
4775      と Ignore file の両方が指定されている場合に、ある単語がキーワードと
4776      見なされるのは、その単語が Only file に存在し、しかも Ignore file
4777      に存在しないときだけである。
4778
4779 `-r'
4780 `--references'
4781      各入力行において、行頭にあるホワイトスペース以外の文字の連続を
4782      参照先情報 (訳注: たとえば、ファイル名、ページ番号、行番号など)
4783      として扱うようにする。この参照先情報は、その入力行がどこにあるか
4784      を、作成されるパミューテド・インデックス中で示すために用いられる。
4785      参照先情報の生成についての詳細は、次節「出力のフォーマット」を
4786      御覧いただきたい。*Note Output formatting in ptx::. このオプション
4787      を使用すると、`-S' オプションのデフォルトの値が変更されること
4788      になる。
4789
4790      このオプションを使用したとき、`ptx' プログラムは、参照先情報が
4791      出力される文脈に混入しないようにするが、その試みはそれほど徹底した
4792      ものではない。しかし、文脈が改行できちんと終止していれば、`ptx'
4793      はその試みに成功する。もし、`-r' オプションが `-S' オプションの
4794      デフォルト値とともに使われているか、あるいは、GNU の拡張が無効に
4795      なっているならば、この条件は必ず満たされることになる。従って、
4796      その場合は、参照先情報が出力される文脈からきちんと分離される。
4797
4798      (訳注: 文脈 (context) というのは、出力については、キーワードと
4799      その前後と考えておけばよいが、入力について言うと、`ptx' が操作の
4800      対象にする本文の単位 -- 入力のまとまり -- を指すことになる。`-S'
4801      の値によって、普通は文か、行になる。)
4802
4803 `-S REGEXP'
4804 `--sentence-regexp=REGEXP'
4805      このオプションでは、行の終わり、または文の終わりを示す正規表現を
4806      指定する。
4807
4808      (訳注: もう少し説明すると、このオプションで指定するのは、入力を
4809      何で区切るかということである。改行で区切れば、いわゆる行が、`ptx'
4810      の操作の対象となる入力のまとまり (入力の単位) になり、ピリオド
4811      などで区切れば、いわゆる文が、入力のまとまりになる。このまとまりが
4812      `ptx' にとっての文脈でもある。ただし、出力では、文脈のすべてが
4813      表示されるとはかぎらない。なお、そうしたければ、行末や文末以外で
4814      入力を区切ることもできる。)
4815
4816      実際のテキストでは、ここで指定される正規表現のみが、行の終わりや
4817      文の終わりの指標として使われているとはかぎらない。また、入力の
4818      区切りに何を指定しようとも、このオプションの外で特別な意味を
4819      持つことはない (訳注: すなわち、オプション `-A', `-i', `-o' など
4820      には影響が及ばない)。デフォルトでは、GNU の拡張が有効なとき、`-r'
4821      オプションが使われていなければ、文の終わりの方が入力の区切りとして
4822      使用される。その場合、次の正規表現が GNU Emacs から取り込まれる。
4823
4824           [.?!][]\"')}]*\\($\\|\t\\|  \\)[ \t\n]*
4825
4826      GNU の拡張が無効になっている場合や、`-r' オプションが指定されて
4827      いる場合は、行の終わりの方が入力の区切りとして使用される。その場合、
4828      デフォルトの正規表現は、単に次のものである。
4829
4830           \n
4831
4832      空の REGEXP を使用するのは、行末や文末の認識を全く無効にするのと
4833      同じである。その場合、ファイル全体が、たった 1 個の長い行、
4834      あるいは、長い文と見なされることになる。ユーザとしては、オプション
4835      `-F ""' を使用して、省略の印の生成も全く行わないようにしたくなる
4836      かもしれない。*Note Syntax of Regular Expressions: (emacs)Regexps.
4837
4838      キーワードがたまたま入力行や入力文の先頭近くにあると、出力する
4839      文脈行の行頭に、使用しない領域が生ずることがよくある。また、
4840      キーワードが入力行や入力文の末尾近くにあると、出力する文脈行の
4841      行末に、使用しない領域がしばしば生ずる。`ptx' プログラムは、
4842      その文脈を折り返して、そうした不使用領域を埋めようと試みる。
4843      すなわち、その入力行や入力文の後続する部分 (TAIL) を使って、
4844      出力する行の左にある不使用領域を埋め、その入力行や入力文の
4845      先行する部分 (HEAD) を使って、出力する行の右にある不使用領域を
4846      埋めるのである。
4847
4848      このオプションの引数中では、ユーザーの便宜のために、C 言語由来の
4849      よく使うバックスラッシュ・エスケープシーケンスの多くが、`ptx'
4850      そのものによって認識され、対応する文字に変換されるようになっている。
4851
4852 `-W REGEXP'
4853 `--word-regexp=REGEXP'
4854      このオプションでは、各キーワードとなる単語とはどのようなものかを
4855      示す正規表現を指定する。デフォルトでは、GNU の拡張が有効になって
4856      いれば、単語とはアルファベットの文字の連続である。すなわち、使用
4857      される正規表現は `\w+' だ。GNU の拡張が無効な場合、デフォルトで
4858      単語と見なされるのは、何であれ、スペース、タブ、改行で区切られる
4859      ものである。この場合、使用される正規表現は `[^ \t\n]+' になる。
4860
4861      REGEXP に空の文字列を指定するのは、このオプションを使用しないのと
4862      同じことである。*Note Syntax of Regular Expressions:
4863      (emacs)Regexps.
4864
4865      このオプションの引数中では、ユーザーの便宜のために、C 言語で
4866      見られるような、よく使うバックスラッシュ・エスケープシーケンスの
4867      多くが、`ptx' そのものによって認識され、対応する文字に変換される
4868      ようになっている。
4869
4870
4871 \1f
4872 File: coreutils-ja.info,  Node: Output formatting in ptx,  Next: Compatibility in ptx,  Prev: Input processing in ptx,  Up: ptx invocation
4873
4874 7.5.4 出力のフォーマット
4875 ---------------------------------
4876
4877 出力のフォーマットを決めるのは、主として `-O' と `-T' オプションだが、
4878 両者については、以下のオプション一覧で説明している。`-O' も `-T' も
4879 指定されず、しかも、GNU の拡張が有効な場合、`ptx' プログラムは、
4880 ダム端末に適した出力フォーマットを選択する。各キーワードは一行の
4881 中央に表示され、前後の文脈がその左右に出力される。コンコーダンス
4882 としての出力が一目でわかるように、各フィールドはきちんと揃えられる。
4883 おまけの機能として、次のものがある。自動参照が `-A' オプションに
4884 よって選択されて、左側の文脈の前に表示される場合 (すなわち、`-R'
4885 オプションが選択されていない場合)、参照先情報の後ろにコロンが追加
4886 される。こうしておくと、参照先情報を GNU Emacs の `next-error' 処理に
4887 うまく渡せるようになるのである。このデフォルトの出力フォーマットでは、
4888 改行やタブのようなホワイトスペース文字は、それぞれ単にただ 1 個の
4889 スペースに変換されるだけであり、連続するスペースをわざわざ圧縮する
4890 ようなことは行われない。この動作は、将来変更されるかもしれない。
4891 そうしたホワイトスペース文字を除いて、使用している 256 文字からなる
4892 文字セット中のほかのすべての文字は、入力から出力へと手を加えずに
4893 そのまま送り出される。
4894
4895    出力フォーマットは、以下のオプションによって、さらに制御される。
4896
4897 `-g NUMBER'
4898 `--gap-size=NUMBER'
4899      出力行の各フィールドは、ホワイトスペースによって区切られるが、
4900      そのフィールド同士の間隔の最小サイズを指定する。
4901
4902 `-w NUMBER'
4903 `--width=NUMBER'
4904      最終的に出力される各行の最大長を指定する。参照先情報を使用する際、
4905      その長さが最大長に含まれるかどうかは、`-R' オプションを付けるか
4906      付けないかよって決まる。`-R' オプションを指定しない場合、すなわち、
4907      参照先情報が左の文脈より前に表示される場合は、すべての参照先情報中
4908      の最大長が、出力行の最大長の長さの内に含まれることになる。`-R'
4909      オプションを指定した場合、すなわち、参照先情報が右の文脈より後に
4910      表示される場合は、参照先情報や、それに先行するフィールドの区切りが
4911      占める領域は、出力行の最大長の長さに含まれない。
4912
4913 `-A'
4914 `--auto-reference'
4915      参照先情報の自動生成を選択する。ファイル名と行番号からなる参照先
4916      情報が自動的に生成されて、各入力行に付くことになる。ファイル名と
4917      行番号は 1 個のコロンで区切られる。ただし、標準入力から読み込んで
4918      いる場合は、ファイル名は空になる。`-A' と `-r' の両方のオプションが
4919      指定されている場合は、入力にある参照先情報はやはり読み込まれた上で、
4920      本文としては無視されるが、出力時に使用されるのは、自動生成された
4921      参照先情報の方である。すなわち、入力にある参照先情報は、上書きされる。
4922
4923 `-R'
4924 `--right-side-refs'
4925      デフォルトの出力フォーマットでは、`-R' オプションを使用しない場合、
4926      `-r' や `-A' オプションの働きによって生成される参照先情報は、出力行
4927      の左の端、すなわち、左の文脈の前に表示される。それに対して、デフォ
4928      ルトの出力フォーマットで `-R' オプションを指定した場合、参照先情報
4929      が表示されるのは、各出力行の右端、すなわち、右の文脈の後ろになる。
4930      ほかのいかなる出力フォーマットにおいても、基本的に `-R' オプション
4931      は無視されるが (訳注: デフォルト以外の出力フォーマットでは、`-R'
4932      オプションがあってもなくても、参照先情報は右端に出力される)、
4933      それでも、`-R' オプションが付いていると、参照先情報の長さが、`-w'
4934      で指定した出力行全体の長さの内に入らないという働きだけは残る。
4935
4936      このオプションは、GNU の拡張が無効であるときは、常に自動的に選択
4937      される。
4938
4939 `-F STRING'
4940 `--flac-truncation=STRING'
4941      このオプションを指定すると、出力に省略があった場合、それを示す
4942      ために文字列 STRING を使用するようになる。ほとんどの出力フィールド
4943      は、理論上では、`-S' オプションで何を選択するかによって、現在の行、
4944      または、現在の文の、先頭や末尾に向かって伸びて行くものである。
4945      しかし、`-w' オプションによって長さを変更できるとは言え、出力行には
4946      許される最大長というものがあり、その最大長はさらにさまざまな出力
4947      フィールドで使用する領域に分割されている。従って、フィールドは、
4948      それを収納する現在の出力行の先頭や末尾を越えて伸ばすことができない
4949      ために、切り詰めなければならないことがあり、そういうときに、省略が
4950      行われるのである。省略の指標として使用されるデフォルトの文字列は、
4951      1 個のスラッシュである。これは、`-F /' と指定した場合と同じだ。
4952
4953      STRING には、`-F ...' のように 1 個以上の文字を指定してもよい。
4954      また、STRING が空文字列 (`-F ""') の場合には、省略のフラグは
4955      立てられないことになり、従って、省略の指標は一切付加されない。
4956
4957      このオプションの引数中では、ユーザーの便宜のために、C 言語で
4958      見られるような、よく使うバックスラッシュ・エスケープシーケンスの
4959      多くが、`ptx' そのものによって認識され、対応する文字に変換される
4960      ようになっている。
4961
4962 `-M STRING'
4963 `--macro-name=STRING'
4964      `nroff' や `troff'、あるいは TeX で処理するのにふさわしい出力
4965      フォーマットを生成するとき、`xx' の代わりに使用する別の文字列
4966      STRING を指定する。(訳注: `-O' や `-T' オプションを参照。)
4967
4968 `-O'
4969 `--format=roff'
4970      出力フォーマットとして、`nroff' や `troff' で処理するのに適した
4971      形式を選択する。各出力行は次のようになる。
4972
4973      (訳注: 下記の TAIL と HEAD については、前節 `--sentence-regexp'
4974      オプションの説明の終わりから 2 番目のパラグラフをご覧いただきたい。
4975      REF は参照先情報である。)
4976
4977           .xx "TAIL" "BEFORE" "KEYWORD_AND_AFTER" "HEAD" "REF"
4978
4979      従って、あとは、出力の整形を担当する roff のマクロ `.xx' を出力
4980      ファイルに書き込めばよいことになる。この出力フォーマットは、GNU の
4981      拡張が無効なときのデフォルトである。`xx' を別のマクロ名に変更する
4982      には、`-M' オプションを使用すればよい (訳注: `-M "xx"' のように、
4983      `xx' の部分のみ指定する)。
4984
4985      この出力フォーマットでは、改行やタブのような非表示文字は、それぞれ
4986      たった 1 個のスペースに変換され、連続するスペースをわざわざ圧縮する
4987      ようなことは行われない。ダブルクォート文字 `"' はそれぞれ二重化
4988      されるので、`nroff' や `troff' によって正しく処理される。
4989
4990 `-T'
4991 `--format=tex'
4992      出力フォーマットとして、TeX で処理するのに適した形式を選択する。
4993      各出力行は、次のようになる。
4994
4995      (訳注: 下記の TAIL と HEAD については、前節 `--sentence-regexp'
4996      オプションの説明の終わりから 2 番目のパラグラフをご覧いただきたい。
4997      REF は参照先情報である。)
4998
4999           \xx {TAIL}{BEFORE}{KEYWORD}{AFTER}{HEAD}{REF}
5000
5001      従って、あとは、出力の整形を担当する `\xx' コマンドの定義を
5002      出力ファイルに書き込めばよいことになる。なお、参照先情報の生成が
5003      行われていない場合、すなわち、`-A' オプションも `-r' オプションも
5004      指定されていない場合は、各 `\xx' 呼び出しの最後の引数は出力
5005      されないことに注意していただきたい。`xx' を別のマクロ名に変更する
5006      には、`-M' オプションを使用すればよい (訳注: `-M "xx"' のように、
5007      `xx' の部分のみ指定する)。
5008
5009      この出力フォーマットでは、`$', `%', `&', `#', `_' のような特殊文字
5010      のいくつかは、自動的にバックスラッシュで保護される。中カッコ `{',
5011      `}' は、一対のドル記号とバックスラッシュとで保護される (強引に
5012      数式モードにするわけだ)。バックスラッシュそのものは、`\backslash{}'
5013      というシーケンスになる。同形の他の文字と区別するために文字の上下に
5014      付ける発音区別符のうち、サーカムフレックスとチルダは、それぞれ
5015      `\^{ }' と `\~{ }' というシーケンスになる (訳注: 実際には `{}'
5016      の位置に a  なり e なりといった文字が来る)。使用している文字セット
5017      中の他の発音区別符が付いている文字についても、可能なかぎり、適切な
5018      TeX のシーケンスが生成される。改行やタブのような他の非表示文字や、
5019      ASCII の文字セットに属さない他のすべての文字は、単にただ 1 個の
5020      スペースに変換され、連続するスペースをわざわざ圧縮するようなことは
5021      行われない。TeX のための特殊文字の処理は以上のようなものだが、
5022      改善する方法があれば、作者までお知らせいただきたい。
5023
5024
5025 \1f
5026 File: coreutils-ja.info,  Node: Compatibility in ptx,  Prev: Output formatting in ptx,  Up: ptx invocation
5027
5028 7.5.5 GNU による `ptx' の拡張
5029 -----------------------------------
5030
5031 このバージョンの `ptx' には、System V の `ptx' には存在しない機能が
5032 いくつかある。そうした追加機能は、コマンドラインオプションの `-G' を
5033 使えば、働かなくなるが、ほかのコマンドラインオプションによって上書き
5034 されれば、話は別である。もっとも、GNU の拡張の中には、上書きによって
5035 回復できないものもあるので、GNU の拡張を使いたければ、`-G' オプション
5036 を最初から使わないのが、すっきりした方法だ。以下に、このプログラムと
5037 System V の `ptx' の相違点を挙げておく。
5038
5039    * このプログラムでは、一度に複数の入力ファイルを読み込むことが
5040      できる。また、生成したコンコーダンスは、常に標準出力に書き出さ
5041      れる。それに対して、System V の `ptx' は、ファイルをたった 1 個
5042      しか読み込まず、結果を書き出すのは、標準出力のこともあるが、
5043      コマンドに 2 番目の FILE パラメータが指定されていれば、その FILE
5044      に対してである。
5045
5046      オプションで指定しない出力パラメータを持つのは、危険な習慣であり、
5047      GNU では、できるだけ避けるようにしている。従って、`ptx' を GNU と
5048      System V のどちらでも、問題なく同じように使いたいなら、入力ファイル
5049      を常に一つしか使わず、実行結果は常に標準出力に出力されるものと考えて
5050      おいた方がよい。また、`ptx' を使用してアプリケーションを作成する
5051      場合には、インストールされている `ptx' が `-G' オプションを受け
5052      入れることに気がついたら、`ptx' を呼び出すとき、`-G' オプションを
5053      必ず付けるようにしておきたくなるかもしれない。
5054
5055    * System V の `ptx' で利用できるオプションは、`-b', `-f', `-g', `-i',
5056      `-o', `-r', `-t', `-w' だけである。他のオプションは、すべて GNU の
5057      拡張だが、今この箇条書きで繰り返すことはしない。なお、オプション
5058      の中には、以下で述べるように、GNU の拡張が有効になっていると、
5059      意味が少し変わるものもある。
5060
5061    * GNU の拡張のデフォルトでは、コンコーダンス出力のフォーマットは、
5062      `troff' や `nroff' 向けになっていない。むしろ、ダム端末向けの
5063      フォーマットになっている。`troff' や `nroff' 向けの出力を選択し
5064      たかったら、`-O' オプションを使用すればよい。
5065
5066    * `-R' オプションを使用しないと、参照先情報の最大長が、出力行全体
5067      の長さから差し引かれる。GNU の拡張を無効にすると、参照先情報の
5068      長さは、出力行の長さの勘定に入らないことになる。
5069
5070    * GNU の拡張が無効になっていても、256 バイトの文字セットのすべての
5071      文字が -- ASCII NUL バイト含めて -- 常に入力ファイルから読み込
5072      まれて処理され、有害な作用をもたらすことはない。それに対して、
5073      System V の `ptx' は、8-bit の文字を受け付けない。若干の制御文字
5074      も拒否する。また、チルダ `~' も拒否する。
5075
5076    * GNU の拡張が無効になっていても、入力行の長さは、利用できるメモリに
5077      よってしか制限されない。それに対して、System V の `ptx' が処理の
5078      対象にするのは、各行に付き最初の 200 文字だけである。
5079
5080    * 単語区切り文字 (break character、単語を構成しない文字) のデフォルト
5081      は、使用している文字セットにおけるアルファベットのすべての文字
5082      (発音区別符のあるなしを問わない) 以外のあらゆる文字である。GNU の
5083      拡張が無効な場合は、単語区切り文字のデフォルトは、スペース、タブ、
5084      改行のみになる。
5085
5086    * このプログラムは、出力行の長さを System V の `ptx' より上手に処理
5087      する。GNU の拡張が無効になっている場合、このプログラムは System V
5088      の `ptx' の動作をなるべく真似ようとするが、それでも、System V の
5089      ちょっとした癖のいくつかは、完全には再現できない。
5090
5091    * ユーザは Ignore file と Only file の両方を指定することができる。
5092      System V の `ptx' では、そんなことはできない。
5093
5094
5095 \1f
5096 File: coreutils-ja.info,  Node: tsort invocation,  Prev: ptx invocation,  Up: Operating on sorted files
5097
5098 7.6 `tsort': トポロジカル・ソート
5099 ===========================================
5100
5101 `tsort' は、指定された FILE に対してトポロジカル・ソートを行う。
5102 入力ファイルが指定されていない場合や、FILE として `-' が指定されて
5103 いる場合は、標準入力を対象にする。より詳しい説明や、このコマンドが
5104 作成された事情については、次節「`tsort': 誕生の背景」を御覧に
5105 なっていただきたい。 *note tsort background::
5106
5107    書式:
5108
5109      tsort [OPTION] [FILE]
5110
5111    `tsort' は入力を、空白で区切られた 2 個一組の文字列として読み込む。
5112 そうした文字列の各組は、部分的な順序を示している。出力は、与えられた
5113 部分的な順序に対応する全体としての順序である。
5114
5115    例を挙げよう。
5116
5117      tsort <<EOF
5118      a b c
5119      d
5120      e f
5121      b c d e
5122      EOF
5123
5124 (訳注: 上の例は、"a b/c d/e f/b c/d e" という組を与えている。)
5125
5126    出力は、こうなる。
5127
5128      a
5129      b
5130      c
5131      d
5132      e
5133      f
5134
5135    もっと現実的な例を考えてみよう。たくさんの関数をすべて一つのファイル
5136 に書いているとしよう。しかも、一つを除いて、他のすべての関数を static
5137 として宣言している。現在のところ、その例外 (`main' ということにする)
5138 が、ファイル中で定義されている最初の関数であり、それが直接呼び出す
5139 関数群がそれに続き、さらにその後に、その関数群が呼び出す関数が続く ...
5140 という形になっている。さて、ここで、プロトタイプを利用することにしたと
5141 しよう。そうなると、呼び出される関数のすべてを宣言するか (そのためには、
5142 定義の部分から情報をどっさりコピーしなければならない)、あるいは、
5143 できるだけ多くの関数が、使用される前に定義されているように、関数群を
5144 並べ替えるか、どちらかを選ばなければならない。後者の作業を自動化する
5145 方法の一つが、各関数についてそれが直接呼び出す関数のリストを作成する
5146 ことである。そうしたリストを生成するプログラムはたくさんある。いわゆる
5147 コール・グラフを作成するプログラムだ。以下のリストをご覧になって
5148 いただきたい。各行は、左側の関数が右側の関数を直接呼び出していることを
5149 示している。
5150
5151      main parse_options
5152      main tail_file
5153      main tail_forever
5154      tail_file pretty_name
5155      tail_file write_header
5156      tail_file tail
5157      tail_forever recheck
5158      tail_forever pretty_name
5159      tail_forever write_header
5160      tail_forever dump_remainder
5161      tail tail_lines
5162      tail tail_bytes
5163      tail_lines start_lines
5164      tail_lines dump_remainder
5165      tail_lines file_lines
5166      tail_lines pipe_lines
5167      tail_bytes xlseek
5168      tail_bytes start_bytes
5169      tail_bytes dump_remainder
5170      tail_bytes pipe_bytes
5171      file_lines dump_remainder
5172      recheck pretty_name
5173
5174    ここで `tsort' を使用すると、こうした関数について、上記の後者の要求を
5175 満たすような順番を作成することができる。
5176
5177      example$ tsort call-graph | tac
5178      dump_remainder
5179      start_lines
5180      file_lines
5181      pipe_lines
5182      xlseek
5183      start_bytes
5184      pipe_bytes
5185      tail_lines
5186      tail_bytes
5187      pretty_name
5188      write_header
5189      tail
5190      recheck
5191      parse_options
5192      tail_file
5193      tail_forever
5194      main
5195
5196    `tsort' は、入力にループがあれば検出し、出会った最初のループを
5197 標準エラーに書き出す。
5198
5199    一般に、ある部分的な順序に対して、唯一の全体的な順序というものは存在
5200 しないことに、留意していただきたい。上記のコール・グラフの場合で言えば、
5201 関数 `parse_options' は、`main' の前でありさえすれば、リストのどこに
5202 でも来ることができる。
5203
5204    オプションは、`--help' と `--version' だけである。*Note Common
5205 options::.
5206
5207    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5208
5209 * Menu:
5210
5211 * tsort background::         tsort が誕生した経緯。
5212
5213 \1f
5214 File: coreutils-ja.info,  Node: tsort background,  Up: tsort invocation
5215
5216 7.6.1 `tsort': 誕生の背景
5217 ------------------------------
5218
5219 `tsort' が存在しているのは、Unix のリンカのごく初期のバージョンでは、
5220 一つのアーカイブファイルの処理をたった一回しか行わず、それも、
5221 ファイルの最初から最後へと順番に見ていくだけだったからである。当時の
5222 `ld' は、アーカイブ中の各オブジェクトを読み込むとき、そのオブジェクトが
5223 プログラムに必要かどうかの判断を、リンク作業のその時点でまだ定義
5224 されていない何らかのシンボルを定義しているかどうかを基準にして
5225 行っていた。
5226
5227    そのため、アーカイブ中の依存関係には、特別な扱いが必要になった。
5228 たとえば、`scanf' はたぶん `read' を呼んでいる。それは、リンカが
5229 アーカイブをたった一回最初から順番に読んで行くとき、`scanf.o' が
5230 `read.o' より前にあることが重要だったということである。なぜなら、
5231 そうなっていないと、`scanf' を呼ぶけれど、`read' を呼ばないプログラム
5232 では、`read' に対する参照が、予期に反して "unresolved" になってしまい
5233 かねなかったからだ。
5234
5235    この問題に対処する方法は、次のようなものだった。まず、オブジェクト
5236 ファイル同士の依存関係の集合を生成した。この作業は、`lorder' という
5237 シェルスクリプトによって行われていた。筆者の知るかぎり、現在 GNU では
5238 lorder というツールを提供していないが、BSD 系のディストリビューション
5239 では、今でもなお見つけることができる。
5240
5241    次に、この `lorder' の出力に対して `tsort' を実行した。そして、
5242 そのソートされた結果を使って、アーカイブにオブジェクトを追加する順番を
5243 決めたのである。
5244
5245    こうした作業全体が、1980 年ごろから時代遅れのものになった。
5246 というのは、Unix のアーカイブは現在ではシンボル・テーブルを内蔵して
5247 おり (従来は `ranlib' によって作られていたが、今ではたいてい `ar'
5248 そのものによって作られている)、Unix のリンカはこのシンボル・テーブルを
5249 使用して、アーカイブファイルに対する複数回の読み込みを効率的に行うから
5250 である。
5251
5252    ともあれ、これが tsort が誕生した経緯である。すなわち、当時のリンカ
5253 のアーカイブファイルを取り扱う方法に問題があり、その問題を解決するため
5254 の工夫だったのだ。そして、その問題は、その後、別のやり方で解決される
5255 ようになったのである。
5256
5257 \1f
5258 File: coreutils-ja.info,  Node: Operating on fields,  Next: Operating on characters,  Prev: Operating on sorted files,  Up: Top
5259
5260 8 フィールド操作
5261 ***********************
5262
5263 * Menu:
5264
5265 * cut invocation::           各行の選択した部分を表示する。
5266 * paste invocation::         複数のファイルの各行をマージする。
5267 * join invocation::          共通のフィールドに基づいて行を連結する。
5268
5269 \1f
5270 File: coreutils-ja.info,  Node: cut invocation,  Next: paste invocation,  Up: Operating on fields
5271
5272 8.1 `cut': 各行の選択した部分を表示する
5273 =====================================================
5274
5275 `cut' は、各ファイルから各行の一部を抜き出して、標準出力に書き出す。
5276 ファイルが指定されていない場合や、ファイル名として `-' が指定されて
5277 いる場合は、標準入力を対象とする。
5278
5279    書式:
5280
5281      cut OPTION... [FILE]...
5282
5283    以下のオプション一覧で BYTE-LIST, CHARACTER-LIST, FIELD-LIST と
5284 表記されているものは、コンマで区切られた、1 個以上の数字や範囲から
5285 なるリストである (範囲は、ダッシュを間に挟む 2 個の数字)。バイト、
5286 文字、フィールドは 1 から数える。不完全な範囲を指定することもでき、
5287 `-M' は `1-M' と同じことであり、`N-' は `N' から行末、あるいは最後の
5288 フィールドまでと同じことである。リストの要素は、繰り返してもよく、
5289 部分的に重なり合ってもよく、どんな順序で指定してもよい。ただし、
5290 入力中の選択した部分が書き出されるのは、読み込まれたときと同じ順序
5291 であり、しかも、ただ一度だけである。(訳注: たとえば、`-f 3,1,3'
5292 などと指定することはできるが、出力されるときは field-1, field-3
5293 の順番であり、field-3 が二度出力されることもない。)
5294
5295    このプログラムでは以下のオプションが使用できる。参照: *note Common
5296 options::.
5297
5298 `-b BYTE-LIST'
5299 `--bytes=BYTE-LIST'
5300      BYTE-LIST で指定された位置にあるバイトのみを選択して、表示する。
5301      タブやバックスペースも他の文字と同様に扱う。すなわち、そうした
5302      ものも 1 バイトを占める。出力用のデリミタ (delimiter、区切りの印)
5303      が指定されている場合は (`--output-delimiter' の説明を参照)、選択
5304      されたバイトからなる範囲同士の間にデリミタ文字列を出力する。
5305
5306 `-c CHARACTER-LIST'
5307 `--characters=CHARACTER-LIST'
5308      CHARACTER-LIST で指定された位置にある文字のみを選択して、表示する。
5309      現在のところ、`-b' と同じだが、プログラムの国際化が進むと、動作が
5310      変わることになるだろう。タブやバックスペースも他の文字と同様に
5311      扱う。すなわち、そうしたものも 1 文字と数える。出力用のデリミタが
5312      指定されている場合は (`--output-delimiter' の説明を参照)、選択
5313      された文字からなる範囲同士の間にデリミタ文字列を出力する。
5314
5315 `-f FIELD-LIST'
5316 `--fields=FIELD-LIST'
5317      FIELD-LIST で指定されたフィールドのみを選択して、表示する。
5318      フィールドの区切りは、デフォルトではタブ文字 1 個である。なお、
5319      `--only-delimited' (`-s') オプションが指定されていない場合は、
5320      デリミタ文字を全く含まない行も表示する。
5321
5322      一言言っておくと、`awk' を使えば、もっと洗練されたフィールド処理が
5323      可能になる。また、`awk' ならデフォルトで、フィールドの区切りに空白
5324      文字の連続を使用し (すなわち、フィールドの前後から除去し)、さらに、
5325      行頭と行末の空白を無視してくれるだろう。
5326           awk '{print $2}'      # 2 番目のフィールドを表示する
5327           awk '{print $(NF-1)}' # 最後から 2 番目のフィールドを表示する
5328           awk '{print $2,$1}'   # 最初の 2 フィールドを逆に並べる
5329
5330      ありそうにないことだが、`awk' が利用できない状況だとしよう。その
5331      場合は、`join' コマンドを使えば、上記で `awk' がやっているように、
5332      空白文字を処理することができる。
5333           join -a1 -o 1.2     - /dev/null # 2 番目のフィールドを表示する
5334           join -a1 -o 1.2,1.1 - /dev/null # 最初の 2 フィールドを逆に並べる
5335
5336 `-d INPUT_DELIM_BYTE'
5337 `--delimiter=INPUT_DELIM_BYTE'
5338      `-f' と併せて使うと、入力のフィールド区切りに INPUT_DELIM_BYTE の
5339      最初のバイトを使用する (デフォルトはタブ)。
5340
5341 `-n'
5342      マルチバイト文字を分割しない (現在のところ、機能しない)。
5343
5344 `-s'
5345 `--only-delimited'
5346      `-f' を使うとき、フィールド区切り文字を含まない行の表示をしない。
5347      通常は、フィールド区切り文字を含まない行は、行全体がそのまま表示
5348      される。
5349
5350 `--output-delimiter=OUTPUT_DELIM_STRING'
5351      `-f' と一緒に使った場合は、出力フィールド間が OUTPUT_DELIM_STRING
5352      で区切られる。`-f' を指定したときのデフォルトは、入力時のデリミタを
5353      使用することである。`-b' や `-c' を使用して、(フィールドの範囲では
5354      なく) バイト位置や文字位置の範囲を選択した場合は、選択されたバイト
5355      の重なり合わない範囲同士の間に OUTPUT_DELIM_STRING が出力される。
5356
5357 `--complement'
5358      このオプションは GNU の拡張である。`-b', `-c', `-f' オプションで
5359      選択されたバイト、文字、フィールドを含まない部分を選択して、表示する。
5360      言い換えれば、そうしたオプションによって指定されたバイトや文字や
5361      フィールドは「表示しない」ということだ。このオプションは、フィールドが
5362      たくさんあるとき、そのうちの一部を除いたすべてを表示したい場合に
5363      便利である。
5364
5365
5366    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5367
5368 \1f
5369 File: coreutils-ja.info,  Node: paste invocation,  Next: join invocation,  Prev: cut invocation,  Up: Operating on fields
5370
5371 8.2 `paste': 複数のファイルの各行をマージする
5372 =============================================================
5373
5374 `paste' は、指定された各ファイルの行番号が同じ行を、タブ文字を
5375 間にはさんで連結して、標準出力に書き出す。入力ファイルが全く
5376 指定されていない場合や、ファイル名が `-' だった場合は、標準入力が
5377 使用される。
5378
5379    書式:
5380
5381      paste [OPTION]... [FILE]...
5382
5383    たとえば、次のような 2 個のファイルに対して、
5384      $ cat num2
5385      1
5386      2
5387      $ cat let3
5388      a
5389      b
5390      c
5391
5392    各ファイルから行を順番に拾う。
5393      $ paste num2 let3
5394      1       a
5395      2       b
5396              c
5397
5398    片方のファイルの行を二回使う。
5399      $ paste num2 let3 num2
5400      1       a      1
5401      2       b      2
5402              c
5403
5404    標準入力から行を取得して混ぜる。
5405      $ paste - let3 - < num2
5406      1       a      2
5407              b
5408              c
5409
5410    連続する行を、スペースを間にはさんで結合する。
5411      $ seq 4 | paste -d ' ' - -
5412      1 2
5413      3 4
5414
5415    このプログラムでは以下のオプションが使用できる。参照: *note Common
5416 options::.
5417
5418 `-s'
5419 `--serial'
5420      各ファイルから 1 行づつ取り出して連結するのではなく、一つの
5421      ファイルのすべての行をまとめて 1 行に連結する。上の例のデータを
5422      使用すると、
5423
5424           $ paste -s num2 let3
5425           1       2
5426           a       b       c
5427
5428 `-d DELIM-LIST'
5429 `--delimiters=DELIM-LIST'
5430      連結する行の区切りに、タブではなく、DELIM-LIST の各文字を順番に
5431      使用する。DELIM-LIST を使い切ってしまった場合は、最初の文字に
5432      戻って使用して行く。上記のデータを例に取ると、
5433
5434           $ paste -d '%_' num2 let3 num2
5435           1%a_1
5436           2%b_2
5437           %c_
5438
5439
5440    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5441
5442 \1f
5443 File: coreutils-ja.info,  Node: join invocation,  Prev: paste invocation,  Up: Operating on fields
5444
5445 8.3 `join': 共通のフィールドに基づいて行を結合する
5446 =====================================================================
5447
5448 `join' は、二つの入力ファイルを対象に、同一の共通フィールド (join
5449 field) を持つことで「対」になっている各行を、1 行にまとめて、標準出力
5450 に書き出す。
5451
5452    書式:
5453
5454      join [OPTION]... FILE1 FILE2
5455
5456    FILE1 と FILE2 の片方は `-'、すなわち標準入力であってもよい (両方とも
5457 標準入力は不可)。FILE1 と FILE2 は、共通フィールドに基づいてソートされて
5458 いるべきである。
5459
5460    通常、ソート順は、`LC_COLLATE' のロケールが規定している照合順序で
5461 ある。`-t' オプションが指定されていない場合は、両ファイルについて
5462 並び方を比較する際、`sort -b' の場合と同様に、共通フィールドの先頭に
5463 ある空白が無視される。また、`--ignore-case' が指定されている場合は、
5464 `sort -f' と同様、共通フィールドでアルファベットの大文字と小文字は
5465 区別されない。
5466
5467    `sort' の出力を `join' に渡すなら、`sort' と `join' が使用する
5468 ロケールやオプションは首尾一貫していなければならない。`sort -k 1b,1'
5469 のようなコマンドを使用すれば、デフォルトの共通フィールドに基づいて、
5470 ファイルをソートすることができる。しかし、ロケール、共通フィールド、
5471 区切り記号、比較オプションなどにデフォルト以外のものを使用する場合は、
5472 `join' と `sort' の間で矛盾が起きないように、そうしたものを選択
5473 しなければならないのだ。`join -t ''' が指定された場合は、行全体が共通
5474 フィールドとして考慮の対象になるが、これは、sort のデフォルトの動作に
5475 対応している。
5476
5477    入力のすべての行が対になっている場合は、GNU による拡張が利用できる。
5478 この場合、並んでいる順番は、対になる二つのフィールドが同じであると判断
5479 されるならば、どんな順番でもよい。ただし、並び方の比較を上述のように
5480 行ったとき、二つのフィールドが同じだと判断される場合であり、その場合
5481 のみである。例を挙げよう。
5482
5483      $ cat file1
5484      a a1
5485      c c1
5486      b b1
5487      $ cat file2
5488      a a2
5489      c c2
5490      b b2
5491      $ join file1 file2
5492      a a1 a2
5493      c c1 c2
5494      b b1 b2
5495
5496    `--check-order' を指定した場合、入力がソートされていないと、エラー
5497 メッセージを出して、実行を中断する。`--nocheck-order' オプションを指定
5498 した場合は、入力がソートされていなくても、エラーメッセージを出すことは
5499 ない。どちらのオプションも指定されていない場合に、入力がソートされて
5500 いないとの診断を下すのは、 片方の入力ファイルにもう一方と対にならない
5501 行が見つかったときだけであり、それも入力ファイルのどちらも空ではなく、
5502 中身を持っているときだけである。 入力ファイルがソートされていないと診断
5503 すると、`join' は 0 以外のステータスで終了する (従って、そうした出力は
5504 使用するべき ではない)。
5505
5506    入力ファイルがきちんとソートされていず、しかも、対にならない行を
5507 含む場合に、`--nocheck-order' を指定して、そうしたファイルを `join' で
5508 無理矢理処理しても、何か特定の結果をもたらすことは保証できない。おそらく
5509 出力は、期待に添わないものになるだろう。
5510
5511    デフォルトの動作は次のようになっている。
5512    * 共通フィールド (join field) は、各行の最初のフィールドである。
5513
5514    * 入力の各フィールドは、1 個以上の空白 (スペースやタブ)
5515      で区切られる。 行頭の空白は無視される。
5516
5517    * 出力の各フィールドは、1 個のスペースで区切られる。
5518
5519    * 各出力行の構成は、共通フィールド、FILE1 の残りのフィールド、 FILE2
5520      の残りのフィールドの順になる。
5521
5522    このプログラムでは以下のオプションが使用できる。参照: *note Common
5523 options::.
5524
5525 `-a FILE-NUMBER'
5526      FILE-NUMBER (`1' か `2') のファイルに、もう一方のファイルと対に
5527      ならない行がある場合、通常の出力のほかに、その行も表示する。
5528
5529 `--check-order'
5530      入力ファイルのどちらかの内容がきちんとソートされていないと、
5531      エラーメッセージを出して、実行に失敗する。
5532
5533 `--nocheck-order'
5534      入力ファイルの内容がソートされた順番になっているかどうかを、どちらの
5535      ファイルについてもチェックしない。これが、デフォルトである。
5536
5537 `-e STRING'
5538      入力では欠けているフィールドを、出力では STRING で補う。すなわち、
5539      オプション `-1', `-2', `-j', `-o' などを指定したときに、欠けている
5540      フィールドがそれに当たる。
5541
5542 `--header'
5543      各入力ファイルの最初の行をヘッダ行と見なす。ヘッダ行も結合され、
5544      最初の出力行として表示される。`-o' を使って、出力フォーマットを
5545      指定している場合は、ヘッダ行もそのフォーマットに従って出力される。
5546      ヘッダ行は、`--check-order' が指定されていても、並び順のチェックを
5547      受けない。なお、両ファイルのヘッダ行がマッチしない場合は、一番目の
5548      ファイルのヘッダ・フィールドが使用される。
5549
5550 `-i'
5551 `--ignore-case'
5552      キーを比較する際、アルファベットの大文字小文字を区別しない。この
5553      オプションを使用するときは、両方の入力ファイルの行が、同じように
5554      大文字小文字を区別せず並んでいなければならない。そうした順番で並
5555      べるには、`sort -f' を使えばよい。
5556
5557 `-1 FIELD'
5558      ファイル 1 では FIELD 番目のフィールドを共通フィールドとする
5559      (FIELD は正の整数)。
5560
5561 `-2 FIELD'
5562      ファイル 2 では FIELD 番目のフィールドを共通フィールドとする
5563      (FIELD は正の整数)。
5564
5565 `-j FIELD'
5566      `-1 FIELD -2 FIELD' と等価。
5567
5568 `-o FIELD-LIST'
5569 `-o auto'
5570      キーワードの `auto' が指定されると、`join' は各ファイルの最初の
5571      行を元にして、出力フォーマットを推測する。それは、デフォルトの
5572      出力フォーマットとほぼ同じだが、それだけでなく、各行に必ず同数の
5573      フィールドを出力するようにする。また、欠けているフィールドがあれば、
5574      `-e' オプションの指定する文字列で補う。余分なフィールドは除去する。
5575
5576      `auto' が指定されていない場合は、FIELD-LIST のフォーマットに従っ
5577      て、各出力行を構成する。FIELD-LIST の各要素は、`0' 一文字か、M.N
5578      という形を取る。ここで、M はファイル番号であり、`1' か `2' である。
5579      N はフィールド番号であり、正の整数である。
5580
5581      `0' というフィールド指定は、共通フィールドを指している。ほとんどの
5582      場合、`0' というフィールド指定と同じことが、共通フィールドを明示的
5583      に M.N で示すことでも、実現できるだろう。しかしながら、(`-a' オプ
5584      ションなり `-v' オプションなりを使用して)、対にならない行を表示
5585      する場合、対にならない行が両方のファイルに存在すると、FIELD-LIST で
5586      M.N をどう使おうとも、共通フィールドを指定できないのだ。`join' で
5587      共通フィールドの指定が常に可能になるように、POSIX は `0' という
5588      フィールド指定法を考案したのである。
5589
5590      FIELD-LIST の各要素は、コンマ、または空白で区切られる。区切りに空白
5591      を使用するときは、シェルによって解釈されないように、たいていの場合
5592      引用符で囲む必要がある。たとえば、コマンド `join -o 1.2,2.2' と
5593      `join -o '1.2 2.2'' は、同じ動作になる。
5594
5595      FIELD-LIST の指定は、すべての出力行に適用される。これは、`-a' や
5596      `-v' オプションによって出力されるものにも当てはまる。
5597
5598 `-t CHAR'
5599      入出力のフィールドの区切りに、文字 CHAR を使用する。CHAR は、入力
5600      ファイルに現れる一つ一つが、有意なものとして扱われる。`sort -t
5601      CHAR' を `-b' なしで実行すれば、このオプションに対応する順序に行を
5602      並べることができる。`join -t ''' を指定すると、行全体が共通フィー
5603      ルドとして考慮の対象になり、これは sort のデフォルトの動作に対応
5604      している。`-t '\0'' を指定すると、ASCII NUL 文字がフィールドの
5605      区切りに使用される。
5606
5607 `-v FILE-NUMBER'
5608      通常の出力はせず、FILE-NUMBER (`1' か `2' である) のファイルに存在
5609      する、対にならない各行を表示する。
5610
5611 `-z'
5612 `--zero-terminated'
5613      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
5614      すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
5615      各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
5616      `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
5617      ことがある。そうしたコマンドも、わがままなファイル名を (空白など
5618      の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
5619      同様なことをしているのである。
5620
5621
5622    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5623
5624 \1f
5625 File: coreutils-ja.info,  Node: Operating on characters,  Next: Directory listing,  Prev: Operating on fields,  Up: Top
5626
5627 9 文字操作
5628 **************
5629
5630 以下のコマンドは、個々の文字に対して操作を行う。
5631
5632 * Menu:
5633
5634 * tr invocation::            文字の置換、圧縮、削除を行う。
5635 * expand invocation::        タブをスペースに変換する。
5636 * unexpand invocation::      スペースをタブに変換する。
5637
5638 \1f
5639 File: coreutils-ja.info,  Node: tr invocation,  Next: expand invocation,  Up: Operating on characters
5640
5641 9.1 `tr': 文字の置換、圧縮、削除を行う
5642 ====================================================
5643
5644 書式:
5645
5646      tr [OPTION]... SET1 [SET2]
5647
5648    `tr' は標準入力を標準出力にコピーする際に、次の操作の一つを行う。
5649
5650    * 文字を置換する。置換した結果に同一文字の連続があるときは、それを 1
5651      文字に圧縮することもできる。
5652
5653    * 同一文字の連続を 1 文字に圧縮する。
5654
5655    * 文字を削除する。
5656
5657    * 文字を削除する。さらに、削除した結果に同一文字の連続があるときは、
5658      それを 1 文字に圧縮する。
5659
5660    上記書式の SET1 と (もし、指定しているなら) SET2 の二つの引数には、
5661 順序が意味を持つ文字の集合を指定する。以下の説明で、それぞれ SET1、SET2
5662 と呼ばれることになるそうした文字集合こそ、入力中に存在する文字のうちで
5663 `tr' が操作の対象とする文字群である。`--complement' (`-c', `-C')
5664 オプションを指定すると、SET1 の代わりにその補集合 (SET1 に含まれない
5665 すべての文字) が使われることになる。
5666
5667    現在のところ、`tr' が完全に対応しているのは、シングルバイト文字
5668 だけである。将来は、マルチバイト文字もサポートすることになるだろうが、
5669 そのときは、`-C' オプションで文字集合の補集合を作り、`-c' オプションで
5670 値 (訳注: いわゆる文字コード) の集合の補集合を作ることになるだろう。
5671 この区別が意味を持つのは、指定する値の中に文字ではないものがあるとき
5672 だけだが、そういった事態は、マルチバイト・エンコーディングを使用して
5673 いるロケールで、入力にエンコーディング・エラーが含まれるときしか起き
5674 そうにない。
5675
5676    このプログラムでは、`--help' や `--version' オプションも使える。
5677 *Note Common options::. なお、オプションは、オペランドの前で指定しなけ
5678 ればならない。
5679
5680    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5681
5682 * Menu:
5683
5684 * Character sets::           文字集合の指定。
5685 * Translating::              ある文字集合の別の文字集合への変換。
5686 * Squeezing::                連続する同一文字の圧縮と文字の削除。
5687
5688 \1f
5689 File: coreutils-ja.info,  Node: Character sets,  Next: Translating,  Up: tr invocation
5690
5691 9.1.1 文字集合の指定
5692 ---------------------------
5693
5694 SET1 や SET2 引数の書式は、正規表現の書式に似ているが、正規表現では
5695 なく、文字のリストにすぎない。そうした文字列中のほとんどの文字は、単に
5696 その文字自身を表しているだけだが、便宜のため文字列中では以下に列挙する
5697 簡易記法も使うことができる。簡易記法によっては、以下で述べているように、
5698 SET1 と SET2 のどちらか一方でしか使えないこともある。
5699
5700 バックスラッシュ・エスケープ
5701      以下のバックスラッシュ・エスケープ・シーケンスを認識する。
5702
5703     `\a'
5704           Control-G (ベル).
5705
5706     `\b'
5707           Control-H (バックスペース).
5708
5709     `\f'
5710           Control-L (フォームフィード).
5711
5712     `\n'
5713           Control-J (改行).
5714
5715     `\r'
5716           Control-M (復帰).
5717
5718     `\t'
5719           Control-I (水平タブ).
5720
5721     `\v'
5722           Control-K (垂直タブ).
5723
5724     `\OOO'
5725           1 から 3 桁の 8 進数 OOO によって表される値を持つ 8 ビット
5726           文字。`\400' は、`\040' `0' という連続する 2 バイトに解釈
5727           されるので、注意すること。
5728
5729     `\\'
5730           1 個のバックスラッシュ。
5731
5732      上記以外の 1 個の文字がバックスラッシュに続く場合は、その文字
5733      として解釈される。またバックスラッシュには、特別な意味を打ち消す
5734      働きもあるので、`[', `]', `*', `-' をエスケープするのにも使用
5735      できる。
5736
5737 範囲指定
5738      `M-N' という表記は、昇順で M から N までのすべての文字に展開
5739      される。M は文字の照合順序で N より前のものでなければならず、
5740      さもないと、エラーになる。たとえば、`0-9' は `0123456789'
5741      と同じである。
5742
5743      System V の書式では、範囲は、角カッコ (square brackets)を使って
5744      囲むことになっているが、GNU の `tr' はこの書式をサポートして
5745      いない。System V の書式で指定した場合でも、置換が期待どおり行われる
5746      こともあるが、それは、たいていの場合、角カッコが角カッコに置換される
5747      からである。そうだとしても、予想外の動作をすることもあるので、
5748      角カッコの使用は避けた方がよい。たとえば、`tr -d '[0-9]'' は、数字
5749      だけでなく、角カッコも削除してしまう。
5750
5751      昔からよく使われている範囲の指定法の多くが -- 正しい用法として
5752      認められているものでさえ -- 他のシステムで使えるとはかぎらない。
5753      たとえば、EBCDIC のホストでは、 `A-Z' という範囲の指定をしても、
5754      たいていの人が予想するような結果は得られないだろう。なぜなら、
5755      そこでは `A' から `Z' までが、ASCII におけるように隣り合っては
5756      いないからである。POSIX 準拠の `tr' を使うことができるならば、
5757      この問題を回避する最善の方法は、文字クラスを使用することである
5758      (下記参照)。それができない場合は、範囲の要素を一つ一つ書き込むのが、
5759      一番可搬性のある方法だ (一番野暮ったい方法でもあるけれど)。
5760
5761 文字の繰り返し
5762      SET2 における `[C*N]' という表記は、文字 C の N 個の連続に展開
5763      される。従って、`[y*6]' は `yyyyyy' と同じである。また、SET2 に
5764      おける `[C*]' という表記は、SET2 を SET1 と同じ長さにするのに
5765      必要な数の C の連続に展開される。N が `0' で始まっている場合は、 8
5766      進数として扱われる。それ以外の場合は、10 進数である。
5767
5768 文字クラス
5769      `[:CLASS:]' という表記は、(あらかじめ定義されている) 文字クラス
5770      CLASS に属するすべての文字に展開される。展開された文字に特定の
5771      順序はないが、`upper' と `lower' の文字クラスは別で、この二つは、
5772      昇順に展開される。`--delete' (`-d') と `--squeeze-repeats' (`-s')
5773      オプションの両方を指定している場合は、SET2 で任意の文字クラスを
5774      使用することができる。それ以外の場合 SET2 で使えるのは、`lower' と
5775      `upper' の文字クラスだけであり、それも、対応する文字クラスを
5776      (すなわち、`upper' に対しては `lower'、`lower' に対しては `upper'
5777      を)、SET1 の対応する位置で指定しているときだけである。その場合は、
5778      大文字小文字の変換を指定していることになるわけだ。以下に文字クラス
5779      の名前を列挙する。なお、無効なクラス名を指定すると、エラーになる。
5780
5781     `alnum'
5782           アルファベットの文字と数字。
5783
5784     `alpha'
5785           アルファベットの文字。
5786
5787     `blank'
5788           水平方向の空白 (Horizontal whitespace)。
5789
5790     `cntrl'
5791           制御文字。
5792
5793     `digit'
5794           数字。
5795
5796     `graph'
5797           表示可能文字。空白を含まない (訳注: スペースもタブも改行も、
5798           すなわち、ホワイトスペースを一切含まない)。
5799
5800     `lower'
5801           アルファベットの小文字。
5802
5803     `print'
5804           表示可能文字。空白を含む (訳注: タブや改行は含まないが、
5805           スペース (0x20) は含む)。
5806
5807     `punct'
5808           句読点 (訳注: 引用符なども含む)。
5809
5810     `space'
5811           水平方向や垂直方向の空白 (Horizontal or vertical whitespace)。
5812
5813     `upper'
5814           アルファベットの大文字。
5815
5816     `xdigit'
5817           16 進数の数字。
5818
5819 等価クラス
5820      `[=C=]' という書式は、C と等価な文字のすべてに展開される。
5821      展開される文字の間に特定の順序はない。等価クラスは、比較的最近の
5822      発明であり、英語以外のアルファベットをサポートするためのものである。
5823      しかしながら、等価クラスを定義したり、何が等価クラスに含まれるかを
5824      決定したりする標準的な方法は存在しないようだ。そのため、GNU の
5825      `tr' は、等価クラスを十分に実装していない。各文字の等価クラスには
5826      その文字しか含まれていないので、あまり使い道がない。
5827
5828
5829 \1f
5830 File: coreutils-ja.info,  Node: Translating,  Next: Squeezing,  Prev: Character sets,  Up: tr invocation
5831
5832 9.1.2 置換
5833 ------------
5834
5835 `tr' は、SET1 と SET2 の両方が指定され、`--delete' (`-d') オプションが
5836 指定されていない場合は、文字の置換を行う。`tr' は入力の中に SET1 に存在
5837 する文字が現れるたびに、それを SET2 の対応する文字に置き換える。入力中の
5838 SET1 に存在しない文字は、読み飛ばして、変更しない。ある文字が SET1 中に
5839 2 個以上存在し、SET2 中のそれに対応する文字がすべて同じでない場合、置換
5840 に使用するのは、最後の文字だけである。たとえば、次の二つのコマンドは、
5841 同じ動作をする。
5842
5843      tr aaa xyz
5844      tr a z
5845
5846    `tr' がよく使われるのは、アルファベットの小文字を大文字に変換する
5847 ときである。それには、いろいろな方法がある。例を三つほど挙げてみる。
5848
5849      tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
5850      tr a-z A-Z
5851      tr '[:lower:]' '[:upper:]'
5852
5853 ただし、上記の `a-z' のような範囲指定の使用は、可搬性がないことに
5854 注意していただきたい。
5855
5856    `tr' で置換を行う際には、普通 SET1 と SET2 を同じ長さにする。SET1 が
5857 SET2 より短いと、SET2 の後尾にある余分な文字が無視されることになる。
5858
5859    逆に、SET1 が SET2 より長い場合は、可搬性がなくなる。POSIX の規定で
5860 は、結果は未定義なのだ。こうした場合、BSD の `tr' は、SET2 の最後の
5861 文字を必要なだけ繰り返して、SET2 が SET1 と同じ長さになるようにする。
5862 System V の `tr' は、SET1 を SET2 と同じ長さに切り詰める。
5863
5864    デフォルトでは、GNU 版の `tr' は、この問題を BSD の `tr' と同じ
5865 やり方で処理する。そして、`--truncate-set1' (`-t') オプションが指定
5866 されている場合のみ、System V の `tr' のように処理するのである。
5867 このオプション (`--truncate-set1') は、置換以外の操作では無視される。
5868
5869    この問題で System V の `tr' の動作を選ぶと、比較的よく使われる、 BSD
5870 式の次の慣用表現が使えなくなる。
5871
5872      tr -cs A-Za-z0-9 '\012'
5873
5874 なぜなら、System V の動作では、アルファベットと数字以外のすべての文字を
5875 改行文字に変換するのではなく、ゼロバイトしか (ASCII NUL 文字、それが
5876 SET1 の補集合の最初の要素である) 改行文字に変換しないからだ。
5877
5878 ちなみに、上記の慣用表現は、システムによってはうまく動作しない。
5879 なぜなら、範囲指定を使っているからであり、また、改行の 8 進数による
5880 コードを 012 と決め込んでいるからでもある。`tr' が POSIX に準拠して
5881 いるなら、以下の方が、よりよい書き方である。
5882
5883      tr -cs '[:alnum:]' '[\n*]'
5884
5885 \1f
5886 File: coreutils-ja.info,  Node: Squeezing,  Prev: Translating,  Up: tr invocation
5887
5888 9.1.3 連続する文字の圧縮と文字の削除
5889 ---------------------------------------------------
5890
5891 `--delete' (`-d') オプションのみが指定された場合、`tr' は、SET1 に
5892 存在する文字が入力中にあれば、それを削除する。
5893
5894    `--squeeze-repeats' (`-s') オプションのみが指定された場合、`tr' は、
5895 SET1 に存在する文字が入力中に連続して現れるたびに、その部分をただ 1 個
5896 のその文字に置き換える。
5897
5898    `--delete' と `--squeeze-repeats' の両方が指定された場合、`tr' は、
5899 まず SET1 を使って削除を行い、その後で、残っている文字に対して、 SET2
5900 を使って連続する同一文字の圧縮を行う。
5901
5902    `--squeeze-repeats' オプションは、置換の際に使用することもできる。
5903 その場合、`tr' は、まず置換を実行し、その後で、置換結果に対して、 SET2
5904 を使って連続する同一文字の圧縮を行う。
5905
5906    例をいくつか挙げて、オプションの様々な組み合わせを説明する。
5907
5908    * すべてのゼロバイトを削除する。
5909
5910           tr -d '\0'
5911
5912    * 入力中のすべての単語 (訳注: 空白などで前後を区切られた文字列) を 1
5913      行に 1 個づつ書き出す。このコマンドは、アルファベットと数字以外の
5914      すべてを改行文字に変換し、さらに、改行が連続して現れるそれぞれの
5915      箇所を 1 個の改行文字に圧縮している。
5916
5917           tr -cs '[:alnum:]' '[\n*]'
5918
5919    * 連続する改行文字が現れるごとに、それを一個の改行文字に変換する。
5920
5921           tr -s '\n'
5922
5923    * 文書中の単語の重複を探し出す。たとえば、 改行を挟んで同じ単語を
5924      繰り返して、"the the" のように書いてしまうとことは、よくあること
5925      である。以下の Bourne シェルのスクリプトは、次のように動作する。
5926      まず、句読点や空白文字が 1 個以上続けて現れるたびに、それを 1 個の
5927      改行文字に置き換える。そうすることで、単語が 1 行に 1 個づつ
5928      出力されることになるわけだ。次には、すべての大文字を小文字に
5929      変換する。そして、最後に、`uniq' を `-d' オプション付きで実行して、
5930      重複した単語のみを書き出すのである。
5931
5932           #!/bin/sh
5933           cat -- "$@" \
5934             | tr -s '[:punct:][:blank:]' '[\n*]' \
5935             | tr '[:upper:]' '[:lower:]' \
5936             | uniq -d
5937
5938    * 文字のちょっとした集団を削除するのは、たいていの場合ごく簡単
5939      である。たとえば、`a', `x', `M' という文字をすべて消すには、次の
5940      ようにするだけでよい。
5941
5942           tr -d axM
5943
5944      ところが、削除する文字の一つに  `-' があると、`-' は特殊な意味を
5945      もっているので、厄介なことになりかねない。上記と同様の作業を行う
5946      けれど、今度は `-' という文字もついでにすべて削除するとしよう。
5947      `tr -d -axM' をやってみるかもしれないが、うまく行かないだろう。
5948      `tr' が `-a' をコマンドライン・オプションとして解釈しようとする
5949      からである。それではと、ハイフンを文字列の内側に入れてみることも
5950      できる。`tr -d a-xM' のようにだ。だが、これもうまく行きそうにない。
5951      `tr' が `a-x' を 3 個の文字としてではなく、`a'...`x' という文字の
5952      範囲として解釈することになるからだ。この問題を解決する方法の一つは、
5953      ハイフンを文字のリストの最後に置くことである。
5954
5955           tr -d axM-
5956
5957      あるいは、`--' を使って、オプション処理はここで終わりと明示する
5958      こともできる。
5959
5960           tr -d -- -axM
5961
5962      より普遍的な方法は、等価クラスの記法  `[=c=]' を、`c' を `-' で
5963      (あるいは、他の任意の文字で) 置き換えて使うことである。
5964
5965           tr -d '[=-=]axM'
5966
5967      上記の例では、角カッコがシェルによって解釈されないように、シングル
5968      クォートを使っていることに注意していただきたい。
5969
5970
5971 \1f
5972 File: coreutils-ja.info,  Node: expand invocation,  Next: unexpand invocation,  Prev: tr invocation,  Up: Operating on characters
5973
5974 9.2 `expand': タブをスペースに変換する
5975 ==================================================
5976
5977 `expand' は指定された各 FILE の内容を標準出力に書き出し、その際に
5978 タブ文字を適切な数のスペースに変換する。FILE が指定されていない
5979 場合や、FILE として `-' が指定されている場合は、標準入力を対象にする。
5980
5981    書式:
5982
5983      expand [OPTION]... [FILE]...
5984
5985    デフォルトでは、`expand' はすべてのタブをスペースに変換する。
5986 バックスペース文字は、出力にそのまま残しておく。バックスペースには、
5987 タブ幅を計算する際に、桁数を減らす働きがあるのだ。デフォルトの動作は、
5988 `-t 8' を指定したときと同じである (タブ位置を 8 桁ごとにする)。
5989
5990    このプログラムでは以下のオプションが使用できる。参照: *note Common
5991 options::.
5992
5993 `-t TAB1[,TAB2]...'
5994 `--tabs=TAB1[,TAB2]...'
5995      タブ位置 (tab stop) が一つだけ指定された場合には、(訳注: 入力行に
5996      おける) タブ位置が TAB1 桁ごとあるものとする (デフォルトは 8
5997      桁ごと)。それ以外の場合は、タブ位置を TAB1, TAB2, ... 桁目に置き
5998      (行頭を 0 桁目として数える)、指定された最後のタブ位置より後ろに
5999      あるタブは 1 個のスペースで置き換える。タブ位置の指定は、コンマで
6000      区切ってもよく、空白で区切ってもよい。
6001
6002      互換性を考慮して、GNU の `expand' は、`-TAB1[,TAB2]...' という、
6003      このオプションの古い書式も認めている。新しいスクリプトでは、 `-t
6004      TAB1[,TAB2]...' の方を使うべきである。
6005
6006 `-i'
6007 `--initial'
6008      各行の行頭にあるタブ群だけを (言い換えれば、スペースでもタブでも
6009      ないどんな文字よりも前にある 1 個以上のタブだけを) スペースに変換
6010      する。
6011
6012
6013    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
6014
6015 \1f
6016 File: coreutils-ja.info,  Node: unexpand invocation,  Prev: expand invocation,  Up: Operating on characters
6017
6018 9.3 `unexpand': スペースをタブに変換する
6019 ====================================================
6020
6021 `unexpand' は、指定された各 FILE の内容を標準出力に書き出し、その際に
6022 各行の先頭にある複数の空白 (blank) を、必要な数のタブ文字に変換する。
6023 FILE が指定されていない場合や、FILE として `-' が指定されている場合は、
6024 標準入力を対象にする。デフォルトの POSIX ロケールでは、空白 ("blank")
6025 とは、スペースかタブのことである。他のロケールでは、ほかの空白文字が
6026 追加されているかもしれない。
6027
6028    書式:
6029
6030      unexpand [OPTION]... [FILE]...
6031
6032    デフォルトでは、`unexpand' が変換するのは、各行の行頭にある複数の
6033 空白だけである (言い換えれば、空白以外のどんな文字よりも前にある複数
6034 の空白だけ)。バックスペース文字は、出力にそのまま残しておく。バック
6035 スペースには、タブ幅を計算する際に、桁数を減らす働きがあるのだ。
6036 デフォルトでは、タブ位置は 8 桁ごとに置かれる。
6037
6038    このプログラムでは以下のオプションが使用できる。参照: *note Common
6039 options::.
6040
6041 `-t TAB1[,TAB2]...'
6042 `--tabs=TAB1[,TAB2]...'
6043      タブ位置 (tab stop) が一つだけ指定された場合には、(訳注: 入力行に
6044      おける) タブ位置をデフォルトの 8 桁ごとではなく、TAB1 桁ごとに
6045      設定する。それ以外の場合は、タブ位置を TAB1, TAB2, ... 桁目に置き
6046      (行頭を 0 桁目として数える)、指定された最後のタブ位置より後ろに
6047      ある空白は、変換せず、そのままにする。タブ位置の指定は、コンマで
6048      区切ってもよく、空白で区切ってもよい。このオプションを指定すると、
6049      `-a' オプションが自動的に設定される。
6050
6051      (訳注: 一例を挙げておく。たとえば、`-t 8,12' なら、入力行は、先頭を
6052      0 桁目として、8 桁目、12 桁目にタブ位置があると見なされる。そこで、
6053      先頭に 12 個のスペースがある行に対して `unexpand -t 8,12' を行う
6054      と、空白がタブ 2 個に変換される。出力におけるタブ位置はデフォルトの
6055      ままなので、出力ではその行は、 0 から数えて 16 桁目から文字が始まる
6056      ことになる。)
6057
6058      互換性を考慮して、GNU の `unexpand' は、`-TAB1[,TAB2]...' という、
6059      このオプションの古い書式も認めている。そちらを使う場合は、タブ位置を
6060      必ずコンマで区切らなければならない。なお、`-t' とは違って、この古い
6061      オプションは、`-a' を自動的に設定しない。新しいスクリプトでは
6062      (訳注: 古い書式と同じ動作をさせたい場合)、古い書式に代えて、
6063      `--first-only -t TAB1[,TAB2]...' を使うべきである。
6064
6065 `-a'
6066 `--all'
6067      空白の連続が、行の中で空白以外の文字の後ろにある場合でも、タブ位置の
6068      直前にある 2 個以上の空白の連続は、すべて変換する。
6069
6070
6071    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
6072
6073 \1f
6074 File: coreutils-ja.info,  Node: Directory listing,  Next: Basic operations,  Prev: Operating on characters,  Up: Top
6075
6076 10 ディレクトリの一覧表示
6077 ************************************
6078
6079 この章では、`ls' とその変種の `dir' 及び `vdir' について説明する。
6080 こうしたコマンドは、ファイルに関する情報を一覧表示する。
6081
6082 * Menu:
6083
6084 * ls invocation::            ディレクトリの内容を一覧表示する。
6085 * dir invocation::           簡潔な ls。
6086 * vdir invocation::          詳細な ls。
6087 * dircolors invocation::     ls のカラー設定など。
6088
6089 \1f
6090 File: coreutils-ja.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory listing
6091
6092 10.1 `ls': ディレクトリの内容を一覧表示する
6093 ===========================================================
6094
6095 `ls' プログラムはファイルに関する情報を一覧表示する (ファイルは、
6096 いかなるタイプでもよく、ディレクトリでもよい)。オプションとファイルを
6097 示す引数は、ほとんどのコマンドと同様、どんな順番で指定しても構わない。
6098
6099    コマンドラインで指定したオプション以外の引数がディレクトリならば、
6100 デフォルトでは、`ls' はそのディレクトリの内容を一覧表示する。その際、
6101 再帰的な表示はせず、名前が `.' で始まるファイルも表示しない。
6102 オプション以外の引数がディレクトリでなければ、単にそのファイルの名前を
6103 表示するのが、`ls' のデフォルトの動作である。オプション以外の引数が
6104 一つも指定されていない場合は、`ls' はカレントディレクトリを対象にし、
6105 あたかも `.' という引数を一つだけ付けて起動したかのように動作する。
6106
6107    デフォルトでは、出力を、現在のロケール設定に従って、アルファベット
6108 順でソートする (1)。 標準出力が端末の場合は、出力を段組みで (訳注:
6109 すなわち、1 行に複数ファイルの形式で) 表示し、制御文字を疑問符として
6110 出力する (ソートは縦方向に行う)。それ以外の場合は、出力が 1 行 1
6111 ファイルの形式になり、制御文字はそのまま手を加えずに出力する。
6112
6113    `ls' はきわめて基本的なプログラムなので、長年の間にオプションが
6114 どんどん増えてしまった。以下のサブセクションでは、そうしたオプション
6115 について説明している。各サブセクション内では、オプションを (大文字
6116 小文字を無視して) アルファベット順に並べている。このようにオプションを
6117 サブセクションに分けてはみたが、この分類法は完全なものではない。オプ
6118 ションの中には、`ls' の動作の複数の側面に作用するものもあるからである。
6119
6120    終了ステータス:
6121
6122      0: 成功
6123      1: 軽微な問題 (たとえば、コマンドライン引数として指定されていない
6124         ファイルやディレクトリにアクセスできなかった場合。ディレクトリの
6125         内容を一覧表示しようとしたとき、その中にあるエントリが今まさに
6126         削除やリネームの最中だと、そういうことが起きる)
6127      2: 深刻なトラブル (たとえば、メモリの不足、無効なオプション、
6128         コマンドライン引数として指定されたファイルやディレクトリに
6129         アクセスできなかった場合、ディレクトリのループなど)
6130
6131    参照 *note Common options::.
6132
6133 * Menu:
6134
6135 * Which files are listed::          表示対象にするファイル。
6136 * What information is listed::      表示する情報。
6137 * Sorting the output::              出力のソート。
6138 * Details about version sort::      バージョン・ソートの詳細。
6139 * General output formatting::       出力全体の形式。
6140 * Formatting file timestamps::      タイムスタンプのフォーマット。
6141 * Formatting the file names::       ファイル名のフォーマット。
6142
6143    ---------- Footnotes ----------
6144
6145    (1) POSIX 以外のロケールを使用している場合は (たとえば、`LC_ALL' を
6146 `en_US' に設定している場合は)、`ls' の出力が、見慣れない順序で並んで
6147 いるかもしれない。そうした場合は、環境変数 `LC_ALL' を `C' にしてみる
6148 とよい。
6149
6150 \1f
6151 File: coreutils-ja.info,  Node: Which files are listed,  Next: What information is listed,  Up: ls invocation
6152
6153 10.1.1 表示対象にするファイル
6154 ----------------------------------------
6155
6156 以下のオプションは、どんなファイルについて `ls' が情報を表示するか
6157 を決定する。デフォルトで `ls' が表示するのは、コマンドラインで指定
6158 されたファイルだが、ディレクトリが指定された場合は、その内容になる。
6159 ただし、ディレクトリの内容のうち、名前が `.' で始まるファイルは表示
6160 しない。
6161
6162 `-a'
6163 `--all'
6164      ディレクトリの内容を表示する際、`.' で始まるファイル名も無視
6165      しない。
6166
6167 `-A'
6168 `--almost-all'
6169      ディレクトリの内容を表示する際、`.' と `..' は無視するが、
6170      それ以外の `.' で始まるいかなるファイル名も無視しない。`--all'
6171      (`-a') オプションは、このオプションに優先する。
6172
6173 `-B'
6174 `--ignore-backups'
6175      ディレクトリの内容表示において、`~' で終わるファイルを無視する。
6176      このオプションは、`--ignore='*~' --ignore='.*~'' と同じである。
6177
6178 `-d'
6179 `--directory'
6180      ディレクトリについても、ディレクトリ内容の一覧ではなく、他のタイプ
6181      のファイルの場合と同じように、名前だけを表示する。また、
6182      `--dereference-command-line' (`-H'), `--dereference' (`-L'),
6183      `--dereference-command-line-symlink-to-dir' といったオプションが
6184      指定されていないかぎり、コマンドラインでシンボリックリンクが指定
6185      されても、それをたどらない。
6186
6187 `-H'
6188 `--dereference-command-line'
6189      コマンドライン引数がシンボリックリンクを指定している場合、リンク
6190      そのものではなく、リンクが参照しているファイルの情報を表示する。
6191
6192 `--dereference-command-line-symlink-to-dir'
6193      原則としてシンボリックリンクの参照を行わないが、一つだけ例外が
6194      ある。すなわち、コマンドライン引数がシンボリックリンクを指定し、
6195      それがディレクトリを指している場合は、リンクそのものではなく、
6196      そのディレクトリの情報を表示する。この動作は、リンクの参照に関係
6197      する他のオプションが全く指定されていないときの、`ls' のデフォルトの
6198      動作である (リンクの参照に関係する他のオプションには、`--classify'
6199      (`-F'), `--directory' (`-d'), `-l', `--dereference' (`-L'),
6200      `--dereference-command-line' (`-H') がある)。
6201
6202 `--group-directories-first'
6203      すべてのディレクトリをまとめてファイルの前に置き、その上で、選択
6204      したソート・キーを使って (`--sort' オプション参照)、ディレクトリと
6205      ファイルをそれぞれ別々にソートする。別の言い方をすると、このオプ
6206      ションはソートする際の主キーを設定し、`--sort' オプションが副キー
6207      を設定するということだ。ただし、`--sort=none' (`-U') を使ったり
6208      すると、このオプションは全く無効になる。
6209
6210 `--hide=PATTERN'
6211      ディレクトリの内容表示において、`--all' (`-a') や `--almost-all'
6212      (`-A') が同時に指定されていないかぎり、シェルのパターン PATTERN
6213      に名前がマッチするファイルを無視する。このオプションの動作は、
6214      `--ignore=PATTERN' とほぼ同じだが、`--all' (`-a') や `--almost-all'
6215      (`-A') が併せて指定されていると、効果がないという点が違う。
6216
6217      このオプションは、シェルのエイリアスで使うと、便利かもしれない。
6218      たとえば、`lx' が `ls --hide='*~'' のエイリアスで、`ly' は `ls
6219      --ignore='*~'' のエイリアスだとしよう。その場合、`lx -A' という
6220      コマンドは、ファイル `README~' を表示するが、`ly -A' は表示しない
6221      ことになる。
6222
6223 `-I PATTERN'
6224 `--ignore=PATTERN'
6225      ディレクトリの内容表示において、シェルのパターン (正規表現ではない)
6226      PATTERN に名前がマッチするファイルを無視する。シェルの場合と同様、
6227      ファイル名の先頭にある `.' は PATTERN の先頭のワイルドカードと
6228      マッチしない。このオプションを二度以上使うと、便利なことがある。
6229      たとえば、
6230
6231           $ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'
6232
6233      最初のオプションは `.' で始まる 3 文字以上のファイル名を無視する。
6234      二番目のオプションは `.' で始まる二文字のファイル名のうち、 `..'
6235      を除くすべて無視し、三番目のオプションは `#' で始まるファイル名を
6236      無視する。
6237
6238 `-L'
6239 `--dereference'
6240      シンボリックリンクについてファイル情報を表示する際、リンクそのもの
6241      ではなく、リンクが参照しているファイルの情報を表示する。とは言え、
6242      このオプションを使用した場合でも、表示されるファイル名については、
6243      リンクそのものの名前のままであり、リンクが指しているファイルの名前
6244      にはならない。
6245
6246 `-R'
6247 `--recursive'
6248      すべてのディレクトリの内容を再帰的に一覧表示する。
6249
6250
6251 \1f
6252 File: coreutils-ja.info,  Node: What information is listed,  Next: Sorting the output,  Prev: Which files are listed,  Up: ls invocation
6253
6254 10.1.2 表示する情報
6255 -------------------------
6256
6257 以下のオプションは、`ls' がどんな情報を表示するかに関係している。 `ls'
6258 がデフォルトで表示するのは、ファイル名だけである。
6259
6260 `--author'
6261      詳細形式でディレクトリ内容のリストを出力する際、各ファイルの作成者
6262      情報を表示する。GNU/Hurd では、ファイルの作成者 (author) はファイル
6263      の所有者 (owner) と別人であることがあるが、他のオペレーティング・
6264      システムでは、両者は同一である。
6265
6266 `-D'
6267 `--dired'
6268      詳細表示形式 (`-l') と併せて使用すると、出力本体の後ろに以下の
6269      ような追加の行を表示する。
6270
6271           //DIRED// BEG1 END1 BEG2 END2 ...
6272
6273      BEGN や ENDN は符号なしの整数であり、出力における各ファイル名の
6274      開始バイト位置と終了バイト位置を示している。このようにすることで、
6275      ファイル名に空白や改行のような普段使わない文字が含まれている場合
6276      でも、手の込んだ検索をするまでもなく、Emacs が簡単にファイル名を
6277      見つけられるようにしているのである。
6278
6279      ディレクトリを再帰的にリストしている場合には (`-R')、
6280      各サブディレクトリ名のオフセットを記した同様の行も出力する。
6281
6282           //SUBDIRED// BEG1 END1 ...
6283
6284      そして最後に、次の形式の行を出力する。
6285
6286           //DIRED-OPTIONS// --quoting-style=WORD
6287
6288      ここで、WORD はクォートの方式である (*note Formatting the file
6289      names::)。
6290
6291      実例を挙げてみる。
6292
6293           $ mkdir -p a/sub/deeper a/sub2
6294           $ touch a/f1 a/f2
6295           $ touch a/sub/deeper/file
6296           $ ls -gloRF --dired a
6297             a:
6298             total 8
6299             -rw-r--r-- 1    0 Jun 10 12:27 f1
6300             -rw-r--r-- 1    0 Jun 10 12:27 f2
6301             drwxr-xr-x 3 4096 Jun 10 12:27 sub/
6302             drwxr-xr-x 2 4096 Jun 10 12:27 sub2/
6303
6304             a/sub:
6305             total 4
6306             drwxr-xr-x 2 4096 Jun 10 12:27 deeper/
6307
6308             a/sub/deeper:
6309             total 0
6310             -rw-r--r-- 1 0 Jun 10 12:27 file
6311
6312             a/sub2:
6313             total 0
6314           //DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
6315           //SUBDIRED// 2 3 167 172 228 240 290 296
6316           //DIRED-OPTIONS// --quoting-style=literal
6317
6318      上記 `//DIRED//' 行の 2 個づつ組になっているオフセットは、次の 6
6319      個の名前の区切りとなるバイト位置を示している (訳注: 別の言い方を
6320      するなら、出力の先頭からある名前の直前までのバイト数と、その名前の
6321      最後の文字までのバイト数を示している)。6 個の名前とは、すなわち
6322      `f1', `f2', `sub', `sub2', `deeper', `file' である。`//SUBDIRED//'
6323      の行のオフセットが示しているのは、次のディレクトリ名の区切りである。
6324      `a', `a/sub', `a/sub/deeper', `a/sub2'。
6325
6326      下記の例では、5 番目の項目の名前 `deeper' を抜き出してみせている。
6327      この項目の名前は、217 と 223 のオフセットの組に対応している。
6328
6329           $ ls -gloRF --dired a > out
6330           $ dd bs=1 skip=217 count=6 < out 2>/dev/null; echo
6331           deeper
6332
6333      上記のファイル一覧表示では、`deeper' という項目の後ろにスラッシュ
6334      が付いているが、オフセットが名前として選択しているのは、後ろの
6335      スラッシュを除いた部分であることに注目していただきたい。しかしながら、
6336      `ls' を `--dired' とともに `--escape' (短縮形は `-b') のような
6337      オプションを付けて実行し、名前に特殊文字が入っているファイルを処理の
6338      対象にする場合には、バックスラッシュがオフセットの示す範囲のうちに
6339      含まれることに注意しなければならない。
6340
6341           $ touch 'a b'
6342           $ ls -blog --dired 'a b'
6343             -rw-r--r-- 1 0 Jun 10 12:28 a\ b
6344           //DIRED// 30 34
6345           //DIRED-OPTIONS// --quoting-style=escape
6346
6347      引用符を付加するクォート方式を使用している場合には (たとえば、
6348      `--quoting-style=c')、引用符もオフセットの示す範囲に含まれる。
6349      そこで、ユーザが環境変数 `QUOTING_STYLE' を設定して、そうした
6350      クォート方式を選択しているかもしれないことに気を付けなければ
6351      ならない。要するに、`--dired' を使用するアプリケーションでは、
6352      コマンドラインで明示的に `--quoting-style=literal' オプションを
6353      指定するか (`-N' や `--literal' と指定しても同じことだ)、あるいは、
6354      エスケープされた名前を解析できるするようにしておくか、どちらかを
6355      するべきだということである。
6356
6357 `--full-time'
6358      詳細形式でディレクトリ内容のリストを生成し、日時の情報を省略なしで
6359      表示する。これは、`--format=long' を `--time-style=full-iso' と
6360      一緒に使うのと同じである (*note Formatting file timestamps::)。
6361
6362 `-g'
6363      詳細形式でディレクトリ内容のリストを生成するが、所有者情報は表示しない。
6364
6365 `-G'
6366 `--no-group'
6367      詳細形式でディレクトリ内容をリスト表示する際に、グループ情報を
6368      表示しない (GNU 版以外の `ls' には、この動作がデフォルトの
6369      ものがある。そこで、互換性のために、このオプションを用意している)。
6370
6371 `-h'
6372 `--human-readable'
6373      各サイズの後ろに、メビバイトなら `M' といった、大きさを示す文字を
6374      付ける。1000 ではなく、1024 の累乗が使われるので、`M' は 1,048,576
6375      バイトを表している。このオプションは、`--block-size=human-readable'
6376      と同じである。1000 の累乗が使いたければ、"`--si' オプションを使用
6377      すればよい。
6378
6379 `-i'
6380 `--inode'
6381      ファイル名の左側にそのファイルの inode 番号を表示する (inode
6382      番号は、ファイル連続番号とか、インデックスナンバーとも呼ばれる。
6383      この番号は、ある特定のファイルシステムにある各ファイルを、一意に
6384      指し示す)。
6385
6386 `-l'
6387 `--format=long'
6388 `--format=verbose'
6389      各ファイルの名前のほかに、(訳注: 行頭から順に) ファイルのタイプ、
6390      ファイルのモードビット(訳注: 一般に「アクセス権」とか「許可属性」
6391      と言われるもの)、ハードリンク数、所有者名、グループ名、サイズ、
6392      タイムスタンプを表示する (*note Formatting file timestamps::)。
6393      タイムスタンプは、通常は更新日時 (訳注: いわゆる mtime) である。
6394      特定することのできない情報については、疑問符を表示する。
6395
6396      通常、サイズは、桁を区切る記号を付けずに、バイト数で表示されるが、
6397      この表示法は変更することができる (*note Block size::)。たとえば、
6398      `-h' オプションを指定すると、人間に読みやすい短縮表示になり、
6399      `--block-size="'1"' を指定すると、現在のロケールの区切り記号で 3
6400      桁ごとに区切ったバイト数が表示される。
6401
6402      ディレクトリの内容をリストする場合は、対象となるディレクトリ
6403      ごとに、ファイルのリストの前に `total BLOCKS' という行を置く。
6404      ここで、BLOCKS は、そのディレクトリにあるすべてのファイルに
6405      割り当てられたディスク容量の合計である。現在のところブロック
6406      サイズはデフォルトでは 1024 バイトであるが、この値は変更する
6407      ことができる (*note Block size::)。BLOCKS の計算では、
6408      各ハードリンクを別のものとして計算している。これはバグだと
6409      言えないこともない。
6410
6411      ファイルタイプには、以下の文字の一つが使われる。
6412
6413     `-'
6414           通常ファイル
6415
6416     `b'
6417           ブロック・スペシャルファイル
6418
6419     `c'
6420           キャラクタ・スペシャルファイル
6421
6422     `C'
6423           ハイパフォーマンス ("contiguous data") ファイル
6424
6425     `d'
6426           ディレクトリ
6427
6428     `D'
6429           ドア (Solaris 2.5 以上)
6430
6431     `l'
6432           シンボリックリンク
6433
6434     `M'
6435           オフライン ("migrated") ファイル (Cray DMF)
6436
6437     `n'
6438           ネットワーク・スペシャルファイル (HP-UX)
6439
6440     `p'
6441           FIFO (名前付きパイプ)
6442
6443     `P'
6444           ポート (Solaris 10 以上)
6445
6446     `s'
6447           ソケット
6448
6449     `?'
6450           上記以外のファイルタイプ
6451
6452      ファイルのモードビットの表示は、アクセス権を設定する際のシンボ
6453      リックモードの仕様とほぼ同じである (*note Symbolic Modes::)。
6454      ただし、`ls' は、以下のように、複数のモードビットを一つに
6455      まとめて、アクセス権の各セットの 3 番目の文字で表現している。
6456
6457     `s'
6458           set-user-ID ビット、または set-group-ID ビットと、対応する
6459           実行ビットの両方が立っている場合。
6460
6461     `S'
6462           set-user-ID ビット、または set-group-ID ビットが立っているが、
6463           対応する実行ビットは立っていない場合。
6464
6465     `t'
6466           削除制限フラグ、またはスティキー・ビット (sticky bit) と、
6467           その他のユーザ (other) の実行ビットの両方が立っている場合。
6468           削除制限フラグは、スティッキー・ビットの別名である。*Note
6469           Mode Structure::.
6470
6471     `T'
6472           削除制限フラグ、またはスティキー・ビットが立っているが、その他の
6473           ユーザの実行ビットが立っていない場合。
6474
6475     `x'
6476           実行ビットが立っていて、上記のどれにも当てはまらない場合。
6477
6478     `-'
6479           それ以外。
6480
6481      ファイルのモードビットの後に続く 1 個の文字は、アクセス・コント
6482      ロール・リスト (ACL) のような他のアクセス方式が、そのファイルに
6483      使われているかどうかを表している。ファイルのモードビットに続く
6484      文字が空白の場合は、他のアクセス方式を使用していないということ
6485      である。表示文字が続く場合は、そうしたアクセス方式を使用している
6486      ということだ。
6487
6488      GNU の `ls' は、SELinux セキュリティ・コンテキストを持つが、
6489      それ以外に他のアクセス方式を使用していないファイルを示すのに、
6490      ピリオド (`.') を使う。
6491
6492      それ以外で、ファイルが、標準以外のアクセス方式の何らかの組み
6493      合わせを使用している場合には、`+' 文字が印として付く。
6494
6495 `-n'
6496 `--numeric-uid-gid'
6497      詳細形式でディレクトリの内容をリストするが、所有者やグループの
6498      名前の代わりに、数字の user-ID や group-ID を表示する。
6499
6500 `-o'
6501      詳細形式でディレクトリの内容をリストするが、グループ情報を表示
6502      しない。これは、`--format=long' を `--no-group' と併せて使うのと
6503      同じである。
6504
6505 `-s'
6506 `--size'
6507      各ファイルに対するディスク割り当て量をファイル名の左側に表示する。
6508      これはファイルが使用しているディスクスペースの量であり、普通は
6509      ファイルのサイズより少し多いが、穴空きファイル (sparse file) の
6510      場合は、少ないこともある。
6511
6512      通常、ディスク割り当て量は 1024 バイトを単位として表示されるが、
6513      これは変更することができる (*note Block size::)。
6514
6515      ファイルが HP-UX のシステムから BSD のシステムに NFS マウント
6516      されている場合、このオプションで報告されるディスク使用量は、正確な
6517      値の半分である。それに対して、HP-UX システムの場合は、BSD システム
6518      から NFS マウントされているファイルについて、このオプションは正確な
6519      値の 2 倍の量を報告する。これは、HP-UX システムにある欠陥のせい
6520      であり、HP-UX の `ls' プログラムも、そのとばっちりを受けている
6521      のである。
6522
6523 `--si'
6524      各サイズにの後ろに、メガバイトなら `M' といった、SI 形式の略号
6525      を付ける。1024 ではなく、1000 の累乗が使用されるので、`M' は
6526      1,000,000 バイトを表している。このオプションは、`--block-size=si'
6527      と同じことである。1024 の累乗が使いたければ、`-h' や
6528      `--human-readable' を使用すればよい。
6529
6530 `-Z'
6531 `--context'
6532      SELinux セキュリティ・コンテキストを表示する。ない場合は、`?' を
6533      表示する。`-l' オプションと一緒に使った場合は、サイズの左に
6534      セキュリティ・コンテキストを出力する。
6535
6536
6537 \1f
6538 File: coreutils-ja.info,  Node: Sorting the output,  Next: Details about version sort,  Prev: What information is listed,  Up: ls invocation
6539
6540 10.1.3 出力のソート
6541 -------------------------
6542
6543 以下のオプションは、`ls' が出力する情報を並べる際の順序を変更する。
6544 デフォルトでは、情報は文字コードによってソートされる (たとえば ASCII
6545 コード順)。
6546
6547 `-c'
6548 `--time=ctime'
6549 `--time=status'
6550      詳細表示形式 (たとえば、`-l', `-o') を使用しているときは、更新日時
6551      (modification time) の代わりに、ステータス変更日時 (status change
6552      time、inode の `ctime') を表示する。日時によって明示的にソートして
6553      いるときや (`--sort=time' あるいは `-t')、詳細表示形式を使用して
6554      いないときは、ステータス変更日時によってソートする。
6555
6556 `-f'
6557      主な働きは、`-U' と同じで、ソートしないことである。すなわち、
6558      ファイルをリストする際、ファイルがディレクトリにどんな順序で
6559      格納されていようと、そのままの順序で出力する。それだけでなく、
6560      `-a' (すべてのファイルをリストする) を有効にし、`-l', `--color',
6561      `-s' を (`-f' より前で指定されていたら) 無効にする働きもある。
6562
6563 `-r'
6564 `--reverse'
6565      どんな方法でソートされていようと、逆順にする。たとえば、ファイルを
6566      並べる際に、アルファベットの後ろから並べる、最新バージョンから先に
6567      並べる、サイズの小さいものから先に並べる、などなど。
6568
6569 `-S'
6570 `--sort=size'
6571      ファイルのサイズによってソートし、大きいものから順に並べる。
6572
6573 `-t'
6574 `--sort=time'
6575      更新日時 (modification time、inode の `mtime') によってソートし、
6576      新しいものから順に並べる。
6577
6578 `-u'
6579 `--time=atime'
6580 `--time=access'
6581 `--time=use'
6582      詳細表示形式 (たとえば、`--format=long') を使用しているときは、
6583      最終アクセス日時 (last access time、inode の `atime') を表示する。
6584      日時によって明示的にソートしているときや (`--sort=time' あるいは
6585      `-t')、詳細表示形式を使用していないときは、アクセス日時によって
6586      ソートする。
6587
6588 `-U'
6589 `--sort=none'
6590      ソートを行わない。すなわち、ファイルをリストする際、ファイルが
6591      ディレクトリにどんな順序で格納されていようと、そのままの順序で
6592      出力する (`-f' が行う、ソートに無関係な他のことは、何もしない)。
6593      このオプションは非常に大きなディレクトリを一覧表示するとき、
6594      ことのほか役に立つ。ソートを全くしないことで、作業速度が著しく
6595      向上するからである。
6596
6597 `-v'
6598 `--sort=version'
6599      バージョン名とバージョン番号によってソートし、低いバージョンから
6600      順に並べる。デフォルトのソート方法と動作が似ているが、 10 進数の
6601      数字が連続する各部分を、インデックス番号やバージョン番号と見なし、
6602      (文字列としてではなく) 数値として取り扱う点が違う。 (*Note Details
6603      about version sort::.)
6604
6605 `-X'
6606 `--sort=extension'
6607      ディレクトリの内容をファイルの拡張子 (最後の `.' の後に続く文字)
6608      によってアルファベット順でソートする。拡張子のないファイルは、
6609      最初に並べられる。
6610
6611
6612 \1f
6613 File: coreutils-ja.info,  Node: Details about version sort,  Next: General output formatting,  Prev: Sorting the output,  Up: ls invocation
6614
6615 10.1.4 バージョン・ソートの詳細
6616 -------------------------------------------
6617
6618 ファイル名にはインデックス番号やバージョン番号が含まれていることが
6619 しばしばあるが、バージョン・ソートは、そうした状況に対処している。
6620 通常のソートでは、1 文字づつ文字の比較を行うので、結果がこちらの
6621 期待する順番にならないことがよくあるのだ。バージョン・ソートが特に
6622 役に立つのは、インデックス番号やバージョン番号を名前に含むファイルが
6623 たくさんあるディレクトリを一覧するときである。
6624
6625      $ ls -1            $ ls -1v
6626      abc.zml-1.gz       abc.zml-1.gz
6627      abc.zml-12.gz      abc.zml-2.gz
6628      abc.zml-2.gz       abc.zml-12.gz
6629
6630    バージョン・ソートにおける文字列の比較は、次のように行われる。 VER1
6631 と VER2 がバージョン番号で、PREFIX (前置部分) と SUFFIX (後置部分)
6632 が文字列だとしよう (SUFFIX は正規表現の `(\.[A-Za-z~][A-Za-z0-9~]*)*'
6633 にマッチするもの)。その場合、VER1 < VER2 ならば、"PREFIX VER1 SUFFIX"
6634 から構成される名前は "PREFIX VER2 SUFFIX" より前に来る。
6635
6636    数字の部分の先行する 0 は無視されることにも注意していただきたい。
6637
6638      $ ls -1            $ ls -1v
6639      abc-1.007.tgz      abc-1.01a.tgz
6640      abc-1.012b.tgz     abc-1.007.tgz
6641      abc-1.01a.tgz      abc-1.012b.tgz
6642
6643    この機能は gnulib の `filevercmp' 関数を使って実装されている。
6644 そこで、知っておいた方がよい注意事項がいくつかある。
6645
6646    * `LC_COLLATE' は無視される。そのため、`ls -v' や `sort -V' は、
6647      数値ではない PREFIX (前置部分) を、`LC_COLLATE' ロケール・カテゴリ
6648      が `C' に設定されているかのようにソートする。
6649
6650    * SUFFIX (後置部分) に上記の正規表現がマッチしてくれないことがある。
6651      従って、以下の例は、期待通りの順序ではないかもしれない。
6652
6653           abc-1.2.3.4.7z
6654           abc-1.2.3.7z
6655
6656           abc-1.2.3.4.x86_64.rpm
6657           abc-1.2.3.x86_64.rpm
6658
6659 \1f
6660 File: coreutils-ja.info,  Node: General output formatting,  Next: Formatting file timestamps,  Prev: Details about version sort,  Up: ls invocation
6661
6662 10.1.5 出力全体の形式
6663 ----------------------------
6664
6665 以下のオプションは出力全体の見かけに影響を及ぼす。
6666
6667 `-1'
6668 `--format=single-column'
6669      1 行 に 1 ファイルを表示する。標準出力が端末でないときの `ls'
6670      のデフォルトである。
6671
6672 `-C'
6673 `--format=vertical'
6674      ファイルのリストを段組みで (訳注: すなわち、1 行に複数ファイルの
6675      形式で) 表示し、ソートは縦方向に行う。これは、標準出力が端末の
6676      ときの `ls' のデフォルトである。`dir' コマンドにとっては、これが
6677      常にデフォルトになる。GNU の `ls' は、できるだけ少ない行数でできる
6678      だけ多くのファイルを表示するために、段の幅を可変にしている。
6679
6680 `--color[=WHEN]'
6681      ファイルのタイプを区別するためにカラー表示を使用するかどうかを
6682      指定する。WHEN は省略してもよく、以下の一つでもよい。
6683         * none カラー表示を全く使用しない。これがデフォルトである。
6684
6685         * auto 標準出力が端末の場合のみ、カラー表示を使用する。
6686
6687         * always 常にカラー表示を使用する。
6688      `--color' を WHEN を付けずに指定するのは、"`--color=always' と
6689      同じことである。カラー表示にしたファイル・リストをパイプで `more'
6690      や `less' のようなページャに送ると、たいての場合、判読に苦しむ
6691      羽目になる。ただし、`more -f' を使うと、うまく行くようだ。(訳注:
6692      訳者の手元では、`less -R' や `lv -c' で一応問題なくカラー表示が
6693      できているように見える。)
6694
6695      留意すべきは、`--color' オプションを使用すると、大量のファイルが
6696      あるディレクトリで `ls' を実行したとき、目に見えて動作速度が低下
6697      するかもしれないことである。これは、カラー表示のデフォルトの設定
6698      では、`ls' は、リストするファイルを一つづつ `stat' システムコールで
6699      調べる必要があるからだ。とは言え、ファイルタイプのカラー表示は
6700      おおむね使用したいけれど、他の色付けオプションは使わなくてもよい
6701      こともある (たとえば、実行属性、リンク切れ、スティッキー・ビット、
6702      その他のユーザの書き込み権限、ケーパビリティなどは、色で表示しなく
6703      てもよい)。その場合は、こんなふうに、`dircolors' コマンドを使用
6704      して、環境変数 `LS_COLORS' を設定すればよい。
6705           eval $(dircolors -p | perl -pe \
6706             's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)
6707      そうすれば、`dirent.d_type' が使えるファイルシステムなら、`ls' は
6708      各コマンドライン引数に対してたった一回だけ `stat' システムコールを
6709      行うだけですむようになる。
6710
6711 `-F'
6712 `--classify'
6713 `--indicator-style=classify'
6714      各ファイル名の後ろに、ファイルタイプを示す 1 文字を付ける。
6715      通常ファイルの場合も、実行可能ファイルならば、`*' を後置する。
6716      ファイルタイプの指標は、ディレクトリならば `/'、シンボリック
6717      リンクならば `@'、FIFO ならば `|'、ソケットならば `='、ドアならば
6718      `>' であり、通常ファイルを表す指標はない。なお、
6719      `--dereference-command-line' (`-H'), `--dereference' (`-L'),
6720      `--dereference-command-line-symlink-to-dir' といったオプションが
6721      指定されていないかぎり、コマンドラインで指定されたシンボリックリンク
6722      をたどることはない。
6723
6724 `--file-type'
6725 `--indicator-style=file-type'
6726      各ファイル名の後ろに、ファイルタイプを示す 1 文字を付ける。 `-F'
6727      に似ているが、こちらは、実行ファイルに指標を付けない。
6728
6729 `--indicator-style=WORD'
6730      ファイル名の後ろに指標文字を付けるとき、WORD というスタイルを
6731      使用する。WORD には次のものがある。
6732
6733     `none'
6734           指標文字を全く付けない。これがデフォルトである。
6735
6736     `slash'
6737           ディレクトリの後ろに `/' を付ける。これは、`-p' オプションと
6738           同じである。
6739
6740     `file-type'
6741           ディレクトリ、シンボリックリンク、FIFO、ソケットの後ろに、
6742           それぞれ `/', `@', `|',  `=' を付け、通常ファイルの後ろには
6743           何も付けない。これは、`--file-type' オプションと同じである。
6744
6745     `classify'
6746           実行可能な通常ファイルの後ろに `*' を付ける。それ以外は、
6747           `file-type' の場合と同じ動作をする。これは、`-F' や
6748           `--classify' オプションと同じである。
6749
6750 `-k'
6751 `--kibibytes'
6752      デフォルトのブロックサイズを標準の値の 1024 バイトに設定する。
6753      そのとき、環境変数でそれ以外のどんな値が設定されていても、
6754      それを上書きする (*note Block size::)。このオプション自身も、
6755      `--block-size', `--human-readable' (`-h'), `--si' オプションが
6756      現れれば、それによって上書きされる。
6757
6758      `--kibibytes' (`-k') オプションが影響を及ぼすのは、`-l' などの
6759      オプションが書き出すディレクトリごとのブロック数や、`--size'
6760      (`-s') オプションが表示するディスク割り当て量に対してである。 `-l'
6761      の表示するファイルサイズには影響を及ぼさない。
6762
6763 `-m'
6764 `--format=commas'
6765      ファイルを横に並べ、各行に収まる範囲でできるだけ多くの項目を
6766      表示する。ファイル同士は `, ' (コンマとスペース) で区切る。
6767
6768 `-p'
6769 `--indicator-style=slash'
6770      ディレクトリ名の後ろに `/' を付ける。
6771
6772 `-x'
6773 `--format=across'
6774 `--format=horizontal'
6775      ファイルのリストを段組みで (訳注: すなわち、1 行に複数ファイルの
6776      形式で) 表示し、ソートは横方向に行う。
6777
6778 `-T COLS'
6779 `--tabsize=COLS'
6780      タブ位置が COLS 桁ごとにあると想定する。デフォルトは 8 桁ごと。
6781      `ls' は効率を考慮し、使えるときはタブを出力で使用する。 COLS が 0
6782      の場合は、タブを使用しない。
6783
6784      端末エミュレータの中には、ASCII 以外のバイトが前にあると、列を
6785      タブ位置の右にきちんと揃えてくれないものがあるかもしれない。
6786      この問題を回避するには、`-T0' オプションを使うか、環境変数
6787      `TABSIZE=0' を設定するかして、列を揃えるのにタブではなく、
6788      スペースを使うよう、`ls' に指示すればよい。
6789
6790 `-w'
6791 `--width=COLS'
6792      スクリーンの横幅が COLS 桁だと想定する。デフォルトの値は、
6793      可能ならば端末の設定から取得する。取得できないときは、環境変数
6794      `COLUMNS' を使用し、それも設定されていなければ、80 をデフォルト
6795      にする。
6796
6797
6798 \1f
6799 File: coreutils-ja.info,  Node: Formatting file timestamps,  Next: Formatting the file names,  Prev: General output formatting,  Up: ls invocation
6800
6801 10.1.6 タイムスタンプのフォーマット
6802 -------------------------------------------------
6803
6804 デフォルトでは、ファイルのタイムスタンプは短縮形式で表示される。
6805 すなわち、最近のタイムスタンプ以外は、`Mar 30  2002' といった
6806 日付表示になり、最近のタイムスタンプは、`Mar 30 23:45' といった
6807 年度なしの日付と時刻の表示になる。この書式は、後で詳しく述べる
6808 ように、現在のロケールによっては違ったものになるかもしれない。
6809
6810    タイムスタンプは、ここ 6 ヶ月以内のもので、未来の日付が付いて
6811 いなければ、最近 ("recent") として扱われる。今日の日付のタイム
6812 スタンプが、最近用の書式で表示されない場合、そのタイムスタンプは
6813 未来扱いされている。それは、おそらく時計に狂いが生じているという
6814 ことであり、`make' のような、ファイルのタイムスタンプに頼っている
6815 プログラムは、まともに動かないかもしれない。
6816
6817    タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
6818 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
6819 いない場合は、システムのデフォルトのルールに従って表示される。 *Note
6820 Specifying the Time Zone with `TZ': (libc)TZ Variable.
6821
6822    以下のオプションは、ファイルのタイムスタンプの表示方法を変更する。
6823
6824 `--time-style=STYLE'
6825      タイムスタンプを STYLE 形式で表示する。STYLE は以下の一つで
6826      なければならない。
6827
6828     `+FORMAT'
6829           FORMAT を使って、タイムスタンプを表示する。その場合、FORMAT
6830           は、`date' コマンドの書式引数と同じように解釈される (*note
6831           date invocation::)。 たとえば、`--time-style="+%Y-%m-%d
6832           %H:%M:%S"' と指定すると、 `ls' の表示するタイムスタンプは、
6833           `2002-03-30 23:45:56' のようになる。`date' の場合と同様、
6834           FORMAT の解釈は、`LC_TIME' ロケール・カテゴリの影響を受ける。
6835
6836           FORMAT に改行で分離された二つの書式文字列がある場合、前半は
6837           最近のファイル以外に使用され、後半は最近のファイルに使用される。
6838           出力される列をきちんと揃えたいならば、二つの書式のどちらかに、
6839           空白をいくつか入れる必要があるかもしれない。
6840
6841     `full-iso'
6842           タイムスタンプを省略なしで表示する。すなわち、ISO 8601 の
6843           日付、時刻、タイムゾーンという書式を nanosecond (10 億分の 1
6844           秒) の精度で使用するわけだ。一例を挙げると、`2002-03-30
6845           23:45:56.477817180 -0700' といった表示になる。この形式は、
6846           `+%Y-%m-%d %H:%M:%S.%N %z' と同じである。
6847
6848           これが有用なのは、タイムスタンプが、オペレーティング・システム
6849           から取得できる時間関係のすべての情報を含んでいるからである。
6850           たとえば、GNU の `make' は、あるファイルが古いかどうかを
6851           判定するのに、省略なしのタイムスタンプを使用する。そのため、
6852           この情報が、`make' の動作を説明してくれるのである。
6853
6854     `long-iso'
6855           ISO 8601 の書式で日付と時刻を分の単位まで表示する。たとえば、
6856           `2002-03-30 23:45'。このタイムスタンプは、`full-iso' タイム
6857           スタンプより短く、日常作業にはたいてい十分である。この形式は
6858           `+%Y-%m-%d %H:%M' と同じである。
6859
6860     `iso'
6861           最近以外のタイムスタンプでは、ISO 8601 書式の日付を表示し
6862           (たとえば `2002-03-30 ')、最近のタイムスタンプでは、ISO 8601
6863           書式の月・日・時・分を表示する (たとえば `03-30 23:45')。
6864           この形式は、`long-iso' の形式に比べて見かけがよくないが、より
6865           狭いスペースでほぼ同量の情報を伝えており、また、簡潔なので
6866           `ls' の出力を伝統的な 1 行 80 桁の出力行に納めるのに都合が
6867           よい。`ls' を実行する以下の二つの方法は、同じことである。
6868
6869                newline='
6870                '
6871                ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
6872                ls -l --time-style="iso"
6873
6874     `locale'
6875           タイムスタンプをロケール依存形式で表示する。たとえば、
6876           フィンランド語のロケールだと、最近以外のタイムスタンプを
6877           `maalis 30  2002' のように表示し、最近のタイムスタンプは
6878           `maalis 30 23:45' のように表示するかもしれない。ロケール
6879           依存のタイムスタンプは、概して `iso' のタイムスタンプより
6880           長くなるし、ロケールごとの規則の違いは非常に大きいので、
6881           プログラムによる解析がずっと難しくなる。だが、こちらの方が
6882           わかりやすい人も大勢いる。
6883
6884           タイムスタンプの書式を決めているのは、`LC_TIME' ロケール・
6885           カテゴリである。デフォルトの POSIX ロケールでは、`Mar 30
6886           2002' や `Mar 30 23:45' といったタイムスタンプを使っている。
6887           POSIX ロケールでは、`ls' を実行する次の二つの方法は、同じこと
6888           である。
6889
6890                newline='
6891                '
6892                ls -l --time-style="+%b %e  %Y$newline%b %e %H:%M"
6893                ls -l --time-style="locale"
6894
6895           しかし、他のロケールでは動作が違う。たとえば、ドイツ語の
6896           ロケールだと、`--time-style="locale"' は `--time-style="+%e.
6897           %b %Y $newline%e. %b %H:%M"' とおそらく同じになり、`30. Ma"r
6898           2002 ' や `30. Ma"r 23:45' といったタイムスタンプを生成する
6899           だろう。
6900
6901     `posix-STYLE'
6902           `LC_TIME' ロケール・カテゴリが POSIX なら、POSIX ロケールの
6903           タイムスタンプを表示し、それ以外なら、STYLE 形式のタイム
6904           スタンプを表示する。たとえば、`posix-long-iso' という指定は、
6905           POSIX ロケールでは `Mar 30  2002' や `Mar 30 23:45' といった
6906           タイムスタンプを表示し、それ以外のロケールでは `2002-03-30
6907           23:45' といったタイムスタンプを表示する。
6908
6909    `--time-style' オプションのデフォルト値は、環境変数 `TIME_STYLE'
6910 を使って指定することができる。`TIME_STYLE' が設定されていない場合、
6911 デフォルトの形式は `locale' である。GNU Emacs のバージョン 21.3
6912 以降では、`ls' の `--dired' オプションを使用しており、従って、
6913 どんな日付のフォーマットでも解析することができる。しかし、Emacs 21.1 や
6914 21.2 を使っていて、POSIX 以外のロケールを指定している場合は、
6915 `TIME_STYLE="posix-long-iso"' を設定する必要があるかもしれない。
6916
6917    ある種のサービス不能化攻撃 (denial-of-service attacks) を回避する
6918 ため、1000 バイトより長くなりそうなタイムスタンプは、エラーとして処理
6919 されることがある。
6920
6921 \1f
6922 File: coreutils-ja.info,  Node: Formatting the file names,  Prev: Formatting file timestamps,  Up: ls invocation
6923
6924 10.1.7 ファイル名のフォーマット
6925 -------------------------------------------
6926
6927 以下のオプションは、ファイル名の表示方法を変更する。
6928
6929 `-b'
6930 `--escape'
6931 `--quoting-style=escape'
6932      ファイル名中の非表示文字 (nongraphic characters) を、C 言語で
6933      使うような、バックスラッシュにアルファベットや 8 進数を続ける方法を
6934      使用して、クォートする。
6935
6936 `-N'
6937 `--literal'
6938 `--quoting-style=literal'
6939      ファイル名をクォートしない。とは言え、`ls' では、出力先が端末の
6940      場合、`--show-control-chars' が指定されていなければ、非表示文字を
6941      疑問符として表示するぐらいのことは行う。
6942
6943 `-q'
6944 `--hide-control-chars'
6945      ファイル名中の非表示文字に代えて、疑問符を表示する、この動作は、
6946      出力先が端末で、プログラムが `ls' の場合のデフォルトである。
6947
6948 `-Q'
6949 `--quote-name'
6950 `--quoting-style=c'
6951      ファイル名をダブル・クォートで囲み、非表示文字を C 言語と同じ
6952      やり方でクォートする。
6953
6954 `--quoting-style=WORD'
6955      ファイル名などの文字列には、通常使われない文字が含まれているかも
6956      しれない。このオプションを指定すると、WORD というスタイルを使って、
6957      そうした文字列をクォートすることになる。WORD は、以下に挙げるものの
6958      一つでなければならない。
6959
6960     `literal'
6961           文字列に手を加えず、そのまま出力する。これは、`-N' や
6962           `--literal' オプションと同じである。
6963
6964     `shell'
6965           文字列にシェルのメタ文字がある場合や、出力が誤解を招くものに
6966           なりそうな場合に、シェル向けのクォートを施す。このクォート
6967           方法は、`bash' のような POSIX 互換のシェルにはふさわしいもの
6968           だが、`csh' のような非互換のシェルでは、必ずしもうまく働く
6969           とはかぎらない。
6970
6971     `shell-always'
6972           普通ならクォートが不要な場合でも、文字列にシェル向けのクォートを
6973           施す。
6974
6975     `c'
6976           C 言語の文字列リテラルをクォートするときのように、文字列を
6977           クォートする。文字列をダブル・クォートで囲むことも行う。
6978           これは、`-Q' や `--quote-name' オプションと同じである。
6979
6980     `escape'
6981           C 言語の文字列リテラルをクォートするときのように、文字列を
6982           クォートする。ただし、文字列をダブル・クォートで囲むことは
6983           しない。これは、`-b' や `--escape' と同じである。
6984
6985     `clocale'
6986           C 言語の文字列リテラルをクォートするときのように、文字列を
6987           クォートする。ただし、文字列を囲む引用符には、ロケールに
6988           ふさわしいものを使う。
6989
6990     `locale'
6991           C 言語の文字列リテラルをクォートするときのように、文字列を
6992           クォートする。ただし、文字列を囲む引用符には、ロケールに
6993           ふさわしいものを使い、さらに、デフォルトの C ロケールで
6994           言うと、"like this" ではなく、'like this' のように
6995           クォートを行う。この方が見栄えのよいディスプレイが多い。
6996
6997      `--quoting-style' オプションのデフォルト値は、環境変数
6998      `QUOTING_STYLE' によって指定することができる。この環境変数が
6999      設定されていない場合、デフォルトの値は `literal' だが、
7000      このパッケージの将来のバージョンでは、デフォルトを `shell' に
7001      変更するかもしれない。
7002
7003 `--show-control-chars'
7004      非表示文字に手を加えず、ファイル名中にそのまま出力する。
7005      これは、出力先が端末でない場合や、プログラムが `ls' でない場合の
7006      デフォルトである。
7007
7008
7009 \1f
7010 File: coreutils-ja.info,  Node: dir invocation,  Next: vdir invocation,  Prev: ls invocation,  Up: Directory listing
7011
7012 10.2 `dir': ディレクトリの内容を簡潔に表示する
7013 ===============================================================
7014
7015 `dir' の動作は、`ls -C -b' と同じである。すなわち、デフォルトでは、
7016 ファイルのリストを段組みで (訳注: 1 行に複数ファイルの形式で) 表示し、
7017 ソートは縦方向に行う。また、特殊文字は、バックスラッシュ・エスケープ
7018 シーケンスを使って表示する。
7019
7020    *Note `ls': ls invocation.
7021
7022 \1f
7023 File: coreutils-ja.info,  Node: vdir invocation,  Next: dircolors invocation,  Prev: dir invocation,  Up: Directory listing
7024
7025 10.3 `vdir': ディレクトリの内容を詳細に表示する
7026 ================================================================
7027
7028 `vdir' の動作は、`ls -l -b' と同じである。すなわち、デフォルトでは、
7029 詳細形式でファイルをリストし、特殊文字は、バックスラッシュ・エスケープ
7030 シーケンスを使って表示する。
7031
7032 \1f
7033 File: coreutils-ja.info,  Node: dircolors invocation,  Prev: vdir invocation,  Up: Directory listing
7034
7035 10.4 `dircolors': `ls' のカラー設定
7036 =========================================
7037
7038 `dircolors' は、`ls' (や `dir' など) でカラー出力をするのに必要な
7039 端末設定のためのシェル・コマンドのシーケンスを出力する。通常、次の
7040 ような形で使用される。
7041
7042      eval "$(dircolors [OPTION]... [FILE])"
7043
7044    FILE が指定されていると、`dircolors' はそれを読み込んで、
7045 どのファイルタイプや拡張子に対してどの色を使うかを決定する。 FILE
7046 が指定されていない場合は、あらかじめ組み込まれているデータベースが
7047 使用される。そうした設定ファイルの書式について詳しいことを知りたかっ
7048 たら、`dircolors --print-database' を実行してみるとよい。
7049
7050    ファイル `~/.dircolors' が存在していたら、`dircolors' がそれを
7051 読み込むようにするには、以下の行を自分の `~/.bashrc' に書き込めばよい
7052 (お気に入りのシェルが bash でないなら、適切に書き直すこと)。
7053
7054      d=.dircolors
7055      test -r $d && eval "$(dircolors $d)"
7056
7057    `dircolors' の出力は、環境変数 `LS_COLORS' を設定するシェル・
7058 コマンドである。どのシェルの文法にするかは、コマンドラインで
7059 指定することができる。指定しない場合は、環境変数 `SHELL' の値から
7060 `dircolors' が推測する。
7061
7062    このプログラムでは以下のオプションが使用できる。参照: *note Common
7063 options::.
7064
7065 `-b'
7066 `--sh'
7067 `--bourne-shell'
7068      Bourne シェルのコマンドを出力する。これが、環境変数 `SHELL' が
7069      設定されていて、その値が `csh' や `tcsh' で終わっていないときの
7070      デフォルトである。
7071
7072 `-c'
7073 `--csh'
7074 `--c-shell'
7075      C シェルのコマンドを出力する。これは、環境変数 `SHELL' の値が、
7076      `csh' や `tcsh' で終わっているときのデフォルトである。
7077
7078 `-p'
7079 `--print-database'
7080      (プログラムに組み込まれている) デフォルトのカラー設定データベースを
7081      出力する。この出力は、それ自体有効な設定ファイルであり、どういう
7082      設定が可能かについてかなり詳しく説明している。
7083
7084
7085    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7086
7087 \1f
7088 File: coreutils-ja.info,  Node: Basic operations,  Next: Special file types,  Prev: Directory listing,  Up: Top
7089
7090 11 基本的なファイル操作
7091 *********************************
7092
7093 この章では、基本的なファイル操作のためのコマンドを説明する。
7094 すなわち、コピー、移動 (名前の変更)、消去 (削除) といった操作である。
7095
7096 * Menu:
7097
7098 * cp invocation::            ファイルをコピーする。
7099 * dd invocation::            ファイルの変換とコピー。
7100 * install invocation::       ファイルをコピーし属性をセットする。
7101 * mv invocation::            ファイルの移動 (名前の変更) を行う。
7102 * rm invocation::            ファイルやディレクトリを削除する。
7103 * shred invocation::         セキュリティを向上させたファイルの削除。
7104
7105 \1f
7106 File: coreutils-ja.info,  Node: cp invocation,  Next: dd invocation,  Up: Basic operations
7107
7108 11.1 `cp': ファイルやディレクトリをコピーする
7109 ==============================================================
7110
7111 `cp' はファイルをコピーする (もしそうしたければ、ディレクトリの
7112 コピーもできる)。コピーによって作られたファイルは、コピー元から全く
7113 独立したものになる。一つのファイルを別のファイルにコピーすることも
7114 できるし、好きなだけたくさんのファイルをコピー先のディレクトリに
7115 一遍にコピーすることもできる。
7116
7117    書式:
7118
7119      cp [OPTION]... [-T] SOURCE DEST
7120      cp [OPTION]... SOURCE... DIRECTORY
7121      cp [OPTION]... -t DIRECTORY SOURCE...
7122
7123    * ファイル名を二つ指定すると、`cp' は最初のファイルを 2 番目の
7124      ファイルにコピーする。
7125
7126    * `--target-directory' (`-t') オプションを指定した場合や、あるいは
7127      それを指定しないでも、最後のファイルがディレクトリであり、しかも
7128      `--no-target-directory' (`-T') オプションを指定していない場合は、
7129      `cp' は、各コピー元 (SOURCE) ファイルを、指定されたディレクトリに
7130      コピー元 (SOURCE) と同じ名前でコピーする。
7131
7132    ほとんどの場合、ファイルは読み込まれたとおりに書き出される。例外に
7133 ついては、後述の `--sparse' オプションをご覧になっていただきたい。
7134
7135    デフォルトでは、`cp' はディレクトリをコピーしない。ただし、 `-R',
7136 `-a', `-r' オプションを指定すると、`cp' は再帰的なコピーを行う。
7137 すなわち、コピー元のディレクトリを段階的に下って、対応するコピー先の
7138 ディレクトリにファイルをコピーすることになる。
7139
7140    コピー元がシンボリックリンクの場合、`cp' がリンクをたどるのは、
7141 (訳注: すなわち、リンクそのものではなく、参照先の実ファイルをコピー
7142 するのは)、通常では、再帰的なコピーをしていないときか、あるいは、
7143 `--link' (`-l') オプションが使用されているときだけである。このデフォ
7144 ルトの動作は、次に挙げるオプションによって上書きすることができる。
7145 `--archive' (`-a'), `-d', `--dereference' (`-L'), `--no-dereference'
7146 (`-P'), `-H'。こうしたオプションを二つ以上指定すると、`cp' は警告を
7147 出さず、最後のオプションで他のものを上書きする。
7148
7149    (訳注: coreutils-8.22 の `cp' では `--link' オプションの動作が変更
7150 になった。コピー元がシンボリックリンクの場合、coreutils-8.21 までは、
7151 デフォルトでは、シンボリックリンクのハードリンクを作っていたが、8.22 の
7152 `cp' では参照先ファイルのハードリンクを作るようになっている。)
7153
7154    コピー先がシンボリックリンクの場合、`cp' がリンクをたどるのは、
7155 (訳注: すなわち、コピー元ファイルで、リンクそのものではなく、参照先の
7156 ファイルを上書きするのは)、そのリンクが、存在する通常ファイルを指して
7157 いるときだけである。それに対して、コピー先のシンボリックリンクがリンク
7158 切れしている場合は、`cp' は、デフォルトではコピーを拒否し、エラーメッ
7159 セージを出して、実行に失敗する。そうした操作は、本質的に危険だからで
7160 ある。この動作は、伝統的な習慣や POSIX の仕様に反している。たとえリスク
7161 があろうとも、リンク切れしたシンボリックリンクの参照先を `cp' が作成する
7162 ようにしたいなら、環境変数 `POSIXLY_CORRECT' を設定すればよい。なお
7163 `--backup' や `--link' といったオプションが、コピーする前にコピー先
7164 ファイルの名前変更や削除を行う場合、`cp' は、リンクが指しているファイル
7165 ではなく、シンボリックリンクの名前変更や削除を行う。
7166
7167    デフォルトでは、`cp' がスペシャルファイルの内容をコピーするのは、
7168 再帰的なコピーをしていないときだけである。このデフォルトの動作は、
7169 `--copy-contents' によって変更できる。
7170
7171    `cp' は通常、ファイルを自分自身にコピーすることを拒否するが、次の
7172 例外がある。SOURCE と DEST が同一で、しかも、通常ファイルを指している
7173 とき、`--force --backup' オプションが指定されると、`cp' は バックアップ
7174 ファイルを作成することになる。バックアップファイルを標準のものにするか
7175 (訳注: ファイルの末尾にチルダ `~' が 1 個付く)、番号付きのものにするか
7176 は、いつもどおりの方法で指定できる (*note Backup options::)。存在する
7177 ファイルに変更を加える前に、そのバックアップをちょっと作っておきたい
7178 場合、この動作は便利である。
7179
7180    このプログラムでは以下のオプションが使用できる。参照: *note Common
7181 options::.
7182
7183 `-a'
7184 `--archive'
7185      コピーを行う際、コピー元ファイルの構造や属性をできるかぎり維持
7186      する (ただし、ディレクトリの内部構造を維持しようとはしない。その
7187      ため、コピー先で `ls -U' を実行すると、コピー元とは違った順序で
7188      ファイルがリストされるかもしれない)。SELinux コンテキストや拡張
7189      属性 (xattr) も維持しようとするが、そうした操作に失敗しても無視し、
7190      その旨エラーメッセージを表示することはない。エラーメッセージが
7191      少ないだけで、`-dR --preserve=all' と同じある。
7192
7193 `--attributes-only'
7194      コピー元ファイルの指定された属性のみを、コピー先にコピーする。
7195      コピー先ファイルがすでに存在している場合、その内容を変更する
7196      ことはない。属性のうち、何をコピーするかを決める方法については、
7197      `--preserve' オプションの項を見ていただきたい。
7198
7199 `-b'
7200 `--backup[=METHOD]'
7201      *Note Backup options::.  そのままでは、上書きされるか、消去されて
7202      しまう各ファイルのバックアップを作成する。特殊な用法としては、
7203      次のものがある。force と backup の両方のオプションが指定されて
7204      いるとき、コピー元 (SOURCE) とコピー先 (DEST) が同じ名前で、
7205      しかも実在する通常ファイルを指していると、`cp' はコピー元 (SOURCE)
7206      のバックアップを作成する。次のちょっとした Bourne シェルの
7207      スクリプトは、オプションのこの組み合わせの応用だが、便利である。
7208
7209           #!/bin/sh
7210           # Usage: backup FILE...
7211           # リストされた各 FILE について GNU スタイルのバックアップを
7212           # 作成する
7213           fail=0
7214           for i; do
7215             cp --backup --force --preserve=all -- "$i" "$i" || fail=1
7216           done
7217           exit $fail
7218
7219 `--copy-contents'
7220      再帰的なコピーを行っている際に、スペシャルファイル (たとえば、
7221      FIFO やデバイスファイル) の内容を、操作対象が通常ファイルで
7222      あるかのようにコピーする。要するに、コピー元の各ファイルから
7223      データを読み込んで、それをコピー先に書き出そうとするわけである。
7224      このオプションを使うのは、ほとんどの場合誤りである。なぜなら、
7225      FIFO や、通常 `/dev' ディレクトリにあるようなスペシャルファイルを
7226      対象にした場合、望ましくない結果を生ずることが珍しくないからだ。
7227      `cp -R --copy-contents' は、FIFO や `/dev/console' のような
7228      スペシャルファイルからデータを読み込もうとすると、たいていの
7229      場合、いつまでも無反応になるだろうし、`/dev/zero' をコピーしよう
7230      とすれば、コピー先のディスクを溢れさせてしまうだろう。この
7231      オプションは、再帰的なコピーをするとき以外、効果を持たない。
7232      また、シンボリックリンクのコピーには影響しない。
7233
7234 `-d'
7235      シンボリックリンクをコピーする際、リンクが指しているファイルを
7236      コピーするのではなく、シンボリックリンクをシンボリックリンクとして
7237      コピーする。また、コピー元において複数のファイルがハードリンクの
7238      関係にある場合、コピー先でもその関係を維持する。 `--no-dereference
7239      --preserve=links' と同じである。
7240
7241 `-f'
7242 `--force'
7243      このオプションを付けずにコピーを行う場合、コピー先ファイルが
7244      すでに存在し、しかも書き込みモードでオープンできないと、コピー
7245      に失敗する。それに対して、`--force' を付けた場合は、コピー先
7246      ファイルがオープンできないと、`cp' は、まずそれを削除してから、
7247      再度オープンを試みる。この動作は、`--force' と一緒に `--link' や
7248      `--symbolic-link' を使用した場合に行われる動作とは、違うことに
7249      注意していただきたい。後者の場合は、すでに存在するコピー先ファイル
7250      は一度もオープンされず、むしろ無条件で削除されるのである。
7251      `--remove-destination' の説明も参照すること。
7252
7253      このオプションは、`--interactive' や `-i' オプションとは無関係
7254      である。どちらも他方の効果を無効にすることはない。
7255
7256      `--no-clobber' や `-n' オプションを使用している場合、このオプション
7257      は無視される。
7258
7259 `-H'
7260      コマンドラインの引数がシンボリックリンクを指定している場合には、
7261      シンボリックリンクそのものではなく、それが指しているファイルを
7262      コピーする。とは言え、再帰的にディレクトリ・ツリーをたどっている
7263      ときにシンボリックに出会った場合は、そのまま (つまり、シンボリック
7264      リンクとして) コピーする。
7265
7266 `-i'
7267 `--interactive'
7268      ディレクトリ以外のファイルをコピーする際に、コピー先ファイルが
7269      すでに存在していると、プロンプトを出して、ファイルを上書きして
7270      よいかどうか、ユーザに問い合わせる。`-i' オプションは、`-n'
7271      オプションが前にあるとき、それを無効にする。
7272
7273 `-l'
7274 `--link'
7275      コピー元がディレクトリ以外の場合、コピーする代わりに、ハードリンクを
7276      作成する。
7277
7278 `-L'
7279 `--dereference'
7280      コピー元がシンボリックリンクの場合は、その参照先をコピーする。
7281      また、このオプションを使った場合、`cp' はシンボリックリンクを
7282      作ることができない。たとえば、コピー元のディレクトリ・ツリー中に
7283      (通常ファイルに対する) シンボリックリンクがあると、コピー先のディ
7284      レクトリ・ツリーには、通常ファイルとしてコピーされることになる。
7285
7286 `-n'
7287 `--no-clobber'
7288      存在するファイルを上書きしない。`-n' オプションは、`-i' オプション
7289      が前にあるとき、それを無効にする。このオプションと `-b'
7290      (`--backup') オプションは、どちらか一方しか指定できない。
7291
7292 `-P'
7293 `--no-dereference'
7294      コピー元がシンボリックリンクの場合、それが指しているファイルを
7295      コピーするのではなく、シンボリックリンクとしてコピーする。この
7296      オプションが作用を及ぼすのは、コピー元のシンボリックリンクに対して
7297      だけであり、コピー先に指定されたシンボリックリンクについては、
7298      可能なかぎり常に参照先がたどられる。
7299
7300 `-p'
7301 `--preserve[=ATTRIBUTE_LIST]'
7302      コピー元ファイルの属性のうち、指定されたものをコピー先でも維持する。
7303      ATTRIBUTE_LIST を指定する場合は、一つ以上の以下の文字列をコンマで
7304      区切ったリストでなければならない。
7305
7306     `mode'
7307           ファイルのモードビット (訳注: 一般にアクセス権とか、許可属性と
7308           言われるもの) やアクセス・コントロール・リストを維持する。
7309
7310     `ownership'
7311           所有者とグループを維持する。ほとんどの最近のシステムでは、
7312           ファイルの所有者を変更できるのは、しかるべき権限を持ったユーザ
7313           だけである。また、一般ユーザにファイルのグループが維持できるの
7314           は、維持しようとするグループに、たまたまそのユーザが属している
7315           ときのみである。
7316
7317     `timestamps'
7318           最終アクセス日時 (last access time) と最終更新日時 (last
7319           modification time) を、可能ならば、維持する。古いシステム
7320           では、対象となるファイルがシンボリックリンクの場合、そうした
7321           属性を維持することができない。それに対して、最近のシステム
7322           では、たいていのものが `utimensat' 関数を用意しているので、
7323           シンボリックリンクの場合でも、日時関係の属性維持が可能である。
7324
7325     `links'
7326           コピー元のファイル同士が (ハードリンクであれ、シンボリック
7327           リンクであれ)リンクの関係にあるとき、コピー先の対応する
7328           ファイル同士でも、その関係を維持する。ただし、`-L' や `-H' と
7329           一緒に使った場合、このオプションがシンボリックリンクを
7330           ハードリンクに変更することがあるのに、注意していただきたい。
7331           一例を挙げる。
7332                $ mkdir c; : > a; ln -s a b; cp -aH a b c; ls -i1 c
7333                74161745 a
7334                74161745 b
7335           コピー元に注目していただきたい。`b' は、通常ファイル `a' を
7336           指すシンボリックリンクである。ところが、コピー先ディレクトリ
7337           `c/' の二つのファイルは、ハードリンクになっている。`-a' は
7338           `--no-dereference' を意味するのだから、シンボリックリンクが
7339           コピーされそうに思えるが、この場合は、後に続く `-H' が、
7340           コマンドライン引数の参照をたどるように `cp' に命じているので、
7341           `cp' には、同じ inode 番号を持った 2 個のファイルがコマンド
7342           ラインで指定されているように見えるのである。さらに、`-a' は
7343           `--preserve=links' オプションを意味してもいるので、この働きに
7344           よって、ハードリンクと認識された両ファイルの関係が、コピー先で
7345           維持されることになるのである。
7346
7347           次のものは、`cp' の `-L' を使った場合の類似例である。
7348                $ mkdir b c; (cd b; : > a; ln -s a b); cp -aL b c; ls -i1 c/b
7349                74163295 a
7350                74163295 b
7351
7352     `context'
7353           ファイルの SELinux セキュリティ・コンテキストを維持する。
7354           それができないときは、詳細なエラーメッセージを出し、失敗の
7355           ステータスで終了する。
7356
7357     `xattr'
7358           ファイルの拡張属性を維持する。それができないときは、詳細な
7359           エラーメッセージを出し、失敗のステータスで終了する。`cp' が
7360           xattr のサポートなしでビルドされている場合は、このオプション
7361           は無視される。SELinux コンテキスト、ACL、ケーパビリティなどを
7362           xattr を使って実装している場合には、そうした属性もこのオプ
7363           ションによって、明示的な指定がない場合でも維持される。すなわち、
7364           `--preserve=mode' や `--preserve=context' を指定しないでも維持
7365           されるわけだ。
7366
7367     `all'
7368           ファイルの属性をすべて維持する。上記のすべてを指定するのと
7369           同じことだが、SELinux セキュリティ・コンテキストや拡張属性の
7370           維持に失敗しても、`cp' の終了ステータスが変わらないという点が
7371           異なっている。`-a' とは違って、`Operation not supported'
7372           以外のすべての 警告メッセージを出力する。
7373
7374      ATTRIBUTE_LIST なしで `--preserve' を使用するのは、
7375      `--preserve=mode,ownership,timestamps' と同じことである。
7376
7377      このオプションを使わない場合、コピー先ファイルがすでに存在して
7378      いる場合は、その許可属性は変更されない。一方、新しくファイルが
7379      作成される場合は、各コピー先ファイルのモードビットは、対応する
7380      コピー元ファイルのモードビットを元にして、そこから umask で設定
7381      されているビットと、set-user-ID や set-group-ID ビットを落とした
7382      ものになる。*Note File permissions::.
7383
7384 `--no-preserve=ATTRIBUTE_LIST'
7385      指定された属性を維持しない。ATTRIBUTE_LIST の書式は、`--preserve'
7386      の場合と同じである。
7387
7388 `--parents'
7389      コピー先の各ファイル名を生成する際、出力先に指定されたディレクトリ
7390      の末尾にスラッシュを付け、その後ろにコピー元として指定された
7391      ファイル名を付け足すことによってそれを行う。`cp' に渡す最後の
7392      引数は、実在するディレクトリの名前でなければならない。一例を挙げる。
7393
7394           cp --parents a/b/c existing_dir
7395
7396      ファイル `a/b/c' を上記のコマンドでコピーすると、ファイル
7397      `existing_dir/a/b/c' が出来る。途中のディレクトリが存在して
7398      いなければ、それも作成される。
7399
7400 `-R'
7401 `-r'
7402 `--recursive'
7403      ディレクトリを再帰的にコピーする。デフォルトでは、`--link' (`-l')
7404      オプションが同時に使われていないかぎり、コピー元にあるシンボリック
7405      リンクの参照先をたどることをしない。`--archive' (`-a'), `-d',
7406      `--dereference' (`-L'), `--no-dereference' (`-P'), `-H' などの
7407      オプションを参照。スペシャルファイルについては、コピーする際に、
7408      コピー元ファイルと同じファイル型のコピー先ファイルを作成する。
7409      `--copy-contents' を参照。シンボリックリンクやスペシャルファイルの
7410      コピーに `-r' オプションを使用するのは、どのシステムでも通用する
7411      ことではない。GNU 以外のシステムの中には、歴史的な理由から、 `-r'
7412      が、`-L' と `--copy-contents' を同時に指定するのと等価になっている
7413      ものもあるのだ。また、シンボリックリンクをコピーするのに `-R' を
7414      使用するのも、`-P' も併せて指定しないかぎり、どのシステムでも通用
7415      することではない。デフォルトでシンボリックリンクの参照先をたどる
7416      実装が、POSIX で認められているからである。
7417
7418 `--reflink[=WHEN]'
7419      ファイルシステムがサポートしていれば、軽便コピー、すなわち、
7420      書き込み時コピー(copy-on-write (COW) copy) を行う。留意すべきは、
7421      これが成功した場合、コピー元とコピー先のファイルは、どちらかに
7422      対して変更が加えられるまで、ディスクの同じデータブロックを共有
7423      しているということである。従って、ディスク I/O エラーが起きて、
7424      片方のファイルのデータブロックが損傷を受ければ、もう一方の
7425      ファイルも同じ被害に会う。
7426
7427      WHEN の値には、次のうちの一つが使える。
7428
7429     `always'
7430           デフォルトの動作である。copy-on-write がサポートされていない
7431           場合は、各ファイルについて失敗した旨を報告し、失敗を示す
7432           ステータスで終了する。
7433
7434     `auto'
7435           copy-on-write 操作がサポートされていない場合は、copy-on-write
7436           をあきらめて、標準のコピー動作を行う。
7437
7438      このオプションは、`--link', `--symbolic-link' `--attributes-only'
7439      オプションによって無効になるので、データをコピーする際の `cp' の
7440      デフォルト動作の設定に使用することができる。たとえば、次のエイリ
7441      アスを使うと、`cp' は、ファイルシステムがサポートする範囲で、
7442      ディスクスペースの使用を最少に留めるようになる。
7443
7444           alias cp='cp --reflink=auto --sparse=always'
7445
7446 `--remove-destination'
7447      コピー先ファイルがすでに存在する場合、その各々についてオープンを
7448      試みる前に、削除する (上述の `-f' と比較すること)。
7449
7450 `--sparse=WHEN'
7451      穴空きファイル ("sparse file") とは、穴 ("holes") を含むファイル
7452      である。穴というのは、物理的なディスクブロック上には存在しない
7453      ゼロバイトの連続で、`read' システムコールがそれを読む込むとき、
7454      ゼロの連続として扱うものである。バイナリ・ファイルには、連続する
7455      ゼロバイトがたくさん含まれていることが多いので、この仕組みは、
7456      ディスクスペースを大いに節約してくれるし、動作速度の向上を
7457      もたらしてもくれる。デフォルトで `cp' は、かなり大雑把な発見的
7458      手法を使って、コピー元ファイルにある穴を検出し、対応するコピー先
7459      ファイルも穴空きファイルにする。なお、穴空きファイルにできるのは、
7460      通常ファイルだけである。
7461
7462      WHEN の値には、次のうちの一つが使える。
7463
7464     `auto'
7465           デフォルトの動作である。すなわち、コピー元が穴空きファイルなら、
7466           コピー先も穴空きファイルにしようとする。ただし、コピー先
7467           ファイルがすでに存在し、通常ファイル以外を指している場合は、
7468           それを穴空きにしようとはしない。
7469
7470     `always'
7471           たとえ、コピー元ファイルが穴空きファイルに見えなくても、十分に
7472           長いゼロバイトの連続があれば、その各々に対応する穴をコピー先
7473           ファイルに設けようとする。この動作が役に立つのは、コピー元
7474           ファイルが、穴空きファイルをサポートしていないファイルシステム
7475           にあるのに対し (たとえば、SGI IRIX 5.3 以前の `efs' ファイル
7476           システム)、コピー先ファイルは穴空きファイルをしっかりサポート
7477           するタイプのファイルシステムにある場合である。穴を作ることが
7478           できるのは、通常ファイルだけなので、コピー先が通常ファイル以外
7479           なら、`cp' がそのファイルを穴空きにしようと試みることもない。
7480
7481     `never'
7482           コピー先ファイルを穴空きにしない。これは、`mkswap' コマンドで
7483           使用するファイルを作成するときに役に立つ。そうしたファイルには、
7484           穴があってはならないからである。
7485
7486 `--strip-trailing-slashes'
7487      SOURCE 引数の後ろにスラッシュが付いていたら、それを削除する。
7488      *Note Trailing slashes::.
7489
7490 `-s'
7491 `--symbolic-link'
7492      コピー元がディレクトリ以外の場合、コピーする代わりに、シンボリック
7493      リンクを作成する。出力先ファイルをカレント・ディレクトリに作成する
7494      場合を除いて、コピー元ファイルの名前は、すべて (`/' で始まる) 絶対
7495      パス表記でなければならない。シンボリックリンクをサポートしていない
7496      システムでは、このオプションはエラーメッセージを出すだけである。
7497
7498 `-S SUFFIX'
7499 `--suffix=SUFFIX'
7500      `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
7501      付ける。 *Note Backup options::.
7502
7503 `-t DIRECTORY'
7504 `--target-directory=DIRECTORY'
7505      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
7506      directory::.
7507
7508 `-T'
7509 `--no-target-directory'
7510      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
7511      でも、それを特別扱いしない。 *Note Target directory::.
7512
7513 `-u'
7514 `--update'
7515      ディレクトリ以外のものをコピーする際、それがコピー先にも存在し、
7516      しかもその更新日時 (modification time) がコピー元と同じか、より
7517      新しい場合、コピーを行わない。コピー元からコピー先へタイムスタンプを
7518      引き継がせている場合には、コピー元のタイムスタンプの精度を、コピー先
7519      のファイルシステム、及びタイプスタンプの更新に使われるシステムコール
7520      の精度に落とした上で、比較を行う。これは、同じコピー元とコピー先の
7521      ファイルに対して `cp -pu' コマンドを何回か実行する場合に、余計な
7522      コピー作業が起きるのを避けるためである。`--preserve=links' が一緒に
7523      指定されている場合は (たとえば、`cp -au' だとそうなる)、そちらが
7524      優先されることになる。その結果、コピー元でファイルが処理される順番
7525      によっては、コピー元のハードリンクを反映させるために、コピー先の
7526      より新しいファイルが置き換えられることもある。
7527
7528 `-v'
7529 `--verbose'
7530      コピーを行う前に、コピーするファイル名を表示する。
7531
7532 `-x'
7533 `--one-file-system'
7534      あるファイルシステムでコピーを始めた場合、別のファイルシステム
7535      にあるサブディレクトリをスキップする。ただし、マウントポイントの
7536      ディレクトリはコピーされる。
7537
7538 `-Z'
7539 `--context[=CONTEXT]'
7540      CONTEXT が指定されていない場合は、出力するファイルの SELinux
7541      セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
7542      のタイプによって調整する。これは、`restorecon' コマンドの動作に
7543      似ている。このオプションの長い形式を使って、コンテキストを明示的に
7544      指定した場合、そのコンテキストが設定されるのは、新しく作成される
7545      ファイルに対してのみである。コンテキストを指定した場合に、SELinux
7546      が無効になっていると、警告メッセージを出す。 このオプションと
7547      `--preserve=context' を一緒に使うことはできない。また、この
7548      オプションは `--preserve=all' や `-a' オプションに優先する。
7549      (coreutils-8.22 の新機能)
7550
7551
7552    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7553
7554 \1f
7555 File: coreutils-ja.info,  Node: dd invocation,  Next: install invocation,  Prev: cp invocation,  Up: Basic operations
7556
7557 11.2 `dd': ファイルの変換とコピー
7558 ============================================
7559
7560 `dd' はファイルをコピーする (デフォルトでは、標準入力から標準出力へ
7561 コピーする)。その際、入出力のブロックサイズを変更することができる。
7562 また、コピーと同時にデータ形式の変換を行うこともできる。
7563
7564    書式:
7565
7566      dd [OPERAND]...
7567      dd OPTION
7568
7569    指定できるオプションは、`--help' と `--version' だけである。 *Note
7570 Common options::.  `dd' では、以下のオペランドが使える。オペランドの
7571 書式の元になったのは、OS/360 の JCL (Job Control Language) の DD 文
7572 (Data Definition statement) である。
7573
7574 `if=FILE'
7575      標準入力の代わりに、FILE から読み込む。
7576
7577 `of=FILE'
7578      標準出力の代わりに、FILE に書き出す。`conv=notrunc' が指定されて
7579      いない場合、`dd' は、出力を開始する前に、FILE を 0 バイトに
7580      (あるいは、`seek=' で指定されたサイズに) 短縮する。
7581
7582 `ibs=BYTES'
7583      入力ブロックサイズを BYTES にする。`dd' が 1 ブロック BYTES
7584      バイトで読み込みを行うようになる。デフォルトは 512 バイトである。
7585
7586 `obs=BYTES'
7587      出力ブロックサイズを BYTES にする。`dd' が 1 ブロック BYTES
7588      バイトで書き出しを行うようになる。デフォルトは 512 バイトである。
7589
7590 `bs=BYTES'
7591      入力、出力、両方のブロックサイズを BYTES にする。`dd' が 1
7592      ブロック BYTES バイトで読み書きを行うようになり、`ibs' や `obs'
7593      の指定は、あっても無効になる。さらに、データ変換を行う `conv'
7594      オプションが指定されていない場合には、入力は、それがブロックサイズ
7595      より小さくても、読み込まれるやいなや、出力にコピーされることになる。
7596
7597 `cbs=BYTES'
7598      変換ブロックサイズを BYTES にする。可変長のレコードを固定長の
7599      レコードに変換するときや (`conv=block')、その逆を行うとき
7600      (`conv=unblock')、固定長レコードの長さとして BYTES の値を使用する。
7601
7602 `skip=N'
7603      入力ファイルで `ibs' バイトのブロックを N 個読み飛ばしてから、
7604      コピーを行う。`iflag=skip_bytes' が指定されている場合は、N は
7605      ブロック数ではなく、バイト数と見なされる。
7606
7607 `seek=N'
7608      出力ファイルで `obs' バイトのブロックを N 個スキップしてから、
7609      コピーを行う。`oflag=seek_bytes' が指定されている場合は、 N は
7610      ブロック数ではなく、バイト数と見なされる。
7611
7612 `count=N'
7613      入力ファイルの末尾まで全部ではなく、`ibs' バイトのブロックを N
7614      個だけ入力ファイルからコピーする。`iflag=count_bytes' が指定
7615      されている場合は、N はブロック数ではなく、バイト数と見なされる。
7616      なお、次のことに注意してほしい。パイプから読み込んでいる場合
7617      などに時おり起きることだが、入力からの読み込みがブロックの
7618      大きさに足りないことがある。そうした場合に `iflag=fullblock' が
7619      指定してあると、`count=' は、一杯になるまで読み込むブロックの
7620      個数に対応するようになる。入力から読み込みを実行する回数という
7621      POSIX で規定されている伝統的な動作には、対応しなくなるのだ。
7622
7623 `status=WHICH'
7624      通常では `INFO' シグナルを受け取った時点や、`dd' が終了したときに、
7625      転送情報が標準エラーに出力される。WHICH を指定することで、どの情報
7626      を表示しないかを設定できる。
7627
7628     `noxfer'
7629           転送速度や転送量の統計を表示しない。通常は、そうした情報が
7630           ステータス表示の最後の行になる。
7631
7632     `none'
7633           情報メッセージや警告メッセージを標準エラーに全く表示しない。
7634           エラーメッセージは通常どおり出力する。
7635
7636
7637 `conv=CONVERSION[,CONVERSION]...'
7638      CONVERSION 引数 (複数可) で指定されたようにファイルを変換する。
7639      (コンマの前後にスペースを入れてはいけない。)
7640
7641      CONVERSION には次のものが指定できる:
7642
7643     `ascii'
7644           POSIX が規定している変換テーブルを使って、EBCDIC を ASCII に
7645           変換する。変換テーブル中の 256 バイトのすべてについて、 1 対
7646           1 の変換が行われる。
7647
7648     `ebcdic'
7649           ASCII を EBCDIC に変換する。これは `ascii' 変換の逆の動作で
7650           ある。
7651
7652     `ibm'
7653           POSIX が規定しているもう一つの変換テーブルを使って、ASCII を
7654           EBCDIC の別の形式に変換する。こちらは 1 対 1 の変換ではない
7655           が、`~', `[', `]' について、よく使われる伝統的な慣行を反映
7656           している。
7657
7658           `ascii', `ebcdic', `ibm' は、どれか一つしか指定できない。
7659
7660     `block'
7661           入力 1 行あたり、`cbs' バイト分を出力する。入力中の改行は
7662           スペースに置き換え、`cbs' バイトに足りない分はスペースで
7663           埋める。
7664
7665     `unblock'
7666           `cbs' バイトの大きさからなる各入力ブロックに対して、末尾に
7667           スペースがあれば、それをすべて削除し、改行を追加する。
7668
7669           `block' と `unblock' は、どちらか一方しか指定できない。
7670
7671     `lcase'
7672           大文字を小文字に変換する。
7673
7674     `ucase'
7675           小文字を大文字に変換する。
7676
7677           `lcase' と `ucase' は、どちらか一方しか指定できない。
7678
7679     `sparse'
7680           出力ブロックが NUL のみからなっているとき、それを書き出さず
7681           に、seek を試みる。穴空きファイル (sparse file) をサポート
7682           しているシステムでは、この動作は、出力ファイルを書き出して
7683           いるときに、穴空きの出力を作成することになる。このオプションを
7684           `conv=notrunc' や `oflag=append' と一緒に使う際は、気をつけ
7685           なければならない。`conv=notrunc' が付いていると、入力中の NUL
7686           ブロックに対応する位置にある、出力ファイル中の存在するデータは、
7687           そのまま保持されることになる。`oflag=append' を付けた場合は、
7688           seek は行っても効果がない。なお、`conv=sparse' では、出力先が
7689           ファイルではなく、デバイスの場合も、入力中の NUL ブロックは
7690           やはりコピーされない。そんなわけで、このオプションが最も役に
7691           立つのは、仮想デバイスや、前もって 0 で初期化したデバイスに
7692           対してである。
7693
7694     `swab'
7695           入力された全バイトを 2 個づつ組にして、前後を入れ替える。GNU
7696           の `dd' は、他の `dd' とは違って、読み込むバイトが奇数個でも
7697           動作する。最後のバイトは (入れ替えるものがないので) そのまま
7698           コピーするのである。
7699
7700     `sync'
7701           すべての入力ブロックに対して `ibs' の大きさになるまで、末尾を
7702           ゼロバイトで埋める。`block' や `unblock' と一緒に使用する
7703           と、ゼロバイトの代わりにスペースで埋める。
7704
7705
7706      以下の CONVERSION は、実のところファイルの扱いに関するフラグ
7707      なので、内的な処理には影響を及ぼさない。
7708
7709     `excl'
7710           出力ファイルがすでに存在する場合は、実行に失敗する。
7711           言い換えれば、`dd' が出力ファイルを自分で作成しなければ
7712           ならないということである。
7713
7714     `nocreat'
7715           出力ファイルを作成しない。言い換えれば、出力ファイルは前もって
7716           存在していなければならないということだ。
7717
7718           `excl' と `nocreat' は、どちらか一方しか指定できない。
7719
7720     `notrunc'
7721           出力ファイルに対して短縮操作をしない (訳注: `of=FILE' の項を
7722           参照)。
7723
7724     `noerror'
7725           読み込みエラーがあっても、作業を続行する。
7726
7727     `fdatasync'
7728           コマンドを終了する直前に、出力データを同期させる。すなわち、
7729           出力データをディスクに実際に書き込む。
7730
7731     `fsync'
7732           コマンドを終了する直前に、出力データだけでなく、メタデータも
7733           同期させる。すなわち、出力データとメタデータをディスクに
7734           実際に書き込む。
7735
7736
7737 `iflag=FLAG[,FLAG]...'
7738      引数 FLAG によって指定されたフラグを使って、入力ファイルに
7739      アクセスする。(コンマの前後にスペースを入れてはいけない。)
7740
7741 `oflag=FLAG[,FLAG]...'
7742      引数 FLAG によって指定されたフラグを使って、出力ファイルに
7743      アクセスする。(コンマの前後にスペースを入れてはいけない。)
7744
7745      フラグには次のものがある。どのオペレーティング・システムでも、
7746      すべてのフラグが使えるわけではない。
7747
7748     `append'
7749           追加モードで書き込む。従って、何か別のプロセスが問題の
7750           ファイルに書き出している場合でも、`dd' の書き込みは、
7751           書き込むたびに、そのファイルの今現在の内容に追加されること
7752           になる。このフラグは出力に対してしか意味がない。なお、この
7753           フラグを `of=FILE' オペランドと組み合わせて使うのなら、
7754           `conv=notrunc' も一緒に指定した方がよい。さもないと、出力
7755           ファイルは、追加書き込みが始まる前に、短縮操作を受けること
7756           になる。
7757
7758     `cio'
7759           データに対してコンカレント I/O (CIO) モードを使用する。この
7760           モードでは、ダイレクト I/O を行いつつ、同じファイルに対する
7761           すべての I/O は順番に行わなければならないという POSIX の
7762           要件は無視する。一つのファイルを CIO モードと標準的な方法の
7763           両方で同時にオープンすることはできない。
7764
7765     `direct'
7766           データに対してダイレクト I/O を使用し、バッファ・キャッシュを
7767           介さないようにする。カーネルが read バッファや write バッファ
7768           のサイズに制限をかけていることがあるのに注意していただきたい。
7769           たとえば、出力先のファイルシステムが ext4 で、カーネルが linux
7770           ベースの場合、出力バッファのサイズが 512 の倍数でなければ、
7771           `oflag=direct' を指定すると、`EINVAL' で書き込みに失敗する。
7772
7773     `directory'
7774           ファイルがディレクトリでなければ、実行に失敗する。ほとんどの
7775           オペレーティング・システムがディレクトリに対する I/O を許して
7776           いない。従って、このフラグが役に立つ機会はめったにない。
7777
7778     `dsync'
7779           データに対して同期 I/O を使用する。出力ファイルについては、
7780           このフラグは、各書き込みごとに出力データをディスクに実際に
7781           書き込ませる。入力ファイルについてこのフラグが意味を持つかも
7782           しれないのは、読み込んでいるのがリモートのファイルであり、
7783           それが何か他のプロセスによって同期的に書き込まれているとき
7784           である。メタデータ (たとえば、最終アクセス日時や最終更新日時)
7785           は、必ずしも同期されない。
7786
7787     `sync'
7788           データとメタデータに対して同期された I/O を使用する。
7789
7790     `nocache'
7791           ファイルのデータ・キャッシュを廃棄する。count=0 の場合は、
7792           キャッシュが全部捨てられる。それ以外の場合は、ファイルの
7793           キャッシュのうち、処理の対象になる部分だけが捨てられる。
7794           また、count=0 のとき、キャッシュの廃棄に失敗すると、その旨
7795           メッセージが表示され、終了ステータスに反映する。以下に、
7796           使用法の例をいくつか挙げておく。
7797
7798                # ファイル全体のキャッシュを捨てるように指示する。
7799                dd if=ifile iflag=nocache count=0
7800
7801                # ファイル全体のキャッシュを確実に捨てる。
7802                dd of=ofile oflag=nocache conv=notrunc,fdatasync count=0
7803
7804                # ファイル中の一部分のキャッシュを捨てる。
7805                dd if=ifile iflag=nocache skip=10 count=10 of=/dev/null
7806
7807                # read-ahead キャッシュのみを使って、データを転送する。
7808                dd if=ifile of=ofile iflag=nocache oflag=nocache
7809
7810     `nonblock'
7811           ノンブロッキング I/O を使用する。
7812
7813     `noatime'
7814           ファイルのアクセス日時を更新しない。古いシステムの中には、
7815           エラーや警告も出さずに、このフラグを無視するものがある。
7816           そこで、このフラグを使用する前に、有効かどうか、お手元の
7817           ファイルで試してみるとよい。
7818
7819     `noctty'
7820           入力 (または、出力) ファイルを `dd' の制御端末にしない。この
7821           フラグは、そのファイルが端末でなければ、効果がない。この
7822           フラグが全く効果を持たないホストが、たくさんある (たとえば、
7823           GNU/Linux ホストがそうである)。
7824
7825     `nofollow'
7826           シンボリックリンクをたどらない。
7827
7828     `nolinks'
7829           ファイルに複数のハードリンクがあれば、実行に失敗する。
7830
7831     `binary'
7832           バイナリ I/O を使用する。このフラグは、バイナリ I/O と
7833           テキスト I/O を区別する非標準的なプラットフォームでしか
7834           効果がない。
7835
7836     `text'
7837           テキスト I/O を使用する。このフラグが標準的なプラットフォーム
7838           で効果がないのは、`binary' と同様である。
7839
7840     `fullblock'
7841           各ブロックが一杯になるまで入力から読み込む。`read' システム
7842           コールは、入力がブロックの分量に足りない場合、早めに戻って
7843           くることがある。そうした場合に、`read' の呼び出しを繰り返
7844           して、ブロックの残りを埋めようとする。このフラグは、`iflag'
7845           でのみ使える。このフラグが役に立つのは、たとえばパイプと組み
7846           合わせて使うときである。パイプとの組み合わせでは、入力からの
7847           読み込みがブロックの大きさに足りないことがあるからだ。そうした
7848           場合に、`count=' の引数が、読み込み動作の回数ではなく、読み
7849           込むブロック数だと間違いなく解釈されるようにするには、この
7850           フラグが必要になる。
7851
7852     `count_bytes'
7853           `count=' オペランドをブロック数ではなく、バイト数の指定と
7854           見なす。そうすることで、I/O ブロックサイズの倍数ではない
7855           長さが、指定できるようになるわけだ。このフラグは `iflag'
7856           でしか使用できない。
7857
7858     `skip_bytes'
7859           `skip=' オペランドをブロック数ではなく、バイト数の指定と
7860           見なす。そうすることで、I/O ブロックサイズの倍数ではない
7861           オフセットが、指定できるようになるわけだ。このフラグは
7862           `iflag' でしか使用できない。
7863
7864     `seek_bytes'
7865           `seek=' オペランドをブロック数ではなく、バイト数の指定と
7866           見なす。そうすることで、I/O ブロックサイズの倍数ではない
7867           オフセットが、指摘できるようになるわけだ。このフラグは
7868           `oflag' でしか使用できない。
7869
7870
7871      以上のフラグは、すべてのシステムでサポートされているわけではなく、
7872      サポートされていないシステムで使用しようとすると、`dd' に拒否
7873      される。標準入力から読み込んでいる場合や、標準出力に書き出して
7874      いる場合は、`nofollow' や `noctty' フラグは指定するべきではない。
7875      また、他のフラグ (たとえば `nonblock') は、対象となるファイルの
7876      ファイル・ディスクリプタに対する他のプロセスの動作に、`dd' が
7877      終了した後までも、影響を及ぼすかもしれない。
7878
7879
7880    上記中の数値を表す文字列  (N や BYTES) には、乗数を示す文字を後ろに
7881 付けることができる。すなわち、`b'=512, `c'=1, `w'=2, `xM'=M といった
7882 文字である (訳注: 最後のものは、10xM という表記は 10M と書くのと同じだ
7883 ということ)。あるいは、`k'=1024 のような、ブロックサイズに付ける標準の
7884 接尾辞の一つを続けてもよい (*note Block size::)。
7885
7886    `bs=', `ibs=', `obs=', "`cbs=' を使って指定するブロックサイズは、
7887 大きすぎない方がよい。数メガバイトを越える値は、一般的に言って無駄だし、
7888 (ギガバイト ... エクサバイトを使ったときのように) 全く逆効果だったり、
7889 エラーの元になったりする。
7890
7891    データのオフセット位置やサイズが I/O ブロックサイズの倍数ではない
7892 場合に、そうしたデータを処理するには、`skip_bytes', `seek_bytes',
7893 `count_bytes' といったフラグを使用すればよい。あるいは、`dd' を別々に
7894 呼び出すという伝統的な手法を使用することもできる。一例を挙げると、
7895 以下のシェルコマンドは、1 ブロック を 512 KiB にして、ディスクと
7896 テープの間でデータをコピーしている。ただし、ディスクの先頭にある 4 KiB
7897 のラベルについては、保存も復元も行っていない。
7898
7899      disk=/dev/rdsk/c0t1d0s2
7900      tape=/dev/rmt/0
7901
7902      # ラベル以外のすべてをディスクからテープへコピーする。
7903      (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
7904
7905      # テープからディスクへ書き戻す。ただし、ディスクのラベルには手を
7906      # 付けない。
7907      (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
7908
7909    実行中の `dd' のプロセスに `INFO' シグナルを送ると、`dd' は入出力の
7910 統計情報を標準エラーに書き出してから、コピー作業を続行する。以下の
7911 例では、`dd' がバックグラウンドで動作し、1 千万ブロックのコピーを行って
7912 いる。`kill' コマンドが実行されると、`dd' は実行途中の入出力統計を
7913 表示する。そして、正常に作業を完了するか、`SIGINT' シグナルによって
7914 中断されたとき、最終的な統計情報を出力する。
7915
7916      $ dd if=/dev/zero of=/dev/null count=10MB & pid=$!
7917      $ kill -s INFO $pid; wait $pid
7918      3385223+0 records in
7919      3385223+0 records out
7920      1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
7921      10000000+0 records in
7922      10000000+0 records out
7923      5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s
7924
7925    `INFO' シグナルが存在しないシステムでは、 環境変数 `POSIXLY_CORRECT'
7926 が設定されていないかぎり、`dd' は `INFO' の代わりに `USR1' に反応する。
7927
7928    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7929
7930 \1f
7931 File: coreutils-ja.info,  Node: install invocation,  Next: mv invocation,  Prev: dd invocation,  Up: Basic operations
7932
7933 11.3 `install': ファイルをコピーし属性をセットする
7934 ===================================================================
7935
7936 `install' はファイルをコピーするとき、ファイルのモードビット (訳注:
7937 一般にアクセス権とか、許可属性と言われるもの) をセットし、可能ならば、
7938 所有者やグループも設定する。
7939
7940    書式:
7941
7942      install [OPTION]... [-T] SOURCE DEST
7943      install [OPTION]... SOURCE... DIRECTORY
7944      install [OPTION]... -t DIRECTORY SOURCE...
7945      install [OPTION]... -d DIRECTORY...
7946
7947    * ファイル名を二つ指定すると、`install' は最初のファイルを 2 番目の
7948      ファイルにコピーする。
7949
7950    * `--target-directory' (`-t') オプションを指定した場合や、あるいは
7951      それを指定しないでも、最後のファイルがディレクトリであり、しかも
7952      `--no-target-directory' (`-T') オプションを指定していない場合は、
7953      `install' は各 SOURCE ファイルを指定されたディレクトリに、SOURCE
7954      の名前でコピーする。
7955
7956    * `--directory' (`-d') を指定すると、`install' は各 DIRECTORY を
7957      作成する。このとき、親ディレクトリが存在しなければ、それも
7958      作成する。作成される親ディレクトリのモードは、`-m' オプションの
7959      指定や現在の umask にかかわりなく、`u=rwx,go=rx' (755) になる。
7960      親ディレクトリの set-user-ID ビットや set-group-ID ビットの継承に
7961      ついては、次の節を参照していただきたい。*Note Directory Setuid and
7962      Setgid::.
7963
7964    `install' は `cp' に似ているが、コピー先ファイルの属性を自由に
7965 設定できる点が違う。`install' は通常、Makefile の中で、プログラムを
7966 目標のディレクトリにコピーするために使用される。`install' では、ファイル
7967 をそれ自身にコピーすることはできない。
7968
7969    `install' が拡張属性 (xattr) を保存することはない。
7970
7971    このプログラムでは以下のオプションが使用できる。参照: *note Common
7972 options::.
7973
7974 `-b'
7975 `--backup[=METHOD]'
7976      *Note Backup options::.  そのままでは、上書きされるか、消去されて
7977      しまう各ファイルのバックアップを作成する。
7978
7979 `-C'
7980 `--compare'
7981      インストール元とインストール先の対応するファイルを比較し、
7982      インストール先にあるファイルがインストール元と同じ内容を持ち、
7983      しかも、所有者、グループ、許可属性、場合によっては SELinux
7984      コンテキストについて、そのどれもが指定されているものと同一で
7985      あるときは、インストール先ファイルを全く変更しない。このオプ
7986      ションは、`--user', `--group', `--mode' オプションと組み合わせて
7987      使うのが、最善である。そうしたオプションと組み合わせて使えば、
7988      `install' コマンドが、(たとえば、ディレクトリに setgid が付いて
7989      いるか否かや、POSIX のデフォルトの ACL を顧慮しないせいで)、
7990      インストールされるファイルがデフォルトで持つはずの属性を不正確に
7991      決めてしまうのを避けることができる。そういうことがあると、
7992      無駄なコピーが行われたり、属性が正しいデフォルト値に設定し直され
7993      なかったりといった不都合が生じかねないのだ。
7994
7995 `-c'
7996      無視する。Unix の古いバージョンの  `install' との互換性のために
7997      ある。
7998
7999 `-D'
8000      DEST の指定中に存在していない親ディレクトリがあれば、それを作成
8001      してから、SOURCE を DEST にコピーする。インストール先ディレクトリ
8002      が `--target-directory=DIR' によって指定されている場合は、この
8003      オプションは無視される。
8004
8005 `-d'
8006 `--directory'
8007      まず、存在していない親ディレクトリがあれば作成し、それにデフォルトの
8008      属性を与える。それから、指定された各ディレクトリを作成し、所有者、
8009      グループ、許可属性を、コマンドラインで指定されたとおりに、または
8010      デフォルトの値に設定する。
8011
8012 `-g GROUP'
8013 `--group=GROUP'
8014      インストールするファイルやディレクトリの所有グループを GROUP に
8015      設定する。デフォルトは、プロセスの現在のグループである。GROUP は、
8016      グループ名でも、グループの ID 番号でもよい。
8017
8018 `-m MODE'
8019 `--mode=MODE'
8020      インストールするファイルやディレクトリのモードビットを MODE に
8021      設定する。MODE の指定は、`a=' (誰にもアクセスを許さない) を
8022      基点として行い、8 進数でも、`chmod' で使うようなシンボリック
8023      モードでもよい (*note File permissions::)。デフォルトのモードは、
8024      `u=rwx,go=rx,a-s' である。すなわち、所有者には読み、書き、実行を
8025      許可し、グループとその他のユーザには読みと実行のみを許可、
8026      set-user-ID と set-group-ID は無効にする。このデフォルトは、`755'
8027      と全く同じではない。なぜなら、デフォルトの方は、ディレクトリに
8028      ついて set-user-ID や set-group-ID を引き継がず、無効にしている
8029      からである。 *Note Directory Setuid and Setgid::.
8030
8031 `-o OWNER'
8032 `--owner=OWNER'
8033      `install' が適切な権限を持っている場合に (つまり、root 権限で
8034      実行されている場合に)、インストールするファイルやディレクトリの
8035      所有者を OWNER に設定する。デフォルトは `root' である。OWNER の
8036      指定は、ユーザ名でも、ユーザの ID 番号でもよい。
8037
8038 `--preserve-context'
8039      ファイルやディレクトリの SElinux セキュリティ・コンテキストを引き
8040      継ぐ。ファイルやディレクトリすべてのセキュリティ・コンテキストを
8041      引き継げなかった場合は、終了ステータスが 1 になる。SElinux が
8042      無効になっているときは、警告を出し、このオプションを無視する。
8043
8044 `-p'
8045 `--preserve-timestamps'
8046      インストール先各ファイルの最終アクセス日時 (last access time) と
8047      最終更新日時 (last modification time) を、対応するインストール元
8048      各ファイルのそれぞれの日時に合わせる。このオプションを付けずに
8049      インストールした場合、各ファイルの最終アクセス日時と最終更新日時は、
8050      両方ともインストールした日時になる。インストール先ファイルの最終
8051      更新日時を、最後にインストールした日付ではなく、最後にビルドした
8052      日付の記録として使用したい場合、このオプションは便利である。
8053
8054 `-s'
8055 `--strip'
8056      インストールされるバイナリの実行ファイルからシンボル・テーブルを
8057      取り除く。
8058
8059 `--strip-program=PROGRAM'
8060      バイナリからシンボル・テーブルを取り除くために使用するプログラムを
8061      指定する。
8062
8063 `-S SUFFIX'
8064 `--suffix=SUFFIX'
8065      `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
8066      付ける。 *Note Backup options::.
8067
8068 `-t DIRECTORY'
8069 `--target-directory=DIRECTORY'
8070      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8071      directory::.
8072
8073 `-T'
8074 `--no-target-directory'
8075      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8076      でも、それを特別扱いしない。 *Note Target directory::.
8077
8078 `-v'
8079 `--verbose'
8080      コピーを行う前に、コピーするファイル名を表示する。
8081
8082 `-Z'
8083 `--context[=CONTEXT]'
8084      CONTEXT が指定されていない場合は、出力するファイルの SELinux
8085      セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
8086      のタイプによって調整する。これは、`restorecon' コマンドの動作に
8087      似ている。このオプションの長い形式を使って、コンテキストを明示的に
8088      指定した場合、そのコンテキストが設定されるのは、新しく作成される
8089      ファイルに対してのみである。コンテキストを指定した場合に、SELinux
8090      が無効になっていると、警告メッセージを出す。 このオプションと
8091      `--preserve-context' オプションは、どちらか一方しか指定できない。
8092      (CONTEXT を省略できるのは、coreutils-8.22 から)
8093
8094
8095    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8096
8097 \1f
8098 File: coreutils-ja.info,  Node: mv invocation,  Next: rm invocation,  Prev: install invocation,  Up: Basic operations
8099
8100 11.4 `mv': ファイルの移動 (名前の変更) を行う
8101 ============================================================
8102
8103 `mv' は、ファイル (やディレクトリ) の移動、または名前の変更を行う。
8104
8105    書式:
8106
8107      mv [OPTION]... [-T] SOURCE DEST
8108      mv [OPTION]... SOURCE... DIRECTORY
8109      mv [OPTION]... -t DIRECTORY SOURCE...
8110
8111    * ファイル名を二つ指定すると、`mv' は最初のファイルを 2 番目の
8112      ファイルに移動する。
8113
8114    * `--target-directory' (`-t') オプションを指定した場合や、あるいは
8115      それを指定しないでも、最後のファイルがディレクトリであり、しかも
8116      `--no-target-directory' (`-T') オプションを指定していない場合は、
8117      `mv' は各 SOURCE ファイルを指定されたディレクトリに、SOURCE の
8118      名前で移動する。
8119
8120    `mv' はいかなるタイプのファイルでも、一つのファイルシステムから
8121 別のファイルシステムへ移動させることができる。fileutils パッケージの
8122 バージョン `4.0' 以前では、`mv' がファイルシステム間を移動させる
8123 ことができたのは、通常ファイルだけだった。それに対して、現在の `mv'
8124 では、たとえば、スペシャル・デバイスファイルを含むディレクトリ階層の
8125 全体を、あるパーティションから別のパーティションへ移動させることが
8126 可能になっている。`mv' は、まず `cp -a' が使用するのと同じコードを
8127 使って、指定されたディレクトリやファイルをコピーし、その後で (コピーに
8128 成功した場合は) コピー元を削除する。コピーに失敗した場合は、移動先の
8129 パーティションにすでにコピーした部分を消去することになる。仮に、ある
8130 パーティションから別のパーティションに、3 個のディレクトリをコピー
8131 しようとして、最初のディレクトリのコピーには成功したものの、2 番目の
8132 ディレクトリのコピーに失敗したとしよう。その場合、最初のディレクトリ
8133 は、移動先のパーティションに残るが、2 番目と 3 番目のディレクトリは、
8134 元のパーティションに残ることになる。
8135
8136    `mv' は拡張属性 (xattr) を常にコピーしようとする。この拡張属性は、
8137 SELinux コンテキストや ACL、ケーパビリティであってもよい。拡張属性の
8138 コピーに失敗したときは、`Operation not supported' 以外のすべての
8139 警告が出力される。
8140
8141    移動先ファイルがすでに存在し、それが普通なら書き込みのできないもの
8142 である場合、標準入力が端末であり、`-f' や `--force' オプションが指定
8143 されていなければ、`mv' はプロンプトを出して、ファイルを置き換えるか
8144 どうか、ユーザに問い合わせる (ファイルの書き込み権限がなくても、自分
8145 がそのファイルの所有者であったり、そのディレクトリの書き込み権限を
8146 持っていたりすることは、ありえることである)。答えが肯定でなければ、
8147 そのファイルはスキップされる。
8148
8149    警告: 名前変更の対象 (または、移動元) がディレクトリへのシンボリック
8150 リンクかもしれないときは、その名前を指定する際に、末尾にスラッシュを
8151 付けてはいけない。さもないと、`mv' の動作は内部で使っている rename
8152 システムコール次第なので、全く予想外のことが起きるかもしれないのだ。
8153 Linux ベースの最近のカーネルを使っているシステムでは、`errno=ENOTDIR'
8154 で実行に失敗する。しかし、他のシステムでは (少なくとも、FreeBSD 6.1 や
8155 Solaris 10 では)、シンボリックリンクではなく、リンクが参照している
8156 ディレクトリの名前の方を、警告なしで変更するのである。 *Note Trailing
8157 slashes::.
8158
8159    このプログラムでは以下のオプションが使用できる。参照: *note Common
8160 options::.
8161
8162 `-b'
8163 `--backup[=METHOD]'
8164      *Note Backup options::.  そのままでは、上書きされるか、消去されて
8165      しまう各ファイルのバックアップを作成する。
8166
8167 `-f'
8168 `--force'
8169      移動先のファイルを消去する前に、プロンプトを出してユーザに問い合わ
8170      せることをしない。 `-i', `-f', `-n' オプションを 同時に指定している
8171      場合は、最後に指定したもののみが 効果を持つ。
8172
8173 `-i'
8174 `--interactive'
8175      ファイルの許可属性に関係なく、存在する各移動先ファイルを上書き
8176      するかどうかを、プロンプトを出してユーザに問い合わせる。答えが
8177      肯定でなければ、そのファイルをスキップする。`-i', `-f', `-n'
8178      オプションを 同時に指定している 場合は、最後に指定したもののみが
8179      効果を持つ。
8180
8181 `-n'
8182 `--no-clobber'
8183      存在するファイルを上書きしない。`-i', `-f', `-n' オプションを
8184      同時に指定している 場合は、最後に指定したもののみが 効果を持つ。
8185      このオプションは、`-b' や `--backup' オプションと一緒には使えない。
8186
8187 `-u'
8188 `--update'
8189      ディレクトリ以外のものを移動する際、それが移動先にも存在し、
8190      しかもその更新日時 (modification time) が移動元と同じか、より
8191      新しい場合には、移動を行わない。移動が別のファイルシステムに
8192      向かって行われる場合、タイムスタンプの比較は、移動元のタイム
8193      スタンプを移動先のファイルシステム、及びタイムスタンプの更新に
8194      使われるシステムコールの精度に落とした上で行われる。これは、
8195      同じ移動元と移動先に対して、`mv -u' コマンドが何回か実行される
8196      場合に、コピー作業が繰り返されるのを避けるためである。
8197
8198 `-v'
8199 `--verbose'
8200      移動する前に各ファイルの名前を表示する。
8201
8202 `--strip-trailing-slashes'
8203      SOURCE 引数の後ろにスラッシュが付いていたら、それを削除する。
8204      *Note Trailing slashes::.
8205
8206 `-S SUFFIX'
8207 `--suffix=SUFFIX'
8208      `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
8209      付ける。 *Note Backup options::.
8210
8211 `-t DIRECTORY'
8212 `--target-directory=DIRECTORY'
8213      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8214      directory::.
8215
8216 `-T'
8217 `--no-target-directory'
8218      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8219      でも、それを特別扱いしない。 *Note Target directory::.
8220
8221 `-Z'
8222 `--context'
8223      このオプションは `restorecon' と同様の働きをする。すなわち、
8224      移動先ファイルの SELinux セキュリティ・コンテキストを、移動先に
8225      おけるシステムのデフォルトのタイプによって調整する。(coreutils-8.22
8226      の新機能)
8227
8228
8229    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8230
8231 \1f
8232 File: coreutils-ja.info,  Node: rm invocation,  Next: shred invocation,  Prev: mv invocation,  Up: Basic operations
8233
8234 11.5 `rm': ファイルやディレクトリを削除する
8235 ===========================================================
8236
8237 `rm' は、指定された各ファイルを削除する。デフォルトでは、ディレクトリ
8238 の削除は行わない。
8239
8240    書式:
8241
8242      rm [OPTION]... [FILE]...
8243
8244    `-I' または `--interactive=once' オプションが指定されている場合に、
8245 削除するファイルが 4 個以上あるか、あるいは `-r', `-R', `--recursive'
8246 などのオプションが指定されていると、`rm' はプロンプトを出して、作業を
8247 最後まで行うかどうか、ユーザに問い合わせる。答えが肯定でなければ、
8248 コマンド全体が中止になる。
8249
8250    それ以外の場合でも、削除するファイルが書き込み不可で、標準入力が
8251 端末、しかも `--force' (`-f') オプションが指定されていない場合や、`-i'
8252 または `--interactive=always' オプションが指定されている場合には、`rm'
8253 はプロンプトを出して、そのファイルを削除するかどうか、ユーザに問い合わ
8254 せる。答えが肯定でなければ、そのファイルをスキップする。
8255
8256    ファイル名の最後の構成要素 (訳注: ファイル名 (いわゆるパス名) の
8257 最後の / より後ろの部分) が `.' や `..' であるファイルを削除しようと
8258 しても、`rm' はそれを実行せず、ユーザに問い合わせることもない。これは
8259 POSIX が要求している動作である。
8260
8261    警告: `rm' を使って、ファイルを削除しても、たいていの場合、その
8262 ファイルの内容を復元することが可能である。ファイルの内容が間違いなく
8263 復元不可能であるとの、より一層の保証が欲しいのなら、`shred' コマンドの
8264 使用をお考えになるとよい。
8265
8266    このプログラムでは以下のオプションが使用できる。参照: *note Common
8267 options::.
8268
8269 `-d'
8270 `--dir'
8271      指定されたディレクトリが空ならば、それを削除する。
8272
8273 `-f'
8274 `--force'
8275      指定したファイルが存在しなかったり、ユーザが削除の対象を一つも
8276      指定しなかったりしても、問題にしない (訳注: 言い換えれば、エラー
8277      にならない)。また、ユーザに対する問い合わせも全く行わない。
8278      `--interactive' (`-i') オプションが前にあっても、それを無視する。
8279
8280 `-i'
8281      プロンプトを出して、各ファイルを削除するかどうか、ユーザに問い
8282      合わせる。答えが肯定でなければ、そのファイルをスキップする。
8283      `--force' (`-f') オプションが前にあっても、それを無視する。
8284
8285 `-I'
8286      4 個以上のファイルが指定された場合や、再帰的な削除が要求された
8287      場合に、プロンプトを出して、コマンドを続行するかどうか、ユーザに
8288      一度だけ尋ねる。`--force' (`-f') オプションが前にあっても、それを
8289      無視する。`--interactive=once' と同じである。
8290
8291 `--interactive [=WHEN]'
8292      問い合わせのプロンプトをいつ出すかを指定する。WHEN には以下の一つを
8293      指定するが、なくてもよい。
8294         * never - 問い合わせを全くしない。
8295
8296         * once - 4 個以上のファイルが指定された場合や、再帰的な削除が
8297           要求された場合に、一度だけ問い合わせをする。`-I' と同じ。
8298
8299         * always - 削除されるすべてのファイルに対して問い合わせをする。
8300           `-i' と同じ。
8301      `--interactive' に WHEN を指定しないのは、`--interactive=always' と
8302      同じである。
8303
8304 `--one-file-system'
8305      ディレクトリ階層を再帰的に削除する際に、コマンドラインで引数として
8306      指定したディレクトリが存在するファイルシステムとは別のファイル
8307      システム上にある、いかなるディレクトリも削除しない。
8308
8309      このオプションが役に立つのは、ビルド用の "chroot" ディレクトリ
8310      階層を削除する場合である。通常、そうしたディレクトリ階層に重要な
8311      データは含まれていない。しかしながら、普段使っているスタートアップ・
8312      ファイルを利用しやすくするために、そうしたディレクトリ階層に
8313      `/home' を bind-mount するのは、珍しいことではない。問題は、`/home'
8314      のアンマウントを忘れやすいことである。アンマウントをやり忘れたまま、
8315      `rm -rf' を使って、通常使い捨てにする chroot 環境を削除しようと
8316      すると、`/home' 以下にあるすべてまで削除してしまうことになる。
8317      `--one-file-system' オプションを使えば、`rm' は警告を出した上で、
8318      他のファイルシステムにあるディレクトリをスキップしてくれる。
8319      当然ながら、`/home' と chroot 環境が同じファイルシステムにある
8320      場合は、このオプションを使っても、`/home' が助かるわけではない。
8321
8322 `--preserve-root'
8323      `--recursive' オプションと一緒に使った場合、ルートディレクトリ
8324      (`/') を削除しようとすると、エラーになる。これがデフォルトの
8325      動作である。 *Note Treating / specially::.
8326
8327      (訳注: 確かに `--preserve-root' が有効になっていれば、`rm -rf /'
8328      とした場合に、ルートディレクトリを保護することになる。だが、 `rm
8329      -rf /*' とした場合には、あまり役に立たない。なぜなら、`/*' は、
8330      `/bin', `/usr', `/home' などに展開されるが、そうしたディレクトリの
8331      消去は、`--preserve-root' によっては止められないからである。)
8332
8333 `--no-preserve-root'
8334      再帰的に削除を行う際、`/' を特別扱いしない。コンピュータ上にある
8335      すべてのファイルを本当に削除したい場合以外、このオプションの使用は
8336      お勧めできない。 *Note Treating / specially::.
8337
8338 `-r'
8339 `-R'
8340 `--recursive'
8341      コマンドラインにリストされたディレクトリとその中身を再帰的に削除する。
8342
8343 `-v'
8344 `--verbose'
8345      削除を行う前に、各ファイルの名前を表示する。
8346
8347
8348    よくある質問の一つに、名前が `-' で始まるファイルを削除するには、
8349 どうしたらよいか、というものがある。GNU の `rm' では、`getopt' を
8350 使用して引数の解析を行っているあらゆるプログラムと同様、`--' オプション
8351 を使って、以下の引数はすべてオプションではない、と示すことが可能に
8352 なっている。カレントディレクトリにある `-f' というファイルを削除する
8353 には、次のどちらかをタイプすればよい。
8354
8355      rm -- -f
8356
8357 あるいは、
8358
8359      rm ./-f
8360
8361    Unix の `rm' プログラムが、この用途に `-' を 1 個だけ使っていたのは、
8362 getopt の標準シンタックスが開発される以前のことである。
8363
8364    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8365
8366 \1f
8367 File: coreutils-ja.info,  Node: shred invocation,  Prev: rm invocation,  Up: Basic operations
8368
8369 11.6 `shred': セキュリティを向上させたファイルの削除
8370 =======================================================================
8371
8372 `shred' はデバイスやファイルを上書きして、非常に高価な装置を使用
8373 しても、データの復元ができないようにする。
8374
8375    通常、ファイルを削除しても (*note rm invocation::)、データが実際に
8376 消去されるわけではない。単に、ファイルが格納されている場所をリストした
8377 インデックスが破棄されるだけであり、そうすることで、そのデータの
8378 格納場所が再利用可能になるのである。世の中には、インデックスの再構築を
8379 試みる復元ソフト (undelete utilities) というものが存在する。そうした
8380 ものは、ファイルの存在したスペースが再利用されていなければ、ファイルを
8381 復元することができるのだ。
8382
8383    頻繁に使われているシステムで、ディスクがほとんど一杯になっている
8384 場合、スペースは数秒のうちに再利用されるかもしれない。だが、それを
8385 確実に知る方法は全くない。また、他人に見られては困るデータがあった
8386 ところで、見られても構わないデータでそのファイルを上書きしてしまえ
8387 ば、復元は絶対不可能だと考えたいかもしれない。
8388
8389    しかしながら、そういうことをした後でも、ディスクを研究所に持ち
8390 込んで、高感度の (そして高価な) 装置を山ほど使用すれば、上書きされた
8391 データの下にある元のデータのかすかな「痕跡 (echoes)」を検出することが
8392 可能なのだ。もし、データがたった一回しか上書きされていなかったら、
8393 それはさほど難しいことでもない。
8394
8395    データを復元できないように消去する最善の方法は、それが載っている
8396 メディアを酸で破壊するとか、熱で溶かすとかすることである。フロッピー
8397 ディスクのような廉価なリムーバブル・メディアの場合、それがよく使わ
8398 れる方法だ。だが、ハードディスクは高価だし、熱で溶かすのも難しい。
8399 そこで、`shred' ユーティリティは、物質的な破壊以外の方法で、同様の
8400 効果を実現しようとするのである。
8401
8402    そのためには、元のデータに与える損傷を最大にするように選ばれた
8403 データパターンで繰り返し上書きするという方法が採られる。この方法は、
8404 フロッピーディスクにも効果があるものの、パターンはハードディスクで
8405 最も効果を上げるように工夫されたものだ。詳細については、ソースコード
8406 や、第 6 回 USENIX セキュリティ・シンポジウム (San Jose, California,
8407 July 22-25, 1996) の議事録にある Peter Gutmann の次の論文をご覧に
8408 なっていただきたい。
8409 `Secure Deletion of Data from Magnetic and Solid-State Memory'
8410 (http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html)
8411
8412    ここで心に銘記してしていただきたいのは、`shred' には非常に重要な
8413 前提があるということである。すなわち、ファイルシステムはデータを、
8414 それが存在する場所で上書きするものでなければならない。それは、こうした
8415 操作を行うときの伝統的な方法であるが、最近のファイルシステムの設計には、
8416 この前提を満たさないものが多い。そうした例外には、次のようなものがある。
8417
8418    * ログ構造化 (log-structured) ファイルシステムや、ジャーナル化
8419      (journaled) ファイルシステム。たとえば、ATX や Solaris で
8420      提供されているもの。JFS, ReiserFS, XFS, Ext3 (`data=journal'
8421      モードの場合), BFS, NTFS などが、「データ」のジャーナリングを
8422      するように設定されている場合もこれに当たる。
8423
8424    * データを冗長化して書き込んだり、一部の書き込みに失敗することが
8425      あっても、動作し続けるファイルシステム。たとえば、RAID ベースの
8426      ファイルシステム。
8427
8428    * Network Appliance の NFS サーバのように、スナップショットを作成する
8429      ファイルシステム。
8430
8431    * NFS バージョン 3 のクライアントのように、一時領域にキャッシュを作る
8432      ファイルシステム。
8433
8434    * 圧縮ファイルシステム。
8435
8436    特に ext3 ファイルシステムについて言うと、上記の例外に当てはまるのは
8437 (その結果、`shred' が限定された効果しか持たないのは)、`data=journal'
8438 モードの場合だけである。これは、メタデータだけでなく、ファイルデータも
8439 ジャーナリングするモードだ。`data=ordered' (デフォルト) と
8440 `data=writeback' の両モードでは、`shred' は通常どおり役に立つ。ext3 の
8441 ジャーナリング・モードを変更するには、mount のマニュアルに書いてある
8442 ように (man mount)、`/etc/fstab' ファイルで問題のファイルシステムの
8443 マウントオプションに `data=something' オプションを追加すればよい。
8444
8445    ファイルシステムがどういう動作をしているか、よくわからない場合は、
8446 データをそれが存在する場所で上書きしていないと考えておいた方がよい。
8447 すなわち、そのファイルシステムでは、通常ファイルに対する `shred' の
8448 動作は、信頼できないということである。
8449
8450    一般的に言って、`shred' は、ファイルよりデバイスに対して使った方が
8451 信頼できる。そうすれば、上に述べたファイルシステムの設計の問題を回避
8452 できるからだ。しかしながら、`shred' のデバイスに対する使用も、必ずしも
8453 全面的に信頼できるわけではない。たとえば、ほとんどのディスクが、バッド
8454 セクターを使用に割り当てる領域から外して、アプリケーションから見えない
8455 ようにしている。そこで、バッドセクターに他人に見られたくないデータが
8456 ある場合、`shred' はそれを破壊できないことになる。
8457
8458    `shred' は、バックアップに対して何の対処も行おうとしないが、バッド
8459 セクターの問題についても全く同様で、検知しようともしないし、通知しよう
8460 ともしない。それでも、`shred' はファイルに対して行うより、デバイスに
8461 対して行う方が信頼できるので、デフォルトでは、出力ファイルをサイズ 0 に
8462 短縮したり、削除したりしないようになっている。このデフォルトは、ファイル
8463 よりデバイスに適した動作だ。デバイスは一般に短縮できないし、削除するべき
8464 でもないからである。
8465
8466    最後になったが、バックアップやミラーの持つリスクも考慮した方がよい。
8467 削除することのできないファイルのコピーが、ファイルシステムのバックアップ
8468 やリモートのミラーに残っていることもありえる。そして、そうしたものが
8469 残っていれば、`shred' で破壊したファイルを後日復元することが可能に
8470 なるのだ。だから、後で `shred' を使って抹消したくなるようなデータが
8471 ある場合には、そのバックアップやミラーがないことを確認すべきなのである。
8472
8473      shred [OPTION]... FILE[...]
8474
8475    このプログラムでは以下のオプションが使用できる。参照: *note Common
8476 options::.
8477
8478 `-f'
8479 `--force'
8480      必要ならば、ファイルの許可属性を無視して、上書きできるようにする。
8481
8482 `-NUMBER'
8483 `-n NUMBER'
8484 `--iterations=NUMBER'
8485      デフォルトで `shred' は、上書きを 3 回する。時間を節約するために、
8486      回数を減らすこともできるし、その方がよいと思えば、回数を増やすことも
8487      できる。25 回上書きすると、プログラムが内部に持っている上書き用の
8488      パターンのすべてが、少なくとも一回は使われたことになる。
8489
8490 `--random-source=FILE'
8491      上書きに使用するランダムデータのソースとして FILE を使用する。
8492      また、このランダムデータは、上書きパターンの順番を決めるのにも
8493      使用される。
8494
8495 `-s BYTES'
8496 `--size=BYTES'
8497      ファイルの最初の BYTES バイトを shred 処理する。デフォルトは、
8498      ファイル全体の shred である。BYTES の後ろには、その何倍かを示す
8499      ために `K', `M', `G' といった、サイズの指定を付けることができる。
8500      *Note Block size::.
8501
8502 `-u'
8503 `--remove[=HOW]'
8504      shred 処理したファイルを (可能ならば) サイズ 0 に短縮し
8505      (truncate)、その上で削除する。ファイルが複数のリンクを持って
8506      いる場合に、削除されるのは名前を指定されたリンクだけである。
8507      ファイルの名前は、ファイルの内容ほど秘密性を必要としないことも
8508      多い。そうした場合は、HOW パラメータを付けることで、各ディレ
8509      クトリエントリのより効率的な削除法を指定することができる。HOW
8510      パラメータに `unlink' を指定した場合は、お定まりの unlink の
8511      呼び出しをするだけだが、`wipe' を指定すると、unlink する前に
8512      ファイル名を構成するバイトの難読化を行う。`wipesync' を指定した
8513      場合は、ファイル名を難読化するだけでなく、それを 1 バイトづつ
8514      ディスクに sync することまで行う。留意していただきたいのは、
8515      `wipesync' はデフォルトの方法だが、すべてのファイル名のすべての
8516      文字ごとに sync を行うことになるので、負荷が重くなるかもしれない
8517      ということである。ファイル数が多い場合には、無視できない負荷に
8518      なるかもしれない。また、使用しているシステムがメタデータの
8519      同期アップデートを提供している場合には、やらないでもよいこと
8520      かもしれない。(`--remove' に対する HOW パラメータの指定は、
8521      coreutils-8.22 の新機能)
8522
8523 `-v'
8524 `--verbose'
8525      shred 処理が進行する間、更新される進行状態の情報のすべてを
8526      標準エラーに表示する。
8527
8528 `-x'
8529 `--exact'
8530      デフォルトでは、`shred' は、ファイルの最後のブロックを完全に消す
8531      ために、通常ファイルのサイズを、ファイルシステムのブロックサイズの
8532      倍数に切り上げることになっている。この動作を抑制したかったら、
8533      `--exact' オプションを使用すればよい。すなわち、デフォルトでは、 1
8534      ブロック 512 バイトのシステムで 10 バイトの通常ファイルを shred
8535      すると、結果として 512 バイトのファイルが出来上がる。ところが、
8536      このオプションを使えば、shred はファイルの見かけのサイズを増加
8537      させないのである。
8538
8539 `-z'
8540 `--zero'
8541      通常、`shred' は、最後の 1 回でもランダムデータを書き込む。
8542      そんなファイルがハードディスクにあると、(たとえば、暗号化された
8543      データに見えて) 目立ってしまうのではないかと思うのなら、あるいは、
8544      単にそっちの方がもっとすっきりしていると思うのなら、`--zero'
8545      オプションを指定して、もう一回、 すべて 0 ビットで上書きさせれば
8546      よい。これは、`--iterations' オプションで指定した上書き回数の
8547      ほかに、もう一回ということである。
8548
8549
8550    第 1 ドライブのフロッピーディスクに作成したファイルシステムを跡形
8551 もなく消し去るには、次のコマンドを使えばよいだろう。このコマンドで
8552 "1.44MB" (実際には 1440 KiB) のフロッピーを消去するには、約 20 分
8553 かかる。
8554
8555      shred --verbose /dev/fd0
8556
8557    同様に、ハードディスクの選択したパーティションからすべてのデータを
8558 消去するには、以下のコマンドを打ち込めばよい。
8559
8560      shred --verbose /dev/sda5
8561
8562    最近のディスクでは、1 回の書き込みで十分なはずだ。それならば、
8563 書き込みを 3 回行うデフォルトの 3 分の 1 の時間ですむ。
8564
8565      # 擬似ランダムデータを 1 回書き込む。デフォルトより 3 倍速い。
8566      shred --verbose -n1 /dev/sda5
8567
8568    念のため、少なくとも 1 回は擬似ランダムデータで上書きをした方がよい。
8569 言い換えると、つい使いたくなっても、`-n0 --zero' を使ってはいけない。
8570 ディスク・コントローラの中には、すべてが 0 のブロックを書き込む際に、
8571 処理の最適化を行っているものがあり、そのため、ブロック中のバイト
8572 すべてがクリアされない恐れがあるからである。SSD の中には、まさにそう
8573 いうことをするものがある。
8574
8575    `-' という FILE は、標準出力を表している。これの使い道は、削除した
8576 テンポラリ・ファイルを shred することである。たとえば、次のようにだ。
8577
8578      i=$(mktemp)
8579      exec 3<>"$i"
8580      rm -- "$i"
8581      echo "Hello, world" >&3
8582      shred - >&3
8583      exec 3>&-
8584
8585    しかしながら、`shred - >file' というコマンドを使っても、ファイルの
8586 内容を shred することにはならない。なぜなら、シェルは `shred' を呼び
8587 出す前に、ファイルをサイズ 0 に短縮 (truncate) してしまうからである。
8588 `shred file'、あるいは (Bourne 互換シェルをお使いなら) `shred - 1<>file'
8589 というコマンドを、代わりに使った方がよい。
8590
8591    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8592
8593 \1f
8594 File: coreutils-ja.info,  Node: Special file types,  Next: Changing file attributes,  Prev: Basic operations,  Up: Top
8595
8596 12 特殊なファイル型
8597 ***************************
8598
8599 この章では、特殊なタイプのファイルを作成するコマンドの説明を行う
8600 (さらに `rmdir' の説明もするが、これはディレクトリという特殊な
8601 ファイル型の一つを削除するコマンドである)。
8602
8603    Unix 系統のオペレーティング・システムでは、ほかのオペレーティング・
8604 システムと比べて、特殊なファイル型というものが著しく少ないが、それでも
8605 普通のファイル ("normal files") がそうであるような、のっぺらぼうなバイト
8606 ストリームとして、何でもかんでも扱えさえすればよいというものではない。
8607 たとえば、ファイルを作成したり、削除したりするとき、システムはその情報
8608 を記録しなければならないが、それはディレクトリ ("directory") -- これも
8609 特殊なタイプのファイルである -- に書き込まれる。もし興味があれば、
8610 ディレクトリを普通のファイルのように読むこともできるが、システムが
8611 システムとしての役割を果たすためには、ディレクトリはそのファイル内容
8612 であるバイトに、構造というか、何らかの秩序を持っていなければならない。
8613 そういう意味で、ディレクトリは、「特殊な」タイプのファイルなのである。
8614
8615    ディレクトリ以外の特殊なファイル型としては、名前付きパイプ (FIFO)、
8616 シンボリックリンク、ソケット、それに、いわゆるスペシャルファイル
8617 ("special files") がある。
8618
8619 * Menu:
8620
8621 * link invocation::     システムコール link を使って、ハードリンクを作成する。
8622 * ln invocation::       ファイル間のリンクを作成する。
8623 * mkdir invocation::    ディレクトリを作成する。
8624 * mkfifo invocation::   FIFO (名前付きパイプ) を作成する。
8625 * mknod invocation::    ブロック型やキャラクタ型のスペシャルファイルを作成する。
8626 * readlink invocation:: シムリンクの値、または正規化されたファイル名を表示する。
8627 * rmdir invocation::    空のディレクトリを削除する。
8628 * unlink invocation::   システムコール unlink を使って、ファイルを削除する。
8629
8630 \1f
8631 File: coreutils-ja.info,  Node: link invocation,  Next: ln invocation,  Up: Special file types
8632
8633 12.1 `link': システムコール link を使って、ハードリンクを作成する
8634 ========================================================================================
8635
8636 `link' は、一度に 1 個のハードリンクを作成する。これは、システムが
8637 提供する `link' 関数への必要最小のインターフェースである。 *Note Hard
8638 Links: (libc)Hard Links.  従って、より一般に使われる `ln' コマンドの
8639 ような、様々な付加機能をあえて備えていない (*note ln invocation::)。
8640
8641    書式:
8642
8643      link FILENAME LINKNAME
8644
8645    FILENAME は、実在するファイルを指していなければならない。また、
8646 LINKNAME は、実在するディレクトリ中の実在しないファイルを指していな
8647 ければならない。`link' は、リンクを作成するために、`link (FILENAME,
8648 LINKNAME)' をコールするだけである。
8649
8650    GNU のシステムでは、このコマンドは、`ln --directory
8651 --no-target-directory FILENAME LINKNAME' と同様に振る舞う。しかし、
8652 `--directory' や `--no-target-directory' は、POSIX の規格にあるオプ
8653 ションではないので、`link' の方が、実用上より可搬性がある。
8654
8655    FILENAME がシンボリックリンクの場合、LINKNAME がシンボリックリンク
8656 へのハードリンクになるか、シンボリックリンクの参照先へのハードリンクに
8657 なるかは、規定されていない。望む方の動作をはっきり指定するには、`ln -P'
8658 や `ln -L' を使用するべきである。
8659
8660    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8661
8662 \1f
8663 File: coreutils-ja.info,  Node: ln invocation,  Next: mkdir invocation,  Prev: link invocation,  Up: Special file types
8664
8665 12.2 `ln': ファイル間のリンクを作成する
8666 =====================================================
8667
8668 `ln' はファイル間のリンクを作成する。デフォルトではハードリンクを作成
8669 するが、`-s' オプションを指定すると、シンボリックリンク ("soft" link
8670 とも言う) を作ることになる。
8671
8672    書式:
8673
8674      ln [OPTION]... [-T] TARGET LINKNAME
8675      ln [OPTION]... TARGET
8676      ln [OPTION]... TARGET... DIRECTORY
8677      ln [OPTION]... -t DIRECTORY TARGET...
8678
8679    * ファイル名を二つ指定すると、`ln' は 1 番目に対するリンクを 2 番目
8680      の名前で作成する。
8681
8682    * TARGET のみを指定すると、`ln' はそのファイルに対するリンクを
8683      カレントディレクトリに作成する。
8684
8685    * `--target-directory' (`-t') オプションを指定した場合や、あるいは
8686      それを指定しないでも、最後のファイルがディレクトリであり、しかも
8687      `--no-target-directory' (`-T') オプションを指定していない場合は、
8688      `ln' は各 TARGET ファイルに対するリンクを、指定されたディレクトリに
8689      TARGET の名前で作成する。
8690
8691
8692    通常 `ln' は存在するファイルを削除しない。既存のファイルを無条件で
8693 削除するには、`--force' (`-f') オプションを使う。また、ユーザに問い
8694 合わせた上で削除するには、`--interactive' (`-i') オプションを使う。
8695 既存のファイルを、名前を変更して残すには、`--backup' (`-b') オプション
8696 を使用する。(訳注: ここで述べているのは、存在するファイルの名前を
8697 リンクファイル名として使う場合の話である。)
8698
8699    ハードリンク ("hard link") というのは、存在するファイルが持つ別の名前
8700 である。だから、リンクとオリジナルは、区別ができない。専門的な言い方を
8701 すると、両者は同じ inode を共有するものである。inode には、ファイルに
8702 関する情報がすべて含まれているので、全くのところ、inode こそファイルで
8703 あると言っても、過言ではないほどだ。たいていのシステムでは、ディレクトリ
8704 に対するハードリンクの作成は禁じられている。許可されているシステムでも、
8705 それができるのは、スーパーユーザだけである (その場合でも、ファイル
8706 システムにループが生じると、ほかの様々なユーティリティ・プログラムで
8707 問題が起きるので、慎重にやらなければならない)。なお、ハードリンクは、
8708 ファイルシステムの境界を越えることができない。(もっとも、ハードリンクに
8709 対するこうした制限は、POSIX で規定されているわけではない。)
8710
8711    それに対して、シンボリックリンク ("symbolic link"、略称はシムリンク
8712 "symlink") は、特殊なファイル型の一つである (すべてのカーネルがサポート
8713 しているわけではない。たとえば、System V release 3 やそれ以前の
8714 システムにはシムリンクが存在しない)。このファイル型では、リンク
8715 ファイルは、実際には別のファイルを、名前を使って参照している。
8716 ほとんどのファイル操作では (ファイルのオープン、読み込み、書き出し
8717 など)、シンボリックリンク・ファイルが渡されると、カーネルが自動的に
8718 リンクの参照を読み解いて ("dereference")、リンクの参照先を操作の
8719 対象にする。ただし、操作によっては (たとえば、ファイルの削除)、
8720 参照先ではなく、リンクファイルそのものを対象にするものもある。
8721 シムリンクの所有者やグループは、リンクを通して行われるファイルアクセス
8722 に対して意味を持たないが、削除制限ビットが立っているディレクトリから
8723 シンボリックリンクを削除する際には、かかわりを持ってくる。GNU の
8724 システムでは、シムリンクのモードには意味がなく、変更することもでき
8725 ない。だが、BSD システムの中には、モードが変更でき、ファイル名の解決に
8726 おいてシムリンクをたどるかどうかに影響するものもある。 *Note Symbolic
8727 Links: (libc)Symbolic Links.
8728
8729    シンボリックリンクの中身には、どんな文字列が含まれていてもよい。
8730 シンボリックリンクに含まれる文字列が、実在するファイルの名前になって
8731 いないときは、リンク切れ ("dangling symlink") が生ずる。リンク切れの
8732 シンボリックリンクを作成することは、禁止されているわけではない。
8733 シムリンクの作成に絶対パスを使うか、相対パスを使うかには、それぞれ
8734 一長一短がある。絶対パスのシムリンクは、リンクファイルの存在する
8735 ディレクトリが移動しても、常に同じファイルを指す。もっとも、その
8736 シムリンクが複数のマシンから見えるような場合には (たとえば、ネット
8737 ワークでつながったファイルシステムにあるような場合には)、リンクが
8738 指しているファイルは、必ずしも同じではないかもしれない。相対パスの
8739 シンボリックリンクの方は、それが存在しているディレクトリからの相対パス
8740 で参照先が決まる。そこで、リンクファイルがネットワークでつながっている
8741 マシンからアクセスされることがある場合に、リンクと同じデバイス上に
8742 存在するファイルを、そのデバイスのマウントポイントが何という名前かを
8743 気にせずに指示することができて、便利であることが多い。
8744
8745    相対パスのシムリンクをカレントディレクトリ以外の場所に作成すると、
8746 そのシムリンクが実際に指しているファイルは、同じ文字列がカレント
8747 ディレクトリを基点として指しているファイルとは別のものになる。
8748 そのため、ユーザの多くが、まずカレントディレクトリを変更して、相対
8749 パスのシムリンクを作成する場所へ移動することを好んでいる。そうすれば、
8750 タブ補完などのファイル名参照方法を用いて、シムリンクに格納する参照先の
8751 適切な相対パスを見つけることができるからである。
8752
8753    このプログラムでは以下のオプションが使用できる。参照: *note Common
8754 options::.
8755
8756 `-b'
8757 `--backup[=METHOD]'
8758      *Note Backup options::.  そのままでは、上書きされるか、消去されて
8759      しまう各ファイルのバックアップを作成する。
8760
8761 `-d'
8762 `-F'
8763 `--directory'
8764      ユーザが適切な権限を持っていれば、ディレクトリに対するハードリンク
8765      を作成しようとしても許可する。とは言え、たぶんシステムによって禁止
8766      されているので、たとえスパーユーザでも作成に失敗するだろう。
8767
8768 `-f'
8769 `--force'
8770      リンクの作成先に、作成するリンクファイルと同名のファイルがすでに
8771      存在していたら、それを削除する。
8772
8773 `-i'
8774 `--interactive'
8775      リンクの作成先に、作成するリンクファイルと同名のファイルがすでに
8776      存在していたら、削除するかどうか、ユーザに問い合わせる。
8777
8778 `-L'
8779 `--logical'
8780      `-s' オプションが有効になっていないとき、リンク対象として指定
8781      されたファイル (訳注: 上記書式の TARGET) がシンボリックリンク
8782      ならば、シンボリックリンクそのものではなく、シンボリックリンクが
8783      参照しているファイルへのハードリンクを作成する。
8784
8785 `-n'
8786 `--no-dereference'
8787      最後のオペランドがディレクトリに対するシンボリックリンクである
8788      とき、それをディレクトリとして特別扱いしない (訳注: すなわち、
8789      ディレクトリ内に TARGET と同名でリンクを作ることはしない)。
8790      むしろ、普通のファイルであるかのように扱う。
8791
8792      リンクの作成先として指定されたのが (ディレクトリに対するシムリンク
8793      ではなく) 本物のディレクトリならば、曖昧なところは全くない。その
8794      ディレクトリ内にリンクを作るだけの話だ。ところが、指定された作成先
8795      が、ディレクトリに対するシムリンクの場合は、ユーザの要求を処理する
8796      のに、二つの行き方がある。`ln' は、通常のディレクトリを扱う場合と
8797      全く同じように作成先を扱って、そこにリンクを作成することができる。
8798      あるいは、作成先をディレクトリではないもの、すなわち、他ならぬシム
8799      リンクと見なすことも可能だ。後者の場合、`ln' は、新しいリンクを
8800      作成する前に、そのシムリンクを消去するなり、バックアップするなり
8801      しなければならない。`ln' のデフォルトは、作成先がディレクトリに
8802      対するシムリンクであっても、ディレクトリと全く同様に扱うことである。
8803
8804      このオプションは、`--no-target-directory' (`-T') の弱いバージョン
8805      である。従って、両方のオプションを指定した場合、こちらは効果がない。
8806
8807 `-P'
8808 `--physical'
8809      `-s' オプションが有効になっていないとき、リンク対象として指定
8810      されたファイル (訳注: 上記書式の TARGET) がシンボリックリンク
8811      ならば、シンボリックリンクそのものへのハードリンクを作成する。
8812      そういった動作をカーネルがサポートしていないプラットホームでは、
8813      このオプションを指定すると、リンク対象のシンボリックリンクと全く
8814      同じ内容を持つシンボリックリンクが作成される。このとき、シンボ
8815      リックリンクの内容に手が加えられることは決してないので、どちらの
8816      シンボリックリンクを使って行われるファイル名の解決も、シンボリック
8817      リンクへのハードリンクが作成された場合と結局同じになる。
8818
8819 `-r'
8820 `--relative'
8821      リンクファイルを置く場所を基点とする相対パスのシンボリックリンクを
8822      作成する。
8823
8824      用例:
8825
8826           ln -srv /a/file /tmp
8827           '/tmp/file' -> '../a/file'
8828
8829      相対パスのシンボリックリンクは、それを置くディレクトリと参照先の
8830      ファイル名を正規化した上で、それに基づいて作成される。すなわち、
8831      そうしたファイル名中にあるすべてのシンボリックリンクは、実体に
8832      還元されることになるわけだ。なお、`realpath' コマンドを使用すれば、
8833      以下の例に示すように、相対パスを生成する際にもっと融通が利く
8834      (訳注: たとえば、`realpath' を使うと、ファイル名中のシンボリック
8835      リンクをシンボリックリンクのままにしておくこともできる)。 *Note
8836      realpath invocation::.
8837
8838           ln--relative() {
8839             test "$1" = --no-symlinks && { nosym=$1; shift; }
8840             target="$1";
8841             test -d "$2" && link="$2/." || link="$2"
8842             rtarget="$(realpath $nosym -m "$target" \
8843                         --relative-to "$(dirname "$link")")"
8844             ln -s -v "$rtarget" "$link"
8845           }
8846
8847 `-s'
8848 `--symbolic'
8849      ハードリンクではなく、シンボリックリンクを作る。このオプションは、
8850      シンボリックリンクをサポートしていないシステムでは、エラー・
8851      メッセージを表示するだけである。
8852
8853 `-S SUFFIX'
8854 `--suffix=SUFFIX'
8855      `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
8856      付ける。 *Note Backup options::.
8857
8858 `-t DIRECTORY'
8859 `--target-directory=DIRECTORY'
8860      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8861      directory::.
8862
8863 `-T'
8864 `--no-target-directory'
8865      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8866      でも、それを特別扱いしない。 *Note Target directory::.
8867
8868 `-v'
8869 `--verbose'
8870      リンクの作成に成功した後で、各ファイルの名前を表示する。
8871
8872
8873    `-L' と `-P' の両方を指定すると、最後に指定したものが効果を持つ。
8874 さらに `-s' も指定した場合は、エラーや警告は出ないが、`-L' や `-P' は
8875 無視される。`-L' と `-P' のどちらのオプションも指定しない場合、`ln' の
8876 この実装では、システムの `link' 関数がシンボリックリンクに対するハード
8877 リンクをサポートしていれば (たとえば、GNU のシステム)、デフォルトの
8878 動作は `-P' になる。`link' 関数がシンボリックリンクをたどるものならば
8879 (たとえば、BSD)、デフォルトの動作は `-L' である。
8880
8881    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8882
8883    用例:
8884
8885      悪い例:
8886
8887      # カレントディレクトリにあるファイル a を指す ../a というリンクを
8888      # 作成する。実のところ役に立たない。../a が自分自身を指すリンクに
8889      # なってしまうからだ。
8890      ln -s a ..
8891
8892      よりよい例:
8893
8894      # 頭がこんがらかってしまわないように、シムリンクを作成する前に、
8895      # リンクを作るディレクトリに移動する。
8896      cd ..
8897      ln -s adir/a .
8898
8899      悪い例:
8900
8901      # 絶対パスによるリンク対象の指定は、リンク対象の位置が変わると、
8902      # 役に立たない。
8903      ln -s $(pwd)/a /some/dir/
8904
8905      よりよい例:
8906
8907      # 相対パスによるリンク対象の指定は、リンクやその対象を含む
8908      # ディレクトリが移動しても、両者の相対的な位置関係が変わらない
8909      # かぎり、問題がない。また、ネットワークでつながったファイル
8910      # システム間でも通用する。
8911      ln -s afile anotherfile
8912      ln -s ../adir/afile yetanotherfile
8913
8914 \1f
8915 File: coreutils-ja.info,  Node: mkdir invocation,  Next: mkfifo invocation,  Prev: ln invocation,  Up: Special file types
8916
8917 12.3 `mkdir': ディレクトリを作成する
8918 ===============================================
8919
8920 `mkdir' は、指定された名前でディレクトリを作成する。
8921
8922    書式:
8923
8924      mkdir [OPTION]... NAME...
8925
8926    `mkdir' は、NAME で指定された各ディレクトリを、指定された順番で
8927 作成する。NAME がすでに存在していると、エラーになり、その旨メッセージ
8928 を出すが、NAME がすでに存在していても、`-p' オプションが指定され、NAME
8929 がディレクトリの場合は、エラーにならない。
8930
8931    このプログラムでは以下のオプションが使用できる。参照: *note Common
8932 options::.
8933
8934 `-m MODE'
8935 `--mode=MODE'
8936      作成するディレクトリの許可属性ビットを MODE に設定する。MODE には
8937      `chmod' と同じ書式を使用し、`a=rwx' (すべてのユーザに、読み、書き、
8938      実行を許可する) を基点とする。*Note File permissions::.
8939
8940      通常、ディレクトリには、作成された時点で、要求したとおりのファイル
8941      モードビットが付く。GNU の拡張として、MODE で特殊モードビットも指定
8942      できるが、その場合は、ディレクトリは存在しているが、特殊モードビット
8943      は要求どおりではないという、時間の隙間が生じるかもしれない。ディレ
8944      クトリの set-user-ID ビットと set-group-ID ビットが、このオプション
8945      を使って変更しない場合にどのように継承されるかについては、次の節を
8946      参照していただきたい。*Note Directory Setuid and Setgid::.
8947
8948 `-p'
8949 `--parents'
8950      各引数について、存在していない親ディレクトリがあれば、それを作成し、
8951      その許可属性ビットを umask を基にして `u+wx' になるように設定する。
8952      親ディレクトリがすでに存在している場合は、このオプションは何もせず、
8953      その許可属性ビットを変更することもない。
8954
8955      新たに作成するいかなる親ディレクトリの許可属性ビットも、`u+wx'
8956      を含むある一定の値に設定するには、`mkdir' を実行する前に、umask
8957      を設定すればよい。たとえば、`(umask u=rwx,go=rx; mkdir -p P/Q)'
8958      というシェルコマンドで `P' という親ディレクトリを作れば、その
8959      許可属性ビットは `u=rwx,go=rx' になる。また、親ディレクトリに特殊
8960      モードビットも設定するには、`chmod' を `mkdir' の後で実行すれば
8961      よい。新たに作成される親ディレクトリの set-user-ID ビットと
8962      set-group-ID ビットがどのように継承されるかについては、次の節を
8963      参照していただきたい。 *Note Directory Setuid and Setgid::.
8964
8965 `-v'
8966 `--verbose'
8967      ディレクトリを作成するごとに、メッセージを表示する。`--parents'
8968      と併せて使うと、大変便利である。
8969
8970 `-Z'
8971 `--context[=CONTEXT]'
8972      CONTEXT が指定されていない場合は、出力するファイルの SELinux
8973      セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
8974      のタイプによって調整する。これは、`restorecon' コマンドの動作に
8975      似ている。このオプションの長い形式を使って、コンテキストを明示的に
8976      指定した場合、そのコンテキストが設定されるのは、新しく作成される
8977      ファイルに対してのみである。コンテキストを指定した場合に、SELinux
8978      が無効になっていると、警告メッセージを出す。 (CONTEXT を省略できる
8979      のは、coreutils-8.22 から)
8980
8981
8982    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8983
8984 \1f
8985 File: coreutils-ja.info,  Node: mkfifo invocation,  Next: mknod invocation,  Prev: mkdir invocation,  Up: Special file types
8986
8987 12.4 `mkfifo': FIFO (名前付きパイプ) を作成する
8988 ===========================================================
8989
8990 `mkfifo' は、指定された名前で FIFO (名前付きパイプ "named pipes"
8991 とも言う) を作成する。
8992
8993    書式:
8994
8995      mkfifo [OPTION] NAME...
8996
8997    "FIFO" は特殊なファイル型の一つであり、これを利用すると、独立した
8998 プロセスの間でデータのやりとりが可能になる。片方のプロセスが FIFO を
8999 書き出し用にオープンし、もう一方のプロセスが読み込み用にオープンする。
9000 そうすると、シェルなどにある普通の名前のない (anonymous) パイプを
9001 使ったときのように、データを一方から他方へ流すことができるのである。
9002
9003    このプログラムでは、以下のオプションが使える。参照: *note Common
9004 options::.
9005
9006 `-m MODE'
9007 `--mode=MODE'
9008      作成する FIFO の許可属性を MODE にする。MODE は `chmod' で
9009      使用するのと同じシンボル表記であり、`a=rw' (すべてのユーザに、
9010      読み、書きを許可する) を基点として使う。MODE で指定するのは、
9011      ファイルの許可属性ビットのみにするべきである。 *Note File
9012      permissions::.
9013
9014 `-Z'
9015 `--context[=CONTEXT]'
9016      CONTEXT が指定されていない場合は、出力するファイルの SELinux
9017      セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
9018      のタイプによって調整する。これは、`restorecon' コマンドの動作に
9019      似ている。このオプションの長い形式を使って、コンテキストを明示的に
9020      指定した場合、そのコンテキストが設定されるのは、新しく作成される
9021      ファイルに対してのみである。コンテキストを指定した場合に、SELinux
9022      が無効になっていると、警告メッセージを出す。 (CONTEXT を省略できる
9023      のは、coreutils-8.22 から)
9024
9025
9026    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9027
9028 \1f
9029 File: coreutils-ja.info,  Node: mknod invocation,  Next: readlink invocation,  Prev: mkfifo invocation,  Up: Special file types
9030
9031 12.5 `mknod': ブロック型やキャラクタ型のスペシャルファイルを作成する。
9032 ==================================================================================================
9033
9034 `mknod' は、指定された名前で FIFO、キャラクター・スペシャルファイル、
9035 ブロック・スペシャルファイルを作成する。
9036
9037    書式:
9038
9039      mknod [OPTION]... NAME TYPE [MAJOR MINOR]
9040
9041    これまでに使ってきた「特殊なファイル型 ("special file type"」
9042 という言い回しとは違って、「スペシャルファイル ("special file")」
9043 という用語には、Unix では技術的な意味が存在する。すなわち、それは、
9044 データを生成したり、受け取ったりできるもののことである。たいていの
9045 場合、それはハードウェアという物理的なものを指し、たとえば、プリンタ
9046 やディスクがそれに当たる。(なお、そうしたスペシャルファイルは、通常、
9047 システムの設定時に作られる。) `mknod' は、このタイプのファイルを
9048 作成するコマンドである。そうしたデバイスには、そこから一度に 1 文字 (a
9049 character) づつしか読むことのできないものもあれば、一度に 1 ブロックを
9050 (すなわち、たくさんの character を) 読み込むことのできるものもある。
9051 それ故、スペシャルファイルには、ブロック・スペシャルファイル ("block
9052 special" files) とキャラクタ・スペシャルファイル ("character special"
9053 files) があると言われるのである。
9054
9055    シェルの組み込み機能の `mknod' やエイリアスのために、`mknod' に何の
9056 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
9057 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
9058 避けるためには、`env' 経由で `mknod' を起動すればよい (すなわち、 `env
9059 mknod ...' のようにだ)。
9060
9061    NAME に続く引数では、作成するファイルのタイプを指定する。
9062
9063 `p'
9064      FIFO を作成する
9065
9066 `b'
9067      ブロック・スペシャルファイルを作成する
9068
9069 `c'
9070      キャラクタ・スペシャルファイルを作成する
9071
9072
9073    ブロック型やキャラクタ型のスペシャルファイルを作成する際には、
9074 ファイルタイプに続いて、メージャー・デバイス番号とマイナー・デバイス
9075 番号を指定する必要がある。メージャーやマイナーのデバイス番号が `0x' や
9076 `0X' で始まっていれば、番号は 16 進数と見なされる。`0' で始まっていれば
9077 8 進数、それ以外の場合は 10 進数である。
9078
9079    このプログラムでは、以下のオプションが使える。参照: *note Common
9080 options::.
9081
9082 `-m MODE'
9083 `--mode=MODE'
9084      作成するファイルの許可属性を MODE にする。MODE は `chmod' で
9085      使用するのと同じシンボル表記であり、`a=rw' を基点として使う。 MODE
9086      で指定するのは、ファイルの許可属性ビットのみにするべきである。
9087      *Note File permissions::.
9088
9089 `-Z'
9090 `--context[=CONTEXT]'
9091      CONTEXT が指定されていない場合は、出力するファイルの SELinux
9092      セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
9093      のタイプによって調整する。これは、`restorecon' コマンドの動作に
9094      似ている。このオプションの長い形式を使って、コンテキストを明示的に
9095      指定した場合、そのコンテキストが設定されるのは、新しく作成される
9096      ファイルに対してのみである。コンテキストを指定した場合に、SELinux
9097      が無効になっていると、警告メッセージを出す。 (CONTEXT を省略できる
9098      のは、coreutils-8.22 から)
9099
9100
9101    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9102
9103 \1f
9104 File: coreutils-ja.info,  Node: readlink invocation,  Next: rmdir invocation,  Prev: mknod invocation,  Up: Special file types
9105
9106 12.6 `readlink': シムリンクの値、または正規化されたファイル名を表示する
9107 ==================================================================================================
9108
9109 `readlink' には、二つの動作モードがある。
9110
9111 `Readlink モード'
9112      このモードでは、`readlink' は、指定されたシンボリックリンクの値を
9113      表示する。引数がシンボリックの名前以外だったときは、何も出力せず、
9114      0 以外の終了コードで終了する。
9115
9116 `Canonicalize (正規化) モード'
9117      このモードでは、`readlink' は、指定されたファイルの絶対パスによる
9118      名前を表示する。その絶対パスには、`.' や `..' といった構成要素や
9119      重複するパスの区切り (`/')、シンボリックリンクは含まれない。
9120
9121
9122      readlink [OPTION]... FILE...
9123
9124    デフォルトでは、`readlink' は readlink モードで動作する。
9125
9126    このプログラムでは以下のオプションが使用できる。参照: *note Common
9127 options::.
9128
9129 `-f'
9130 `--canonicalize'
9131      canonicalize モードで動かす。ファイル名を構成する要素のうち、最後の
9132      要素以外のどれかが、存在しなかったり、利用できなかったりすると、
9133      `readlink' は何も出力せず、0 以外の終了コードで終了する。引数の
9134      末尾のスラッシュは無視される。
9135
9136 `-e'
9137 `--canonicalize-existing'
9138      canonicalize モードで動かす。ファイル名を構成する要素に、存在しな
9139      かったり、利用できなかったりするものが一つでもあれば、`readlink' は
9140      何も出力せず、 0 以外の終了コードで終了する。ファイル名のの末尾に
9141      スラッシュを付けると、その名前はディレクトリであるという指定になる。
9142
9143 `-m'
9144 `--canonicalize-missing'
9145      canonicalize モードで動かす。ファイル名を構成する要素に、存在しな
9146      かったり、利用できなかったりするものがあれば、`readlink' はそれを
9147      ディレクトリと見なす。
9148
9149 `-n'
9150 `--no-newline'
9151      FILE が 1 個しか指定されなかったときは、ファイル名同士を区切る
9152      デリミタを出力しない。複数の FILE とともに、このオプションが
9153      指定されたときは、 警告メッセージを出す。
9154
9155 `-s'
9156 `-q'
9157 `--silent'
9158 `--quiet'
9159      ほとんどのエラーメッセージを出さないようにする。
9160
9161 `-v'
9162 `--verbose'
9163      エラーメッセージを表示する。
9164
9165 `-z'
9166 `--zero'
9167      出力する項目を NUL 文字で区切る。
9168
9169
9170    `readlink' ユーティリティが初めて登場したのは、OpenBSD 2.1. だった。
9171
9172    `realpath' コマンドをオプションなしで使うと、canonicalize モードの
9173 `readlink' と同じ動作をする。
9174
9175    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9176
9177 \1f
9178 File: coreutils-ja.info,  Node: rmdir invocation,  Next: unlink invocation,  Prev: readlink invocation,  Up: Special file types
9179
9180 12.7 `rmdir': 空のディレクトリを削除する
9181 =====================================================
9182
9183 `rmdir' は、空のディレクトリを削除する。
9184
9185    書式:
9186
9187      rmdir [OPTION]... DIRECTORY...
9188
9189    引数 DIRECTORY が実在する空のディレクトリを指していない場合、
9190 エラーになる。
9191
9192    このプログラムでは以下のオプションが使用できる。参照: *note Common
9193 options::.
9194
9195 `--ignore-fail-on-non-empty'
9196      ディレクトリの削除に失敗しても、その理由が単にディレクトリが空では
9197      ないせいならば、その失敗を無視する。
9198
9199 `-p'
9200 `--parents'
9201      DIRECTORY を削除するとき、DIRECTORY を構成する各要素の削除を
9202      試みる。そこで、たとえば、`rmdir -p a/b/c' は、`rmdir a/b/c a/b a'
9203      と同じになる。従って、そうしたディレクトリのどれかが空ではないこと
9204      が判明すると、動作に失敗する。動作に失敗しても、エラーメッセージを
9205      出して失敗のステータスで終了しないようにするには、
9206      `--ignore-fail-on-non-empty' オプションを使えばよい。
9207
9208 `-v'
9209 `--verbose'
9210      DIRECTORY の削除に成功するごとに、その旨メッセージを出す。
9211
9212
9213    空ではないディレクトリを (再帰的に) 削除する方法については、`rm'
9214 コマンドの説明を参照していただきたい。*Note rm invocation::.
9215
9216    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9217
9218 \1f
9219 File: coreutils-ja.info,  Node: unlink invocation,  Prev: rmdir invocation,  Up: Special file types
9220
9221 12.8 `unlink': システムコール unlink を使って、ファイルを削除する
9222 ======================================================================================
9223
9224 `unlink' は、指定された 1 個のファイル名の削除を行う。これは、
9225 システムが提供する `unlink' 関数への必要最小のインターフェース
9226 である。*Note Deleting Files: (libc)Deleting Files.
9227 従って、より一般に使われる `rm' コマンドのような、様々な付加機能を
9228 あえて備えていない (*note rm invocation::)。
9229
9230    書式:
9231
9232      unlink FILENAME
9233
9234    システムによっては、`unlink' を使って、ディレクトリの名前を削除
9235 できるものもある。また、それができるのは、特権を持ったユーザだけである
9236 システムもある。GNU のシステムでは、`unlink' は、ディレクトリの名前を
9237 全く削除できない。
9238
9239    `unlink' コマンドは、`--help' と `--version' オプションを認識する。
9240 名前が `-' で始まるファイルを削除するには、名前の前に `./' を付ければ
9241 よい。たとえば、`unlink ./--help' のようにだ。
9242
9243    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9244
9245 \1f
9246 File: coreutils-ja.info,  Node: Changing file attributes,  Next: Disk usage,  Prev: Special file types,  Up: Top
9247
9248 13 ファイルの属性変更
9249 ******************************
9250
9251 ファイルについては、内容と名前とファイル型 (*note Special file types::)
9252 で、すべてが尽くされるわけではない。ファイルには、他の情報も存在する。
9253 たとえば、所有者 (ユーザ ID)、グループ (グループ ID)、アクセス権
9254 (そのファイルに対して、所有者、グループに属するユーザ、それ以外の
9255 一般ユーザは、それぞれ何ができるのか)、様々なタイムスタンプ、といった
9256 情報も存在するのである。そうしたものは、一まとめにして、ファイルの属性
9257 ("attributes") と呼ばれている。
9258
9259    以下のコマンドは、ファイルの属性を変更する。
9260
9261 * Menu:
9262
9263 * chown invocation::         ファイルの所有者やグループを変更する。
9264 * chgrp invocation::         ファイルのグループを変更する。
9265 * chmod invocation::         アクセス権を変更する。
9266 * touch invocation::         ファイルのタイムスタンプを変更する。
9267
9268 \1f
9269 File: coreutils-ja.info,  Node: chown invocation,  Next: chgrp invocation,  Up: Changing file attributes
9270
9271 13.1 `chown': ファイルの所有者やグループを変更する
9272 ====================================================================
9273
9274 `chown' は、指定された各 FILE の所有者や所有グループを NEW-OWNER に
9275 変更する。所有者とグループを、存在する参照用ファイル (reference file)
9276 のそれと同じものに変更することもできる。
9277
9278    書式:
9279
9280      chown [OPTION]... {NEW-OWNER | --reference=REF_FILE} FILE...
9281
9282    NEW-OWNER では、新しい所有者やグループを以下のような形で指定する
9283 (`:' の前後に空白を入れてはいけない)。
9284
9285      [OWNER] [ : [GROUP] ]
9286
9287    細かく説明しよう。
9288
9289 OWNER
9290      OWNER (ユーザ名、またはユーザ ID 番号) だけが指定されている場合は、
9291      そのユーザが指定された各ファイルの所有者になる。ファイルの
9292      グループは変化しない。
9293
9294 OWNER`:'GROUP
9295      OWNER の後に、コロンと GROUP (グループ名、またはグループ ID 番号)
9296      が、間に空白をはさまずに続く場合は、ファイルの所有グループも
9297      (GROUP に) 変更される。
9298
9299 OWNER`:'
9300      OWNER の後ろにコロンがあるのみで、グループ名が続かない場合は、
9301      そのユーザがファイルの所有者になり、ファイルのグループは、OWNER
9302      のログイン・グループに変更される。
9303
9304 `:'GROUP
9305      コロンとそれに続く GROUP のみが指定され、所有者が省略されている
9306      場合は、ファイルのグループだけが変更される。この場合、`chown'
9307      は、`chgrp' と同じ動作をするわけだ。
9308
9309 `:'
9310      コロンのみが指定されている場合や、NEW-OWNER に何も指定されていない
9311      場合は、所有者もグループも変更されない。
9312
9313
9314    OWNER や GROUP にユーザ ID 番号やグループ ID 番号を使用する場合は、
9315 番号の頭に `+' を付ければ、ID 番号だと明示することができる。 *Note
9316 Disambiguating names and IDs::.
9317
9318    古めのスクリプトの中には、区切りの印として `:' ではなく、`.' を
9319 今だに使っているものがあるかもしれない。POSIX 1003.1-2001 (*note
9320 Standards conformance::) では、これに対するサポートを要求していないが、
9321 後方互換のために、GNU の `chown' では、曖昧さが生じないかぎり、`.' の
9322 使用をサポートしている。とは言え、新しく書くスクリプトでは、`.' の
9323 使用を避けるべきである。他のシステムでも使えるとはかぎらないし、また、
9324 OWNER`.'GROUP という全体が、名前に `.' を含むユーザを指していたり
9325 すると、不都合が生じるからだ。
9326
9327    `chown' コマンドを実行すると、set-user-ID ビットや set-group-ID
9328 ビットが消えてしまうことがある。そうしたことが起きるかどうかは、
9329 裏で動いている `chown' システムコールのポリシーや機能次第であり、
9330 従って、システムによるファイルモードの変更が、`chown' コマンドの
9331 コントロール外になることがあるのだ。しかるべき特権を持ったユーザが
9332 実行した場合や、問題のビットが実行権とは関係のない何か別の機能
9333 (たとえば、強制ロック) を表している場合などでは、`chown' コマンド
9334 を実行しても、そうしたビットが変わらないかもしれない。どうなるか
9335 よくわからない場合は、裏で動いているシステムの動作を調べるとよい。
9336
9337    このプログラムでは以下のオプションが使用できる。参照: *note Common
9338 options::.
9339
9340 `-c'
9341 `--changes'
9342      所有者の変更が実際に行われた各 FILE について、何を実行したかを
9343      詳しく表示する。
9344
9345 `-f'
9346 `--silent'
9347 `--quiet'
9348      所有者を変更できないファイルがあっても、エラーメッセージを出さない。
9349
9350 `--from=OLD-OWNER'
9351      FILE が OLD-OWNER で指定された属性を現在持っているときにのみ、
9352      その所有者を変更する。OLD-OWNER の書式は、上記の NEW-OWNER と同じ
9353      である。このオプションは、ファイルの不正使用が可能になる時間を
9354      大幅に狭めるという点で、主としてセキュリティの見地から役に立つ。
9355      一例を挙げると、この種のオプションを使わない場合、ユーザの ID
9356      番号の変更を、そのユーザのファイルに反映させるために、`root' は
9357      次のようなコマンドを実行するかもしれない。
9358
9359           find / -user OLDUSER -print0 | xargs -0 chown -h NEWUSER
9360
9361      しかし、これは危険なことである。なぜなら、`find' が存在する
9362      ファイルの所有者を検査するときと、`chown' が実際に実行される
9363      ときとの間に時間差があり、それはかなり大きいかもしれないからだ。
9364      この時間差を小さくする方法の一つは、ファイルが見つかるごとに、
9365      `chown' を実行することだろう。
9366
9367           find / -user OLDUSER -exec chown -h NEWUSER {} \;
9368
9369      しかし、動作の対象になるファイルがたくさんあると、この方法は
9370      非常に時間がかかる。`--from=OLD-OWNER' オプションを使う方が、
9371      完璧とまでは言えないにしても、より安全である (時間差がさらに
9372      小さくなるので)。
9373
9374           chown -h -R --from=OLDUSER NEWUSER /
9375
9376 `--dereference'
9377      シンボリックリンクそのものを動作の対象とせず、リンクが指している
9378      ものを動作の対象にする。これがデフォルトである。
9379
9380 `-h'
9381 `--no-dereference'
9382      シンボリックリンクが指しているものではなく、シンボリックリンク
9383      そのものを動作の対象にする。このモードは、システムコール `lchown'
9384      に依存している。システムコール `lchown' を提供していないシステム
9385      では、コマンドラインで指定されたファイルがシンボリックリンクだと、
9386      `chown' は実行に失敗する。なお、再帰的にディレクトリ階層をたどって
9387      いる際にシンボリックリンクに出会っても、デフォルトでは診断メッセージ
9388      を表示しない。ただし、`--verbose' を指定している場合は別なので、
9389      そちらの説明も参照していただきたい。
9390
9391 `--preserve-root'
9392      ルートディレクトリ (`/') を再帰的に変更しようとすると、
9393      エラーになる。`--recursive' オプションを指定していない場合、
9394      このオプションは効果がない。 *Note Treating / specially::.
9395
9396 `--no-preserve-root'
9397      `--preserve-root' オプションが前にあれば、その効果を無効にする。
9398      *Note Treating / specially::.
9399
9400 `--reference=REF_FILE'
9401      各 FILE の所有者とグループを REF_FILE のそれと同じものに変更する。
9402      REF_FILE がシンボリックリンクの場合は、シンボリックリンクの
9403      所有者とグループではなく、リンクが指しているファイルの所有者と
9404      グループを使用する。
9405
9406 `-v'
9407 `--verbose'
9408      処理したすべてのファイルについてメッセージを表示する。システム
9409      コール `lchown' を持っていないシステムで、再帰的にディレクトリ
9410      階層をたどっている際にシンボリックリンクに出会った場合、
9411      `--no-dereference' が有効になっていれば、「シンボリックリンクも
9412      その参照先も変更しない」というメッセージを出す。
9413
9414 `-R'
9415 `--recursive'
9416      ディレクトリとその中身の所有者を再帰的に変更する。
9417
9418 `-H'
9419      `--recursive' (`-R') オプションが指定されている場合に、コマンド
9420      ラインで指定された引数がディレクトリへのシンボリックリンクならば、
9421      それをたどる。 *Note Traversing symlinks::.
9422
9423 `-L'
9424      ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
9425      リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
9426      symlinks::.
9427
9428 `-P'
9429      シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
9430      どれも指定されていないときの、デフォルトである。 *Note Traversing
9431      symlinks::.
9432
9433
9434    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9435
9436    用例:
9437
9438      # /u の所有者を "root" に変更する。
9439      chown root /u
9440
9441      # 同様だが、グループも "staff" に変更する。
9442      chown root:staff /u
9443
9444      # /u 及び、それ以下にあるファイルの所有者を "root" に変更する。
9445      chown -hR root /u
9446
9447 \1f
9448 File: coreutils-ja.info,  Node: chgrp invocation,  Next: chmod invocation,  Prev: chown invocation,  Up: Changing file attributes
9449
9450 13.2 `chgrp': ファイルの所有グループを変更する
9451 ==============================================================
9452
9453 `chgrp' は、指定された各 FILE の所有グループを GROUP に変更する (GROUP
9454 は、グループ名でもグループ ID 番号でもよい)。所有グループを、存在する
9455 参照用ファイル (reference file) のグループと同じものに変更することも
9456 できる。
9457
9458    書式:
9459
9460      chgrp [OPTION]... {GROUP | --reference=REF_FILE} FILE...
9461
9462    GROUP にグループ ID 番号を使用する場合は、番号の頭に `+' を付ければ、
9463 ID 番号だと明示することができる。 *Note Disambiguating names and IDs::.
9464
9465    このプログラムでは以下のオプションが使用できる。参照: *note Common
9466 options::.
9467
9468 `-c'
9469 `--changes'
9470      グループの変更が実際に行われた各 FILE について、何を実行したかを
9471      詳しく表示する。
9472
9473 `-f'
9474 `--silent'
9475 `--quiet'
9476      グループを変更できないファイルがあっても、エラーメッセージを
9477      出さない。
9478
9479 `--dereference'
9480      シンボリックリンクそのものを動作の対象とせず、リンクが指している
9481      ものを動作の対象にする。これがデフォルトである。
9482
9483 `-h'
9484 `--no-dereference'
9485      シンボリックリンクが指しているものではなく、シンボリックリンク
9486      そのものを動作の対象にする。このモードは、システムコール `lchown'
9487      に依存している。システムコール `lchown' を提供していないシステム
9488      では、コマンドラインで指定されたファイルがシンボリックリンクだと、
9489      `chgrp' は実行に失敗する。なお、再帰的にディレクトリ階層をたどって
9490      いる際にシンボリックリンクに出会っても、デフォルトでは診断メッセージ
9491      を表示しない。ただし、`--verbose' を指定している場合は別なので、
9492      そちらの説明も参照していただきたい。
9493
9494 `--preserve-root'
9495      ルートディレクトリ (`/') を再帰的に変更しようとすると、
9496      エラーになる。`--recursive' オプションを指定していない場合、
9497      このオプションは効果がない。 *Note Treating / specially::.
9498
9499 `--no-preserve-root'
9500      `--preserve-root' オプションが前にあれば、その効果を無効にする。
9501      *Note Treating / specially::.
9502
9503 `--reference=REF_FILE'
9504      各 FILE のグループを REF_FILE のグループと同じものに変更する。
9505      REF_FILE がシンボリックリンクの場合は、シンボリックリンクの
9506      グループではなく、リンクが指しているファイルのグループを使用する。
9507
9508 `-v'
9509 `--verbose'
9510      処理したすべてのファイルについてメッセージを表示する。システム
9511      コール `lchown' を持っていないシステムで、再帰的にディレクトリ
9512      階層をたどっている際にシンボリックリンクに出会った場合、
9513      `--no-dereference' が有効になっていれば、「シンボリックリンクも
9514      その参照先も変更しない」というメッセージを出す。
9515
9516 `-R'
9517 `--recursive'
9518      ディレクトリとその中身の所有グループを再帰的に変更する。
9519
9520 `-H'
9521      `--recursive' (`-R') オプションが指定されている場合に、コマンド
9522      ラインで指定された引数がディレクトリへのシンボリックリンクならば、
9523      それをたどる。 *Note Traversing symlinks::.
9524
9525 `-L'
9526      ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
9527      リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
9528      symlinks::.
9529
9530 `-P'
9531      シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
9532      どれも指定されていないときの、デフォルトである。 *Note Traversing
9533      symlinks::.
9534
9535
9536    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9537
9538    用例:
9539
9540      # /u のグループを "staff" に変更する。
9541      chgrp staff /u
9542
9543      # /u 及び、それ以下にあるファイルのグループを "staff" に変更する。
9544      chgrp -hR staff /u
9545
9546 \1f
9547 File: coreutils-ja.info,  Node: chmod invocation,  Next: touch invocation,  Prev: chgrp invocation,  Up: Changing file attributes
9548
9549 13.3 `chmod': アクセス権を変更する
9550 ============================================
9551
9552 `chmod' は、名前を指定したファイルのアクセス権を変更する。
9553
9554    書式:
9555
9556      chmod [OPTION]... {MODE | --reference=REF_FILE} FILE...
9557
9558    `chmod' コマンドがシンボリックリンクのアクセス権を変更することは
9559 ない。`chmod' システムコールがシンボリックリンクのアクセス権を変更
9560 できないからである。シンボリックリンクのアクセス権が利用されることは
9561 全くないので、この制限は問題にならない。とは言え、コマンドラインで
9562 指定された FILE が、シンボリックリンクだということはあるだろうが、
9563 そうした場合、`chmod' は、指定された各シンボリックリンクが参照して
9564 いるファイルのアクセス権を変更する。それに対して、ディレクトリを
9565 再帰的にたどっている最中にシンボリックリンクに出会った場合は、 `chmod'
9566 はそれを無視することになる。
9567
9568    `chmod' の実行に成功したとき、通常ファイルの set-group-ID ビットが
9569 消えることがあるが、それは、ファイルのグループ ID が、`chmod' を実行
9570 したユーザの実効グループ ID や、補助グループ ID の一つに一致しなかった
9571 場合である。もっとも、そのユーザがしかるべき特権を持っている場合には、
9572 set-group-ID ビットが消えることはない。また、制限事項が他にも存在して、
9573 指定した MODE 中や REF_FILE の、set-user-ID ビットや set-group-ID
9574 ビットが無視されることもある。そうした動作は、裏で動いている `chmod'
9575 システムコールのポリシーや機能次第なのだ。どうなるかよくわからない
9576 場合には、裏で動いているシステムの動作を調べればよい。
9577
9578    MODE には、ファイルの新しいモードビット (訳注: すなわち、アクセス
9579 権) を指定する。詳細については、「ファイルの許可属性」の章を参照して
9580 いただきたい (*note File permissions::)。MODE を指定するとき、MODE を
9581 どうしても `-' で始めたいのなら、前に `--' を置いた方がよい。たとえば、
9582 `chmod -- -w file' のようにだ。とは言え、たいていの場合、`chmod a-w
9583 file' の方が望ましい。なお、`chmod -w file' (`--' がない) が `chmod a-w
9584 file' と別の動作になる場合には、警告が出る。
9585
9586    このプログラムでは以下のオプションが使用できる。参照: *note Common
9587 options::.
9588
9589 `-c'
9590 `--changes'
9591      アクセス権の変更が実際に行われた各 FILE について、何を実行したかを
9592      詳しく表示する。
9593
9594 `-f'
9595 `--silent'
9596 `--quiet'
9597      アクセス権が変更できないファイルがあっても、エラーメッセージを
9598      出さない。
9599
9600 `--preserve-root'
9601      ルートディレクトリ (`/') を再帰的に変更しようとすると、
9602      エラーになる。`--recursive' オプションを指定していない場合、
9603      このオプションは効果がない。 *Note Treating / specially::.
9604
9605 `--no-preserve-root'
9606      `--preserve-root' オプションが前にあれば、その効果を無効にする。
9607      *Note Treating / specially::.
9608
9609 `-v'
9610 `--verbose'
9611      すべての FILE について、何を実行し、何を実行しなかったかを詳しく
9612      表示する。
9613
9614 `--reference=REF_FILE'
9615      各 FILE のモードを REF_FILE のそれと同じものに変更する。 *Note
9616      File permissions::.  REF_FILE がシンボリックリンクの場合は、
9617      シンボリックリンクのモードではなく、リンクが参照しているファイルの
9618      モードを使用する。
9619
9620 `-R'
9621 `--recursive'
9622      ディレクトリとその中身のアクセス権を再帰的に変更する。
9623
9624
9625    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9626
9627 \1f
9628 File: coreutils-ja.info,  Node: touch invocation,  Prev: chmod invocation,  Up: Changing file attributes
9629
9630 13.4 `touch': ファイルのタイムスタンプを変更する
9631 =================================================================
9632
9633 `touch' は指定されたファイルのアクセス日時 (access time) や更新日時
9634 (modification time) を変更する。
9635
9636    書式:
9637
9638      touch [OPTION]... FILE...
9639
9640    引数 FILE に存在しないファイルを指定すると、空のファイルが作成
9641 される。ただし、`--no-create' (`-c') や `--no-dereference' (`-h') が
9642 有効な場合は、ファイルは作成されない。
9643
9644    引数 FILE が `-' という文字列の場合は、特別な扱いする。`touch' は、
9645 標準出力に結びついているファイルの日時を変更するのである。
9646
9647    `touch' は、デフォルトではファイルのタイムスタンプを現在の日時に
9648 セットする。`touch' はオペランドを左から右へと順番に処理するので、
9649 生成されたタイムスタンプが、前後のオペランドで一致しないこともある。
9650 また、「現在」とはいつかを決めるのは、プラットフォーム次第である。
9651 ネットワーク・ファイルシステムを使用しているプラットフォームでは、
9652 オペレーティング・システムとファイルシステムとで別のクロックを使用
9653 していることも珍しくない。`touch' は通常、デフォルトではファイル
9654 システムのクロックを使用するので、クロックのずれのために、生成された
9655 ファイルのタイムスタンプが、あるプログラムにとっては「未来」に
9656 見えたり、「過去」に見えたりすることがある。
9657
9658    `touch' コマンドは、ファイルのタイムスタンプを、ユーザが指定した
9659 日時よりも精度が高くならない範囲で、表現できる最大の値にセットする。
9660 この値がユーザが指定した日時と違うことがあるが、それにはいくつかの
9661 理由がある。第一に、ユーザが指定した日時が、サポートされている精度を
9662 越えていることがある。第二に、ファイルシステムが、日時のタイプに
9663 よって別の精度を使っていることがある。第三に、ファイルのタイム
9664 スタンプが、オペレーティング・システムのタイムスタンプとは別の精度を
9665 使っていることがある。第四に、オペレーティング・システムでタイム
9666 スタンプの更新に使用されている基本データ型が、さらに違う精度を採用
9667 していることがある。そんなわけで、理屈の上では、たとえば、ファイル
9668 システムでは、アクセス日時には 10 マイクロ秒の精度を、更新日時には 100
9669 ナノ秒の精度を使用し、オペレーティング・システムの方では、現在の
9670 時刻にはナノ秒の精度を、`touch' がファイルのタイムスタンプを任意の
9671 値に設定するために使う基本データ型には、マイクロ秒の精度を使用して
9672 いる、そういうこともありえるのである。
9673
9674    タイムスタンプを現在の時刻にセットする場合には、ユーザが所有して
9675 いないファイルでも、書き込み権限さえ持っていれば、`touch' はその
9676 タイムスタンプを変更することができる。しかし、現在の時刻以外にセット
9677 するには、ユーザはそのファイルを所有していなければならない。古い
9678 システムの中には、制限がさらに厳しいものもある。たとえば、アクセス
9679 日時と更新日時の両方を現在の時刻にセットするとき以外、対象となる
9680 ファイルを所有していなければならないといった具合だ。
9681
9682    `touch' が提供するオプションを使えば、ファイルの 2 種類の日時 --
9683 最終アクセス日時と最終更新日時 -- を変更することができるが、標準の
9684 日時には、実はそのほかに 3 番目のものがある。すなわち、inode の変更日時
9685 (inode change time) だ。これは、ファイルの `ctime' と呼ばれることが
9686 多い。inode の変更日時は、ファイルのメタ情報が最後に変更された日時を
9687 表している。メタ情報の変更のよくある例の一つは、ファイルのアクセス権
9688 の変更である。アクセス権の変更では、ファイルにアクセスするわけではない
9689 ので、atime (アクセス日時) は変化しないし、またファイルの内容を変更
9690 するわけでもないので、mtime (更新日時) も変化しない。しかし、ファイル
9691 そのものに関する何ものかが変化しているわけであり、それはどこかに記録
9692 されなければならない。まさにそれが、inode の ctime フィールドの役割
9693 なのだ。たとえば、バックアップ・プログラムが、ファイルのアクセス権に
9694 変更があった場合も含めて、ファイルのコピーを最新に保つことができる
9695 ようにするには、ctime が不可欠である。ファイルの ctime は変更するが、
9696 他の日時には影響を及ぼさない別の操作には、ファイル名の変更がある。
9697 なお、いかなる場合であれ、通常の操作では、ユーザが ctime フィールドを
9698 自分で指定する値に変更することはできない。オペーレーティングシステムや
9699 ファイルシステムの中には、4 番目の日時をサポートしているものもある。
9700 すなわち、作成日時 (birth time) であり、ファイルが最初に作られた日時だ。
9701 名前からして当然だが、このタイムスタンプが変更されることはない。
9702
9703    タイムスタンプは、タイムゾーンのルールに従うが、そのルールを指定して
9704 いるのは、環境変数 `TZ' である。`TZ' が設定されていない場合は、システム
9705 のデフォルトのルールに従う。 *Note Specifying the Time Zone with `TZ':
9706 (libc)TZ Variable.  なお、UTC のタイムスタンプを使えば、夏 (冬) 時間への
9707 移行時の曖昧さを避けることができる。
9708
9709    このプログラムでは以下のオプションが使用できる。参照: *note Common
9710 options::.
9711
9712 `-a'
9713 `--time=atime'
9714 `--time=access'
9715 `--time=use'
9716      アクセス日時のみ変更する。
9717
9718 `-c'
9719 `--no-create'
9720      存在しないファイルについて警告を出さず、ファイルの作成もしない。
9721
9722 `-d'
9723 `--date=TIME'
9724      現在の日時の代わりに TIME を使用する。TIME には、月の名前、
9725      タイムゾーン、`am' や `pm'、`yesterday' なども使うことができる。
9726      たとえば、`--date="2004-02-27 14:19:13.489392193 +0530"' とすると、
9727      UTC より 5 時間 30 分東のタイムゾーンで、2004 年 2 月 27 日 午後 2
9728      時 19 分 13 秒 から 489,392,193 ナノ秒経過した瞬間を指定することに
9729      なる。*Note Date input formats::.  精度の高いタイムスタンプを
9730      サポートしていないファイルシステムでは、精度の超過分は単に無視
9731      される。
9732
9733 `-f'
9734      何もしない。BSD 版の `touch' との互換性のためにある。
9735
9736 `-h'
9737 `--no-dereference'
9738      シンボリックリンクが参照しているファイルではなく、シンボリック
9739      リンクのタイムスタンプの変更を試みる。このオプションを使用すると、
9740      空のファイルは作成されないが、ファイルが存在しないという警告まで
9741      出ないようにするには、`-c' オプションも併せて使用する必要がある。
9742      すべてのシステムが、シンボリックリンクのタイムスタンプの変更を
9743      サポートしているわけではない。なぜならば、POSIX 2008 までは、
9744      下層で動いているシステムに対して、そうした動作のサポートを要求
9745      していなかったからである。また、システムによっては、シンボリック
9746      リンクは、調べるだけでアクセス日時が変わってしまうので、変更の
9747      結果が後々まで残って観察できるのは、更新日時だけだというものも
9748      ある。なお、このオプションを `-r' オプションと一緒に使用すると、
9749      参照するタイムスタンプが、リンクが指しているファイルからではなく、
9750      シンボリックリンクから取得される。
9751
9752 `-m'
9753 `--time=mtime'
9754 `--time=modify'
9755      更新日時 (modification time) のみ変更する。
9756
9757 `-r FILE'
9758 `--reference=FILE'
9759      現在の日時の代わりに、参照ファイル FILE の日時を使用する。この
9760      オプションを `--date=TIME' (`-d TIME') オプションと組み合わせて
9761      使うと、TIME が相対時間で指定されている場合は、参照ファイル FILE
9762      の日時がその基点となるが、それ以外の場合は、FILE の日時は無視され
9763      る。たとえば、`-r foo -d '-5 seconds'' は、`foo' のタイムスタンプ
9764      より 5 秒前のタイムスタンプを指定している。FILE がシンボリック
9765      リンクの場合は、`-h' が同時に有効になっていないかぎり、参照する
9766      タイムスタンプは、シンボリックリンクの参照先から取得される。
9767
9768 `-t [[CC]YY]MMDDHHMM[.SS]'
9769      現在の日時の代わりに、`-t' オプションの引数を使用する (引数の構成
9770      は、4 桁または 2 桁の年 (省略可)、月、日、時、分、秒 (秒も省略可)
9771      である)。年が 2 桁のみ指定された場合、0 ... 68 の範囲の年ならば、
9772      CC は 20 であり、69 ... 99 の範囲の年では、CC は 19 である。
9773      年が全く指定されない場合は、引数は今年の日付だと解釈される。閏秒に
9774      対応している例外的なシステムでは、SS が `60' のこともありえる。
9775
9776
9777    古めのシステムでは、`touch' は次のような旧式の書式もサポートして
9778 いる。すなわち、`-d', `-r', `-t' のいづれによってもタイムスタンプが指定
9779 されていず、しかも、2 個以上の FILE が指定されていて、最初の FILE が
9780 `MMDDHHMM[YY]' の形を持ち、それが (YY が存在するなら、それを先頭に
9781 移せば) `-t' オプションに対する有効な引数と見なすことができる場合に、
9782 その引数の表している年度が 1969-1999 の範囲にあるならば、その引数を
9783 ファイル名ではなく、他のファイルに適用する日時と解釈する、というもの
9784 である。この旧式の動作は、環境変数 `_POSIX2_VERSION' によって有効に
9785 したり、無効にしたりできるが (*note Standards conformance::)、移植を
9786 考慮したスクリプトでは、動作がこの環境変数に依存するコマンドの使用は
9787 避けるべきである。たとえば、二通りの解釈ができる `touch 12312359 main.c'
9788 を使うより、`touch ./12312359 main.c' や `touch -t 12312359 main.c' を
9789 使用した方がよい。
9790
9791    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9792
9793 \1f
9794 File: coreutils-ja.info,  Node: Disk usage,  Next: Printing text,  Prev: Changing file attributes,  Up: Top
9795
9796 14 ディスク使用量
9797 ************************
9798
9799 データをいくらでも無限に入れることのできるディスクはない。この章で説明
9800 するコマンドには、使用しているディスク容量や利用可能なディスク容量を報告
9801 するもの、それ以外のファイル情報やファイルステータス情報を報告するもの、
9802 それに、バッファの内容をディスクに書き込むものがある。
9803
9804 * Menu:
9805
9806 * df invocation::            ファイルシステムのディスク使用量を報告する。
9807 * du invocation::            ファイルのディスク使用量を概算する。
9808 * stat invocation::          ファイルやファイルシステムのステータスを報告する。
9809 * sync invocation::          メモリとディスクを同期させる。
9810 * truncate invocation::      ファイルサイズの短縮・伸長を行う。
9811
9812 \1f
9813 File: coreutils-ja.info,  Node: df invocation,  Next: du invocation,  Up: Disk usage
9814
9815 14.1 `df': ファイルシステムのディスク使用状態を報告する
9816 =============================================================================
9817
9818 `df' は、ファイルシステムごとに、使用されているディスク容量と利用可能な
9819 ディスクス容量を報告する。
9820
9821    書式:
9822
9823      df [OPTION]... [FILE]...
9824
9825    引数を指定しないと、`df' は、現在マウントされているすべてのファイル
9826 システム (ファイルシステムのタイプを問わない) について、使用されている
9827 ディスク容量と、利用可能なディスク容量を報告する。引数が指定されている
9828 場合は、引数として指定された各 FILE が存在するファイルシステムについて
9829 報告する。
9830
9831    通常、ディスク容量は 1024 バイトを 1 単位として表示するが、この動作は
9832 変更することができる (*note Block size::)。なお、小数点以下は切り上げて
9833 整数にする。
9834
9835    bind マウントについては、引数が指定されていない場合に `df' が
9836 表示するのは、そのデバイスに関する統計情報のうち、ファイルシステムの
9837 リスト中で (すなわち、MTAB 中で) マウントポイントの名前が最も短い
9838 ものに関する情報のみである。すなわち、`-a' オプションが指定されて
9839 いないときは、情報が重複するエントリは表示しない。
9840
9841    同じ理屈で、ダミーの擬似デバイスについては、そのマウントポイントに
9842 対する別のマウントエントリが存在し、それが実在のブロックデバイスの
9843 ものであり、しかもデバイス番号が同じ場合、`df' は擬似デバイスの
9844 マウントエントリの方は省略する。たとえば、ブート初期に作成される
9845 擬似ファイルシステムの `rootfs' は、実際のルートデバイスがすでに
9846 マウントされていれば、デフォルトでは表示されない。
9847
9848    引数 FILE がスペシャルファイルに還元され、そのスペシャルファイル
9849 上に存在するファイルシステムが現在マウントされている場合、`df' が
9850 表示するのは、そのファイルシステムの利用可能な容量であって、デバイス・
9851 ノードが存在するファイルシステムの利用可能な容量ではない。また、GNU の
9852 `df' は、マウントされていないファイルシステムのディスク使用量を測定
9853 しようとはしない。なぜなら、ほとんどのファイルシステムにおいて、そういう
9854 ことを行うには、ファイルシステムの構造について他と全く共通性のない内奥の
9855 知識が必要だからである。
9856
9857    (訳注: このパラグラフの前半については、実際にはもう少し複雑である。
9858 確かに、/dev/sda5 が /home にマウントされているとき (ついでに、
9859 /dev/HOME が /dev/sda5 のシンボリックリンクだとしよう)、`df /dev/sda5'
9860 や `df /dev/HOME' は、/dev/sda5 の情報を表示する。しかし、
9861 ルートデバイスの場合は、事情が異なる。訳者の手元の linux-3.2.0 に
9862 coreutils-8.22 という環境で /dev/sda3 が / にマウントされている場合、
9863 `df /dev/sda3' は、/dev/sda3 上にあるファイルシステムではなく、/dev に
9864 マウントされた udev ファイルシステムの情報を表示するのである。カーネルや
9865 coreutils のバージョンによって動作が微妙に違うかもしれないので、実際に
9866 動かして確認することをお勧めする。)
9867
9868    このプログラムでは以下のオプションが使用できる。参照: *note Common
9869 options::.
9870
9871 `-a'
9872 `--all'
9873      一覧表示にダミーのファイルシステムを含める。そうしたものは、デフォルト
9874      の表示では省略されている。たいていの場合、そうしたファイルシステムは、
9875      たとえばオートマウンタのエントリのような、特殊な用途のための擬似
9876      ファイルシステムである。
9877
9878 `-B SIZE'
9879 `--block-size=SIZE'
9880      SIZE によって単位の大きさを変更してから、サイズを表示する (*note
9881      Block size::)。 たとえば、`-BG' と指定すれば、1,073,741,824 バイト
9882      を 1 単位として、サイズを表示する。
9883
9884 `--total'
9885      すべての引数を処理した後で、全引数からなる総計を表示する。
9886      このオプションを使用すれば、ディスクの容量、使用した量、使用可能
9887      な量について、リストされたすべてのデバイスを合わせた総量を知ること
9888      ができる。
9889
9890      総計の行において `df' は SOURCE の列に `"total"' と表示し、 TARGET
9891      の列に `"-"' という文字を表示する (訳注: SOURCE, TARGET などの列に
9892      ついては、`--output' の説明を参照していただきたい)。SOURCE の列が
9893      存在しない場合は、TARGET の列が存在すれば、`df' は TARGET の列に
9894      `"total"' と表示する。
9895
9896 `-h'
9897 `--human-readable'
9898      各サイズの後ろに、メビバイトなら `M' といった、大きさを示す文字を
9899      付ける。1000 ではなく、1024 の累乗が使われるので、`M' は 1,048,576
9900      バイトを表している。このオプションは、`--block-size=human-readable'
9901      と同じである。1000 の累乗が使いたければ、"`--si' オプションを使用
9902      すればよい。
9903
9904 `-H'
9905      `--si' オプションと同じである。
9906
9907 `-i'
9908 `--inodes'
9909      ブロックの使用量ではなく、inode の使用情報を一覧表示する。inode
9910      (index node の略称) には、ファイルの所有者、許可属性、タイム
9911      スタンプ、ディスク上の位置といった、ファイルに関する情報が含まれ
9912      ている。
9913
9914 `-k'
9915      デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024
9916      バイトでサイズを表示する (*note Block size::)。このオプションは
9917      `--block-size=1K' に等しい。
9918
9919 `-l'
9920 `--local'
9921      一覧表示するのをローカルのファイルシステムに限定する。デフォルトでは、
9922      リモートのファイルシステムも表示される。
9923
9924 `--no-sync'
9925      使用量に関するデータを取得する前に `sync' システムコールを実行
9926      しない。そのため、多数のディスクを搭載しているシステムでは、`df'
9927      の実行速度が目に見えて向上するが、システムによっては (特に SunOS
9928      では)、出力結果がほんの少し古いものになるかもしれない。これが
9929      デフォルトの動作である。
9930
9931 `--output'
9932 `--output[=FIELD_LIST]'
9933      FIELD_LIST で定義した出力フォーマットを使用する。FIELD_LIST を省略
9934      した場合は、すべてのフィールドを表示する。後者の場合、列の順序は、
9935      以下に挙げているフィールドの説明の順序と同じである。
9936
9937      `--output' オプションは、`-i', `-P', `-T' のどのオプションとも
9938      一緒に使うことができない。
9939
9940      FIELD_LIST は、`df' の出力に含まれることになる、コンマで区切った
9941      列のリストであり、このリストによって出力する列の順序を制御する
9942      ことができる。従って、各フィールドは任意の場所に置くことができるが、
9943      一度しか使うことができない。
9944
9945      FIELD_LIST で使える有効なフィールドの名前は、次のものである。
9946     `source'
9947           マウントポイントにマウントする対象。たいていはデバイス。
9948
9949     `fstype'
9950           ファイルシステムのタイプ。
9951
9952     `itotal'
9953           inode の総数。
9954
9955     `iused'
9956           使用 inode 数。
9957
9958     `iavail'
9959           使用可能な inode 数。
9960
9961     `ipcent'
9962           IUSED を ITOTAL で割ったパーセント表示。
9963
9964     `size'
9965           ブロックの総数。
9966
9967     `used'
9968           使用ブロック数。
9969
9970     `avail'
9971           使用可能なブロック数。
9972
9973     `pcent'
9974           USED を SIZE で割ったパーセント表示。
9975
9976     `file'
9977           ファイル名をコマンドラインで指定した場合、そのファイル名。
9978           (coreutils-8.22 の新機能)
9979
9980     `target'
9981           マウントポイント。
9982
9983      ブロックや inode の統計情報を表すフィールドは、他の場合と同じく、
9984      `-h' のような数値の大きさを調整するオプションの影響を受ける。
9985
9986      FIELD_LIST の定義は、複数の `--output' オプションを使用して、
9987      分割しても構わない。
9988
9989           #!/bin/sh
9990           # TARGET (すなわち、マウントポイント) に続けて、そのブロックや
9991           # inode の使用状態をパーセントで表示する。
9992           df --out=target --output=pcent,ipcent
9993
9994           # 表示できるすべてのフィールドを表示する。
9995           df --o
9996
9997 `-P'
9998 `--portability'
9999      POSIX の出力形式を使用する。デフォルトの形式に似ているが、次の
10000      点で異なっている。
10001
10002        1. 各ファイルシステムついての情報が、常にぴったり 1 行で表示
10003           され、マウントされるデバイスが、それのみで 1 行を占めることが
10004           ない。そのため、マウントされるデバイスの名前の長さが 20 字を
10005           越えると (たとえば、ネットワーク・マウントの場合にそういう
10006           ことがありそうだ)、各項目の列がずれることになる。
10007
10008        2. ヘッダ行の項目名が、POSIX に準拠したものになる。
10009
10010        3. デフォルトのブロックサイズや出力の書式が、環境変数
10011           `DF_BLOCK_SIZE', `BLOCK_SIZE', `BLOCKSIZE' の影響を受けなく
10012           なる。とは言え、デフォルトのブロックサイズについては、
10013           `POSIXLY_CORRECT' の影響だけは、やはり受ける。すなわち、
10014           `POSIXLY_CORRECT' が設定されていれば、ブロックサイズは 512
10015           バイトであり、さもなければ 1024 バイトである。 *Note Block
10016           size::.
10017
10018 `--si'
10019      各サイズにの後ろに、メガバイトなら `M' といった、SI 形式の略号
10020      を付ける。1024 ではなく、1000 の累乗が使用されるので、`M' は
10021      1,000,000 バイトを表している。このオプションは、`--block-size=si'
10022      と同じことである。1024 の累乗が使いたければ、`-h' や
10023      `--human-readable' を使用すればよい。
10024
10025 `--sync'
10026      使用量に関するデータを取得する前に `sync' システムコールを実行
10027      する。システムによっては (特に SunOS では)、そうすることでより
10028      最近の結果が得られるが、一般的に言って、このオプションを使用すると、
10029      `df' の実行速度がかなり低下する。ファイルシステムをたくさんマウント
10030      している場合や、作業が頻繁に行われているファイルシステムでは、
10031      とりわけ遅くなる。
10032
10033 `-t FSTYPE'
10034 `--type=FSTYPE'
10035      一覧表示するファイルシステムを FSTYPE というタイプに限定する。
10036      `-t' オプションを複数回使うことによって、複数のタイプのファイル
10037      システムを指定することができる。デフォルトでは、いかなるタイプの
10038      ファイルシステムも除外しない。
10039
10040 `-T'
10041 `--print-type'
10042      各ファイルシステムのタイプを表示する。このとき表示されるタイプは、
10043      `-t' や `-x' オプションを使って、一覧表示に含めたり、一覧表示から
10044      除外したりできるタイプと同じものである。すなわち、表示されるタイプ
10045      は何であれ、システムによってサポートされているということだ。以下に、
10046      よく見受けられるタイプの名前をいくつか挙げておく (当然ながら、
10047      ここに挙げるものがすべてではない)。
10048
10049     `nfs'
10050           NFS ファイルシステム。すなわち、ネットワーク越しにほかの
10051           マシンからマウントしているファイルシステム。このタイプ名は、
10052           あらゆるシステムで共通して使われているようである。
10053
10054     `ext2, ext3, ext4, xfs, btrfs...'
10055           ローカルでマウントしているハードディスクのファイルシステム。
10056           (ローカルのマウントでは、システムが複数のタイプをサポートして
10057           いることもある。たとえば、Linux がそうだ。)
10058
10059     `iso9660, cdfs'
10060           CD や DVD ドライブのファイルシステム。HP-UX は `cdfs' を
10061           使用し、ほかのシステムのほとんどは `iso9660' を使用している。
10062
10063     `ntfs,fat'
10064           MS-Windows や MS-DOS で使用されるファイルシステム。
10065
10066
10067 `-x FSTYPE'
10068 `--exclude-type=FSTYPE'
10069      一覧表示するファイルシステムを FSTYPE というタイプ以外のものに
10070      限定する。`-x' オプションを複数回使うことによって、複数のタイプの
10071      ファイルシステムを除外することができる。デフォルトでは、いかなる
10072      タイプのファイルシステムも除外しない。
10073
10074 `-v'
10075      無視される。System V 版の `df' との互換のためにある。
10076
10077
10078    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。 実行に失敗
10079 しても、何もメッセージが出力されないことがある。そこで、そうしたときに、
10080 ディレクトリ DIR が `ext3' や `reiserfs' というタイプのファイルシステム
10081 上にあるかどうかを調べるには、`df -t ext3 -t reiserfs DIR' といった
10082 コマンドを実行して、終了ステータスを検査すればよい。
10083
10084    ファイルシステムのタイプを判断するには、ファイルシステムのリスト
10085 (MTAB) が必要になる。従って、ファイルシステムのリストを読み込む
10086 ことができないときに、ファイル名引数とともに `-a', `-l', `-t', `-x'
10087 といったオプションが一つ以上使われた場合、`df' は実行に失敗する。
10088
10089 \1f
10090 File: coreutils-ja.info,  Node: du invocation,  Next: stat invocation,  Prev: df invocation,  Up: Disk usage
10091
10092 14.2 `du': ファイルのディスク使用量を概算する
10093 ==============================================================
10094
10095 `du' は、指定したファイルのディスク使用量を報告する。引数がディレ
10096 クトリの場合は、サブディレクトリごとのディスク使用量も報告する。
10097
10098    書式:
10099
10100      du [OPTION]... [FILE]...
10101
10102    引数を指定しないと、`du' は、カレントディレクトリのディスク使用量を
10103 報告する。通常、ディスク使用量は 1024 バイトを 1 単位として表示するが、
10104 この動作は変更することができる (*note Block size::)。なお、小数点以下
10105 は、切り上げて整数にする。
10106
10107    2 個以上のハードリンクが同一のファイルを指している場合は、そのうちの
10108 1 個のみが計算の対象になる。引数 FILE の順番によって、どのリンクが計算の
10109 対象になるかが変わってくるので、引数の順番を変更すると、`du' が出力する
10110 数値が変化するかもしれない。
10111
10112    このプログラムでは以下のオプションが使用できる。参照: *note Common
10113 options::.
10114
10115 `-0'
10116 `--null'
10117      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。この
10118      オプションを使用すると、`du' の出力するデータに、途中に改行を
10119      挟むものがあっても、他のプログラムがその出力を解析できるようになる。
10120
10121 `-a'
10122 `--all'
10123      ディレクトリだけでなく、すべてのファイルについて使用量を表示する。
10124
10125 `--apparent-size'
10126      ディスクの使用量ではなく、見かけのサイズを表示する。ファイルの
10127      見かけのサイズとは、通常ファイルに対して `wc -c'、あるいは、もっと
10128      普通に `ls -l --block-size=1' や `stat --format=%s' を実行したとき
10129      に返されるバイト数である。たとえば、`zoo' という単語を改行を付けず
10130      に書き込んだファイルなら、当然ながら、見かけのサイズは 3 になる。
10131      だが、そうした小さなファイルも、そのファイルが存在するファイル
10132      システムのタイプと設定次第で、0 から 16 KiB、あるいは、それ以上の
10133      ディスクスペースを占有するかもしれないのだ。もっとも、穴空きファ
10134      イル (sparse file) の場合は事情が別である。たとえば、
10135
10136           dd bs=1 seek=2GiB if=/dev/null of=big
10137
10138      上記のコマンドで作成した穴空きファイルは、見かけのサイズこそ 2 GiB
10139      だが、最近のほとんどのシステムでは、実際に使用するディスクスペースは、
10140      ほとんど 0 である。
10141
10142 `-B SIZE'
10143 `--block-size=SIZE'
10144      SIZE によって単位の大きさを変更してから、サイズを表示する (*note
10145      Block size::)。 たとえば、`-BG' と指定すれば、1,073,741,824 バイト
10146      を 1 単位として、サイズを表示する。
10147
10148 `-b'
10149 `--bytes'
10150      `--apparent-size --block-size=1' と同じ。
10151
10152 `-c'
10153 `--total'
10154      すべての引数を処理した後で、全引数からなる総計を表示する。
10155      このオプションを使用すれば、指定したファイルやディレクトリについて
10156      ディスク使用量の合計を知ることができる。
10157
10158 `-D'
10159 `--dereference-args'
10160      コマンドラインで引数に指定されたシンボリックリンクの参照を行う。
10161      コマンドライン引数以外のシンボリックリンクには影響がない。この
10162      オプションは、`/usr/tmp' のような、シンボリックリンクであることが
10163      多いディレクトリのディスク使用量を調べるときに、重宝である。
10164
10165 `-d DEPTH'
10166 `--max-depth=DEPTH'
10167      ディレクトリ階層の基点 (訳注: 要するに、コマンドラインで指定
10168      されたディレクトリ) から最大 DEPTH 段階下がったところまでにある
10169      各ディレクトリについて、ディスク使用量の合計を表示する (`--all'
10170      オプションが付いているときは、ファイルについても表示する)。基点
10171      自体は段階 0 なので、`du --max-depth=0' は `du -s' と同じことに
10172      なる。
10173
10174 `--files0-from=FILE'
10175      コマンドラインで名前を指定されたファイルの処理を行わない。その代わり
10176      に、ファイル FILE に名前が書き込まれているファイルの処理を行う。
10177      なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL)
10178      で終端されていなければならない。このオプションは、ファイル名のリスト
10179      が長すぎて、コマンドライン長の上限を超過してしまいそうなときに、
10180      便利である。そうした場合、`du' を `xargs' 経由で実行するのは、
10181      望ましくない。なぜなら、`xargs' はファイルのリストをいくつかの部分
10182      に分割して `du' に渡すので、`du' はリスト全体の `--total' (`-c')
10183      オプションを使用した結果ではなく、 部分リストごとの `--total'
10184      (`-c') オプションを使用した結果を表示してしまうからである。 ASCII
10185      NUL で終端されたファイル名のリストを得る方法の一つは、 GNU `find'
10186      に `-print0' を付けて使うことである。FILE に `-' を指定すれば、
10187      ASCII NUL で終端されたファイル名を標準入力から読み込むことが
10188      できる。
10189
10190 `-H'
10191      `--dereference-args' (`-D') と同じである。
10192
10193 `-h'
10194 `--human-readable'
10195      各サイズの後ろに、メビバイトなら `M' といった、大きさを示す文字を
10196      付ける。1000 ではなく、1024 の累乗が使われるので、`M' は 1,048,576
10197      バイトを表している。このオプションは、`--block-size=human-readable'
10198      と同じである。1000 の累乗が使いたければ、"`--si' オプションを使用
10199      すればよい。
10200
10201 `--inodes'
10202      ブロックの使用状態ではなく、inode の使用状態をリストする。
10203      このオプションが役に立つのは、多くのファイルを収納しているために、
10204      ファイルシステムの inode スペースを大量に消費しているディレクトリ
10205      を探すときである (`df' の `--inodes' オプションも参照すること)。
10206      このオプションは、`-a', `-c', `-h', `-l', `-s', `-S', `-t', `-x'
10207      といったオプションと組み合わせて使ってもよい。しかし、ブロック
10208      サイズ関係の他のオプション、たとえば、`-b', `-m', `--apparent-size'
10209      などを渡しても、無視される。(coreutils-8.22 の新機能)
10210
10211 `-k'
10212      デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024
10213      バイトでサイズを表示する (*note Block size::)。このオプションは
10214      `--block-size=1K' に等しい。
10215
10216 `-L'
10217 `--dereference'
10218      シンボリックリンクの参照を行う (リンク自体のディスク使用量では
10219      なく、リンクが指しているファイルやディレクトリの使用量を表示する)。
10220
10221 `-l'
10222 `--count-links'
10223      すべてのファイルを計算に入れる。すなわち、(ハードリンクとして) 前に
10224      現れたことがあっても、計算に入れる。
10225
10226 `-m'
10227      デフォルトのブロックサイズを変更し、1 ブロック 1,048,576 バイトの
10228      ブロック数でサイズを表示する (*note Block size::)。
10229      このオプションは、`--block-size=1M' と同じである。
10230
10231 `-P'
10232 `--no-dereference'
10233      `du' が出会った各シンボリックリンクについて、シンボリック自体の
10234      使用ディスクスペースを計算する。
10235
10236 `-S'
10237 `--separate-dirs'
10238      通常、(`--summarize' オプションを使用しない場合の) `du' の出力に
10239      おいて、D というディレクトリ名の隣に表示されるサイズは、D 以下に
10240      あるすべてのエントリのサイズの合計に、D 自体のサイズを加えたもの
10241      である。それに対して、`--separate-dirs' オプションを指定すると、 D
10242      というディレクトリ名に対して報告されるサイズは、いかなるサブ
10243      ディレクトリのサイズも含まないものになる。
10244
10245 `--si'
10246      各サイズにの後ろに、メガバイトなら `M' といった、SI 形式の略号
10247      を付ける。1024 ではなく、1000 の累乗が使用されるので、`M' は
10248      1,000,000 バイトを表している。このオプションは、`--block-size=si'
10249      と同じことである。1024 の累乗が使いたければ、`-h' や
10250      `--human-readable' を使用すればよい。
10251
10252 `-s'
10253 `--summarize'
10254      各引数についてその合計ディスク使用量のみを表示する (訳注:
10255      すなわち、 引数がディレクトリの場合、そのサブディレクトリごとの
10256      情報まで表示しない)。
10257
10258 `-t SIZE'
10259 `--threshold=SIZE'
10260      指定された SIZE を目安にして、表示する対象を取捨する。SIZE は、
10261      通常モードではディスク使用量を指し (*note Block size::)、`--inodes'
10262      オプションと組み合わせた場合は inode 使用数を指す。(訳注: ディスク
10263      使用量の目安として使う場合、SIZE の単位は、デフォルトではバイト
10264      である。もちろん、K, M, G などの接尾辞を付けることもできる。)
10265
10266      SIZE が正の数ならば、`du' はサイズがそれ以上である対象のみを
10267      表示する。
10268
10269      SIZE が負の数ならば、`du' はサイズがそれ以下である対象のみを
10270      表示する。
10271
10272      GNU の `find' を使えば、特定のサイズのファイルを見つけることが
10273      できる。それに対して、`du' の `--threshold' を使うと、ディレクトリ
10274      も指定サイズに基づいて篩い分けることができるのである。
10275
10276      `--threshold' オプションは、`--apparent-size' オプションと
10277      組み合わせることができるのに留意していただきたい。その場合は、
10278      見かけのサイズに基づいて表示対象を絞り込むことになる。
10279
10280      `--threshold' オプションは、`--inodes' オプションと組み合わせる
10281      こともできる。その場合は、inode 数に基づいて表示対象を絞り込む
10282      ことになる。
10283
10284      200 メガバイト以上のサイズを持つディレクトリを捜すには、
10285      `--threshold' オプションを次のように使えばよいだろう。
10286
10287           du --threshold=200MB
10288
10289      見かけのサイズが 500 バイト以下のディレクトリやファイルを捜すには
10290      (`-a' を使っていることに注意)、`--threshold' を次のように使えば
10291      よい。
10292
10293           du -a -t -500 --apparent-size
10294
10295      ルートファイルシステム上にあるディレクトリで、20000 以上の inode
10296      を使用しているものを、/ 以下のディレクトリ階層で捜すには、
10297      `--threshold' を次のように使えばよい。
10298
10299           du --inodes -x --threshold=20000 /
10300
10301 `--time'
10302      ディレクトリやそのサブディレクトリに存在するファイルの更新日時
10303      (modification time) のうちで最も新しいものを、そのディレクトリの
10304      タイムスタンプとして表示する。
10305
10306      (訳注: 少し説明が必要だろう。仮に a というディレクトリがあると
10307      する。a 以下にあるファイルのうちで z というファイルの更新日時が
10308      最新だったとしよう (必ずしも a 直下にある必要はなく、a/b/z でも
10309      a/b/c/z でもよい)。そうすると、`du --time' が a ディレクトリに
10310      対して示すタイムスタンプは、ファイル z の最終更新日時になる。
10311      このオプションや、そのバリエーションである次の二つのオプションは、
10312      あるディレクトリ以下を最後に使用したのはいつかを知るのに便利だ。)
10313
10314 `--time=ctime'
10315 `--time=status'
10316 `--time=use'
10317      ディレクトリ以下にあるファイルの、更新日時のうちの最新ではなく、
10318      ステータス変更日時 (inode 中の `ctime') のうちで最も新しいものを、
10319      そのディレクトリのタイムスタンプとして表示する。
10320
10321      (訳注: 原文でもこの三つのオプションを等価なものとして並べているが、
10322      訳者としては、`--time=use' と等価なのは、`--time=ctime' ではなく、
10323      `--time=atime' ではないかと思う。ご自分で確かめていただきたい。)
10324
10325 `--time=atime'
10326 `--time=access'
10327      ディレクトリ以下にあるファイルの、更新日時のうちの最新ではなく、
10328      アクセス日時 (inode 中の `atime') のうちで最も新しいものを、その
10329      ディレクトリのタイムスタンプとして表示する。
10330
10331 `--time-style=STYLE'
10332      タイムスタンプを STYLE 形式で表示する。このオプションは、`--time'
10333      オプションと併せて指定したときにのみ効果がある。STYLE は以下の一つ
10334      でなければならない。
10335
10336     `+FORMAT'
10337           FORMAT を使って、タイムスタンプを表示する。その場合、FORMAT
10338           は、`date' コマンドの書式引数と同じように解釈される (*note
10339           date invocation::)。 たとえば、`--time-style="+%Y-%m-%d
10340           %H:%M:%S"' と指定すると、 `du' の表示するタイムスタンプは、
10341           `2002-03-30 23:45:56' のようになる。`date' の場合と同様、
10342           FORMAT の解釈は、`LC_TIME' ロケール・カテゴリの影響を受ける。
10343
10344     `full-iso'
10345           タイムスタンプを省略なしで表示する。すなわち、ISO 8601 の
10346           日付、時刻、タイムゾーンという書式を nanosecond (10 億分の 1
10347           秒) の精度で使用するわけだ。一例を挙げると、`2002-03-30
10348           23:45:56.477817180 -0700' といった表示になる。この形式は、
10349           `+%Y-%m-%d %H:%M:%S.%N %z' と同じである。
10350
10351     `long-iso'
10352           ISO 8601 の書式で日付と時刻を分の単位まで表示する。たとえば、
10353           `2002-03-30 23:45'。このタイムスタンプは、`full-iso' タイム
10354           スタンプより短く、日常作業にはたいてい十分である。この形式は
10355           `+%Y-%m-%d %H:%M' と同じである。
10356
10357     `iso'
10358           タイムスタンプに ISO 8601 書式の日付を表示する。たとえば、
10359           `2002-03-30' といった具合である。この形式は、`+%Y-%m-%d' と
10360           同じである。
10361
10362      `--time-style' オプションのデフォルト値は、環境変数 `TIME_STYLE' を
10363      使って指定することができる。`TIME_STYLE' が設定されていない場合、
10364      デフォルトの形式は `long-iso' である。`ls' と共通の `TIME_STYLE' を
10365      使えるようにするため、`+' で始まる `TIME_STYLE' の値が、改行を
10366      含んでいる場合は、改行以後の文字は無視されることになる。また、
10367      `TIME_STYLE' の値が `posix-' で始まる場合、`posix-' は無視される。
10368      さらに、`TIME_STYLE' の値が `locale' の場合、`TIME_STYLE' は無視
10369      される。
10370
10371 `-X FILE'
10372 `--exclude-from=FILE'
10373      `--exclude' に似ているが、除外するパターンを FILE から 1 行につき
10374      1 パターン読み込む点が違う。FILE が `-' なら、パターンを標準入力
10375      から読み込む。
10376
10377 `--exclude=PATTERN'
10378      再帰的な処理を行っているとき、PATTERN にマッチするサブディレクトリ
10379      やファイルをスキップする。たとえば、`du --exclude='*.o'' と指定
10380      すると、名前が `.o' で終わるファイルを除外することになる。
10381
10382 `-x'
10383 `--one-file-system'
10384      処理される引数が存在するファイルシステムとは別のファイルシステムに
10385      あるディレクトリをスキップする。
10386
10387
10388    BSD システムでは、HP-UX システムから NFS マウントしているファイルに
10389 ついて、`du' は正確な値の半分のサイズを報告する。逆に、HP-UX システム
10390 では、BSD システムから NFS マウントしているファイルについて、`du' は
10391 正確な値の 2 倍のサイズを報告する。これは HP-UX にある欠陥のせいであり、
10392 HP-UX の `du' プログラムも、そのとばっちりを受けているのである。
10393
10394    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10395
10396 \1f
10397 File: coreutils-ja.info,  Node: stat invocation,  Next: sync invocation,  Prev: du invocation,  Up: Disk usage
10398
10399 14.3 `stat': ファイルやファイルシステムの状態を報告する
10400 ============================================================================
10401
10402 `stat' は指定されたファイルに関する情報を表示する。
10403
10404    書式:
10405
10406      stat [OPTION]... [FILE]...
10407
10408    オプションなしで実行すると、`stat' は指定されたファイルについて
10409 すべての情報を報告する。また、`stat' を使って、指定されたファイルが
10410 存在しているファイルシステムの情報を報告させることもできる。ファイルが
10411 リンクの場合は、リンクが指しているファイルについて情報を提供させること
10412 も可能だ。
10413
10414    シェルの組み込み機能の `stat' やエイリアスのために、`stat' に何の
10415 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
10416 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
10417 避けるためには、`env' 経由で `stat' を起動すればよい (すなわち、 `env
10418 stat ...' のようにだ)。
10419
10420 `-L'
10421 `--dereference'
10422      `stat' がシンボリックリンクを処理する方法を変更する。この
10423      オプションを付けると、`stat' は、引数中の各シンボリックリンク
10424      が参照しているファイルを操作の対象にする。このオプションがないと、
10425      `stat' が対象にするのは、引数のシンボリックリンクそのものになる。
10426
10427 `-f'
10428 `--file-system'
10429      指定されたファイルそのものについての情報ではなく、そのファイルが
10430      存在しているファイルシステムについての情報を報告する。このオプション
10431      を指定すると、自動的に `-L' オプションも指定される。
10432
10433 `-c'
10434 `--format=FORMAT'
10435      デフォルトの書式の代わりに、FORMAT を使用する。FORMAT の末尾には
10436      自動的に改行が付けられるので、下記のようなコマンドを 2 個以上の
10437      FILE オペランドに対して実行すると、各オペランドあたり 1 行の
10438      出力を生じることになる。
10439           $ stat --format=%d:%i / /usr
10440           2050:2
10441           2057:2
10442
10443 `--printf=FORMAT'
10444      デフォルトの書式の代わりに、FORMAT を使用する。`--format' に似て
10445      いるが、バックスラッシュ・エスケープを解釈して変換する。また、
10446      行末に自動的に改行を付けることもしない。そこで、改行がしたければ、
10447      FORMAT の中で `\n' を指定する必要がある。`--printf' を使って `/'
10448      と `/usr' のデバイス番号と inode 番号を表示するには、こんなふうに
10449      する。
10450           $ stat --printf='%d:%i\n' / /usr
10451           2050:2
10452           2057:2
10453
10454 `-t'
10455 `--terse'
10456      情報を簡潔な形式で表示する。他のプログラムで解析するときに都合がよい。
10457
10458
10459    `--format' や "`--printf' の FORMAT 中で、ファイルに対して使用できる
10460 書式指定子には以下のものがある。
10461
10462    * %a - 8 進数で表現したアクセス権
10463
10464    * %A - 人間にわかりやすい形式で表現したアクセス権
10465
10466    * %b - 割り当てられているブロック数 (`%B' を参照)
10467
10468    * %B - `%b' の報告で使われる 1 ブロックのバイト数
10469
10470    * %C - ファイルの SELinux セキュリティ・コンテキスト (取得できる場合)
10471
10472    * %d - 10 進数で表現したデバイス番号
10473
10474    * %D - 16 進数で表現したデバイス番号
10475
10476    * %f - 16 進数で表現した Raw モード
10477
10478    * %F - ファイルの種類
10479
10480    * %g - 所有グループの ID 番号
10481
10482    * %G - 所有グループ名
10483
10484    * %h - ハードリンク数
10485
10486    * %i - Inode 番号
10487
10488    * %m - マウントポイント (下記の説明を参照)
10489
10490    * %n - ファイル名
10491
10492    * %N - 引用符で囲んだファイル名。シンボリックリンクなら、参照先も表示
10493
10494    * %o - I/O 転送サイズの最適値の提案
10495
10496    * %s - ファイル全体の大きさ。サイズはバイト数
10497
10498    * %t - 16 進数で表現したメジャー・デバイス番号 (下記参照)
10499
10500    * %T - 16 進数で表現したマイナー・デバイス番号 (下記参照)
10501
10502    * %u - 所有者のユーザ ID 番号
10503
10504    * %U - 所有者のユーザ名
10505
10506    * %w - ファイルの作成日時 (the birth time)。不明の場合は `-' を表示
10507
10508    * %W - Unix 紀元からの秒数で表したファイルの作成日時、または `0'
10509
10510    * %x - 最終アクセス日時 (atime)
10511
10512    * %X - Unix 紀元からの秒数で表した最終アクセス日時
10513
10514    * %y - 最終更新日時 (mtime)
10515
10516    * %Y - Unix 紀元からの秒数で表した最終更新日時
10517
10518    * %z - 最終ステータス変更日時 (ctime)
10519
10520    * %Z - Unix 紀元からの秒数で表した最終ステータス変更日時
10521
10522    `%t' や `%T' という書式指定子は、stat(2) 構造体の st_rdev メンバ
10523 に対応するものであり、従って、キャラクタ・スペシャルファイルや
10524 ブロック・スペシャルファイルに対してしか動作が定義されていない。
10525 システムやファイルタイプによっては、st_rdev が他のものを表現する
10526 ために使われていることもありえる。
10527
10528    `%W', `%X', `%Y', `%Z' では、ピリオドに続けて精度を書くことで、
10529 小数点以下何桁まで表示するかを指定することができる。たとえば、`%.3X'
10530 と指定すると、最終アクセス日時がミリ秒の精度で出力される。ピリオド
10531 だけ指定して、精度を省略すると、`stat' は 9 桁を使用する。従って、
10532 `%.X' は `%.9X' と同じことになるわけだ。なお、余分な精度を捨てる際、
10533 タイムスタンプは負の無限大方向に切り下げられる (訳注: 日常の言葉で
10534 言うと、タイムスタンプのような正の数値の場合、指定された桁数より下の
10535 部分は切り捨てられるということ。以下の例を参照)。
10536
10537      0 で埋める:
10538        $ stat -c '[%015Y]' /usr
10539        [000001288929712]
10540      スペースで位置を揃える:
10541        $ stat -c '[%15Y]' /usr
10542        [     1288929712]
10543        $ stat -c '[%-15Y]' /usr
10544        [1288929712     ]
10545      精度指定:
10546        $ stat -c '[%.3Y]' /usr
10547        [1288929712.114]
10548        $ stat -c '[%.Y]' /usr
10549        [1288929712.114951834]
10550
10551    `%m' によって表示されるマウントポイントは、`df' によるマウント
10552 ポイントの出力とほぼ同じである。ただし、以下の点で異なっている。
10553    * stat はデフォルトでは、シムリンクの参照を行わない (そのためには、
10554      `-L' を指定する必要がある)。
10555
10556    * 引数としてデバイスノードが指定された場合、stat はファイルシステムの
10557      リストを調べて、そのノードを見つけたりはせず、デバイスノードを直接
10558      動作の対象にする (訳注: すなわち、そのデバイス上に存在するファイル
10559      システムのマウントポイントではなく、デバイスノードそのもののマウント
10560      ポイントを表示する)。
10561
10562    * bind マウントされているファイルについては、stat はそのファイルが
10563      載っているデバイスの最初のマウントポイントではなく、bind マウントで
10564      指定された別名 (訳注: 原文は alias。`mount --bind olddir newdir'
10565      における newdir のことか) の方を出力する。出力に変化がなくなる
10566      まで、再帰的に stat を呼び出せば、現在ベースになっているマウント
10567      ポイントを知ることができる。
10568
10569      (訳注: 訳者には意味不明。「現在ベースになっているマウントポイント
10570      (the current base mount point)」が、上記訳注の newdir のことなら、
10571      stat を再帰的に呼び出すまでもない。`stat -c "%m" newdir/FILE' は、
10572      newdir を表示する。また the current base mount point が「根底にある
10573      (すなわち、デバイスを最初にマウントした) マウントポイント」のこと
10574      なら、stat を再帰的に呼び出しても、それを突き止めることはできない。
10575      ひょっとすると、書式指定子に `%m' が追加された coreutils-8.6 から
10576      coreutils-8.20 あたりまでの stat を linux-2.6 時代の古いカーネルと
10577      組み合わせて使ったときの動作を言っているのかもしれない。その場合は、
10578      `stat -c "%m" newdir/FILE' は上記の olddir を出力するようだ。
10579      従って、そうした組み合わせでは、stat を再帰的に実行することで、
10580      最初にデバイスをマウントしたときのマウントポイントを知ることが
10581      できる。)
10582
10583    ファイルシステムの情報をリストする際には (すなわち、`--file-system'
10584 (`-f') 使用時には)、書式指定子の別の一群を使わなければならない。
10585
10586    * %a - スーパーユーザ以外にも利用できる未使用ブロック数
10587
10588    * %b - ファイルシステムの総データブロック数。
10589
10590    * %c - ファイルシステムの総 inode 数
10591
10592    * %d - ファイルシステムの未使用 inode 数
10593
10594    * %f - ファイルシステムの未使用ブロック数
10595
10596    * %i - 16 進数で表現したファイルシステム ID
10597
10598    * %l - ファイル名の最大長
10599
10600    * %n - ファイル名
10601
10602    * %s - ブロックサイズ (高速転送用)
10603
10604    * %S - 基本ブロックサイズ (ブロック計算用)
10605
10606    * %t - 16 進数で表現したファイルシステムのタイプ
10607
10608    * %T - 人間にわかりやすい形式で表現したファイルシステムのタイプ
10609
10610    タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
10611 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
10612 いない場合は、システムのデフォルトのルールに従って表示される。 *Note
10613 Specifying the Time Zone with `TZ': (libc)TZ Variable.
10614
10615    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10616
10617 \1f
10618 File: coreutils-ja.info,  Node: sync invocation,  Next: truncate invocation,  Prev: stat invocation,  Up: Disk usage
10619
10620 14.4 `sync': ディスク上のデータをメモリと同期する
10621 ===================================================================
10622
10623 `sync' は、メモリにバッファされているあらゆるデータをディスクに
10624 書き出す。そうした書き出しには、スーパーブロックの変更、 inode の
10625 変更、遅延読み書きを含むことができる (が、それだけに止まらない)。
10626 この機能はカーネルによって実装されていなければならない。`sync'
10627 プログラムは、`sync' システムコールを実行する以外、何もしないのである。
10628
10629    カーネルは、(比較的遅い) ディスクの読み書きをできるだけしないで
10630 済ますために、メモリにデータを保持している。このことによって、動作速度
10631 が向上するが、コンピュータがクラッシュした場合、データが失われたり、
10632 ファイルシステムが壊れたりという結果が生じかねない。`sync' コマンドを
10633 使えば、メモリ上にあるすべてが間違いなくディスクに書き出されることに
10634 なる。
10635
10636    `--help' や `--version' を単独で使用することはできるが、それ以外の
10637 いかなる引数も無視される (*note Common options::)。
10638
10639    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10640
10641 \1f
10642 File: coreutils-ja.info,  Node: truncate invocation,  Prev: sync invocation,  Up: Disk usage
10643
10644 14.5 `truncate': ファイルサイズの短縮・伸長を行う
10645 =================================================================
10646
10647 `truncate' は、各 FILE のサイズを指定したサイズにまで短縮したり、引き
10648 伸ばしたりする。
10649
10650    書式:
10651
10652      truncate OPTION... FILE...
10653
10654    FILE が存在していないときは、作成する。
10655
10656    FILE が指定したサイズより大きい場合は、データのサイズを越える部分
10657 は失われる。FILE が指定したサイズより小さい場合は、ファイルは引き伸ば
10658 され、引き伸ばされた部分は、ゼロバイト (ASCII NUL) の連続に見えるよう
10659 になる (引き伸ばされた部分は、穴空きファイル (sparse file) の穴になる)。
10660
10661    このプログラムでは以下のオプションが使用できる。参照: *note Common
10662 options::.
10663
10664 `-c'
10665 `--no-create'
10666      ファイルが存在しない場合は、作成しない。
10667
10668 `-o'
10669 `--io-blocks'
10670      SIZE をバイト数ではなく、FILE を構成する I/O ブロック数と見なす。
10671
10672 `-r RFILE'
10673 `--reference=RFILE'
10674      RFILE のサイズを基準に、各 FILE のサイズを揃える。
10675
10676 `-s SIZE'
10677 `--size=SIZE'
10678      各 FILE のサイズを SIZE にする。`--io-blocks' が指定されていない
10679      場合、SIZE はバイト数である。SIZE は、整数であり、
10680      以下に挙げるような何倍かを示す接尾辞を 後ろに付けることもできる。
10681      接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと
10682      見なされる)。
10683           `KB' =>           1000 (KiloBytes)
10684           `K'  =>           1024 (KibiBytes)
10685           `MB' =>      1000*1000 (MegaBytes)
10686           `M'  =>      1024*1024 (MebiBytes)
10687           `GB' => 1000*1000*1000 (GigaBytes)
10688           `G'  => 1024*1024*1024 (GibiBytes)
10689      `T', `P', `E', `Z', `Y' についても同様。
10690
10691      SIZE の前に以下の記号の一つを置くと、現在のサイズを元にして、各
10692      FILE のサイズを 調節することができる。
10693           `+'  => SIZE だけ増やす
10694           `-'  => SIZE だけ減らす
10695           `<'  => SIZE 以下に
10696           `>'  => SIZE 以上に
10697           `/'  => SIZE の倍数に切り下げる
10698           `%'  => SIZE の倍数に切り上げる
10699
10700
10701    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10702
10703 \1f
10704 File: coreutils-ja.info,  Node: Printing text,  Next: Conditions,  Prev: Disk usage,  Up: Top
10705
10706 15 テキストの表示
10707 ************************
10708
10709 この章では、テキスト文字列を表示するコマンドについて説明する。
10710
10711 * Menu:
10712
10713 * echo invocation::          テキストを 1 行表示する。
10714 * printf invocation::        データを整形して表示する。
10715 * yes invocation::           中断されるまで文字列を表示する。
10716
10717 \1f
10718 File: coreutils-ja.info,  Node: echo invocation,  Next: printf invocation,  Up: Printing text
10719
10720 15.1 `echo': テキストを 1 行表示する
10721 ==============================================
10722
10723 `echo' は、指定された STRING を標準出力に書き出す。その際、各 STRING
10724 の間に 1 個のスペースを置き、行末に改行を付け加える。
10725
10726    書式:
10727
10728      echo [OPTION]... [STRING]...
10729
10730    シェルの組み込み機能の `echo' やエイリアスのために、`echo' に何の
10731 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
10732 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
10733 避けるためには、`env' 経由で `echo' を起動すればよい (すなわち、 `env
10734 echo ...' のようにだ)。
10735
10736    このプログラムでは、以下のオプションが使える。参照: *note Common
10737 options::.  オプションはオペランドの前に置かなければならない。また、
10738 通常は特別な引数として使われる `--' は、特別な意味を持たず、他の
10739 いかなる STRING とも同じように扱われる。
10740
10741 `-n'
10742      出力の末尾に改行を付けない。
10743
10744 `-e'
10745      各 "STRING の中に以下に挙げるバックスラッシュでエスケープした
10746      文字があると、それを解釈して変換する。
10747
10748     `\a'
10749           警告 (ベル)
10750
10751     `\b'
10752           バックスペース
10753
10754     `\c'
10755           この位置より後を出力しない
10756
10757     `\e'
10758           エスケープ
10759
10760     `\f'
10761           フォームフィード (form feed)
10762
10763     `\n'
10764           改行 (newline)
10765
10766     `\r'
10767           復帰 (carriage return)
10768
10769     `\t'
10770           水平タブ
10771
10772     `\v'
10773           垂直タブ
10774
10775     `\\'
10776           バックスラッシュ
10777
10778     `\0NNN'
10779           8 進数 NNN (0 桁から 3 桁までの 8 進数) で表される 8 ビットの
10780           値に対応する文字。NNN が 9 ビットの値だと、9 ビット目 (最上位
10781           ビット) は無視される。
10782
10783     `\NNN'
10784           8 進数 NNN (1 桁から 3 桁までの 8 進数) で表される 8 ビットの
10785           値に対応する文字。NNN が 9 ビットの値だと、9 ビット目 (最上位
10786           ビット) は無視される。
10787
10788     `\xHH'
10789           16 進数 HH (1 または 2 桁の 16 進数) で表される 8 ビットの
10790           値に対応する文字。
10791
10792 `-E'
10793      各 STRING の中にあるバックスラッシュ・エスケープの解釈をしない。
10794      これがデフォルトである。`-e' と `-E' の両方が指定されている場合は、
10795      後で指定した方が効果を持つ。
10796
10797
10798    環境変数 `POSIXLY_CORRECT' が指定されている場合に、`echo' の最初の
10799 引数が (単独の) `-n' 以外だと、`echo' はそうした引数をオプション
10800 として扱わずに、形がオプションに似た引数として出力する。たとえば、
10801 `echo -ne hello' は、単なる `hello' ではなく、`-ne hello' を出力する。
10802
10803    POSIX では、いかなるオプションのサポートも要求していない。また、
10804 POSIX では、STRING がバックスラッシュを含む場合や、最初の引数が `-n'
10805 の場合に、`echo' がどう振る舞うかは、実装側で決めることになっている。
10806 従って、他のシステムで使うことも考慮したプログラムで、行末の改行を
10807 省略したり、制御文字やバックスラッシュ・エスケープを出力したりする
10808 必要があるのならば、`echo' の代わりに `printf' コマンドを使用することを
10809 考えてもよい。*Note printf invocation::.
10810
10811    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10812
10813 \1f
10814 File: coreutils-ja.info,  Node: printf invocation,  Next: yes invocation,  Prev: echo invocation,  Up: Printing text
10815
10816 15.2 `printf': データを整形して表示する
10817 ===================================================
10818
10819 `printf' は、テキストを整形して表示する。
10820
10821    書式:
10822
10823      printf FORMAT [ARGUMENT]...
10824
10825    `printf' は、文字列 FORMAT を表示する。その際、C の `printf' 関数と
10826 ほとんど同じやり方で、`%' 書式指定子と `\' エスケープシーケンスを解釈
10827 して、数値や文字列の引数 (上記書式の ARGUMENT) を整形する。詳細に
10828 ついては、次の項目を参照すること。 *Note `printf' format directives:
10829 (libc)Output Conversion Syntax.  C の関数との相違点については、
10830 以下の箇条書きのとおりである。
10831
10832    シェルの組み込み機能の `printf' やエイリアスのために、`printf' に何の
10833 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
10834 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
10835 避けるためには、`env' 経由で `printf' を起動すればよい (すなわち、 `env
10836 printf ...' のようにだ)。
10837
10838    * FORMAT 引数は、指定された ARGUMENT のすべてを変換するのに必要な
10839      だけ、繰り返し使用される。たとえば、`printf %s a b' という
10840      コマンドは、`ab' を出力する。
10841
10842    * ARGUMENT の指定がない場合は、文脈が文字列と数値のどちらを期待して
10843      いるかによって、空文字列、または 0 を指定したものと見なされる。
10844      たとえば、`printf %sx%d' というコマンドは、`x0' を表示する。
10845
10846    * `\c' というエスケープシーケンスが追加されている。`\c' より後の部分
10847      を、`printf' は出力しない。たとえば、`printf 'A%sC\cD%sF' B E' と
10848      いうコマンドは、`ABC' を表示する。
10849
10850    * 16 進数エスケープシーケンス `\xHH' は、最大でも 2 桁である。
10851      桁数に制限のない C と、その点が違う。たとえば、`printf '\x07e''
10852      というコマンドは、2 バイトを表示するが (訳注: \x07 (ベル) と e)、
10853      C の `printf ("\x07e")' という文の方は、1 バイトしか表示しない。
10854
10855    * `printf' コマンドの書式指定子には、`%b' が追加されている。`%b'
10856      は、対応する引数文字列中の `\' エスケープシーケンスを、それが
10857      FORMAT 文字列中にあるときと同じように解釈・変換して、引数文字列
10858      を表示する。ただし、引数中の 8 進数エスケープシーケンスは `\0OOO'
10859      の形を取る。OOO は 0 から 3 桁の 8 進数である。`\OOO' が 9 ビット
10860      の値ならば、9 ビット目 (訳注: すなわち最上位ビット) は無視される。
10861      `%b' に精度も指定すると、変換した文字列の先頭から何バイトを表示
10862      するかが、それによって決まる。
10863
10864    * 数値の引数は、単独の C の定数でなければならない。前に `+' や `-'
10865      が付いていてもよい。たとえば、`printf %.4d -3' は、`-0003' を
10866      出力する。
10867
10868    * 数値が期待される引数の先頭文字が `"' や `'' である場合、その引数の
10869      値は、引用符の直後に来る文字の数値である (訳注: すなわち、一般に
10870      は、その文字の ASCII コードの 10 進数表記が出力される)。その後に
10871      さらに文字が続く場合は、環境変数 `POSIXLY_CORRECT' が設定されて
10872      いれば、ただ単に無視され、設定されていなければ、警告が出される。
10873      一例を挙げておくと、`printf "%d" "'a"' は、ASCII 文字セットを使用
10874      しているホストでは、`97' を出力する。ASCII における `a' の数値は、
10875      10 進数表記で 97 だからだ。
10876
10877
10878    引数が浮動小数点数の場合は、小数部の前にはピリオドを置かなければ
10879 ならない。ただし、表示は、現在のロケールの `LC_NUMERIC' カテゴリの
10880 ルールに合わせたものになる。たとえば、小数点を表す文字がコンマの
10881 ロケールでは、`printf %g 3.14' というコマンドは、`3,14' を出力するが、
10882 `printf %g 3,14' というコマンドはエラーになる。 *Note Floating point::.
10883
10884    `printf' は、FORMAT 中の `\OOO' を (OOO が 1 から 3 桁の 8 進数なら
10885 ば) 表示すべき 1 バイトを指定している 8 進数と見なす。また、`\xHH' を
10886 (HH が 1 から 2 桁の 16 進数ならば) 表示すべき 1 文字を指定している 16
10887 進数だと解釈する。ただし、注意していただきたいが、`\OOO' が 255 より
10888 大きな 10 進数に相当するときは、`printf' は 9 ビット目を無視する。
10889 従って、たとえば、`printf '\400'' は `printf '\0'' と同じである。
10890
10891    `printf' は、ISO C 99 で導入された 2 種類のキャラクタ・シンタクス
10892 (訳注: 要するに、コードによる文字の指定法) を解釈することができる。
10893 一つは、16 ビットの Unicode (ISO/IEC 10646) 文字を表す `\u' であって、
10894 4 桁の 16 進数 HHHH で指定する。もう一つは、32 ビットの Unicode 文字を
10895 表す `\U' で、こちらは 8 桁の 16 進数 HHHHHHHH で指定する。`printf' は
10896 Unicode の文字を出力するに当たって、`LC_CTYPE' のロケールに従う。なお、
10897 U+0000...U+009F と U+D800...U+DFFF の範囲にある Unicode の文字は、
10898 U+0024 ($), U+0040 (@), U+0060 (`) を除いて、このシンタクスでは指定
10899 することができない。
10900
10901    `\u' や `\U' を処理するには、フル装備の `iconv' の能力が必要である。
10902 glibc 2.2 以降を採用しているシステムでは、そうした能力は使えるように
10903 なっている。coreutils パッケージをインストールする前に、`libiconv' を
10904 インストールしている場合も同様だ。どちらにも当てはまらない場合は、`\u'
10905 や `\U' は、変換されずに、そのままの形で表示される。
10906
10907    オプションとして指定できるのは、単独の `--help' か `--version' だけ
10908 である。*Note Common options::.  オプションはオペランドの前に置かなけれ
10909 ばならない。
10910
10911    Unicode のキャラクタ・シンタクスを使えば、ロケールに影響されない方法
10912 で文字列を書くことができて、便利である。たとえば、次のようにすれば、
10913
10914      $ env printf '\u20AC 14.95'
10915
10916 ユーロ通貨記号を含む文字列が、ユーロ記号をサポートするすべてのロケール
10917 (ISO-8859-15, UTF-8 など) で正しく出力されることになる。同様に、
10918
10919      $ env printf '\u4e2d\u6587'
10920
10921 とすれば、漢字の文字列が、すべての中国語のロケール (GB2312, BIG5, UTF-8
10922 など) で正しく表示される。
10923
10924    上記の例では、`printf' コマンドを `env' 経由で呼び出していることに
10925 注目していただきたい。これは、シェルのエイリアスや組み込み関数ではなく、
10926 シェルのサーチパスを使って見つけたプログラムを、確実に実行するためである。
10927
10928    文字列がもっと長い場合でも、各文字に対応する 16 進数コードを一つ
10929 一つ捜す必要はない。 ASCII 文字に \u エスケープ・シーケンスを混ぜる
10930 書き方は、JAVA のソースファイルで使用されるエンコーディング (JAVA
10931 source file encoding) としても知られているが、GNU の recode コマンド
10932 3.5c 以降を使用すれば、任意の文字列をこのエンコーディングに変換する
10933 ことができるのだ。以下に示すのは、1 個の短文を、ロケールに影響されずに
10934 その短文を出力するシェルスクリプトに変換する方法である。
10935
10936      $ LC_CTYPE=zh_TW.big5 /usr/local/bin/printf \
10937          '\u4e2d\u6587\n' > sample.txt
10938        #
10939        # 訳注: もちろん、漢字入力の可能な LANG=zh_TW.big5 (あるいは、
10940        #       LANG=ja_JP.eucJP) の環境なら、コマンドラインで直接「中文」
10941        #       と打ち込んでもよい。その方が、「各文字に対応する 16 進数
10942        #       コードを一つ一つ捜す必要はない」という上記の説明に、
10943        #       例としてはふさわしいだろう。LANG=ja_JP.eucJP の場合、
10944        #       下のコマンドは、当然ながら、recode eucJP..JAVA になる。
10945        #
10946      $ recode BIG5..JAVA < sample.txt \
10947          | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
10948          > sample.sh
10949
10950    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10951
10952 \1f
10953 File: coreutils-ja.info,  Node: yes invocation,  Prev: printf invocation,  Up: Printing text
10954
10955 15.3 `yes': 中断されるまで文字列を表示する
10956 =========================================================
10957
10958 `yes' は、コマンドラインで指定された引数を、空白で区切り、末尾に
10959 改行を付けて、意図的に中断されるまで (訳注: たとえば `CTRL-C' で
10960 中断されるまで) 延々と表示する。引数が指定されていない場合は、`y'
10961 の後ろに改行を付けて、中断されるまで延々と表示する。
10962
10963    書き込みエラーがあると、`yes' はステータス `1' で終了する。
10964
10965    指定できるオプションは、単独の `--help' か `--version' だけである。
10966 `-' で始まる引数を出力するには、その引数の前に `--' を置けばよい。
10967 たとえば、`yes -- --help' というようにだ。*Note Common options::.
10968
10969 \1f
10970 File: coreutils-ja.info,  Node: Conditions,  Next: Redirection,  Prev: Printing text,  Up: Top
10971
10972 16 条件
10973 *********
10974
10975 この章で説明するのは、その出力よりも終了ステータスの方が主として役に
10976 立つコマンドである。従って、こうしたコマンドは、シェルの `if' 文の
10977 条件として、あるいは、パイプラインの最後のコマンドとして使用される
10978 ことが多い。
10979
10980 * Menu:
10981
10982 * false invocation::         何もせず、実行失敗のステータスを返す。
10983 * true invocation::          何もせず、正常終了する。
10984 * test invocation::          ファイルタイプのチェックや値の比較を行う。
10985 * expr invocation::          式を評価する。
10986
10987 \1f
10988 File: coreutils-ja.info,  Node: false invocation,  Next: true invocation,  Up: Conditions
10989
10990 16.1 `false': 何もせず、実行失敗のステータスを返す
10991 ====================================================================
10992
10993 `false' は、実行に失敗したこと ("failure") を示す終了ステータス 1 を
10994 返す以外、何もしない。従って、シェルスクリプト中の、実行に失敗する
10995 コマンドが必要な場所で、仮のコマンドとして使用することができる。
10996 最近のほとんどのシェルでは、`false' は組み込みコマンドになっている
10997 ので、スクリプト中で `false' を使う際に使用しているのは、ここで説明
10998 している `false' ではなく、たぶん組み込みコマンドの方である。
10999
11000    `false' は、`--help' と `--version' オプションを認識する。
11001
11002    このバージョンの `false' は、C のプログラムとして実装されている。
11003 従って、シェルスクリプトによる実装より安全かつ高速であり、アカウントを
11004 無効化するための安全なダミー・シェルとして使用することができる。
11005
11006    注意していただきたいが、`false' は、`--help' や`--version' を付けて
11007 実行した場合でも (このマニュアルで説明している他のすべてのプログラム
11008 とは違って)、実行失敗のステータスで終了する。
11009
11010    移植を考慮したプログラムでは、`false' の終了ステータスを 1 だと
11011 決めてかからない方がよい。GNU 以外のホストでは、終了ステータスが 1
11012 より大きいこともあるからだ。
11013
11014 \1f
11015 File: coreutils-ja.info,  Node: true invocation,  Next: test invocation,  Prev: false invocation,  Up: Conditions
11016
11017 16.2 `true': 何もせず、正常終了する
11018 ==============================================
11019
11020 `true' は、実行に成功したこと ("success") を示す終了ステータス 0 を
11021 返す以外、何もしない。従って、シェルスクリプト中の、実行に成功する
11022 コマンドが必要な場所で、仮のコマンドとして使用することができる。
11023 とは言え、シェルの組み込みコマンド `:' (コロン) の方が、同じことを
11024 より高速に実行してくれるかもしれない。最近のほとんどのシェルでは、
11025 `true' は組み込みコマンドになっているので、スクリプト中で `true' を
11026 使う際に使用しているのは、ここで説明している `true' ではなく、たぶん
11027 組み込みコマンドの方である。
11028
11029    `true' は、`--help' と `--version' オプションを認識する。
11030
11031    もっとも、`true' を 0 以外のステータスで終了させることも可能だと
11032 いうことも、心に留めておいていただきたい。`--help' や `--version' を
11033 使用したとき、標準出力がすでにクローズされていたり、I/O エラーを引き
11034 起こすようなファイルにリダイレクトしたりすると、そういうことが起きる。
11035 たとえば、Bourne 互換のシェルを使用して、次のようにするときだ。
11036
11037      $ ./true --version >&-
11038      ./true: write error: Bad file number
11039      $ ./true --version > /dev/full
11040      ./true: write error: No space left on device
11041
11042    このバージョンの `true' は、C のプログラムとして実装されている。
11043 従って、シェルスクリプトによる実装より安全かつ高速であり、アカウントを
11044 無効化するための安全なダミー・シェルとして使用することができる。
11045
11046 \1f
11047 File: coreutils-ja.info,  Node: test invocation,  Next: expr invocation,  Prev: true invocation,  Up: Conditions
11048
11049 16.3 `test': ファイルタイプのチェックや値の比較を行う
11050 =========================================================================
11051
11052 `test' は、条件式 EXPRESSION の評価次第で、0 (真) または 1 (偽) の
11053 ステータスを返す。式を構成する各部分は、独立した引数でなければならない。
11054
11055    `test' は、ファイルのステータスを検査することができる。また、文字列を
11056 扱う演算子や、数値を比較するための演算子も備えている。
11057
11058    `test' には、`test' で始める書式のほかに、一対の角カッコを使用する
11059 もう一つの書式がある。たとえば、`test -d /' の代わりに、`[ -d / ]' と
11060 書いても構わない。角カッコは、それぞれ独立した引数でなければならない
11061 (訳注: 言い換えれば、他の引数と空白で分離されていなければならない)。
11062 だから、たとえば、`[-d /]' では、望みの結果を得られないわけだ。`test
11063 EXPRESSION' と `[ EXPRESSION ]' は、同じ意味なので、以下では前者の書式
11064 についてのみ解説する。
11065
11066    書式:
11067
11068      test EXPRESSION
11069      test
11070      [ EXPRESSION ]
11071      [ ]
11072      [ OPTION
11073
11074    シェルの組み込み機能の `test' やエイリアスのために、`test' に何の
11075 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
11076 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
11077 避けるためには、`env' 経由で `test' を起動すればよい (すなわち、 `env
11078 test ...' のようにだ)。
11079
11080    EXPRESSION を省略した場合、`test' は、偽を返す。EXPRESSION が引数 1
11081 個だけだった場合、`test' は、その引数が空 (null) ならば、偽を返し、さも
11082 なければ、真を返す。引数には、`-d', `-1', `--', `--help', `--version' と
11083 いった、他のほとんどのプログラムでなら、オプションとして扱われるものも
11084 含めて、どんな文字列でも指定することができる。そこで、ヘルプやバージョン
11085 情報を取得するには、`[ --help' や `[ --version' という形でコマンドを
11086 実行する必要がある。この場合、いつもと違って、閉じカッコは付けない。
11087 *Note Common options::.
11088
11089    終了ステータス:
11090
11091      0: 式が真の場合。
11092      1: 式が偽の場合。
11093      2: エラーが起きた場合。
11094
11095 * Menu:
11096
11097 * File type tests::          ファイルタイプのテスト (-[gkruwxOG])。
11098 * Access permission tests::  アクセス許可のテスト (-[gkruwxOG])。
11099 * File characteristic tests::  ファイル特性のテスト (-e -s -nt -ot -ef)。
11100 * String tests::             文字列のテスト (-z -n = == !=)。
11101 * Numeric tests::            数値のテスト (-eq -ne -lt -le -gt -ge)。
11102 * Connectives for test::     `test' の論理結合演算子 (! -a -o)。
11103
11104 \1f
11105 File: coreutils-ja.info,  Node: File type tests,  Next: Access permission tests,  Up: test invocation
11106
11107 16.3.1 File type tests
11108 ----------------------
11109
11110 以下のオプションは、ある特定のファイルタイプか否かの検査を行う。(Unix
11111 では、あらゆるものがファイルだ。だが、ファイルならみんな同じだという
11112 わけではない!)
11113
11114 `-b FILE'
11115      FILE が存在し、ブロック・スペシャルデバイスならば、真。
11116
11117 `-c FILE'
11118      FILE が存在し、キャラクタ・スペシャルデバイスならば、真。
11119
11120 `-d FILE'
11121      FILE が存在し、ディレクトリならば、真。
11122
11123 `-f FILE'
11124      FILE が存在し、通常ファイルならば、真。
11125
11126 `-h FILE'
11127 `-L FILE'
11128      FILE が存在し、シンボリックリンクならば、真。ファイル関係の他の
11129      すべてのテストとは違って、このテストは、FILE がシンボリックリンク
11130      の場合、リンクの参照を行わない。
11131
11132 `-p FILE'
11133      FILE が存在し、名前付きパイプならば、真。
11134
11135 `-S FILE'
11136      FILE が存在し、ソケットならば、真。
11137
11138 `-t FD'
11139      FD が端末と結びついているファイルディスクリプタならば、真。
11140
11141
11142 \1f
11143 File: coreutils-ja.info,  Node: Access permission tests,  Next: File characteristic tests,  Prev: File type tests,  Up: test invocation
11144
11145 16.3.2 アクセス許可のテスト
11146 -------------------------------------
11147
11148 以下のオプションは、特定のアクセス許可について検査をする。
11149
11150 `-g FILE'
11151      FILE が存在し、set-group-ID ビットが立っていれば、真。
11152
11153 `-k FILE'
11154      FILE が存在し、"sticky" ビットが立っていれば、真
11155
11156 `-r FILE'
11157      FILE が存在し、読み出しが許可されていれば、真。
11158
11159 `-u FILE'
11160      FILE が存在し、set-user-ID ビットが立っていれば、真。
11161
11162 `-w FILE'
11163      FILE が存在し、書き込みが許可されていれば、真。
11164
11165 `-x FILE'
11166      FILE が存在し、実行が許可されていれば (ディレクトリの場合は、
11167      検索が許可されていれば)、真。
11168
11169 `-O FILE'
11170      FILE が存在し、その所有者が test コマンド実行者の実効ユーザ ID
11171      と同じならば、真。
11172
11173 `-G FILE'
11174      FILE が存在し、そのグループが test コマンド実行者の実効グループ ID
11175      と同じならば、真。
11176
11177
11178 \1f
11179 File: coreutils-ja.info,  Node: File characteristic tests,  Next: String tests,  Prev: Access permission tests,  Up: test invocation
11180
11181 16.3.3 ファイル特性のテスト
11182 -------------------------------------
11183
11184 以下のオプションは、ファイルの他の特性を検査する。
11185
11186 `-e FILE'
11187      FILE が存在すれば、真。
11188
11189 `-s FILE'
11190      FILE が存在し、サイズが 0 よりも大きければ、真。
11191
11192 `FILE1 -nt FILE2'
11193      FILE1 が FILE2 より (更新日時 (modification date) で比較して)
11194      新しいか、あるいは、FILE1 が存在して、FILE2 が存在しなければ、真。
11195
11196 `FILE1 -ot FILE2'
11197      FILE1 が FILE2 より (更新日時で比較して) 古いか、あるいは、FILE2 が
11198      存在して、FILE1 が存在しなければ、真。
11199
11200 `FILE1 -ef FILE2'
11201      FILE1 と FILE2 が同じデバイス番号と同じ inode 番号を持っていれば、
11202      言い換えれば、両者が互いのハードリンクならば、真。
11203
11204
11205 \1f
11206 File: coreutils-ja.info,  Node: String tests,  Next: Numeric tests,  Prev: File characteristic tests,  Up: test invocation
11207
11208 16.3.4 文字列のテスト
11209 ----------------------------
11210
11211 以下のオプションは、文字列の特性を検査する。シェルに対して引数 STRING を
11212 引用符で保護する必要があるかもしれない。たとえば、こんなふうにだ。
11213
11214      test -n "$V"
11215
11216    ここで引用符は、`$V' が空だったり、特殊文字を含んでいたりする場合に、
11217 意図に反した引数が `test' に渡ることを防いでいる。
11218
11219 `-z STRING'
11220      STRING の長さが 0 ならば、真。
11221
11222 `-n STRING'
11223 `STRING'
11224      STRING の長さが 0 でなければ、真。
11225
11226 `STRING1 = STRING2'
11227      両文字列が等しければ、真。
11228
11229 `STRING1 == STRING2'
11230      両文字列が等しければ、真 (= と同じ意味)。
11231
11232 `STRING1 != STRING2'
11233      両文字列が等しくなければ、真。
11234
11235
11236 \1f
11237 File: coreutils-ja.info,  Node: Numeric tests,  Next: Connectives for test,  Prev: String tests,  Up: test invocation
11238
11239 16.3.5 数値のテスト
11240 -------------------------
11241
11242 数値間の関係を調べる演算子を挙げる。引数は、数字のみで表現される整数か
11243 (負数も使用できる)、`-l STRING' という特別な式でなければならない。後者は
11244 STRING の長さとして評価される。
11245
11246    (訳注: 要するに、普通は 10 進数の整数を引数として取るということ。
11247 `expr' コマンドとは違って、`test' では `+2' といった表現も可能だ。)
11248
11249 `ARG1 -eq ARG2'
11250 `ARG1 -ne ARG2'
11251 `ARG1 -lt ARG2'
11252 `ARG1 -le ARG2'
11253 `ARG1 -gt ARG2'
11254 `ARG1 -ge ARG2'
11255      こうした二項算術演算子は、それぞれ次の場合に真を返す。上から順に、
11256      ARG1 が ARG2 と比べて、等しい場合、等しくない場合、より小さい場合、
11257      より小さいか等しい場合、より大きい場合、より大きいか等しい場合。
11258
11259
11260    例を挙げる。
11261
11262      test -1 -gt -2 && echo yes
11263      => yes
11264      test -l abc -gt 1 && echo yes
11265      => yes
11266      test 0x100 -eq 1
11267      error--> test: integer expression expected before -eq
11268
11269 \1f
11270 File: coreutils-ja.info,  Node: Connectives for test,  Prev: Numeric tests,  Up: test invocation
11271
11272 16.3.6 `test' の論理結合演算子
11273 --------------------------------------
11274
11275 おなじみの論理結合演算子である。
11276
11277 `! EXPR'
11278      EXPR が偽ならば、真。
11279
11280 `EXPR1 -a EXPR2'
11281      EXPR1 と EXPR2 の両方が真ならば、真。
11282
11283 `EXPR1 -o EXPR2'
11284      EXPR1 と EXPR2 のどちらかが真ならば、真。
11285
11286
11287 \1f
11288 File: coreutils-ja.info,  Node: expr invocation,  Prev: test invocation,  Up: Conditions
11289
11290 16.4 `expr': 式を評価する
11291 ===============================
11292
11293 `expr' は、式を評価して、結果を標準出力に書き出す。式の各構成要素
11294 (token) は、独立した引数でなければならない。
11295
11296    オペランド (演算対象) は、整数か文字列である。整数は、1 個以上の 10
11297 進数の数字から構成され、先頭に `-' が付いていてもよい。`expr' は、
11298 オペランドの位置にあるものが何であれ、それを整数、または、文字列に
11299 変換する。どちらになるかは、それに対して行われる演算次第である。
11300
11301    `expr' そのものに対しては、文字列をクォートする必要がない。だが、
11302 シェルにとって特別な意味がある、たとえば空白のような文字を保護する
11303 ためには、文字列を引用符で囲むなどの方法でクォートする必要があるかも
11304 しれない。とは言え、クォートされているかどうかに関わりなく、文字列の
11305 オペランドは、丸カッコ 1 個であってはならないし、`+' のような `expr'
11306 の演算子の一つであるべきでもない。すなわち、シェルに対してクォートする
11307 だけでは、エラーを引き起こすことなく、任意の文字列 `$str' を `expr' に
11308 渡すことはできないのだ。この問題を回避する方法の一つは、GNU の拡張
11309 である `+' 演算子 (訳注: この `+' は、算術演算子の `+' ではなく、直後に
11310 来る引数が文字列であることを示す文字列演算子である) を使用することだ
11311 (たとえば、`+ "$str" = foo' といった具合に)。もっと移植性のある方法は、
11312 `" $str"' という先頭に空白を入れた表現を使用し、式の残りの部分でも
11313 それに合わせて、先頭のスペースを考慮に入れるようにすることである
11314 (たとえば、`" $str" = " foo"' のように)。
11315
11316    負の整数や、`-' で始まる文字列を `expr' の 1 番目の引数として渡す
11317 べきではない。オプションと間違われかねないからだ。それを避けるため
11318 には、カッコでくくればよい (訳注: たとえば、`expr \( -1 + 1 \)')。
11319 また、移植を考慮したスクリプトでは、文字列のオペランドに、形が整数と
11320 同じになってしまうものを使うべきではない。こちらは、先頭にスペースを
11321 入れる上記の方法で回避できる。
11322
11323    演算子には、記号としてオペランドとオペランドの間に置くものもあれば、
11324 キーワードとしてオペランドの前に付けるものもある。丸カッコは、おなじみの
11325 やり方で、グループ化に使用できる。ただし、丸カッコや、演算子の多くは、
11326 シェルによって評価されないように、クォートしなければならない。
11327
11328    GNU MP ライブラリ対応でビルドされた場合、`expr' は任意精度演算を
11329 使用する。そうでない場合は、ネイティブな算術型を使用するので、算術
11330 オーバーフローのために実行に失敗することがあるかもしれない。
11331
11332    指定できるオプションは、`--help' と `--version' だけである。 *Note
11333 Common options::.  オプションはオペランドの前に置かなければならない。
11334
11335    終了ステータス:
11336
11337      0: 式が null でも 0 でもない場合。
11338      1: 式が null または 0 の場合。
11339      2: 式が無効な場合。
11340      3: 内部エラーが起きた場合 (例: 算術オーバーフロー)。
11341
11342 * Menu:
11343
11344 * String expressions::       文字列式 (+ : match substr index length)。
11345 * Numeric expressions::      数式 (+ - * / %)。
11346 * Relations for expr::       論理結合と関係表現 (| & < <= = == != >= >)。
11347 * Examples of expr::         用例。
11348
11349 \1f
11350 File: coreutils-ja.info,  Node: String expressions,  Next: Numeric expressions,  Up: expr invocation
11351
11352 16.4.1 文字列式
11353 -------------------
11354
11355 `expr' は、パターンマッチなどの文字列演算子をサポートしている。文字列
11356 演算子の優先順位は、算術演算子や関係演算子よりも高い (算術/関係演算子
11357 については後述する)。
11358
11359 `STRING : REGEX'
11360      パターンマッチを行う。まず、左右の項を文字列に変換し、右項を、
11361      先頭に `^' が暗黙のうちに付いている正規表現と見なす (`grep' 風の
11362      基本正規表現)。それから、その正規表現と左項がマッチするかどうかを
11363      調べる。
11364
11365      マッチが成功した場合、REGEX 中でカッコ (`\(' と `\)') を使用して
11366      いれば、`:' 演算子は、そのカッコ内の部分表現にマッチした STRING
11367      中の部分文字列を返す。カッコを使っていなければ、返すのはマッチした
11368      文字数である。
11369
11370      マッチに失敗した場合、`:' 演算子は、REGEX 中でカッコ (`\(' と `\)')
11371      を使用していれば、空文字列を、さもなければ、0 を返す。
11372
11373      最初の `\( ... \)' のペアだけが、返り値に関係する。二番目以降の
11374      カッコのペアには、正規表現の演算子をグループ化する働きしかない。
11375
11376      正規表現では、`\+', `\?', `\|' は演算子であり、それぞれ、1 個以上
11377      にマッチする、あってもなくてもよい、候補のうちのどちらか、を意味して
11378      いる。ところが、SunOS などの `expr' では、こうした記号を通常の文字
11379      として扱っている (POSIX は、どちらの動作も認めている)。正規表現の
11380      文法については次のものが詳しい。*Note Regular Expression Library:
11381      (regex)Top.  実例をいくつか、「`expr' の使用例」に挙げておいた。
11382      *note Examples of expr::.
11383
11384 `match STRING REGEX'
11385      パターンマッチを行う別の方法。これは、`STRING : REGEX' と同じ
11386      である。
11387
11388 `substr STRING POSITION LENGTH'
11389      STRING の部分文字列を返す。部分文字列は、POSITION の位置から
11390      始まり、最長でも LENGTH の長さである。POSITION と LENGTH のどちらか
11391      が、負数や 0 だったり、数値以外だったりする場合は、空文字列を返す。
11392
11393 `index STRING CHARSET'
11394      CHARSET 中の文字が最初に見つかった STRING 中の位置を返す。STRING
11395      中に CHARSET 中のどの文字も見つからなかった場合は、0 を返す。
11396
11397 `length STRING'
11398      STRING の長さを返す。
11399
11400 `+ TOKEN'
11401      たとえ、TOKEN が `match' のようなキーワードや、 `/' のような演算子
11402      であっても、TOKEN を文字列として解釈する。これを使用すると、`expr
11403      length + "$x"' や `expr + "$x" : '.*/\(.\)'' を実行したとき、`$x'
11404      の値が (たとえば) たまたま `/' や `index' であっても、適切な動作を
11405      させることができる。この演算子は、GNU の拡張である。移植を考慮した
11406      シェルスクリプトでは、`+ "$token"' ではなく、`" $token" :
11407      ' \(.*\)'' を使うべきである。
11408
11409
11410    `expr' にキーワードを文字列として解釈させるためには、クォート演算子
11411 (すなわち、上で述べている `+' 演算子) を使用しなければならない。
11412
11413 \1f
11414 File: coreutils-ja.info,  Node: Numeric expressions,  Next: Relations for expr,  Prev: String expressions,  Up: expr invocation
11415
11416 16.4.2 数式
11417 -------------
11418
11419 `expr' は、以下に挙げる通常の算術演算子を、昇順の優先順位で、サポート
11420 している。こうした算術演算子は、前節で述べた文字列演算子より優先順位が
11421 低く、次節で述べる関係演算子より優先順位が高い。
11422
11423 `+ -'
11424      加算と減算。左右の項は両方とも整数に変換される。整数に変換できない
11425      場合は、エラーになる。
11426
11427 `* / %'
11428      乗算、除算、剰余演算。左右の項は両方とも整数に変換される。整数に
11429      変換できない場合は、エラーになる。
11430
11431
11432 \1f
11433 File: coreutils-ja.info,  Node: Relations for expr,  Next: Examples of expr,  Prev: Numeric expressions,  Up: expr invocation
11434
11435 16.4.3 `expr' の関係表現
11436 -----------------------------
11437
11438 `expr' は、通常の論理結合や関係表現をサポートしている。そうした演算子
11439 は、前の節で述べた文字列演算子や算術演算子より優先順位が低い。論理結合や
11440 関係表現の演算子を、優先順位の低いものから高いものへ順に並べておく。
11441
11442 `|'
11443      左項が null でも 0 でもなければ、左項を返す。左項が null または 0
11444      の場合は、右項が null でも 0 でもなければ、右項を返す。両項とも
11445      null または 0 の場合は、0 を返す。左項が null でも 0 でもない場合、
11446      右項の評価は行われない。
11447
11448 `&'
11449      両項とも null でも 0 でもなければ、左項を返し、それ以外の場合は、0
11450      を返す。左項が null または 0 の場合、右項の評価は行われない。
11451
11452 `< <= = == != >= >'
11453      両項を比較し、関係が真ならば、1 を返し、偽の場合は、0 を返す。
11454      `==' は `=' と同じ意味である。`expr' は、まず両項を整数に変換し、
11455      数値としての比較を試みる。左右どちらかの項の変換に失敗した場合は、
11456      `LC_COLLATE' のロケールで指定されている、文字の照合順を使用して、
11457      辞書的な比較を行う。
11458
11459
11460 \1f
11461 File: coreutils-ja.info,  Node: Examples of expr,  Prev: Relations for expr,  Up: expr invocation
11462
11463 16.4.4 `expr' の使用例
11464 --------------------------
11465
11466 シェルのメタ文字をクオートする例も含めて、用例をいくつか挙げておく。
11467
11468    Bourne 互換シェルで、シェル変数 `foo' に 1 を加える。
11469
11470      foo=$(expr $foo + 1)
11471
11472    変数 `$fname' に格納されているファイル名から、ディレクトリではない
11473 部分を取り出して、表示する。`$fname' に `/' が含まれていなくてもよい。
11474
11475      expr $fname : '.*/\(.*\)' '|' $fname
11476
11477    次の例で `\+' は演算子である (訳注: 細かいことを言うと、`grep' 流
11478 の基本正規表現の演算子。ちなみに、最後の例の `+' は、`expr' の文字列
11479 演算子である)。
11480
11481      expr aaa : 'a\+'
11482      => 3
11483
11484      expr abc : 'a\(.\)c'
11485      => b
11486      expr index abcdef cz
11487      => 3
11488      expr index index a
11489      error--> expr: syntax error
11490      expr index + index a
11491      => 0
11492
11493 \1f
11494 File: coreutils-ja.info,  Node: Redirection,  Next: File name manipulation,  Prev: Conditions,  Up: Top
11495
11496 17 リダイレクション
11497 ***************************
11498
11499 Unix のシェルは、いくつかの形式のリダイレクション ("redirection") --
11500 コマンドの入力元や出力先を変更する手段 -- をたいてい用意している。
11501 しかし、ある一つの便利なリダイレクションは、シェルではなく、独立した
11502 コマンドによって行われる。この章では、そのコマンドについて説明する。
11503
11504 * Menu:
11505
11506 * tee invocation::           出力を複数のファイルやプロセスにリダイレクトする。
11507
11508 \1f
11509 File: coreutils-ja.info,  Node: tee invocation,  Up: Redirection
11510
11511 17.1 `tee': 出力を複数のファイルやプロセスにリダイレクトする
11512 ====================================================================================
11513
11514 `tee' コマンドは、標準入力を標準出力にコピーするとともに、引数として
11515 指定されたファイル (複数可) にもコピーする。これは、あるデータをパイプ
11516 に送るだけでなく、同時にそのコピーを保存したい場合に、便利である。
11517
11518    書式:
11519
11520      tee [OPTION]... [FILE]...
11521
11522    書き出し先のファイルがまだ存在していなければ、作成される。書き出し
11523 先のファイルがすでに存在している場合は、`-a' オプションを使用しない
11524 かぎり、ファイルに前からあったデータは上書きされる。
11525
11526    FILE の一つに `-' を指定すると、`tee' は、入力のコピーをもう一つ、
11527 標準出力に送出する。だが、コピー同士が重なり合うので、たいていの場合、
11528 これはあまり役に立たない。
11529
11530    このプログラムでは以下のオプションが使用できる。参照: *note Common
11531 options::.
11532
11533 `-a'
11534 `--append'
11535      指定されたファイルの末尾に標準入力を追加する。すなわち、ファイルを
11536      上書きしない。
11537
11538 `-i'
11539 `--ignore-interrupts'
11540      割り込みシグナルを無視する。
11541
11542
11543    大量のデータの転送を行いながら、同時にそのデータのサマライズも
11544 行いたい、改めてデータを読み直すようなことはしたくない。`tee' は、
11545 そういうときに便利である。たとえば、DVD イメージをダウンロードして
11546 いるとき、その場ですぐ、署名やチェックサムを確認したくなることがよく
11547 ある。単に次のようにするのは、効率が悪い。
11548
11549      wget http://example.com/some.iso && sha1sum some.iso
11550
11551    上記コマンドの問題点の一つは、ただでさえ時間のかかる SHA1 の計算に
11552 取りかかる前に、ダウンロードが完了するのを待たなければならないことで
11553 ある。たぶん、さらに問題なのは、上記のやり方では、DVD イメージを改めて
11554 読み直さなければならないことだろう (一度目の読み込みは、ネットワーク
11555 からだ)。
11556
11557    こうした作業を行う効率的な方法は、ダウンロードと SHA1 の計算を
11558 同時に、交互に実行することである。そうすれば、プロセス全体が平行して
11559 スムーズに進むので、無駄な時間を使わずに、チェックサムが手に入る。
11560
11561      # ちょっと凝った方法。プロセス置換の実例をご覧に入れるため。
11562      wget -O - http://example.com/dvd.iso \
11563        | tee >(sha1sum > dvd.sha1) > dvd.iso
11564
11565    こうすれば、`tee' は、出力を目当てのファイルに書き出すだけでなく、
11566 パイプにも書き出す。そして、後者では、 `sha1sum' を実行し、最終的に
11567 チェックサムを `dvd.sha1' という名前のファイルに保存することになる。
11568
11569    しかし、気をつけていただきたい。上記の例は、プロセス置換 ("process
11570 substitution") と呼ばれる最近のシェルの機能を当てにしている (上記の
11571 `>(command)' という構文のことである。*Note Process Substitution:
11572 (bash)Process Substitution.)。 そのため、`zsh', `bash', `ksh' では
11573 うまく動作するが、`/bin/sh' では動作しない。従って、こうしたコードを
11574 シェルスクリプトで使用するときは、スクリプトの先頭に `#!/bin/bash' など
11575 と書くことを忘れてはいけない。
11576
11577    上記の例は、書き出しを 1 個のファイルと 1 個のプロセスに行っている
11578 だけだ。その程度なら、もっと普通の、もっと移植性のある使い方をした方が
11579 ずっとよい。
11580
11581      wget -O - http://example.com/dvd.iso \
11582        | tee dvd.iso | sha1sum > dvd.sha1
11583
11584    `tee' が二つのプロセスに書き込むように、この例を拡張して、MD5 と
11585 SHA1 のチェックサムを平行して計算させることもできる。その場合は、
11586 プロセス置換が必要になる。
11587
11588      wget -O - http://example.com/dvd.iso \
11589        | tee >(sha1sum > dvd.sha1) \
11590              >(md5sum > dvd.md5) \
11591        > dvd.iso
11592
11593    このテクニックは、パイプから入ってくるデータの圧縮したコピーを作り
11594 たいときにも、役に立つ。`du -ak' の出力するディスク使用量のデータを
11595 要約して、グラフィカルに表示するツールを考えていただきたい。
11596 ディレクトリ階層が膨大だと、`du -ak' は実行に長い時間がかかるだろう
11597 し、いともたやすくテラバイトのデータを作成してくれるだろう。そこで、
11598 `du' コマンドをむやみに再実行することはやりたくない。また、圧縮される
11599 前のデータを保存しておきたくもない。
11600
11601    これを効率の悪い方法でやると、`du' の出力全部の圧縮を済ませるまで、
11602 GUI ツールを起動することすらできない。
11603
11604      du -ak | gzip -9 > /tmp/du.gz
11605      gzip -d /tmp/du.gz | xdiskusage -a
11606
11607    `tee' とプロセス置換を使えば、GUI ツールを直ちに起動できるし、
11608 圧縮ファイルの展開も全くやらないですむ。
11609
11610      du -ak | tee >(gzip -9 > /tmp/du.gz) | xdiskusage -a
11611
11612    最後にもう一つ。常に 2 種類以上の圧縮した tar アーカイブ (tarball)
11613 を一度に作ることにしている場合は、より効率のよいやり方ができるかも
11614 しれない。たとえば、`make dist' が `gzip' と `bzip2' の両方で圧縮した
11615 tar アーカイブを作成するような場合だ。`automake' が生成する `Makefile'
11616 のルールは、たいてい、こんなふうにコマンドを連続して実行することで、
11617 圧縮した tar アーカイブを二つ作成している (少し単純化してある)。
11618
11619      tardir=your-pkg-M.N
11620      tar chof - "$tardir" | gzip  -9 -c > your-pkg-M.N.tar.gz
11621      tar chof - "$tardir" | bzip2 -9 -c > your-pkg-M.N.tar.bz2
11622
11623    しかしながら、アーカイブの作成・圧縮の対象になっているディレクトリ
11624 階層が、数メガバイトより大きい場合は -- 使用しているシステムがマルチ
11625 プロセッサを搭載し、メモリがふんだんにある場合はなおさらそうだが --
11626 ディレクトリの中身を 1 回だけ読み込み、圧縮プログラムを平行して走ら
11627 せることで、ずっと効率のよい仕事ができる。
11628
11629      tardir=your-pkg-M.N
11630      tar chof - "$tardir" \
11631        | tee >(gzip -9 -c > your-pkg-M.N.tar.gz) \
11632        | bzip2 -9 -c > your-pkg-M.N.tar.bz2
11633
11634    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11635
11636 \1f
11637 File: coreutils-ja.info,  Node: File name manipulation,  Next: Working context,  Prev: Redirection,  Up: Top
11638
11639 18 ファイル名操作
11640 ************************
11641
11642 この章では、ファイル名操作に使うコマンドについて説明する。
11643
11644 * Menu:
11645
11646 * basename invocation::      ファイル名からディレクトリと接尾辞を取り除く。
11647 * dirname invocation::       ファイル名から最後の要素を取り除く。
11648 * pathchk invocation::       ファイル名の有効性や可搬性を検査する。
11649 * mktemp invocation::        テンポラリファイルやディレクトリを作成する。
11650 * realpath invocation::      ファイル名を展開して表示する。
11651
11652 \1f
11653 File: coreutils-ja.info,  Node: basename invocation,  Next: dirname invocation,  Up: File name manipulation
11654
11655 18.1 `basename': ファイル名からディレクトリと接尾辞を取り除く
11656 ===================================================================================
11657
11658 `basename' は、NAME の先頭にディレクトリ部分があれば、それを取り除く。
11659
11660    書式:
11661
11662      basename NAME [SUFFIX]
11663      basename OPTION... NAME...
11664
11665    SUFFIX が指定されていて、それが NAME の末尾と同一ならば、SUFFIX の
11666 部分も NAME から取り除かれる。気をつけていただきたいが、ファイル名の
11667 末尾のスラッシュは、接尾辞のマッチングに先立って除去されるので、SUFFIX
11668 にスラッシュが含まれていると、指定に効果がないことになる。`basename'
11669 は、 結果を標準出力に表示する。
11670
11671    `basename' と `dirname' は合わせて設計されており、もし `ls "$name"'
11672 が成功するならば、`cd "$(dirname "$name")"; ls "$(basename "$name")"'
11673 というコマンドの連続も成功するようになっている。これは、ファイル名の
11674 末尾に改行が付いている場合を除いて、あらゆる場合にうまく行く。
11675
11676    POSIX によれば、NAME が空の場合や `//' の場合に、結果がどうなるかは、
11677 実装側で決めてよいことになっている。前者の場合、GNU の `basename' は、
11678 空文字列を返す。後者の場合、// と / とが別のものであるプラットフォーム
11679 では、結果は `//' になり、全く区別しないプラットフォームでは、結果は `/'
11680 になる。
11681
11682    このプログラムでは以下のオプションが使用できる。参照: *note Common
11683 options::.  オプションはオペランドの前に置かなければならない。
11684
11685 `-a'
11686 `--multiple'
11687      複数の引数を受け付ける。すべての引数は NAME として処理される。この
11688      オプションを使用する場合、SUFFIX を指定するならば、`-s' オプション
11689      を使わなければならない。
11690
11691 `-s SUFFIX'
11692 `--suffix=SUFFIX'
11693      末尾にある SUFFIX を除去する。このオプションを指定すると `-a' オプ
11694      ションも指定したことになる。
11695
11696 `-z'
11697 `--zero'
11698      出力する項目を NUL 文字で区切る。
11699
11700
11701    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11702
11703    用例:
11704
11705      # "sort" を出力する。
11706      basename /usr/bin/sort
11707
11708      # "stdio" を出力する。
11709      basename include/stdio.h .h
11710
11711      # "stdio" を出力する。
11712      basename -s .h include/stdio.h
11713
11714      # "stdio", "stdlib" の順に出力する。
11715      basename -a -s .h include/stdio.h include/stdlib.h
11716
11717 \1f
11718 File: coreutils-ja.info,  Node: dirname invocation,  Next: pathchk invocation,  Prev: basename invocation,  Up: File name manipulation
11719
11720 18.2 `dirname': ファイル名から最後の要素を取り除く
11721 ===================================================================
11722
11723 `dirname' は、各 NAME からスラッシュで区切られた最後の要素を取り除いて、
11724 残りのすべてを表示する。その際、最後の要素の左右どちらにあるスラッシュ
11725 も除去される。NAME を構成する文字列にスラッシュが一つも含まれない場合、
11726 `dirname' は (カレントディレクトリを意味する) `.' を表示する。
11727
11728    書式:
11729
11730      dirname [OPTION] NAME...
11731
11732    NAME は実在するファイル名でなくても構わないが、実在するファイル名
11733 ならば、この操作によって、最後の要素それ自体がディレクトリである場合も
11734 含めて、最後の要素が存在するディレクトリが、利用できる形で表示される。
11735
11736    `basename' と `dirname' は合わせて設計されており、もし `ls "$name"'
11737 が成功するならば、`cd "$(dirname "$name")"; ls "$(basename "$name")"'
11738 というコマンドの連続も成功するようになっている。これは、ファイル名の
11739 末尾に改行が付いている場合を除いて、あらゆる場合にうまく行く。
11740
11741    POSIX によれば、NAME が `//' の場合に、結果がどうなるかは、実装側で
11742 決めてよいことになっている。GNU の `dirname' について言うと、// と /
11743 とが別のものであるプラットフォームでは、結果は `//' になり、全く区別
11744 しないプラットフォームでは、結果は `/' になる。
11745
11746    このプログラムでは、以下のオプションが使える。参照: *note Common
11747 options::.
11748
11749 `-z'
11750 `--zero'
11751      出力する項目を NUL 文字で区切る。
11752
11753
11754    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11755
11756    用例:
11757
11758      # "/usr/bin" を出力する。
11759      dirname /usr/bin/sort
11760      dirname /usr/bin//.//
11761
11762      # "dir1", "dir2" の順に出力する。
11763      dirname dir1/str dir2/str
11764
11765      # "." を出力する。
11766      dirname stdio.h
11767
11768 \1f
11769 File: coreutils-ja.info,  Node: pathchk invocation,  Next: mktemp invocation,  Prev: dirname invocation,  Up: File name manipulation
11770
11771 18.3 `pathchk': ファイル名の有効性や可搬性を検査する
11772 ======================================================================
11773
11774 `pathchk' は、ファイル名が有効かどうか、可搬性があるかどうかを検査する。
11775
11776    書式:
11777
11778      pathchk [OPTION]... NAME...
11779
11780    `pathchk' は各 NAME に対して、以下の条件のどれかが真ならば、エラー
11781 メッセージを表示する。
11782
11783   1. NAME 中の実在するディレクトリの一つが、検索 (実行) 許可を持って
11784      いない。
11785
11786   2. NAME の長さが、オペレーティング・システムによってサポートされている
11787      最大長を越えている。
11788
11789   3. NAME の構成要素の一つの長さが、それが存在することになるファイル
11790      システムによってサポートされている最大長を越えている。
11791
11792    実在しないファイル名を指定しても、エラーにはならない。その名前の
11793 ファイルが、上記の条件内で作成可能であればよい。
11794
11795    このプログラムでは以下のオプションが使用できる。参照: *note Common
11796 options::.  オプションはオペランドの前に置かなければならない。
11797
11798 `-p'
11799      実際に使用しているファイルシステムに基づいて検査を行うのではなく、
11800      以下の条件を調べて、そのどれかが真ならば、エラーメッセージを表示
11801      する。
11802
11803        1. ファイル名が空である。
11804
11805        2. ファイル名に、どのシステムでもファイル名に使用できる文字と
11806           して POSIX が規定している文字セット以外の文字が含まれている。
11807           すなわち、ASCII 英数字、`.'、`_'、`-'、`/' 以外の文字が使用
11808           されている。
11809
11810        3. ファイル名の長さや、その構成要素の一つの長さが、POSIX の規格で
11811           可搬性のために最小限サポートすべしとされている長さを越えている。
11812
11813 `-P'
11814      ファイル名が空だったり、`-' で始まる構成要素を含んでいたりすると、
11815      エラーメッセージを表示する。
11816
11817 `--portability'
11818      ファイル名が POSIX に準拠しているすべてのホストで使えるもので
11819      なければ、エラーメッセージを表示する。このオプションは、`-p -P' と
11820      同じことである。
11821
11822
11823    終了ステータス:
11824
11825      0: 指定されたすべてのファイル名が検査のすべてにパスした場合。
11826      1: それ以外。
11827
11828 \1f
11829 File: coreutils-ja.info,  Node: mktemp invocation,  Next: realpath invocation,  Prev: pathchk invocation,  Up: File name manipulation
11830
11831 18.4 `mktemp': テンポラリファイルやディレクトリを作成する
11832 ==============================================================================
11833
11834 `mktemp' は、テンポラリファイルやテンポラリディレクトリの作成を行う。
11835
11836    書式:
11837
11838      mktemp [OPTION]... [TEMPLATE]
11839
11840    `mktemp' は、TEMPLATE を基にして、安全なテンポラリファイルや
11841 ディレクトリを作成し、その名前を表示する。TEMPLATE を指定する場合、
11842 その最後の構成部分に少なくとも 3 個の連続する `X' が含まれていなければ
11843 ならない。TEMPLATE を省略した場合は、`tmp.XXXXXXXXXX' というテンプレート
11844 が使用され、`--tmpdir' オプションが暗黙のうちに指定されることになる。
11845 TEMPLATE 中の `X' が連続する最後の部分は、英数字で置き換えられる。
11846 従って、大文字小文字を区別するファイルシステムなら、テンプレートに
11847 連続する N 個の `X' が含まれていると、作成されるファイル名には、 62 の
11848 N 乗とおりの可能性があることになる。
11849
11850    昔のスクリプトでは、テンポラリファイルを作成する際、単にプログラムの
11851 名前にプロセス ID (`$$') を拡張子として付けるのが習慣だった。しかし、
11852 この命名法は、名前の推測が容易であり、従って、競合状態を起こしやすい
11853 という弱点がある。攻撃者としては、テンポラリファイルに使われそうな名前で
11854 シンボリックリンクを作っておけばよい。そうすれば、スクリプトが未使用の
11855 ファイルだと考えて、テンポラリファイルのファイルハンドルを開いたとき、
11856 実際にはすでに存在しているファイルに書き込みをしているという羽目になる。
11857 同じ命名法を使ってディレクトリを作成するのは、もう少し安全である。作成
11858 しようとするディレクトリがすでに存在していると、`mkdir' は実行に失敗
11859 するからだ。とは言え、こちらもサービス不能化攻撃 (denial of service
11860 attacks) を可能にしてしまうわけで、やはり良策とは言えない。それ故、
11861 新しいスクリプトでは `mktemp' コマンドを使用するべきである。そうすれば、
11862 生成されるファイル名が確実に予測不可能になるので、実行中のスクリプトが
11863 テンポラリファイルの名前を知っているというまさにその事実が、ファイルを
11864 作成したのがそのスクリプトであり、他のユーザはそのファイルを変更でき
11865 ないと、間違いなく示すことになる。
11866
11867    ファイルを作成する場合、作成されるファイルには現在のユーザに対する
11868 読み込みと書き出しの許可が付くが、グループやその他のユーザに対しては、
11869 いかなる許可も付かない。現在の umask がより厳格な場合、付けられる許可は
11870 さらに厳しくなる。
11871
11872    用例をいくつか挙げてみる (ただし、注意していただきたいが、お手元で
11873 この通り実行しても、おそらくファイル名は違ったものになるはずだ)。
11874
11875    * カレントディレクトリにテンポラリファイルを作成する。
11876           $ mktemp file.XXXX
11877           file.H47c
11878
11879    * 一般的な拡張子を付けて、テンポラリファイルを作成する。
11880           $ mktemp --suffix=.txt file-XXXX
11881           file-H08W.txt
11882           $ mktemp file-XXXX-XXXX.txt
11883           file-XXXX-eI9L.txt
11884
11885    * ユーザが環境変数 `TMPDIR' で指定しているディレクトリを基点として、
11886      その下に安全な FIFO を作成する。`TMPDIR' が設定されていない場合は、
11887      `/tmp' ではなく、カレントディレクトリを基点として使用する。肝腎な
11888      点は、`mktemp' は FIFO を作成しないが、FIFO を置くことができる
11889      安全なディレクトリなら作成できるということである。ディレクトリや
11890      FIFO を作成することができなかったときは、シェルを終了する。
11891           $ dir=$(mktemp -p "${TMPDIR:-.}" -d dir-XXXX) || exit 1
11892           $ fifo=$dir/fifo
11893           $ mkfifo "$fifo" || { rmdir "$dir"; exit 1; }
11894
11895    * 可能ならば、テンポラリファイルを作成して使用するが、作成に失敗
11896      しても、エラーメッセージを出さない。ファイルは、環境変数 `TMPDIR'
11897      が設定されていれば、そこで指名されているディレクトリに作られるが、
11898      設定されていなければ、`/tmp' に作られる。
11899           $ file=$(mktemp -q) && {
11900           >   # $file の使用をこのブロックの内側に限定しておけば、
11901           >   # 安全である。$file を引用符で囲んでいるのは、$TMPDIR が、
11902           >   # 従って、$file が、ホワイトスペースを含んでいるかも
11903           >   # しれないからだ。
11904           >   echo ... > "$file"
11905           >   rm "$file"
11906           > }
11907
11908    * 擬似ランダム文字発生装置として動作する (カレントディレクトリの内容
11909      によって影響を受けるので、完全にランダムではない)。セキュリティ
11910      ホールを避けたいならば、生成された名前を使って、ファイルを作っては
11911      いけない。
11912           $ mktemp -u XXX
11913           Gb9
11914           $ mktemp -u XXX
11915           nzC
11916
11917
11918    このプログラムでは以下のオプションが使用できる。参照: *note Common
11919 options::.
11920
11921 `-d'
11922 `--directory'
11923      ファイルではなく、ディレクトリを作成する。作成されるディレクトリには
11924      現在のユーザに対して、読み、書き、検索の許可が付くが、グループや
11925      その他のユーザに対しては、いかなる許可も付かない。現在の umask が
11926      より厳格な場合、付けられる許可はさらに厳しくなる。
11927
11928 `-q'
11929 `--quiet'
11930      ファイルやディレクトリの作成に失敗しても、エラーメッセージを出さない。
11931      終了ステータスは、ファイルが作成されたかどうかをやはり反映する。
11932
11933 `-u'
11934 `--dry-run'
11935      既存のファイルの名前と重ならないテンポラリファイル用の名前を生成
11936      するが、ファイルシステムの内容を変更することはない (訳注: 要する
11937      に、テンポラリファイル名を生成表示するだけで、実際にファイルを
11938      作成することはないということ)。このコマンドの出力を使って、新しい
11939      ファイルを作るのは、本質的に安全ではない。名前の生成とその使用との
11940      間には、時間差があり、その間に他のプロセスが同じ名前でオブジェクト
11941      を作成することもありえるからである。
11942
11943 `-p DIR'
11944 `--tmpdir[=DIR]'
11945      TEMPLATE をディレクトリ DIR を基点とする相対パスとして扱う。 DIR
11946      が指定されていない場合や (ロングオプションの `--tmpdir' でのみ
11947      可能)、空文字列の場合は、環境変数 `TMPDIR' が設定されていれば、その
11948      値を使用し、設定されていなければ、`/tmp' を使用する。このオプション
11949      を指定する場合、 TEMPLATE は絶対パスであってはならない。とは言え、
11950      TEMPLATE にスラッシュが含まれていても構わないが、その場合、途中に
11951      あるディレクトリはすでに存在していなければならない。
11952
11953 `--suffix=SUFFIX'
11954      TEMPLATE の末尾に SUFFIX を追加する。SUFFIX はスラッシュを含んで
11955      いてはならない。`--suffix' を指定する場合、TEMPLATE は `X' で終わっ
11956      ていなければならない。`--suffix' が指定されていない場合は、TEMPLATE
11957      中の最後の `X' の位置を調べることで、SUFFIX としてふさわしいもの
11958      を割り出す。このオプションが存在するのは、デフォルトの TEMPLATE を
11959      使用しているとき、`X' で始まる SUFFIX を付けられるようにするため
11960      である。
11961
11962 `-t'
11963      TEMPLATE を、環境変数 `TMPDIR' が設定されていれば、その値である
11964      ディレクトリ直下の 1 個のファイルとして扱う。`TMPDIR' が設定されて
11965      いなければ、`-p' で指定されるディレクトリ直下、それ以外の場合は、
11966      `/tmp' 直下になる。なお、TEMPLATE にスラッシュが含まれていてはなら
11967      ない。このオプションは非推奨である。`-t' なしで `-p' を使う方が
11968      (`TMPDIR' よりコマンドラインの指定を優先するという点で) デフォルト
11969      の動作として優れているし、(途中のディレクトリも指定できるという
11970      点で) 柔軟性も上だからである。
11971
11972
11973    終了ステータス:
11974
11975      0: ファイルが作成された場合。
11976      1: それ以外。
11977
11978 \1f
11979 File: coreutils-ja.info,  Node: realpath invocation,  Prev: mktemp invocation,  Up: File name manipulation
11980
11981 18.5 `realpath': ファイル名を展開して表示する
11982 ===========================================================
11983
11984 `realpath' は、すべてのシンボリックリンクを展開し、`/./' や `/../' に
11985 対する参照を解決する。さらに、余分な `/' 文字の削除も行う。デフォルト
11986 では、指定したファイル名のうち、最後の要素以外のすべての要素が実在して
11987 いなければならない。
11988
11989    書式:
11990
11991      realpath [OPTION]... FILE...
11992
11993    このプログラムでは以下のオプションが使用できる。参照: *note Common
11994 options::.
11995
11996 `-e'
11997 `--canonicalize-existing'
11998      指定されたファイル名中のすべての構成要素が実在することを確認する。
11999      存在しなかったり、利用できなかったりする要素があると、`-q' オプ
12000      ションが指定されていないかぎり、`realpath' はエラーメッセージを
12001      出し、0 以外の終了コードで終了する。ファイル名の末尾にスラッシュ
12002      を付けると、その名前はディレクトリであるという指定になる。
12003
12004 `-m'
12005 `--canonicalize-missing'
12006      指定されたファイル名中に存在しなかったり、使用できなかったりする
12007      構成要素があれば、それをディレクトリとして処理する。
12008
12009 `-L'
12010 `--logical'
12011      指定されたファイル名中にあるシンボリックリンクを展開する。ただし、
12012      シンボリックリンクに `..' という要素が後続している場合は、シンボ
12013      リックリンクの展開を行う前に、そちらを先に処理する。(訳注: 例を
12014      挙げた方が、わかりやすいだろう。`symlink-directory/../..' といった
12015      ファイル名が与えられた場合、symlink-directory というシンボリック
12016      リンクそのものの親ディレクトリの親ディレクトリに展開するという
12017      こと。次項の注と比較していただきたい。)
12018
12019 `-P'
12020 `--physical'
12021      指定されたファイル名中にあるシンボリックリンクを展開する。シンボ
12022      リックリンクに `..' という要素が後続している場合も、シンボリック
12023      リンクを展開してから、`..' の処理を行う。こちらがデフォルトの動作
12024      モードである。(訳注: すなわち、`symlink-directory/../..' といった
12025      ファイル名が与えられた場合、シンボリックリンクの参照先の親ディレ
12026      クトリの親ディレクトリに展開する。)
12027
12028 `-q'
12029 `--quiet'
12030      指定されたファイル名についてエラーメッセージを出力しない。
12031
12032 `-s'
12033 `--strip'
12034 `--no-symlinks'
12035      シンボリックリンクの展開を行わない。すなわち、`/./' や `/../' の
12036      参照の解決と、余分な `/' 文字の削除だけを行う。`-m' オプションと
12037      組み合わせた場合、`realpath' は与えられたファイル名に対して操作を
12038      行うだけであり、その各要素が存在しているかどうか、実在のファイルに
12039      当たってみることはない。
12040
12041 `-z'
12042 `--zero'
12043      出力する項目を NUL 文字で区切る。
12044
12045 `--relative-to=FILE'
12046      オプション引数に指定したファイルを基点とする相対パスとして、
12047      ファイル名を展開する。このオプションは、ファイルの存在に関して
12048      `-m' や `-e' オプションを認識することに注意していただきたい。
12049
12050 `--relative-base=BASE'
12051      このオプションは `--relative-to' と一緒に使うこともでき、その
12052      場合は、操作対象の FILE が BASE 以下のディレクトリに存在するとき
12053      にのみ、相対パス名を表示するように、`--relative-to' の出力に制限
12054      を課す。FILE が BASE 以下のディレクトリに存在しないときは、出力
12055      は絶対パスのファイル名になる。`--relative-to' を指定しなかった
12056      場合、BASE 以下のディレクトリに存在するファイルは、BASE を基点
12057      とする相対パスで表示される。`--relative-to' も指定するなら、その
12058      ディレクトリは BASE の下位ディレクトリでなければならず、さもない
12059      と、このオプションは効果を持たない。このオプションは、ファイル
12060      の存在に関して `-m' や `-e' オプションを認識することに注意して
12061      いただきたい。例を挙げよう。
12062
12063           realpath --relative-to=/usr /tmp /usr/bin
12064           => ../tmp
12065           => bin
12066           realpath --relative-base=/usr /tmp /usr/bin
12067           => /tmp
12068           => bin
12069
12070
12071    終了ステータス:
12072
12073      0: すべてのファイル名が問題なく表示できた場合。
12074      1: それ以外。
12075
12076 \1f
12077 File: coreutils-ja.info,  Node: Working context,  Next: User information,  Prev: File name manipulation,  Up: Top
12078
12079 19 作業環境
12080 ***************
12081
12082 この章では、現在作業中の環境を表示したり、変更したりするコマンドを説明
12083 する。ここで環境というのは、カレントディレクトリ、端末の設定などである。
12084 次章で取り上げるユーザ関係のコマンドも参照していただきたい。
12085
12086 * Menu:
12087
12088 * pwd invocation::           現在作業中のディレクトリを表示する。
12089 * stty invocation::          端末の諸特性を表示・変更する。
12090 * printenv invocation::      環境変数を表示する。
12091 * tty invocation::           標準出力に接続している端末のファイル名を表示する。
12092
12093 \1f
12094 File: coreutils-ja.info,  Node: pwd invocation,  Next: stty invocation,  Up: Working context
12095
12096 19.1 `pwd': 現在作業中のディレクトリを表示する
12097 ===============================================================
12098
12099 `pwd' は、カレントディレクトリの名前を表示する。
12100
12101    書式:
12102
12103      pwd [OPTION]...
12104
12105    このプログラムでは以下のオプションが使用できる。参照: *note Common
12106 options::.
12107
12108 `-L'
12109 `--logical'
12110      環境変数 `PWD' の値が、`.' や `..' を含まないカレントディレクトリ
12111      の絶対パス名であっても、シンボリックリンクは含んでいるかもしれない。
12112      その場合は、その値をそのまま出力する。それ以外の場合は、デフォルトの
12113      `-P' オプションと同じ処理を行う。
12114
12115 `-P'
12116 `--physical'
12117      カレントディレクトリについて、参照を完全に解決した名前を表示する。
12118      すなわち、表示される名前のすべての要素が、本物のディレクトリの名前
12119      になり、シンボリックリンクは一つも含まれない。
12120
12121    `-L' と `-P' のオプションが両方とも指定されている場合は、最後に
12122 指定された方が優先される。どちらのオプションも指定されない場合は、
12123 環境変数  `POSIXLY_CORRECT' が設定されていないかぎり、この実装では、
12124 `-P' がデフォルトとして使用される。
12125
12126    シェルの組み込み機能の `pwd' やエイリアスのために、`pwd' に何の
12127 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
12128 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
12129 避けるためには、`env' 経由で `pwd' を起動すればよい (すなわち、 `env
12130 pwd ...' のようにだ)。
12131
12132    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12133
12134 \1f
12135 File: coreutils-ja.info,  Node: stty invocation,  Next: printenv invocation,  Prev: pwd invocation,  Up: Working context
12136
12137 19.2 `stty': 端末の諸特性を表示・変更する
12138 =======================================================
12139
12140 `stty' は、たとえばボーレート (baud rate) のような、端末の諸特性を表示、
12141 または変更する。
12142
12143    書式:
12144
12145      stty [OPTION] [SETTING]...
12146      stty [OPTION]
12147
12148    tty ラインの設定を一つも指定しない場合、`stty' は、ボーレートと
12149 (それをサポートしているシステムでは) ライン制御規則番号 (line discipline
12150 number)、それに、ライン設定のうち `stty sane' によって設定される値から
12151 変更のあるものを表示する。デフォルトでは、モードの取得や設定は、
12152 標準入力に結びついている tty ラインに対して行うが、これは `--file'
12153 オプションによって変更することができる。
12154
12155    `stty' では、以下で述べるように、オプションではないたくさんの
12156 引数が使える。そうした引数は、端末ライン運用の様々な面を変更する。
12157
12158    このプログラムでは以下のオプションが使用できる。参照: *note Common
12159 options::.
12160
12161 `-a'
12162 `--all'
12163      現在のすべての設定を人間に読みやすい形で表示する。このオプションを
12164      指定したときには、ラインの設定はできない。
12165
12166 `-F DEVICE'
12167 `--file=DEVICE'
12168      標準入力に結びついている tty ラインを操作の対象にする代わりに、
12169      DEVICE で指定されたファイル名を使ってオープンするラインを操作
12170      の対象にする。このオプションが必要なのは、POSIX 準拠の tty を
12171      オープンするには、`O_NONDELAY' フラグを使う必要があるからだ。
12172      そうしないと、POSIX 準拠の tty は、`clocal' フラグがセットされて
12173      いない場合に、キャリア検出線 (carrier detect line) が活発化する
12174      まで、ブロッキングを起こす。そんなわけで、デバイスのオープンは、
12175      いつも通りのやり方で (訳注: たとえば、`stty < /dev/ttyS1' といった
12176      形で) シェルにやらせておけばよい、というわけには必ずしも行かない
12177      のである。
12178
12179 `-g'
12180 `--save'
12181      現在の設定を別の `stty' コマンドを使って再現する際に、その引数と
12182      して使えるような形で、現在のすべての設定を表示する。このオプション
12183      を指定したときには、ラインの設定はできない。
12184
12185
12186    設定の多くは、前に `-' を付けることで OFF にすることができる。以下
12187 では、そうした引数については、説明中に「無効化できる」と記しておいた。
12188 説明そのものは、有効にする場合について、すなわち、`-' で OFF にしない
12189 場合について述べている (「無効にした場合」とはっきりことわっている場合
12190 は、もちろん別である)。
12191
12192    設定の中には、すべての POSIX 準拠システムで利用できるとはかぎらない
12193 ものもある。そうしたものは、拡張機能を使用しているからだ。以下では、
12194 そうした引数については、説明中に「非 POSIX」と記しておいた。非 POSIX
12195 のシステムであっても、そうした設定が使えないことがあるかもしれないが、
12196 あらゆる場合について書いておくことは、不可能である。とりあえず、試して
12197 みていただきたい。
12198
12199    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12200
12201 * Menu:
12202
12203 * Control::                  制御関係の設定
12204 * Input::                    入力に関する設定
12205 * Output::                   出力に関する設定
12206 * Local::                    ローカル設定
12207 * Combination::              組み合わせ設定
12208 * Characters::               特殊文字
12209 * Special::                  特殊設定
12210
12211 \1f
12212 File: coreutils-ja.info,  Node: Control,  Next: Input,  Up: stty invocation
12213
12214 19.2.1 制御関係の設定
12215 ----------------------------
12216
12217 制御関係の設定:
12218
12219 `parenb'
12220      出力にパリティビットを生成し、入力にもパリティビットがあるものと
12221      期待する。無効化できる。
12222
12223 `parodd'
12224      パリティを奇数に設定する。無効化できる (この設定の場合、`-' の前置
12225      は偶数パリティを意味する)。
12226
12227 `cmspar'
12228      "stick" (mark/space) パリティを使用する。parodd が設定されている
12229      場合、このパリティビットは常に 1 である。parodd が設定されていない
12230      場合、このパリティビットは常に 0 だ。非 POSIX。無効化できる。
12231      (coreutils-8.22 の新機能)
12232
12233 `cs5'
12234 `cs6'
12235 `cs7'
12236 `cs8'
12237      キャラクタ・サイズを 5, 6, 7, 8 ビットにする。
12238
12239 `hup'
12240 `hupcl'
12241      最後のプロセスが tty をクローズするとき、ハングアップ・シグナルを
12242      送る。無効化できる。
12243
12244 `cstopb'
12245      1 キャラクタにつき 2 個のストップビットを使用する。無効化できる
12246      (この設定の場合、`-' の前置は 1 個のストップビット使用を意味する)。
12247
12248 `cread'
12249      入力の受信を許可する。無効化できる。
12250
12251 `clocal'
12252      モデムのコントロール・シグナルを無効にする。無効化できる。
12253
12254 `crtscts'
12255      RTS/CTS フロー制御を有効にする。非 POSIX。無効化できる。
12256
12257 `cdtrdsr'
12258      DTR/DSR フロー制御を有効にする。非 POSIX。無効化できる。
12259
12260 \1f
12261 File: coreutils-ja.info,  Node: Input,  Next: Output,  Prev: Control,  Up: stty invocation
12262
12263 19.2.2 入力に関する設定
12264 -------------------------------
12265
12266 以下の設定は、端末から受け取るデータに対する操作を制御する。
12267
12268 `ignbrk'
12269      ブレーク (break) 文字を無視する。無効化できる。
12270
12271 `brkint'
12272      ブレークが割り込みシグナルを発生するようにする。無効化できる。
12273
12274 `ignpar'
12275      パリティエラーのある文字を無視する。無効化できる。
12276
12277 `parmrk'
12278      パリティエラーをマークする (その印として 255, 0 (0xFF, 0x00) という
12279      2 文字の連続を使う)。無効化できる。
12280
12281 `inpck'
12282      入力のパリティチェックを有効にする。無効化できる。
12283
12284 `istrip'
12285      入力文字の高位ビット (8 番目のビット) をクリアする。無効化できる。
12286
12287 `inlcr'
12288      改行文字 (newline) を復帰文字 (carriage return) に変換する。無効化
12289      できる。
12290
12291 `igncr'
12292      復帰文字を無視する。無効化できる。
12293
12294 `icrnl'
12295      復帰文字を改行文字に変換する。無効化できる。
12296
12297 `iutf8'
12298      入力文字が UTF-8 で符号化されていると見なす。無効化できる。
12299
12300 `ixon'
12301      XON/XOFF フロー制御を有効にする (すなわち、`CTRL-S'/`CTRL-Q' を
12302      有効にする)。無効化できる。
12303
12304 `ixoff'
12305 `tandem'
12306      システムの入力バッファが一杯になりかけたら、`stop' 文字を送り、
12307      バッファがほぼ空に戻ったら、`start' 文字を送るようにする。
12308      無効化できる。
12309
12310 `iuclc'
12311      大文字を小文字に変換する。非 POSIX。無効化できる。ilcuc は実装
12312      されていないことに注意していただきたい。そんなものを有効にしたら、
12313      ほとんどの (小文字である) Unix のコマンドが、打ち込めなくなって
12314      しまうからである。
12315
12316 `ixany'
12317      どんな文字でも出力を再開できるようにする (これを無効にすると、start
12318      文字のみが出力を再開する)。非 POSIX。無効化できる。
12319
12320 `imaxbel'
12321      入力バッファが一杯のとき、文字を受け取ると、入力バッファをフラッシュ
12322      せずに、ビープ音を鳴らすようにする。非 POSIX。無効化できる。
12323
12324 \1f
12325 File: coreutils-ja.info,  Node: Output,  Next: Local,  Prev: Input,  Up: stty invocation
12326
12327 19.2.3 出力に関する設定
12328 -------------------------------
12329
12330 以下の設定は、端末に送るデータに対する操作を制御する。
12331
12332 `opost'
12333      出力に対して後処理 (postprocess) を行う (訳注: すなわち、以下に列挙
12334      するようなことをする)。無効化できる。
12335
12336 `olcuc'
12337      小文字を大文字に変換する。非 POSIX。無効化できる。(ouclc は現在の
12338      ところ、実装されていないことに注意。)
12339
12340 `ocrnl'
12341      復帰文字 (carriage return) を改行文字 (newline) に変換する。 非
12342      POSIX。無効化できる。
12343
12344 `onlcr'
12345      改行文字を復帰文字 + 改行文字に変換する。非 POSIX。無効化できる。
12346
12347 `onocr'
12348      行頭に復帰文字を出力しない。非 POSIX。無効化できる。
12349
12350 `onlret'
12351      改行が復帰として動作する。非 POSIX。無効化できる。
12352
12353 `ofill'
12354      時間で間合いを計る代りに、充填文字 (埋め草文字) を何字か送る
12355      ことで、遅延を行う。非 POSIX。無効化できる。(訳注: 遅延という
12356      のは、端末側の処理が済むまで、データの送出を遅らせること)。
12357
12358 `ofdel'
12359      充填文字として ASCII NUL 文字ではなく、ASCII DEL 文字を使う。 非
12360      POSIX。無効化できる。
12361
12362 `nl1'
12363 `nl0'
12364      改行 (newline) 用の遅延方式。非 POSIX。
12365
12366 `cr3'
12367 `cr2'
12368 `cr1'
12369 `cr0'
12370      復帰 (carriage return) 用の遅延方式。非 POSIX。
12371
12372 `tab3'
12373 `tab2'
12374 `tab1'
12375 `tab0'
12376      水平タブ用の遅延方式。非 POSIX。
12377
12378 `bs1'
12379 `bs0'
12380      バックスペース用の遅延方式。非 POSIX。
12381
12382 `vt1'
12383 `vt0'
12384      垂直タブ用の遅延方式。非 POSIX。
12385
12386 `ff1'
12387 `ff0'
12388      改ページ (form feed) 用の遅延方式。非 POSIX。
12389
12390 \1f
12391 File: coreutils-ja.info,  Node: Local,  Next: Combination,  Prev: Output,  Up: stty invocation
12392
12393 19.2.4 ローカル設定
12394 -------------------------
12395
12396 `isig'
12397      特殊文字 `interrupt', `quit', `suspend' を有効にする。無効化
12398      できる。
12399
12400 `icanon'
12401      特殊文字 `erase', `kill', `werase', `rprnt' を有効にする。無効化
12402      できる。
12403
12404 `iexten'
12405      POSIX にない特殊文字を有効にする。無効化できる。
12406
12407 `echo'
12408      入力した文字をエコーする。無効化できる。
12409
12410 `echoe'
12411 `crterase'
12412      `erase' 文字を「バックスペース、スペース、バックスペース」として
12413      エコーする。無効化できる。
12414
12415 `echok'
12416      `kill' 文字に続けて、改行文字をエコーする。無効化できる。
12417
12418 `echonl'
12419      他の文字のエコーを行わないない場合でも、改行文字はエコーする。
12420      無効化できる。
12421
12422 `noflsh'
12423      特殊文字 `interrupt' や `quit' の後で、フラッシュを行わない。無効化
12424      できる。
12425
12426 `xcase'
12427      `icanon' が設定されているとき、小文字を表す文字の頭に `\' を付ける
12428      ことで、大文字の入出力を可能にする。非 POSIX。無効化できる。
12429      (訳注: たとえば、大文字しか入出力できない端末で、ただの `A' なら
12430      小文字の a を意味し、`\A' なら大文字の A を意味するということ。
12431      次節「組み合わせ設定」の lcase と termios(3) を参照。)
12432
12433 `tostop'
12434      端末に書き込もうとしているバックグラウンドジョブを止める。 非
12435      POSIX。無効化できる。
12436
12437 `echoprt'
12438 `prterase'
12439      削除した文字を `\' と `/' で囲んで、逆順にエコーする。非 POSIX。
12440      無効化できる。(訳注: プリンタ端末で使用する設定らしい。)
12441
12442 `echoctl'
12443 `ctlecho'
12444      制御文字をそのまま表示するのではなく、ハット記法 (`^C') で
12445      エコーする。非 POSIX。無効化できる。
12446
12447 `echoke'
12448 `crtkill'
12449      行上の各文字を削除することで、特殊文字 `kill' のエコーを行う際、
12450      `echoctl' や `echok' の設定ではなく、`echoprt' や `echoe' の設定が
12451      指示するところに従う。非 POSIX。無効化できる。
12452
12453 \1f
12454 File: coreutils-ja.info,  Node: Combination,  Next: Characters,  Prev: Local,  Up: stty invocation
12455
12456 19.2.5 組み合わせ設定
12457 ----------------------------
12458
12459 組み合わせ設定:
12460
12461 `evenp'
12462 `parity'
12463      `parenb -parodd cs7' に相当する。無効化できる。無効化した場合、
12464      `-parenb cs8' と同じになる。
12465
12466 `oddp'
12467      `parenb parodd cs7' に相当する。無効化できる。無効化した場合、
12468      `-parenb cs8' と同じになる。
12469
12470 `nl'
12471      `-icrnl -onlcr' に相当する。無効化できる。無効化した場合、`icrnl
12472      -inlcr -igncr onlcr -ocrnl -onlret' と同じになる。
12473
12474 `ek'
12475      特殊文字 `erase' と `kill' をデフォルトの値に戻す。
12476
12477 `sane'
12478      以下の設定に相当する。
12479
12480           cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
12481           -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
12482           -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
12483           ff0 isig icanon iexten echo echoe echok -echonl
12484           -noflsh -xcase -tostop -echoprt echoctl echoke
12485
12486      さらに、すべての特殊文字をそのデフォルトの値に設定する。
12487
12488 `cooked'
12489      `brkint ignpar istrip icrnl ixon opost isig icanon' に相当する。
12490      さらに、特殊文字 `eof' と `eol' が `min' 及び `time' 文字と同じ
12491      ならば、`eof' と `eol' をデフォルトの値に設定する。無効化できる。
12492      無効化した場合は、`raw' と同じになる。
12493
12494 `raw'
12495      以下の設定に相当する。
12496
12497           -ignbrk -brkint -ignpar -parmrk -inpck -istrip
12498           -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
12499           -imaxbel -opost -isig -icanon -xcase min 1 time 0
12500
12501      無効化できる。無効化した場合は、`cooked' と同じになる。
12502
12503 `cbreak'
12504      `-icanon' と同じである。無効化できる。無効化した場合は、`icanon'
12505      と同じになる。
12506
12507 `pass8'
12508      `-parenb -istrip cs8' に相当する。無効化できる。無効化した場合は、
12509      `parenb istrip cs7' と同じになる。
12510
12511 `litout'
12512      `-parenb -istrip -opost cs8' に相当する。無効化できる。無効化した
12513      場合は、`parenb istrip opost cs7' と同じになる。
12514
12515 `decctlq'
12516      `-ixany' と同じである。非 POSIX。無効化できる。
12517
12518 `tabs'
12519      `tab0' と同じである。非 POSIX。無効化できる。無効化した場合は、
12520      `tab3' と同じになる。
12521
12522 `lcase'
12523 `LCASE'
12524      `xcase iuclc olcuc' に相当する。非 POSIX。無効化できる。(この設定
12525      は、大文字しか扱えない端末で使用する。)
12526
12527 `crt'
12528      `echoe echoctl echoke' に相当する。
12529
12530 `dec'
12531      `echoe echoctl echoke -ixany intr ^C erase ^? kill ^U' に相当する。
12532
12533 \1f
12534 File: coreutils-ja.info,  Node: Characters,  Next: Special,  Prev: Combination,  Up: stty invocation
12535
12536 19.2.6 特殊文字
12537 -------------------
12538
12539 特殊文字のデフォルトの値は、システムによって様々である。特殊文字を設定
12540 するには、`name value' という書式を用いる。この name に何が指定できる
12541 かは、以下に列挙するが、value には、文字そのもの、ハット記法 (`^C')、
12542 整数のいづれかを指定することができる。整数は、`0x' で始まっていれば 16
12543 進数、`0' で始まっていれば 8 進数、それ以外の数字なら 10 進数と
12544 見なされる。
12545
12546    GNU の stty では、値に `^-' や `undef' を指定すると、その特殊文字を
12547 無効にする。(これは、Ultrix の `stty' と互換性がない。そこでは、特殊
12548 文字を無効にするには `u' という値が使用されるのだ。GNU の `stty' は、
12549 `u' という値を特別扱いしない。すなわち、その特殊文字として <U> を設定
12550 するだけである。)
12551
12552 `intr'
12553      割り込み (interrupt) シグナルを送る。
12554
12555 `quit'
12556      終了 (quit) シグナルを送る。
12557
12558 `erase'
12559      直前にタイプした文字を削除する。
12560
12561 `kill'
12562      現在行を削除する。
12563
12564 `eof'
12565      ファイル終端 (end of file) 文字を送る (入力を終了する)。
12566
12567 `eol'
12568      行を終端する。
12569
12570 `eol2'
12571      行を終端する別の文字。非 POSIX。
12572
12573 `swtch'
12574      シェルの別の層 (a different shell layer) に切り換える。非 POSIX。
12575
12576 `start'
12577      停止している出力を再開する。
12578
12579 `stop'
12580      出力を停止する。
12581
12582 `susp'
12583      端末停止シグナル (terminal stop signal) を送る。
12584
12585 `dsusp'
12586      入力をフラッシュしてから、端末停止シグナルを送る。非 POSIX。
12587
12588 `rprnt'
12589      現在行を表示し直す。非 POSIX。
12590
12591 `werase'
12592      直前にタイプした単語 (word) を削除する。非 POSIX。
12593
12594 `lnext'
12595      次にタイプする文字が特殊文字であっても、タイプしたとおりの文字として
12596      入力する。非 POSIX。(訳注: たとえば、lnext が ^V の場合、^V^D と
12597      続けてタイプすると、^D を入力終了の印としてではなく、^D という文字
12598      そのものとして入力できるということ。)
12599
12600 \1f
12601 File: coreutils-ja.info,  Node: Special,  Prev: Characters,  Up: stty invocation
12602
12603 19.2.7 特殊設定
12604 -------------------
12605
12606 `min N'
12607      `-icanon' が設定されている際、time の値として指定されている時間が
12608      経過するまでの間に、1 回分の読み込みの条件を満たす最少限の文字数を
12609      設定する。
12610
12611 `time N'
12612      `-icanon' が設定されている際、最小限の文字数が読み込まれなかった
12613      場合に、読み込みが時間切れになるまでの時間を 10 分の 1 秒単位で
12614      設定する。
12615
12616 `ispeed N'
12617      入力速度を N に設定する。
12618
12619 `ospeed N'
12620      出力速度を N に設定する。
12621
12622 `rows N'
12623      端末の行数は N 行だと、tty カーネルドライバに伝える。非 POSIX。
12624
12625 `cols N'
12626 `columns N'
12627      端末の横幅は N 桁だと、カーネルに伝える。非 POSIX。
12628
12629 `size'
12630      端末の行数と桁数を表示する。これは、端末が持っていると、カーネルが
12631      考えている行数と桁数である。(カーネル中に行数や桁数を保持しない
12632      システムでは、通常その代わりに、環境変数 `LINES' や `COLUMNS' を
12633      使用する。それに対して、GNU の `stty' は、そうした環境変数に全く
12634      関知しない。) 非 POSIX。
12635
12636 `line N'
12637      ライン制御規則 (line discipline) N を使用する。非 POSIX。
12638
12639 `speed'
12640      端末速度を表示する。
12641
12642 `N'
12643      入出力の速度を N に設定する。N には次の一つが使える。0 50 75 110
12644      134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200 38400
12645      `exta' `extb'。`exta' は 19200 と同じであり、`extb' は 38400 と
12646      同じである。GNU/Linux を含む多くのシステムが、もっと早い速度を
12647      サポートしている。`stty' は、システムがサポートしているならという
12648      条件で、次の速度もサポートしている。57600 115200 230400 460800
12649      500000 576000 921600 1000000 1152000 1500000 2000000 2500000
12650      3000000 3500000 4000000。なお、0 は、`-clocal' が設定されている場合
12651      に、ラインを切断する。
12652
12653 \1f
12654 File: coreutils-ja.info,  Node: printenv invocation,  Next: tty invocation,  Prev: stty invocation,  Up: Working context
12655
12656 19.3 `printenv': 環境変数のすべて、あるいは一部を表示する
12657 =============================================================================
12658
12659 `printenv' は、環境変数の値を表示する。
12660
12661    書式:
12662
12663      printenv [OPTION] [VARIABLE]...
12664
12665    VARIABLE が一つも指定されていない場合、`printenv' はすべての環境変数
12666 の値を表示する。VARIABLE が指定されている場合は、その変数それぞれに
12667 ついて、設定されていれば値を表示し、設定されていなければ何も表示しない。
12668
12669    このプログラムでは、以下のオプションが使える。参照: *note Common
12670 options::.
12671
12672 `-0'
12673 `--null'
12674      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。この
12675      オプションを使用すると、`printenv' の出力するデータに、途中に改行を
12676      挟むものがあっても、他のプログラムがその出力を解析できるようになる。
12677
12678
12679    終了ステータス:
12680
12681      0: 指定されているすべての変数が見つかった。
12682      1: 指定されている変数のうちに、見つからなかったものがある。
12683      2: 書き込みエラーが生じた。
12684
12685 \1f
12686 File: coreutils-ja.info,  Node: tty invocation,  Prev: printenv invocation,  Up: Working context
12687
12688 19.4 `tty': 標準出力に接続している端末のファイル名を表示する
12689 ====================================================================================
12690
12691 `tty' は、自分の標準入力に接続している端末のファイル名を表示する。
12692 標準入力が端末ではない場合は、`not a tty' というメッセージを出す。
12693
12694    書式:
12695
12696      tty [OPTION]...
12697
12698    このプログラムでは、以下のオプションが使える。参照: *note Common
12699 options::.
12700
12701 `-s'
12702 `--silent'
12703 `--quiet'
12704      何も表示しない。終了ステータスを返すだけ。
12705
12706
12707    終了ステータス:
12708
12709      0: 標準入力が端末である。
12710      1: 標準入力が端末ではない。
12711      2: 指定した引数が正しくない。
12712      3: 書き込みエラーが生じた。
12713
12714 \1f
12715 File: coreutils-ja.info,  Node: User information,  Next: System context,  Prev: Working context,  Up: Top
12716
12717 20 ユーザ情報
12718 ******************
12719
12720 この章では、ユーザ関係の情報を表示するコマンドの説明をする。誰がログイン
12721 しているか、どんなグループに所属しているか、などである。
12722
12723 * Menu:
12724
12725 * id invocation::        ユーザの ID を表示する。
12726 * logname invocation::   現在のログイン名を表示する。
12727 * whoami invocation::    実効ユーザ ID を表示する。
12728 * groups invocation::    ユーザが所属しているグループ名を表示する。
12729 * users invocation::     現在ログインしている全ユーザのログイン名を表示する。
12730 * who invocation::       現在誰がログインしているかを表示する。
12731
12732 \1f
12733 File: coreutils-ja.info,  Node: id invocation,  Next: logname invocation,  Up: User information
12734
12735 20.1 `id': ユーザの ID を表示する
12736 ==========================================
12737
12738 `id' は、指定されたユーザについて情報を表示する。ユーザが指定されて
12739 いない場合は、`id' を実行しているプロセスについて情報を表示する。
12740
12741    書式:
12742
12743      id [OPTION]... [USER]
12744
12745    USER にはユーザ ID (番号) とユーザ名のどちらも使えるが、ID が頭に
12746 `+' を付けて指定されていないかぎり、まずユーザ名として検索が行われる。
12747
12748    デフォルトで表示するのは、実ユーザ ID、実グループ ID、実効ユーザ ID
12749 (実ユーザ ID と違う場合)、実効グループ ID (実グループID と違う場合)、
12750 それに、補助 (supplemental) グループ ID である。さらに、SELinux が
12751 有効になっていて、環境変数 `POSIXLY_CORRECT' が設定されていない場合は、
12752 `context=C' も表示する。この C はセキュリティ・コンテキストである。
12753
12754    表示される各数値には、それが何であるかを示す文字列が前に付き、対応
12755 するユーザ名やグループ名がカッコで囲まれて後ろに続く。
12756
12757    オプションを指定すると、`id' は上で述べた情報のうち、一部のみを表示
12758 する。参照: *note Common options::.
12759
12760 `-g'
12761 `--group'
12762      グループ ID のみ表示する。
12763
12764 `-G'
12765 `--groups'
12766      グループ ID と補助グループ ID のみ表示する。
12767
12768 `-n'
12769 `--name'
12770      ID 番号の代りに、ユーザ名やグループ名を表示する。`-u', `-g', `-G'
12771      の一つを指定する必要がある。
12772
12773 `-r'
12774 `--real'
12775      実効ユーザや実効グループの ID ではなく、実ユーザや実グループの ID
12776      を表示する。`-u', `-g', `-G' のどれか一つを指定する必要がある。
12777
12778 `-u'
12779 `--user'
12780      ユーザ ID のみ表示する。
12781
12782 `-Z'
12783 `--context'
12784      実行中のユーザのセキュリティ・コンテキストのみを表示する。SELinux
12785      が無効になっている場合は、警告メッセージを出し、終了ステータスを 1
12786      にする。
12787
12788 `-z'
12789 `--zero'
12790      出力する項目を NUL 文字で区切る。このオプションは、デフォルトの
12791      フォーマットを使用しているときは、使うことができない。
12792      (coreutils-8.22 の新機能)
12793
12794      用例:
12795           $ id -Gn --zero
12796           users <NUL> devs <NUL>
12797
12798
12799    プロセスの基本 (primary) グループや 補助 (supplementary) グループは、
12800 通常その親プロセスから継承され、ログイン後ずっと変わらないのが普通だ。
12801 従って、ログイン後にグループ・データベースを変更しても、現在のログイン
12802 セッションが続いている間は、`id' コマンドはその変更を反映しない。
12803 しかし、引数にユーザの名前を指定して `id' を実行した場合は、ユーザ・
12804 データベースやグループ・データベースの参照が改めて行われるので、
12805 変更した結果が表示されることになる。
12806
12807    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12808
12809 \1f
12810 File: coreutils-ja.info,  Node: logname invocation,  Next: whoami invocation,  Prev: id invocation,  Up: User information
12811
12812 20.2 `logname': 現在のログイン名を表示する
12813 =======================================================
12814
12815 `logname' は、自分を呼び出したユーザの名前を、システムが管理して
12816 いるファイル (たいていは `/var/run/utmp' か `/etc/utmp') で調べて
12817 表示し、ステータス 0 で終了する。自分を呼び出しているプロセスの
12818 エントリが存在しない場合は、`logname' はエラーメッセージを出し、
12819 ステータス 1 で終了する。
12820
12821    オプションは、`--help' と `--version' だけである。*Note Common
12822 options::.
12823
12824    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12825
12826 \1f
12827 File: coreutils-ja.info,  Node: whoami invocation,  Next: groups invocation,  Prev: logname invocation,  Up: User information
12828
12829 20.3 `whoami': 実効ユーザ ID を表示する
12830 =================================================
12831
12832 `whoami' は、現在の実効ユーザ ID に対応するユーザ名を表示する。 `id
12833 -un' コマンドと同じことである。
12834
12835    オプションは、`--help' と `--version' だけである。*Note Common
12836 options::.
12837
12838    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12839
12840 \1f
12841 File: coreutils-ja.info,  Node: groups invocation,  Next: users invocation,  Prev: whoami invocation,  Up: User information
12842
12843 20.4 `groups': ユーザが所属しているグループ名を表示する
12844 ===========================================================================
12845
12846 `groups' は、USERNAME が指定されていれば、指定された各ユーザの基本
12847 (primary) グループ名と補助 (supplementary) グループ名を表示し、
12848 ユーザ名が指定されていなければ、現在のプロセスの基本グループ名と
12849 補助グループ名を表示する。複数の名前が指定されている場合は、
12850 各ユーザの名前がグループのリストの前に置かれ、両者の間はコロンで
12851 区切られる。
12852
12853    書式:
12854
12855      groups [USERNAME]...
12856
12857    グループのリストは、`id -Gn' コマンドの出力と同じである。
12858
12859    オプションは、`--help' と `--version' だけである。*Note Common
12860 options::.
12861
12862    プロセスの基本 (primary) グループや 補助 (supplementary) グループは、
12863 通常その親プロセスから継承され、ログイン後ずっと変わらないのが普通だ。
12864 従って、ログイン後にグループ・データベースを変更しても、現在のログイン
12865 セッションが続いている間は、`groups' コマンドはその変更を反映しない。
12866 しかし、ユーザのリストを指定して `groups' を実行した場合は、ユーザ・
12867 データベースやグループ・データベースの参照が改めて行われるので、
12868 変更した結果が表示されることになる。
12869
12870    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12871
12872 \1f
12873 File: coreutils-ja.info,  Node: users invocation,  Next: who invocation,  Prev: groups invocation,  Up: User information
12874
12875 20.5 `users': 現在ログインしている全ユーザのログイン名を表示する
12876 =========================================================================================
12877
12878 `users' は、目下使用しているホストに現在ログインしている全ユーザの
12879 ユーザ名のリストを、空白で区切って 1 行に表示する。ユーザ名はログイン
12880 セッションごとに表示されるので、あるユーザが複数のログインセッションを
12881 行っていれば、そのユーザの名前はログインセッションの数だけ出力に現れる
12882 ことになる。
12883
12884    書式:
12885
12886      users [FILE]
12887
12888    引数 FILE の指定がない場合、`users' はシステムが管理するファイル
12889 (たいていは `/var/run/utmp' か `/etc/utmp') からログインしているユーザの
12890 情報を引き出す。引数 FILE が指定されている場合は、代りにそのファイルを
12891 使用する。`/var/log/wtmp' が使われることが多い。
12892
12893    オプションは、`--help' と `--version' だけである。*Note Common
12894 options::.
12895
12896    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12897
12898 \1f
12899 File: coreutils-ja.info,  Node: who invocation,  Prev: users invocation,  Up: User information
12900
12901 20.6 `who': 現在誰がログインしているかを表示する
12902 ==================================================================
12903
12904 `who' は、現在ログインしているユーザについての情報を表示する。
12905
12906    書式:
12907
12908      `who' [OPTION] [FILE] [am i]
12909
12910    オプション以外の引数が一つもない場合、`who' は現在ログインしている
12911 各ユーザについて、次の情報を表示する。ログイン名、端末ライン、ログイン
12912 日時、それにリモート・ホスト名か X ディスプレー名。
12913
12914    オプション以外の引数を一つだけ指定すると、`who' はそれを、ログイン
12915 したユーザを記録しているファイルの名前として、システムが管理している
12916 デフォルトのファイル (たいていは `/var/run/utmp' か `/etc/utmp') の
12917 代りに使用する。`who' に引数として `/var/log/wtmp' を渡して、これまでに
12918 誰がログインしたかを調べるのはよくあることである。
12919
12920    オプション以外の引数を二つ指定すると、`who' は、自分を実行している
12921 ユーザの情報のみを (自分が接続している標準入力からユーザの見当を
12922 付けて)、ホスト名を前に付けて表示する。渡される二つの引数は、
12923 全体として `who am i' になるように、`am i' とするのが慣例である。
12924
12925    タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
12926 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
12927 いない場合は、システムのデフォルトのルールに従って表示される。 *Note
12928 Specifying the Time Zone with `TZ': (libc)TZ Variable.
12929
12930    このプログラムでは以下のオプションが使用できる。参照: *note Common
12931 options::.
12932
12933 `-a'
12934 `--all'
12935      `-b -d --login -p -r -t -T -u' と同じである。
12936
12937 `-b'
12938 `--boot'
12939      システムをブートした直近の日時を表示する。
12940
12941 `-d'
12942 `--dead'
12943      終了したプロセスに関する情報を表示する。
12944
12945 `-H'
12946 `--heading'
12947      最初の行に各列の見出しを表示する。
12948
12949 `-l'
12950 `--login'
12951      現在システムがログインの窓口としてユーザを待ち受けているプロセス
12952      に関する情報のみを表示する。ユーザ名は常に `LOGIN' である。
12953
12954 `--lookup'
12955      utmp で見つかったホスト名について DNS を検索して正規名を得ようと
12956      する。これがデフォルトになっていないのは、インターネットに自動
12957      ダイアルアップで接続しているシステムでは、深刻な遅滞を招きかねない
12958      からである。
12959
12960 `-m'
12961      `who am i' と同じである。
12962
12963 `-p'
12964 `--process'
12965      init によって生み出されたプロセスのうち、現在活動中のものをリスト
12966      する。
12967
12968 `-q'
12969 `--count'
12970      ログインしているユーザのログイン名と人数のみを表示する。他のすべての
12971      オプションを無効にする。
12972
12973 `-r'
12974 `--runlevel'
12975      init プロセスの現在のランレベルを表示する (たぶん、直前のラン
12976      レベルも)。
12977
12978 `-s'
12979      無視する。他の版の `who' との互換性のためにある。
12980
12981 `-t'
12982 `--time'
12983      システムクロックを最後に変更した日時を表示する。
12984
12985 `-u'
12986      ログイン日時の後ろに、ユーザが何時間何分端末を使用していないかを
12987      (idle 状態かを) 表示する。`.' は、ユーザがここ 1 分以内に端末操作
12988      をしたことを意味する。`old' は、ユーザが 24 時間以上端末を使用
12989      していないいうことである。
12990
12991 `-w'
12992 `-T'
12993 `--mesg'
12994 `--message'
12995 `--writable'
12996      ログイン名の後ろに、ユーザのメッセージ受け入れ状態を示す 1 文字を
12997      表示する。
12998
12999           `+' `write' によるメッセージを受け入れる。
13000           `-' `write' によるメッセージを拒否する。
13001           `?' 端末デバイスが見つからない。
13002
13003
13004    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13005
13006 \1f
13007 File: coreutils-ja.info,  Node: System context,  Next: SELinux context,  Prev: User information,  Up: Top
13008
13009 21 システム情報
13010 *********************
13011
13012 この章では、システム全体に関わる情報を表示したり、変更したりするコマンドを
13013 説明する。
13014
13015 * Menu:
13016
13017 * date invocation::          システムの日付や時刻を表示、設定する。
13018 * arch invocation::          マシンのハードウェア名を表示する。
13019 * nproc invocation::         プロセッサの数を表示する。
13020 * uname invocation::         システムについて情報を表示する。
13021 * hostname invocation::      システム名を表示、設定する。
13022 * hostid invocation::        数値によるホストの識別名を表示する。
13023 * uptime invocation::        システムの連続稼働時間と負荷を表示する。
13024
13025 \1f
13026 File: coreutils-ja.info,  Node: date invocation,  Next: arch invocation,  Up: System context
13027
13028 21.1 `date': システムの日付や時刻を表示、設定する
13029 ===================================================================
13030
13031 書式:
13032
13033      date [OPTION]... [+FORMAT]
13034      date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]
13035
13036    `date' を FORMAT 引数なしで起動すると、デフォルトの書式を指定して
13037 起動するのと同じことになる。デフォルトの書式は、`LC_TIME' ロケール・
13038 カテゴリによって様々である。デフォルトの C ロケールの場合、その書式は
13039 `'+%a %b %e %H:%M:%S %Z %Y'' なので、出力は `Thu Mar  3 13:47:51 PST
13040 2005' のような形になる。
13041
13042    通常 `date' は、環境変数 `TZ' が指示しているタイムゾーンのルールを
13043 使用し、`TZ' が設定されていないときは、システムのデフォルトのルールを
13044 使用する。*Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
13045
13046    `+' で始まる引数を指定すると、`date' は現在の日付と時刻を (あるいは、
13047 後述する `--date' オプションで指定した日付と時刻を)、その引数によって
13048 定義された書式で表示する。書式を指定するこの引数は、`strftime' 関数の
13049 それとほぼ同じである。なお、`%' で始まる変換指定子を除いて、書式文字列
13050 中の文字は、変更されずにそのまま表示される。変換指定子については、次節
13051 以降で説明する。
13052
13053    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13054
13055 * Menu:
13056
13057 * Time conversion specifiers:: 時刻関係の変換指定子 %[HIklMNpPrRsSTXzZ]。
13058 * Date conversion specifiers:: 日付関係の変換指定子 %[aAbBcCdDeFgGhjmuUVwWxyY]。
13059 * Literal conversion specifiers::  文字変換指定子 %[%nt]。
13060 * Padding and other flags::  0 や空白による空き埋め、その他。
13061 * Setting the time::         システムクロックの変更。
13062 * Options for date::         現在の日時以外の指定。
13063 * Date input formats::       日付文字列の指定法。
13064 * Examples of date::         用例。
13065
13066 \1f
13067 File: coreutils-ja.info,  Node: Time conversion specifiers,  Next: Date conversion specifiers,  Up: date invocation
13068
13069 21.1.1 時刻関係の変換指定子
13070 -------------------------------------
13071
13072 `date' の時刻関係の変換指定子
13073
13074 `%H'
13075      時 (`00'...`23')
13076
13077 `%I'
13078      時 (`01'...`12')
13079
13080 `%k'
13081      時。一桁のときは、0 ではなく、空白で埋める (` 0'...`23')。`%_H' と
13082      同じ。これは GNU の拡張である。
13083
13084 `%l'
13085      時。一桁のときは、0 ではなく、空白で埋める (` 1'...`12')。`%_I' と
13086      同じ。これは GNU の拡張である。
13087
13088 `%M'
13089      分 (`00'...`59')
13090
13091 `%N'
13092      ナノ秒 (`000000000'...`999999999')。これは GNU の拡張である。
13093
13094 `%p'
13095      現在のロケールで `AM' や `PM' に相当するもの。空白になるロケール
13096      も多い。正午は `PM' として、真夜中は `AM' として扱う。
13097
13098 `%P'
13099      `%p' と同様だが、小文字を使う。これは GNU の拡張である。
13100
13101 `%r'
13102      現在のロケールによる 12 時間表記の時刻 (例: `11:11:04 PM')
13103
13104 `%R'
13105      24 時間表記の時と分。`%H:%M' と同じ。
13106
13107 `%s'
13108      ジ・エポック (the epoch、Unix 紀元)、すなわち 1970-01-01 00:00:00
13109      UTC からの経過秒数。閏秒のサポートを利用できない場合、閏秒は計算に
13110      入れない。用例については、「`date' の用例」を見ること。 *Note
13111      %s-examples::. これは GNU の拡張である。
13112
13113 `%S'
13114      秒 (`00'...`60')。閏秒がサポートされている場合、`60' になることが
13115      ある。
13116
13117 `%T'
13118      24 時間表記の時、分、秒。`%H:%M:%S' と同じ。
13119
13120 `%X'
13121      現在のロケールによる時刻表示 (例: `23:13:48')
13122
13123 `%z'
13124      RFC 2822/ISO 8601 形式の数値によるタイムゾーン (たとえば、`-0600'
13125      や `+0530')。タイムゾーンが特定できない場合は、空になる。この値は、
13126      環境変数 `TZ' によって指定されたタイムゾーンのルールを使用する
13127      ことで、現在の日時に対応した、数値によるタイムゾーンを正しく反映
13128      する (訳注: 要するに、夏時間、冬時間が存在する地帯では、それを
13129      反映するということ)。操作の対象となる日時は (もしそうしたければ、
13130      その日時におけるタイムゾーンのルールも)、`--date' オプションに
13131      よって変更することができる。
13132
13133 `%:z'
13134      RFC 3339/ISO 8601 形式の、`:' を使用する数値によるタイムゾーン
13135      (たとえば、`-06:00' や `+05:30')。タイムゾーンが特定できない
13136      場合は、空になる。これは GNU による拡張である。
13137
13138 `%::z'
13139      `:' を使用する数値によるタイムゾーンで、もっとも近い秒まで表示する
13140      (たとえば、`-06:00:00' や `+05:30:00')。タイムゾーンが特定できない
13141      場合は、空になる。これは GNU による拡張である。
13142
13143 `%:::z'
13144      `:' を使用する数値によるタイムゾーンで、時間の精度は必要最小限で
13145      済ます (たとえば、`-06', `+05:30', `-04:56:02')。タイムゾーンが
13146      特定できない場合は、空になる。これは GNU による拡張である。
13147
13148 `%Z'
13149      アルファベットによるタイムゾーンの略称 (たとえば、`EDT')。タイム
13150      ゾーンが特定できない場合は、空になる。タイムゾーンがどのようにして
13151      特定されるか (訳注: たとえば、アメリカ東部なら、EST (冬時間) と EDT
13152      (夏時間) のどちらが選ばれるか) については、`%z' を参照すること。
13153
13154 \1f
13155 File: coreutils-ja.info,  Node: Date conversion specifiers,  Next: Literal conversion specifiers,  Prev: Time conversion specifiers,  Up: date invocation
13156
13157 21.1.2 日付関係の変換指定子
13158 -------------------------------------
13159
13160 `date' の日付関係の変換指定子。
13161
13162 `%a'
13163      現在のロケールによる曜日の省略形 (例: `Sun')
13164
13165 `%A'
13166      現在のロケールによる曜日の省略しない表現。長さは不定 (例: `Sunday')
13167
13168 `%b'
13169      現在のロケールによる月名の省略形 (例: `Jan')
13170
13171 `%B'
13172      現在のロケールによる月名の省略しない表現。長さは不定 (例:
13173      `January')
13174
13175 `%c'
13176      現在のロケールによる日付と時刻 (例: `Thu Mar  3 23:05:25 2005')
13177
13178 `%C'
13179      世紀。`%Y' に似ているが、下二桁を省略している。たとえば、`%Y' が
13180      `2000' ならば、`%C' は `20'、`%Y' が `-001' ならば、`%C' は `-0'
13181      である。通例、少なくとも 2 個の文字からなるが、2 個以上のことも
13182      ありえる。
13183
13184 `%d'
13185      その月の何日目か (e.g., `01')
13186
13187 `%D'
13188      日付。`%m/%d/%y' と同じ
13189
13190 `%e'
13191      その月の何日目か。一桁のときは、0 ではなく、空白で埋める。`%_d'
13192      と同じ。
13193
13194 `%F'
13195      ISO 8601 形式の完全な日付。`%Y-%m-%d' と同じ。日付の形式にこれを
13196      選ぶのは、好判断である。標準的な形式だし、年度が 0000...9999 の
13197      範囲にある通常の場合に、ソートしやすい。
13198
13199 `%g'
13200      ISO 週番号に対応する年度表示だが、世紀の部分を省略している (その
13201      結果、`00' から `99' の範囲になる)。これは普通 `%y' と同じ形式、
13202      同じ値になるが、ISO 週番号 (`%V' 参照) が前年、または翌年に
13203      属する場合は、そちらの年度が代りに使用される点が異なる。
13204
13205 `%G'
13206      ISO 週番号に対応する年度表示。これは普通 `%Y' と同じ形式、同じ値
13207      になるが、ISO 週番号 (`%V' 参照) が前年、または翌年に属する場合は、
13208      そちらの年度が代りに使用される点が異なる。通常、これが役に立つのは、
13209      `%V' も一緒に使用するときだけである。たとえば、`%G-%m-%d' という
13210      書式は、ISO 週番号による年度と普段使用する月や日を組み合わせている
13211      ので、たぶん指定の仕方を間違えている。
13212
13213 `%h'
13214      `%b' と同じ。
13215
13216 `%j'
13217      その年の何日目か (`001'...`366')
13218
13219 `%m'
13220      月 (`01'...`12')
13221
13222 `%u'
13223      その週の何日目か (`1'...`7')。`1' は月曜日に当たる。
13224
13225 `%U'
13226      日曜日を週の最初の日とする、その年の週番号 (`00'...`53')。新しい
13227      年の最初の日曜日より前の日々は、第 0 週に属する。
13228
13229 `%V'
13230      ISO 週番号。すなわち、月曜日を週の最初の日とする、その年の週番号
13231      (`01'...`53')。1 月 1 日を含む週が、新しい年の日々を 4 日以上含む
13232      場合は、その週が第 1 週であると見なされる。そうでない場合は、
13233      その週は前年の第 53 週であり、翌週が第 1 週になる。(ISO 8601 の
13234      規格を参照。)
13235
13236 `%w'
13237      その週の何日目か (`0'...`6')。0 は日曜日に当たる。
13238
13239 `%W'
13240      月曜日を週の最初の日とする、その年の週番号 (`00'...`53')。最初の
13241      月曜日より前の新しい年の日々は、第 0 週に属する。
13242
13243 `%x'
13244      現在のロケールによる日付の表示 (例: `12/31/99')
13245
13246 `%y'
13247      年度の下二桁 (`00'...`99')
13248
13249 `%Y'
13250      年度。通例、少なくとも 4 文字だが、もっと多いこともある。`0000'
13251      年は `0001' の前年であり、`-001' 年は `0000' の前年である。
13252
13253 \1f
13254 File: coreutils-ja.info,  Node: Literal conversion specifiers,  Next: Padding and other flags,  Prev: Date conversion specifiers,  Up: date invocation
13255
13256 21.1.3 文字変換指定子
13257 ----------------------------
13258
13259 日付や時刻以外の `date' の変換指定子。
13260
13261 `%%'
13262      1 個の % という文字
13263
13264 `%n'
13265      改行
13266
13267 `%t'
13268      水平タブ
13269
13270 \1f
13271 File: coreutils-ja.info,  Node: Padding and other flags,  Next: Setting the time,  Prev: Literal conversion specifiers,  Up: date invocation
13272
13273 21.1.4 空き埋めなどのフラグ
13274 -------------------------------------
13275
13276 特に指定がないかぎり、`date' は通常、数値の入るフィールドの空きを 0
13277 で埋める。従って、たとえば、数値による月名は常に二桁の数字として
13278 出力される。しかし、ジ・エポック (Unix 紀元) 以来の経過秒数では、
13279 空きを埋めることはしない。この秒数には決まった長さがないからである。
13280
13281    GNU の拡張として、以下に挙げるフラグの一つを `%' の後ろに置くことが
13282 できる (指定するしないは自由)。
13283
13284 `-'
13285      (ハイフン) フィールドの空き埋めをしない。出力が人間に見せるための
13286      ものである場合に、役に立つ。
13287
13288 `_'
13289      (アンダースコア、下線) 空白で空き埋めをする。出力を一定の文字数に
13290      する必要があるが、0 で埋めたのでは見にくいという場合に、役に立つ。
13291
13292 `0'
13293      (ゼロ) 変換指定子が普通なら空白で埋める場合にも、ゼロで空き埋めを
13294      する。
13295
13296 `^'
13297      可能なら、大文字を使う。
13298
13299 `#'
13300      可能なら、反対の文字を使う。通常大文字のフィールドは小文字になり、
13301      小文字のフィールドは大文字になる。
13302
13303 空き埋めの例をいくつか挙げておく。
13304
13305      date +%d/%m -d "Feb 1"
13306      => 01/02
13307      date +%-d/%-m -d "Feb 1"
13308      => 1/2
13309      date +%_d/%_m -d "Feb 1"
13310      =>  1/ 2
13311
13312    これも GNU の拡張だが、フィールドの幅を 10 進数で指定することができ
13313 る (数字は、上記のフラグがあれば、その後ろに置く)。そのフィールドの
13314 出力の加工前の長さが、幅として指定した文字数より短い場合は、右詰めに
13315 して、指定サイズにまで空き埋めした結果が書き出される。たとえば、`%9B'
13316 は、右詰めにした月の名前を 9 文字分のフィールドに表示する。
13317
13318    上記のフラグやフィールド幅の指定の後ろに、修飾子 (modifier) を付ける
13319 こともできる (指定するしないは自由)。修飾子には、次のものがある。
13320
13321 `E'
13322      現在のロケールが持つもう一つの日時表記を使用する。この修飾子は、
13323      `%c', `%C', `%x', `%X', `%y', `%Y' に対して使用できる。たとえば、
13324      日本語ロケールで `%Ex' とすれば、元号による日付を表示するだろう。
13325
13326 `O'
13327      現在のロケールが持つもう一つの数字表記を使用する。この修飾子は、
13328      数値を表す変換指定子にしか使用できない。
13329
13330    書式が修飾子をサポートしていても、もう一つの表記が利用できない場合、
13331 修飾子は無視される。
13332
13333 \1f
13334 File: coreutils-ja.info,  Node: Setting the time,  Next: Options for date,  Prev: Padding and other flags,  Up: date invocation
13335
13336 21.1.5 システムクロックの設定
13337 ----------------------------------------
13338
13339 `+' で始まらない引数を指定すると、`date' は、(以下で述べるように) その
13340 引数で指定した日時にシステムクロックを設定する。システムクロックを設定
13341 するには、しかるべき権限が必要である。リブート後も変更を維持するには、
13342 システムクロックに合わせてハードウェアクロックも更新する必要があるかも
13343 しれないことに注意していただきたい。ご使用のシステムでは、ハードウェア
13344 クロックの更新は、自動的に行われないかもしれないからだ。
13345
13346    引き数の構成要素は、すべて数字でなければならない。それは以下の意味を
13347 持っている。
13348
13349    (訳注: 念のため、この章の冒頭にあるシステムクロック設定用の書式を
13350 再掲しておく。date [-u|-utc|-universal] [ MMDDhhmm[[CC]YY][.ss] ])
13351
13352 `MM'
13353      何月
13354
13355 `DD'
13356      (何月の) 何日
13357
13358 `hh'
13359      何時
13360
13361 `mm'
13362      何分
13363
13364 `CC'
13365      年度の上二桁 (省略可)
13366
13367 `YY'
13368      年度の下二桁 (省略可)
13369
13370 `ss'
13371      何秒 (省略可)
13372
13373    注意していただきたいが、`--date' や `--set' オプションは、ここで
13374 述べている書式の引数と組み合わせて使うことができない。`--universal'
13375 オプションは、ここで述べている書式の引数と一緒に使うことができるが、
13376 その場合、指定されている日時が現在地のタイムゾーンではなく、協定世界時
13377 (UTC) に準じているのを示すことになる。
13378
13379 \1f
13380 File: coreutils-ja.info,  Node: Options for date,  Next: Examples of date,  Prev: Setting the time,  Up: date invocation
13381
13382 21.1.6 `date' のオプション
13383 --------------------------------
13384
13385 このプログラムでは以下のオプションが使用できる。参照: *note Common
13386 options::.
13387
13388 `-d DATESTR'
13389 `--date=DATESTR'
13390      現在の日時の代りに、日付文字列 DATESTR で指定した日時を表示する。
13391      DATESTR には、よく使われる書式なら、ほとんどどんな書式でも使う
13392      ことができる。月の名前、タイムゾーン、`am' や `pm'、`yesterday'
13393      といった単語、などを含んでいてもよい。たとえば、`--date="2004-02-27
13394      14:19:13.489392193 +0530"' は、UTC よりも東 5 時間 30 分のタイム
13395      ゾーンで 2004 年 2 月 27 日 午後 2 時 19 分 13 秒から 489,392,193
13396      ナノ秒経過した瞬間を指定している。
13397      注意: 現在のところ、入力は、ロケールに依存しない書式でなければ
13398      ならない。たとえば、以下の例の LC_TIME=C は、多くのロケールで正しい
13399      日時を再表示させるために必要である。
13400           date -d "$(LC_TIME=C date)"
13401      参照: *Note Date input formats::.
13402
13403 `-f DATEFILE'
13404 `--file=DATEFILE'
13405      DATEFILE の各行を `-d' の場合と同じように解析して、生成された日付
13406      と時刻を表示する。DATEFILE が `-' ならば、標準入力を使用する。処理
13407      する日付がたくさんある場合に、このオプションは重宝である。何故ならば、
13408      `date' コマンドを何度も起動するときのシステムのオーバーヘッドは、
13409      馬鹿にならないことがあるからだ。
13410
13411 `-I[TIMESPEC]'
13412 `--iso-8601[=TIMESPEC]'
13413      ISO 8601 の書式、`%Y-%m-%d' を使って、日付を表示する。
13414
13415      引数 TIMESPEC では、日付の後ろに時刻をどの単位まで追加するかを
13416      指定する。以下の一つを指定することができる。
13417     `date'
13418           日付のみを表示する。TIMESPEC を省略した場合のデフォルト。
13419
13420     `hours'
13421           日付にその日の何時かを追加する。
13422
13423     `minutes'
13424           何時何分まで追加する。
13425
13426     `seconds'
13427           何時何分何秒まで追加する。
13428
13429     `ns'
13430           何時何分何秒何ナノ秒まで追加する。
13431
13432      時刻の部分まで表示するときは、`%z' の書式でタイムゾーンも付ける。
13433
13434 `-r FILE'
13435 `--reference=FILE'
13436      現在の日付と時刻の代りに、FILE の内容を最後に更新した (the last
13437      modification) 日付と時刻を表示する。
13438
13439 `-R'
13440 `--rfc-822'
13441 `--rfc-2822'
13442      日付と時刻を `%a, %d %b %Y %H:%M:%S %z' という書式を使用し、C
13443      ロケールで評価して表示する。従って、月や曜日の省略形は常に英語に
13444      なる。一例を挙げると、こんな表示である。
13445
13446           Fri, 09 Sep 2005 13:51:39 -0700
13447
13448      この書式は、Internet RFC 2822
13449      (ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt) と RFC 822
13450      (ftp://ftp.rfc-editor.org/in-notes/rfc822.txt) に従っている。
13451      インターネットの E メールに関する現在と以前の規格である。
13452
13453 `--rfc-3339=TIMESPEC'
13454      Internet RFC 3339 (ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt)
13455      が規定している書式を使用して、日付を表示する。この書式は、ISO 8601
13456      の書式のサブセットだが、日付と時刻を区切るのに、`T' という文字では
13457      なく、空白を使うことをアプリケーションに許している、という相違点も
13458      ある。他の標準の書式とは違って、RFC 3339 の書式は、現在のロケール
13459      が何であろうとも、`--date' (`-d') や `--file' (`-f') オプションに
13460      対する入力として常に適切である。
13461
13462      引数 TIMESPEC では、時刻をどこまで表示するかを指定する。以下の一つ
13463      を指定することができる。
13464
13465     `date'
13466           年から始まる日付だけを表示する。たとえば、`2005-09-14'。これは、
13467           `%Y-%m-%d' という書式と等価ある。
13468
13469     `seconds'
13470           年から始まる日付と秒までの時刻を表示し、両者の間は空白で区切る。
13471           一例を挙げると、`2005-09-14 00:56:06+05:30'。出力の末尾には、
13472           協定世界時からの時差が付く。例の場合、`+05:30' は、地方時が
13473           UTC より 5 時間 30 分進んでいることを意味している。これは、
13474           `%Y-%m-%d %H:%M:%S%:z' という書式と等価である。
13475
13476     `ns'
13477           `seconds' と似ているが、ナノ秒まで表示する。一例を挙げると、
13478           `2005-09-14 00:56:06.998458565+05:30'。これは、`%Y-%m-%d
13479           %H:%M:%S.%N%:z' という書式と等価である。
13480
13481
13482 `-s DATESTR'
13483 `--set=DATESTR'
13484      日付と時刻を DATESTR に設定する。上記の `-d' を参照。前節「システム
13485      クロックの設定」 も参照すること。*note Setting the time::.
13486
13487 `-u'
13488 `--utc'
13489 `--universal'
13490      環境変数 `TZ' が、文字列 `UTC0' に設定されているかのように、処理に
13491      協定世界時 (UTC, Coordinated Universal Time) を使用する。協定世界時
13492      は、歴史的な理由から「グリニッジ標準時 (GMT)」と呼ばれることもよく
13493      ある。一般にシステムは閏秒を無視するので、日時は正真の UTC では
13494      なく、UTC の近似値になる。
13495
13496 \1f
13497 File: coreutils-ja.info,  Node: Examples of date,  Prev: Options for date,  Up: date invocation
13498
13499 21.1.7 `date' の使用例
13500 --------------------------
13501
13502 用例をいくつか挙げてみる。前節の `-d' オプションの説明も参照して
13503 いただきたい。
13504
13505    * 一昨日の日付を表示する。
13506
13507           date --date='2 days ago'
13508
13509    * 今から 3 ヶ月と 1 日後の日付けを表示する。
13510
13511           date --date='3 months 1 day'
13512
13513    * 今年のクリスマスは年の初めから何日目かを表示する。
13514
13515           date --date='25 Dec' +%j
13516
13517    * 今日が何月何日かを、省略しない月の名前で表示する。
13518
13519           date '+%B %d'
13520
13521      しかし、月の最初の 9 日間では、`%d' は空きを 0 で埋めた 2 桁の
13522      フィールドに展開されるので、この結果はご希望のものとは違うかも
13523      しれない。たとえば、`date -d 1may '+%B %d'' の出力は、`May 01' に
13524      なるのだ。
13525
13526    * 月のうちの 1 桁の日々に対して、先頭に 0 を付けずに日付を表示したい
13527      のなら、(GNU の拡張である) `-' フラグを使用すれば、空き埋めを全く
13528      しないようにすることができる。
13529
13530           date -d 1may '+%B %-d'
13531
13532    * 現在の日付と時刻を、non-GNU 版の `date' の多くでシステムクロックを
13533      設定するときに要求される書式で表示する。
13534
13535           date +%m%d%H%M%Y.%S
13536
13537    * システムクロックを 2 分進める。
13538
13539           date --set='+2 minutes'
13540
13541    * 日付を RFC 2822 の書式で表示するためには、`date --rfc-2822' を使用
13542      する。ここに示すのは、出力の一例である。
13543
13544           Fri, 09 Sep 2005 13:51:39 -0700
13545
13546    * 日付を表す文字列をジ・エポック (the epoch、Unix 紀元、すなわち、
13547      1970-01-01 00:00:00 UTC) からの経過秒数に変換するには、`--date'
13548      オプションを `%s' 書式と組み合わせて使用する。これは、データを日付
13549      によってソートしたり、グラフ化したり、比較したりする際に、便利
13550      である。次のコマンドは、ジ・エポックから 2 分経ったときの、
13551      ジ・エポックからの経過秒数を出力する。
13552
13553           date --date='1970-01-01 00:02:00 +0000' +%s
13554           120
13555
13556      日付を表す文字列でタイムゾーン情報を指定しない場合、`date' は、
13557      コンピュータが認識しているタイムゾーンを使用して、その文字列を
13558      解釈する。たとえば、使用しているコンピュータのタイムゾーンが、
13559      マサチューセッツ州のケンブリッジのものならば、それは UTC より 5
13560      時間遅れているので、次のようになる。
13561
13562           # 現在地のタイムゾーンを使用
13563           date --date='1970-01-01 00:02:00' +%s
13564           18120
13565
13566    * 日付の付いたデータをソートしたり、グラフ化したりしているとしよう。
13567      その日付の加工前の値は、ジ・エポックからの経過秒数で表されている
13568      かもしれない。もっとも、`946684800' といった日付を見て、「ああ、
13569      イギリスのグリニッジの 2000 年の最初の 0 秒だね」と、さりげなく
13570      言える人は、めったにいないけれど。
13571
13572           date --date='2000-01-01 UTC' +%s
13573           946684800
13574
13575      なお、上と同じ結果は、`--utc' (`-u') オプションを使っても得られ、
13576      その場合は、日付を表す文字列で `UTC' を省略することができる。
13577      とは言え、`--utc' を使う方法は、`%s' を始め、多くの書式文字列では、
13578      日付文字列で `UTC' を使うのと同じ結果をもたらすものの、協定世界時
13579      からの時差が 0 ではないタイムゾーンでは、`%z' など、タイムゾーン
13580      によって値が変わってくる書式文字列に対しては、異なる結果をもたらす
13581      ことになるだろう。
13582
13583           date -u --date=2000-01-01 +%s
13584           946684800
13585
13586      こうした秒数という扱いにくいデータをもっと読みやすい形に変換し直す
13587      には、次のようなコマンドを使う。
13588
13589           # 現在地のタイムゾーンを使用
13590           date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
13591           1999-12-31 19:00:00 -0500
13592
13593      coreutils 5.3.0 以来使用できるようになった `@' という表記に頼っても
13594      構わないなら、上記のコマンドを短くすることができる。
13595
13596           date -d @946684800 +"%F %T %z"
13597           1999-12-31 19:00:00 -0500
13598
13599      UTC の日付や時刻を出力した方がよいことも多い。
13600
13601           date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"
13602           2000-01-01 00:00:00 +0000
13603
13604    * 閏秒は秒数計算に入れないのが一般的だが、例外的なシステムもある。
13605      閏秒は予測できないものなので、閏秒を計算に入れる例外的なシステム
13606      では、秒数による計算と未来の日時との対応は信頼性に欠ける。
13607
13608      一般的なシステムと例外的なシステムの両者が、2012-06-30 23:59:60 UTC
13609      の閏秒をどのように処理しているかを以下に示す。
13610
13611           # 一般的なシステムは閏秒を無視する:
13612           date --date='2012-06-30 23:59:59 +0000' +%s
13613           1341100799
13614           date --date='2012-06-30 23:59:60 +0000' +%s
13615           date: invalid date '2012-06-30 23:59:60 +0000'
13616           date --date='2012-07-01 00:00:00 +0000' +%s
13617           1341100800
13618
13619           # 例外的なシステムは閏秒をカウントする:
13620           date --date='2012-06-30 23:59:59 +0000' +%s
13621           1341100823
13622           date --date='2012-06-30 23:59:60 +0000' +%s
13623           1341100824
13624           date --date='2012-07-01 00:00:00 +0000' +%s
13625           1341100825
13626
13627
13628 \1f
13629 File: coreutils-ja.info,  Node: arch invocation,  Next: nproc invocation,  Prev: date invocation,  Up: System context
13630
13631 21.2 `arch': マシンのハードウェア名を表示する
13632 =============================================================
13633
13634 `arch' は、マシンのハードウェア名を表示する。`uname -m' と同じこと
13635 である。
13636
13637    書式:
13638
13639      arch [OPTION]
13640
13641    このプログラムでは、共通オプションしか使用できない。*note Common
13642 options::.
13643
13644    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13645
13646 \1f
13647 File: coreutils-ja.info,  Node: nproc invocation,  Next: uname invocation,  Prev: arch invocation,  Up: System context
13648
13649 21.3 `nproc': 利用できるプロセッサの個数を表示する
13650 ====================================================================
13651
13652 カレントプロセスが利用できるプロセシング・ユニットの個数を表示する。
13653 それは、稼働しているプロセッサの数より少ないかもしれない。そうした
13654 情報が取得できない場合は、搭載されているプロセッサの数を表示する。
13655 環境変数 `OMP_NUM_THREADS' が設定されている場合は、その変数が、返さ
13656 れる値を決めることになる。なお、結果は必ず 0 より大きくなる。
13657
13658    書式:
13659
13660      nproc [OPTION]
13661
13662    このプログラムでは以下のオプションが使用できる。参照: *note Common
13663 options::.
13664
13665 `--all'
13666      システムに搭載されているプロセッサの数を表示する。それは、稼働して
13667      いるプロセッサや、カレントプロセスが利用できるプロセッサの数より
13668      多いかもしれない。このオプションを付けた場合、環境変数
13669      `OMP_NUM_THREADS' は考慮されない。
13670
13671 `--ignore=NUMBER'
13672      可能ならば、NUMBER 個のプロセシング・ユニットを除外する。
13673
13674
13675    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13676
13677 \1f
13678 File: coreutils-ja.info,  Node: uname invocation,  Next: hostname invocation,  Prev: nproc invocation,  Up: System context
13679
13680 21.4 `uname': システムについて情報を表示する
13681 ===========================================================
13682
13683 `uname' は、自分がその上で実行されているマシンとオペレーティング・
13684 システムについて情報を表示する。オプションが一つも指定されない場合は、
13685 `-s' オプションが指定されたかのように振る舞う。
13686
13687    書式:
13688
13689      uname [OPTION]...
13690
13691    複数のオプションや `-a' オプションが指定された場合、選択された情報は
13692 次の順番で表示される。
13693
13694      KERNEL-NAME NODENAME KERNEL-RELEASE KERNEL-VERSION
13695      MACHINE PROCESSOR HARDWARE-PLATFORM OPERATING-SYSTEM
13696
13697    個々の情報が空白を含んでいることがある。そうした場合、出力のどこから
13698 どこまでが、ある情報に当たるかを判断することは難しい。以下の例で RELEASE
13699 に当たるのは、`2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001' の部分である。
13700
13701    (訳注: RELEASE が KERNEL-RELEASE のことならば、それに相当するのは
13702 `2.2.18' だけである。#4 から 2001 までは KERNEL-VERSION。原文は両者を
13703 合わせて、RELEASE と言っているのかもしれない。なお、以下の例はちょっと
13704 古い。最近の `uname -a' では、`-a' オプションの説明にあるように、unknown
13705 の部分は表示されないはずである。)
13706
13707      uname -a
13708      => Linux dumdum 2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001 i686 unknown unknown GNU/Linux
13709
13710    このプログラムでは以下のオプションが使用できる。参照: *note Common
13711 options::.
13712
13713 `-a'
13714 `--all'
13715      以下の情報をすべて表示する。ただし、プロセッサ・タイプとハードウェア・
13716      プラットホームは、unknown ならば省略する。
13717
13718 `-i'
13719 `--hardware-platform'
13720      ハードウェア・プラットホームの名前を表示する (ハードウェア実装と
13721      呼ばれることもある)。この情報がカーネルから簡単に取得できるように
13722      なっていない場合は、`unknown' と表示する。Linux のカーネルがその
13723      一例である。
13724
13725 `-m'
13726 `--machine'
13727      マシンのハードウェア名を表示する (ハードウェア・クラスとかハード
13728      ウェア・タイプと呼ばれることもある)。
13729
13730 `-n'
13731 `--nodename'
13732      ネットワークノードのホスト名を表示する。
13733
13734 `-p'
13735 `--processor'
13736      プロセッサ・タイプを表示する (命令セット体系、the instruction set
13737      architecture、ISA などと呼ばれることもある)。この情報が
13738      カーネルから簡単に取得できるようになっていない場合は、`unknown' と
13739      表示する。Linux のカーネルがその一例である。
13740
13741 `-o'
13742 `--operating-system'
13743      オペレーティング・システムの名前を表示する。
13744
13745 `-r'
13746 `--kernel-release'
13747      カーネルのリリース名を表示する。
13748
13749 `-s'
13750 `--kernel-name'
13751      カーネル名を表示する。POSIX 1003.1-2001 では (*note Standards
13752      conformance::)、これを「オペレーティング・システムの実装」と
13753      呼んでいる。POSIX の仕様には、カーネルという概念がないから
13754      である。カーネル名は、`-o' や  `--operating-system' オプション
13755      で表示されるオペレーティング・システム名と同じかもしれないし、
13756      違うかもしれない。オペレーティング・システムによって、基盤と
13757      なっているカーネルと名前が同じものもあれば (FreeBSD, HP-UX など)、
13758      違うものもある (GNU/Linux, Solaris など) からである。
13759
13760 `-v'
13761 `--kernel-version'
13762      カーネルのバージョンを表示する。
13763
13764
13765    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13766
13767 \1f
13768 File: coreutils-ja.info,  Node: hostname invocation,  Next: hostid invocation,  Prev: uname invocation,  Up: System context
13769
13770 21.5 `hostname': システムの名前を表示、または設定する
13771 =======================================================================
13772
13773 `hostname' は、引数なしで実行すると、使用しているホストシステムの
13774 名前を表示する。引数を一つ付けると、使用しているホストの名前を指定
13775 された文字列に設定する。ホストの名前を設定するには、しかるべき権限が
13776 必要である。
13777
13778    書式:
13779
13780      hostname [NAME]
13781
13782    オプションは、`--help' と `--version' だけである。*Note Common
13783 options::.
13784
13785    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13786
13787 \1f
13788 File: coreutils-ja.info,  Node: hostid invocation,  Next: uptime invocation,  Prev: hostname invocation,  Up: System context
13789
13790 21.6 `hostid': 数値によるホストの識別名を表示する
13791 ==================================================================
13792
13793 `hostid' は、使用しているホストの数値による識別名を 16 進数で表示する。
13794 このコマンドは引数を取らない。使用できるオプションは、`--help' と
13795 `--version' だけである。*Note Common options::.
13796
13797    たとえば、筆者が使っているシステムの一つでは、次のように表示される。
13798
13799      $ hostid
13800      1bac013d
13801
13802    たまたまこのシステムでは、識別名の 32 ビットの数値が、システムの
13803 インターネット・アドレスと密接な関係を持っているが、いつでもそうとは
13804 かぎらない。
13805
13806    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13807
13808 \1f
13809 File: coreutils-ja.info,  Node: uptime invocation,  Prev: hostid invocation,  Up: System context
13810
13811 21.7 `uptime': システムの連続稼働時間と負荷を表示する
13812 ========================================================================
13813
13814 `uptime' は、現在の時刻、システムの連続稼働時間、ログインしているユーザ
13815 の数、それに現在の平均負荷 (load average) を表示する。
13816
13817    引数を指定すると、ユーザが何人ログインしているかを知るために読み込む
13818 ファイルとして、その引数が使用される。引数を指定しない場合は、システムの
13819 デフォルトが使用される (`uptime --help' を実行すれば、デフォルトの設定が
13820 わかる)。
13821
13822    オプションは、`--help' と `--version' だけである。*Note Common
13823 options::.
13824
13825 たとえば、以下の例は、筆者が使っているシステムの一つで、ちょうど今表示
13826 されたものだ。
13827
13828      $ uptime
13829       14:07  up   3:35,  3 users,  load average: 1.39, 1.15, 1.04
13830
13831    細かいことを言うと、平均負荷の計算方法は、システムによっていくらか
13832 異なっている。あるシステムでは、ここ 1 分間、5 分間、15 分間の、実行
13833 可能状態のプロセスの平均数として計算されるが、別のシステムでは、割り込み
13834 不可能なスリープ状態のプロセスも含めている (すなわち、ディスク I/O を
13835 待っているプロセスだ)。Linux のカーネルは、割り込み不可能なプロセスを
13836 含める方である。
13837
13838 \1f
13839 File: coreutils-ja.info,  Node: SELinux context,  Next: Modified command invocation,  Prev: System context,  Up: Top
13840
13841 22 SELinux コンテキスト
13842 *****************************
13843
13844 この章では、SELinux コンテキスト関係の操作を行うコマンドを説明する。
13845
13846 * Menu:
13847
13848 * chcon invocation::     ファイルの SELinux コンテキストを変更する
13849 * runcon invocation::    指定された SELinux コンテキストでコマンドを実行する
13850
13851 \1f
13852 File: coreutils-ja.info,  Node: chcon invocation,  Next: runcon invocation,  Up: SELinux context
13853
13854 22.1 `chcon': ファイルの SELinux コンテキストを変更する
13855 =======================================================================
13856
13857 `chcon' は、指定されたファイルの SELinux セキュリティ・コンテキストを
13858 変更する。
13859
13860    書式:
13861
13862      chcon [OPTION]... CONTEXT FILE...
13863      chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
13864      chcon [OPTION]... --reference=RFILE FILE...
13865
13866    各 FILE の SELinux セキュリティ・コンテキストを CONTEXT に変更する。
13867 `--reference' オプションを使用した場合は、各 FILE のセキュリティ・
13868 コンテキストを RFILE のそれに変更する。
13869
13870    このプログラムでは以下のオプションが使用できる。参照: *note Common
13871 options::.
13872
13873 `--dereference'
13874      シンボリックリンクそのものではなく、リンクが指しているものを操作の
13875      対象にする。これがデフォルトである。
13876
13877 `-h'
13878 `--no-dereference'
13879      参照先のファイルではなく、シンボリックリンクそのものを操作の対象
13880      にする。
13881
13882 `--reference=RFILE'
13883      CONTEXT の値を直接指定する代わりに、RFILE のセキュリティ・
13884      コンテキストを使用する。
13885
13886 `-R'
13887 `--recursive'
13888      ファイルやディレクトリに対して再帰的に動作する。
13889
13890 `--preserve-root'
13891      `--recursive' オプションと一緒に使ったとき、ルートディレクトリ
13892      (`/') に対して再帰的に動作することを拒否する。 *Note Treating /
13893      specially::.
13894
13895 `--no-preserve-root'
13896      `--recursive' オプションと一緒に使ったとき、ルートディレクトリ
13897      (`/') を特別扱いしない。こちらがデフォルトの動作である。 *Note
13898      Treating / specially::.
13899
13900 `-H'
13901      `--recursive' (`-R') オプションが指定されている場合に、コマンド
13902      ラインで指定された引数がディレクトリへのシンボリックリンクならば、
13903      それをたどる。 *Note Traversing symlinks::.
13904
13905 `-L'
13906      ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
13907      リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
13908      symlinks::.
13909
13910 `-P'
13911      シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
13912      どれも指定されていないときの、デフォルトである。 *Note Traversing
13913      symlinks::.
13914
13915 `-v'
13916 `--verbose'
13917      処理したすべてのファイルについてメッセージを表示する。
13918
13919 `-u USER'
13920 `--user=USER'
13921      操作対象のセキュリティ・コンテキストのユーザを USER にする。
13922
13923 `-r ROLE'
13924 `--role=ROLE'
13925      操作対象のセキュリティ・コンテキストのロールを ROLE にする。
13926
13927 `-t TYPE'
13928 `--type=TYPE'
13929      操作対象のセキュリティ・コンテキストのタイプを TYPE にする。
13930
13931 `-l RANGE'
13932 `--range=RANGE'
13933      操作対象のセキュリティ・コンテキストのセキュリティ・レベルの
13934      範囲を RANGE にする。
13935
13936
13937    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13938
13939 \1f
13940 File: coreutils-ja.info,  Node: runcon invocation,  Prev: chcon invocation,  Up: SELinux context
13941
13942 22.2 `runcon': 指定された SELinux コンテキストでコマンドを実行する。
13943 ==========================================================================================
13944
13945 `runcon' は、指定された SELinux セキュリティ・コンテキストでファイルを
13946 実行する。
13947
13948    書式:
13949      runcon CONTEXT COMMAND [ARGS]
13950      runcon [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [ARGS]
13951
13952    セキュリティ・コンテキストのすべてを CONTEXT で指定して、COMMAND を
13953 実行する。あるいは、現在の、または遷移後のセキュリティ・コンテキストの
13954 うち、USER, ROLE, TYPE, LEVEL (訳注: 上の書式で言えば RANGE) の一つ以上
13955 を変更して、COMMAND を実行する。
13956
13957    `-c', `-u', `-r', `-t', `-l' のどのオプションも指定されていない場合
13958 は、最初の引数が完全なコンテキストとして使用される。COMMAND の後ろに続く
13959 引数があれば、それはそのコマンドに対する引数と見なされる。
13960
13961    CONTEXT と COMMAND のどちらも指定されていない場合は、現在の
13962 セキュリティ・コンテキストを表示する。
13963
13964    このプログラムでは以下のオプションが使用できる。参照: *note Common
13965 options::.
13966
13967 `-c'
13968 `--compute'
13969      セキュリティ・コンテキストの変更を行う前に、プロセスの遷移による
13970      コンテキストを求めておく。
13971
13972 `-u USER'
13973 `--user=USER'
13974      操作対象のセキュリティ・コンテキストのユーザを USER にする。
13975
13976 `-r ROLE'
13977 `--role=ROLE'
13978      操作対象のセキュリティ・コンテキストのロールを ROLE にする。
13979
13980 `-t TYPE'
13981 `--type=TYPE'
13982      操作対象のセキュリティ・コンテキストのタイプを TYPE にする。
13983
13984 `-l RANGE'
13985 `--range=RANGE'
13986      操作対象のセキュリティ・コンテキストのセキュリティ・レベルの
13987      範囲を RANGE にする。
13988
13989
13990    終了ステータス:
13991
13992      126: COMMAND が見つかったが、起動できなかった。
13993      127: `runcon' そのものの実行に失敗した。あるいは、COMMAND が
13994           見つからなかった。
13995      それ以外は、COMMAND の終了ステータス。
13996
13997 \1f
13998 File: coreutils-ja.info,  Node: Modified command invocation,  Next: Process control,  Prev: SELinux context,  Up: Top
13999
14000 23 コマンド実行条件の変更
14001 ************************************
14002
14003 この章で説明するコマンドは、他のコマンドを現在の条件とは違った条件で
14004 実行するものである。たとえば、環境を変更して実行する、別のユーザとして
14005 実行するといったコマンドだ。
14006
14007    (訳注: 「別のユーザとして実行する」というのは、`chroot' の
14008 `--userspec' オプションを指していると考えられなくもないが、元々は `su'
14009 コマンドのことを言っていたのだと思う。`su' も以前はこの章で説明されて
14010 いたが、現在では coreutils に収録されていない。)
14011
14012 * Menu:
14013
14014 * chroot invocation::        ルート・ディレクトリを変更する。
14015 * env invocation::           環境変数を変更する。
14016 * nice invocation::          niceness を変更する。
14017 * nohup invocation::         ハングアップ・シグナルで終了しない。
14018 * stdbuf invocation::        標準ストリームのバッファリングを変更する。
14019 * timeout invocation::       タイムリミット付きで実行する。
14020
14021 \1f
14022 File: coreutils-ja.info,  Node: chroot invocation,  Next: env invocation,  Up: Modified command invocation
14023
14024 23.1 `chroot': ルートディレクトリを変更して、コマンドを実行する
14025 =======================================================================================
14026
14027 `chroot' は、指定されたディレクトリをルートディレクトリにして、コマンド
14028 を実行する。多くのシステムでは、この操作を行うことができるのはスーパー
14029 ユーザだけである。 (1)
14030
14031    書式:
14032
14033      chroot OPTION NEWROOT [COMMAND [ARGS]...]
14034      chroot OPTION
14035
14036    通常、ファイル名の検索は、ディレクトリ構造の根 (ルート、root)、
14037 すなわち `/' を起点として行われる。`chroot' はこのルートを NEWROOT
14038 ディレクトリ (実在するディレクトリでなければならない) に変更し、
14039 その上で COMMAND を、ARGS の指定があれば ARGS を付けて実行する。
14040 COMMAND が指定されていない場合、デフォルトのコマンドは、環境変数
14041 `SHELL' の値か、`SHELL' が設定されていなければ、`/bin/sh' であり、
14042 それが `-i' オプションを付けて、呼び出される。COMMAND は シェルの
14043 組み込みコマンドであってはならない (*note Special built-in
14044 utilities::)。
14045
14046    このプログラムでは以下のオプションが使用できる。参照: *note Common
14047 options::.  オプションはオペランドの前に置かなければならない。
14048
14049 `--userspec=USER[:GROUP]'
14050      デフォルトでは、COMMAND は呼び出し側のプロセスと同じ資格情報を
14051      使って実行されるが、このオプションを使えば、COMMAND を別の USER
14052      として実行することができる。別の基本 GROUP を指定することも可能だ。
14053      (訳注: coreutils-8.22 では、場合によっては USER や GROUP を名前
14054      ではなく、ID 番号で指定しなければならないことがある。)
14055
14056 `--groups=GROUPS'
14057      このオプションを使えば、新しいプロセスが使用する補助 GROUPS を指定
14058      することができる。グループのリスト (名前でも ID 番号でもよい) は、
14059      コンマで区切られていなければならない。(訳注: coreutils-8.22 では、
14060      このオプションが使用できない場合もある。)
14061
14062
14063    chroot を使う上でよくある問題を避けることができるように、ちょっと
14064 した情報をいくつか挙げておく。まず簡単なことから言うと、COMMAND は、
14065 静的にリンクしたバイナリを指すようにした方がよい。もし、動的にリンク
14066 した実行ファイルを使用するのならば、共有ライブラリが新しいルート
14067 ディレクトリ以下の適切な場所に存在するように、前もって準備しておく
14068 必要があるだろう。
14069
14070    たとえば、静的にリンクした `ls' の実行ファイルを作成して、
14071 `/tmp/empty' に置けば、root ユーザとして次のようなコマンドを実行する
14072 ことができる。
14073
14074      $ chroot /tmp/empty /ls -Rl /
14075
14076    出力はこんなふうになるだろう。
14077
14078      /:
14079      total 1023
14080      -rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
14081
14082    もし、動的にリンクした実行ファイル、たとえば `bash' を使いたい
14083 ならば、まず `ldd bash' を実行して、どんな共有オブジェクトファイルが
14084 必要かを調べることだ。それから、`bash' 自体のバイナリをコピーするだけ
14085 でなく、`ldd bash' でリストされたファイルも、新しいルートディレクトリ
14086 になるディレクトリ以下のしかるべき場所にコピーしておく。さらに、
14087 実行ファイルが何か他のファイルも必要としているなら (たとえば、データ
14088 ファイル、ステータスファイル、デバイスファイルなど)、それも適切な
14089 場所にコピーする。
14090
14091    終了ステータス:
14092
14093      125: `chroot' そのものの実行に失敗した。
14094      126: COMMAND は見つかったが、起動できなかった。
14095      127: COMMAND が見つからなかった。
14096      それ以外は、COMMAND の終了ステータス。
14097
14098    ---------- Footnotes ----------
14099
14100    (1) もっとも、システムによっては (たとえば、FreeBSD がそうだが)、
14101 特定の一般ユーザが `chroot' システムコールを使用できるように設定
14102 できるものもある。従って、そうしたユーザは `chroot' コマンドを実行
14103 できるわけだ。また、Cygwin では、どんなユーザでも `chroot' コマンド
14104 を実行できる。MS-Windows では chroot 関数をサポートしていないため、
14105 内部で使用する関数が特権を要求しないからである。
14106
14107 \1f
14108 File: coreutils-ja.info,  Node: env invocation,  Next: nice invocation,  Prev: chroot invocation,  Up: Modified command invocation
14109
14110 23.2 `env': 変更した環境でコマンドを実行する
14111 ============================================================
14112
14113 `env' は、環境を変更して、コマンドを実行する。
14114
14115    書式:
14116
14117      env [OPTION]... [NAME=VALUE]... [COMMAND [ARGS]...]
14118      env
14119
14120    `VARIABLE=VALUE' という形のオペランドは、環境変数 VARIABLE の値を
14121 VALUE に設定する。VALUE は空っぽでも構わない (`VARIABLE=')。変数の値を
14122 空に設定 (set) するのは、変数を破棄 (unset) するのとは別のことである。
14123 こうしたオペランドは、左から右へ評価されるので、二つのオペランドが同じ
14124 変数を対象にしている場合、前のものは無視される。
14125
14126    環境変数名は、空でもよいし、`=' と ASCII NUL 以外なら、どんな文字を
14127 含んでいても構わない。とは言え、変数名は、アンダースコア、数字、ASCII
14128 文字のみから構成し、数字以外の文字で始めるようにした方が、賢明である。
14129 それ以外の名前だと、シェルなどのアプリケーションがうまく動作しないからだ。
14130
14131    `=' という文字を含まない最初のオペランドが、起動するプログラムで
14132 あり、環境変数 `PATH' に従って、どこにあるかが検索される。残っている
14133 引数があれば、すべてそのプログラムに引数として渡される。起動するプロ
14134 グラムは、シェルの組み込みコマンドであってはならない (*note Special
14135 built-in utilities::)。
14136
14137    `PATH' に対する変更は、COMMAND のありかを検索する前に有効になる。
14138 そこで、`PATH' を短縮するときには、気をつけなければならない。`PATH' が
14139 空だったり、`/bin' のような重要なディレクトリを欠いていると、`PATH' を
14140 変更する前と同じ動作にならないからだ。
14141
14142    めったにないことだが、プログラムの名前に `=' という文字が含まれて
14143 いる場合、それを変数の指定と区別する唯一の方法は、COMMAND として仲介的
14144 なコマンドを使用し、その ARGS として問題のあるプログラム名を渡すこと
14145 である。たとえば、`./prog=' が現在の `PATH' 中に存在する実行ファイルだ
14146 としよう。
14147
14148      env prog= true
14149        # 環境変数 prog を空に設定して 'true' を実行する。
14150      env ./prog= true
14151        # 環境変数 ./prog を空に設定して 'true' を実行する。
14152      env -- prog= true
14153        # 環境変数 prog を空に設定して 'true' を実行する。
14154      env sh -c '\prog= true'
14155        # 'true' を引数にして 'prog=' を実行する。
14156      env sh -c 'exec "$@"' sh prog= true
14157        # これも 'prog=' を実行する。
14158
14159    環境変数の設定の後にコマンド名が指定されていない場合は、生成された
14160 環境が表示される。これは、COMMAND に `printenv' を指定するのと同じこと
14161 である。
14162
14163    以下に例をいくつか挙げる。`env' に渡される環境は、`LOGNAME=rms',
14164 `EDITOR=emacs', `PATH=.:/gnubin:/hacks' からなっているものとする。
14165
14166    * 現在の環境を出力する。
14167           $ env | LC_ALL=C sort
14168           EDITOR=emacs
14169           LOGNAME=rms
14170           PATH=.:/gnubin:/hacks
14171
14172    * 環境を削減して、`foo' を実行する。`foo' が見つからないといけない
14173      ので、`PATH' だけは元のまま残している。
14174           env - PATH="$PATH" foo
14175
14176    * `LOGNAME=rms', `EDITOR=emacs', `PATH=.:/gnubin:/hacks' からなる環境
14177      で `foo' を実行する。`foo' には、シェルの組み込みコマンドではなく、
14178      ファイルシステム中で見つかった実行ファイルが必ず使用される。
14179           env foo
14180
14181    * `LOGNAME=foo', `EDITOR=emacs', `PATH=.:/gnubin:/hacks',
14182      `DISPLAY=gnu:0' からなる環境で、`nemacs' を実行する。
14183           env DISPLAY=gnu:0 LOGNAME=foo nemacs
14184
14185    * プログラム `/energy/--' の実行を試みる (パスの検索でそれしか出て
14186      こないようにしている)。`--' というコマンドが存在する場合、環境
14187      は、`LOGNAME=rms' と `PATH=/energy' だけになり、引数には、`e=mc2',
14188      `bar', `baz' が使われる。
14189           env -u EDITOR PATH=/energy -- e=mc2 bar baz
14190
14191
14192    このプログラムでは以下のオプションが使用できる。参照: *note Common
14193 options::.  オプションはオペランドの前に置かなければならない。
14194
14195 `-0'
14196 `--null'
14197      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。この
14198      オプションを使用すると、`env' の出力するデータに、途中に改行を
14199      挟むものがあっても、他のプログラムがその出力を解析できるようになる。
14200
14201 `-u NAME'
14202 `--unset=NAME'
14203      変数 NAME が環境中にあれば、それを環境から削除する。
14204
14205 `-'
14206 `-i'
14207 `--ignore-environment'
14208      継承した環境を無視し、空っぽの環境から始める。
14209
14210
14211    終了ステータス:
14212
14213      0:   COMMAND が指定されなかったので、環境を出力した。
14214      125: `env' そのものの実行に失敗した。
14215      126: COMMAND は見つかったが、起動できなかった。
14216      127: COMMAND が見つからなかった。
14217      それ以外は、COMMAND の終了ステータス。
14218
14219 \1f
14220 File: coreutils-ja.info,  Node: nice invocation,  Next: nohup invocation,  Prev: env invocation,  Up: Modified command invocation
14221
14222 23.3 `nice': niceness を変更して、コマンドを実行する
14223 ===================================================================
14224
14225 "`nice' はプロセスの "niceness" を表示したり、niceness を変更して
14226 コマンドを実行したりする。"niceness" は、プロセスがシステム中でどの程度
14227 優先的にスケジュールされるかに影響を与える。(訳注: niceness を「スケ
14228 ジューリング優先度」と訳さない理由については、三つほど下のパラグラフを
14229 御覧いただきたい。)
14230
14231    書式:
14232
14233      nice [OPTION]... [COMMAND [ARG]...]
14234
14235    引数を指定しないと、`nice' は現在の niceness を表示する。引数に
14236 COMMAND を指定した場合は、niceness を調整して、その COMMAND を実行する。
14237 デフォルトでは、niceness が 10 増加する。
14238
14239    niceness の値は、最小が -20 で、最大が 19 である (値が小さければ、
14240 プロセスの優先度が高くなり、使えるリソースも多くなるが、その分、他の
14241 プロセスの動作が遅くなる。また、値が大きければ、プロセスの優先度が低く
14242 なり、自分自身の動作は遅くなるが、実行中の他のプロセスの速度に与える
14243 影響は小さくなる)。システムによっては、niceness の値の範囲がもっと広い
14244 ものもあるし、反対に、上下限の制限がもっときついものもある。サポート
14245 されている範囲を越えた niceness を指定すると、サポートされている値の
14246 最小、または最大を使用しようとしているものとみなされる。
14247
14248    niceness をスケジューリング優先度 (scheduling priority) と混同しては
14249 ならない。後者は、様々なスレッドをどういう序列で実行するかの予定を組む
14250 際に、その序列をアプリケーション側に決めさせるものである。優先度とは
14251 違って、niceness はスケジューラに対する単なるアドバイスにすぎず、スケ
14252 ジューラはそれを無視することができるのだ。また、用語について言うと、
14253 POSIX は `nice' の動作を "nice value" という用語で定義している。 この
14254 nice value は、ある niceness と 最小の niceness との間の負ではない
14255 差である。`nice' コマンドは POSIX に準拠しているものの、この文書や
14256 エラーメッセージでは、従来の習慣との親和性を考慮して、"niceness" という
14257 言葉を使っている。
14258
14259    COMMAND は、シェルの組み込みコマンドであってはならない (*note
14260 Special built-in utilities::)。
14261
14262    シェルの組み込み機能の `nice' やエイリアスのために、`nice' に何の
14263 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
14264 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
14265 避けるためには、`env' 経由で `nice' を起動すればよい (すなわち、 `env
14266 nice ...' のようにだ)。
14267
14268    注意: 現在動作中のプロセスの "niceness" を変更するには、`renice'
14269 コマンドを使う必要がある。
14270
14271    このプログラムでは、以下のオプションが使用できる。参照: *note Common
14272 options::.  オプションはオペランドの前に置かなければならない。
14273
14274 `-n ADJUSTMENT'
14275 `--adjustment=ADJUSTMENT'
14276      コマンドの niceness を 10 ではなく、ADJUSTMENT 増加する。ADJUSTMENT
14277      が負の数の場合、ユーザがしかるべき特権を持っていなければ、`nice' は
14278      警告を発する。とは言え、警告を出すだけで、ADJUSTMENT として 0 が
14279      指定されたかのように振る舞う。
14280
14281      互換性を考慮して、`nice' は `-ADJUSTMENT' というオプションの古い
14282      書式もサポートしている。だが、新しいスクリプトでは、`-n ADJUSTMENT'
14283      の方を使うべきである。
14284
14285
14286    終了ステータス:
14287
14288      0:   COMMAND が指定されなかったので、niceness を出力した。
14289      125: `nice' そのものの実行に失敗した。
14290      126: COMMAND が見つかったが、起動できなかった。
14291      127: COMMAND が見つからなかった。
14292      それ以外は、COMMAND の終了ステータス。
14293
14294    対話的ではないプログラムは、niceness を落として (訳注: すなわち、
14295 niceness の値を増やして) 実行すると、都合のよいことがある。
14296
14297      $ nice factor 4611686018427387903
14298
14299    `nice' は、現在の niceness を表示するので、`nice' を通して `nice'
14300 を起動すれば、それがどんな動作をするか、目の当たりに見ることができる。
14301
14302    デフォルトの動作は、niceness を `10' 増加することである。
14303
14304      $ nice
14305      0
14306      $ nice nice
14307      10
14308      $ nice -n 10 nice
14309      10
14310
14311    ADJUSTMENT は、現在の niceness からいくら増減するかということである。
14312 次の例では、最初の `nice' が、二番目の `nice' を niceness 10 で実行し、
14313 二番目の `nice' は、niceness をさらに 3 増やして、三番目の `nice' を
14314 実行している。
14315
14316      $ nice nice -n 3 nice
14317      13
14318
14319    サポートされている範囲より大きい niceness を指定するのは、サポート
14320 されている最大値を指定するのと同じことである。
14321
14322      $ nice -n 10000000000 nice
14323      19
14324
14325    特権ユーザだけが niceness の値を下げて、プロセスを実行できる。
14326
14327      $ nice -n -1 nice
14328      nice: cannot set niceness: Permission denied
14329      0
14330      $ sudo nice -n -1 nice
14331      -1
14332
14333 \1f
14334 File: coreutils-ja.info,  Node: nohup invocation,  Next: stdbuf invocation,  Prev: nice invocation,  Up: Modified command invocation
14335
14336 23.4 `nohup': ハングアップ・シグナルで終了しないコマンドを実行する
14337 ============================================================================================
14338
14339 `nohup' を使って、COMMAND を実行すると、指定されたコマンドがハング
14340 アップ・シグナルを無視するようになる。従って、そのコマンドは、ユーザが
14341 ログアウトした後でも、バックグラウンドで実行を継続することができる。
14342
14343    書式:
14344
14345      nohup COMMAND [ARG]...
14346
14347    標準入力が端末の場合、標準入力は `/dev/null' に付け換えられる。その
14348 結果、端末セッションが、`nohup' によって実行されているコマンドが端末を
14349 使用していると勘違いすることがなくなる。これは GNU の拡張である。 GNU
14350 以外のホストでも使うことを考えているプログラムでは、GNU の拡張を当てに
14351 せず、`nohup COMMAND [ARG]... </dev/null' を使った方がよい。
14352
14353    標準出力が端末の場合、コマンドの標準出力は、`nohup.out' というファ
14354 イルに追加されて行く。そのファイルに書き込めない場合は、`$HOME/nohup.out'
14355 に追記されることになる。そのファイルにも書き込めない場合は、コマンドの
14356 実行が行われない。`nohup' によって作成されるのが `nohup.out' であれ、
14357 `$HOME/nohup.out' であれ、それは、ファイルの所有者にのみ読み書き可能な
14358 ものになる。現在の umask の設定の影響は受けない。
14359
14360    標準エラーが端末の場合、コマンドの標準エラー出力は、基本的には
14361 標準出力 (リダイレクトされているかもしれない) と同じファイル・
14362 ディスクリプタにリダイレクトされる。ただし、標準出力がクローズ
14363 されている場合には、標準エラーの端末への出力は、リダイレクトされる
14364 ことなく、直接 `nohup.out' や `$HOME/nohup.out' というファイルに
14365 追加される。どちらのファイルが使用されるかは、上述のとおりである。
14366
14367    コマンドの出力を `nohup.out' 以外のファイルに書き込みたければ、
14368 リダイレクトすればよい。たとえば、`make' の出力を `make.log' に書き
14369 込みたかったら、次のようにする。
14370
14371      nohup make > make.log
14372
14373    `nohup' は、実行するコマンドを自動的にバックグラウンドに送ることを
14374 しない。そこで、ユーザは、コマンドラインの末尾に `&' を付けることで、
14375 明示的にそれを行わなければならない。また、`nohup' は、COMMAND の
14376 niceness を変更しない。niceness を変更したかったら、`nice' を使って、
14377 `nohup nice COMMAND' のように実行すればよい。
14378
14379    COMMAND は、シェルの組み込みコマンドであってはならない (*note
14380 Special built-in utilities::)。
14381
14382    指定できるオプションは、`--help' と `--version' だけである。 *Note
14383 Common options::.  オプションはオペランドの前に置かなければならない。
14384
14385    終了ステータス:
14386
14387      125: `POSIXLY_CORRECT' が設定されていない場合に、`nohup' そのものの
14388            実行に失敗した。
14389      126: COMMAND は見つかったが、起動できなかった。
14390      127: COMMAND が見つからなかった。
14391      それ以外の場合は、COMMAND の終了ステータス。
14392
14393    `POSIXLY_CORRECT' が設定されている場合は、`nohup' そのものが実行に
14394 失敗したときの終了ステータスは、125 ではなく 127 になる。
14395
14396 \1f
14397 File: coreutils-ja.info,  Node: stdbuf invocation,  Next: timeout invocation,  Prev: nohup invocation,  Up: Modified command invocation
14398
14399 23.5 `stdbuf': 入出力ストリームのバッファリングを変更して、コマンドを実行する
14400 ============================================================================================================
14401
14402 `stdbuf' を使用すると、プログラムと結びついている 3 種類の標準入出力
14403 ストリームに対して、そのバッファリング動作を変更することができる。
14404
14405    書式:
14406
14407      stdbuf OPTION... COMMAND
14408
14409    COMMAND は、次の条件を満たすプログラムの名前で始まっていなければ
14410 ならない。
14411   1. 入出力に ISO C `FILE' ストリームを使用している (注意: プログラム
14412      `dd' や `cat' は、これを使用していない)。
14413
14414   2. 自分で標準ストリームのバッファリングを調整していない (注意: プログ
14415      ラム `tee' は、この部類に入らない)。
14416
14417    後に続く引数があれば、COMMAND に引数として渡される。
14418
14419    このプログラムでは以下のオプションが使用できる。参照: *note Common
14420 options::.
14421
14422 `-i MODE'
14423 `--input=MODE'
14424      標準入力ストリームのバッファリングを調整する。
14425
14426 `-o MODE'
14427 `--output=MODE'
14428      標準出力ストリームのバッファリングを調整する。
14429
14430 `-e MODE'
14431 `--error=MODE'
14432      標準エラーストリームのバッファリングを調整する。
14433
14434
14435    MODE には、以下のものを指定できる。
14436
14437 `L'
14438      ストリームを行単位のバッファ・モードにする。このモードでは、
14439      改行が出力されることになるか、あるいは、端末デバイスに結びついて
14440      いるストリームから入力が読み込まれるまで、データを溜めておく。
14441      このオプションは、標準入力に対しては無効である。
14442
14443 `0'
14444      選択したストリームのバッファリングを無効にする。このモードでは、
14445      データは即座に出力される。また、要求された量のデータしか入力から
14446      読み込まない。入力と出力で動作が違うことに気をつけていただきたい。
14447      なお、入力のバッファリングを無効にしても、ストリーム入力関数の
14448      応答性やブロッキング動作に影響することはない。たとえば、`fread'
14449      は、要求した量より少ないデータを、下層で動いている `read' が返して
14450      きても、`EOF' が来るか、エラーが起きるまで、やはりブロッキングを
14451      行うのである。
14452
14453 `SIZE'
14454      バッファ一杯モード (fully buffered mode) で使用するバッファのサイズ
14455      を指定する。 SIZE は、整数であり、
14456      以下に挙げるような何倍かを示す接尾辞を 後ろに付けることもできる。
14457      接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと
14458      見なされる)。
14459           `KB' =>           1000 (KiloBytes)
14460           `K'  =>           1024 (KibiBytes)
14461           `MB' =>      1000*1000 (MegaBytes)
14462           `M'  =>      1024*1024 (MebiBytes)
14463           `GB' => 1000*1000*1000 (GigaBytes)
14464           `G'  => 1024*1024*1024 (GibiBytes)
14465      `T', `P', `E', `Z', `Y' についても同様。
14466
14467
14468    終了ステータス:
14469
14470      125: `stdbuf' そのものの実行に失敗した。
14471      126: COMMAND は見つかったが、起動できなかった。
14472      127: COMMAND が見つからなかった。
14473      それ以外は、COMMAND の終了ステータス。
14474
14475 \1f
14476 File: coreutils-ja.info,  Node: timeout invocation,  Prev: stdbuf invocation,  Up: Modified command invocation
14477
14478 23.6 `timeout': タイムリミット付きでコマンドを実行する
14479 =========================================================================
14480
14481 `timeout' は渡されたコマンドを実行し、指定された時間が経過しても
14482 まだ実行が続いていたら、そのコマンドを終了させる。
14483
14484    書式:
14485
14486      timeout [OPTION] DURATION COMMAND [ARG]...
14487
14488    COMMAND は、シェルの組み込みコマンドであってはならない (*note
14489 Special built-in utilities::)。
14490
14491    このプログラムでは以下のオプションが使用できる。参照: *note Common
14492 options::.  オプションはオペランドの前に置かなければならない。
14493
14494 `--preserve-status'
14495      タイムアウトしたときに、タイムアウトであることを示す `timeout'
14496      コマンドの終了ステータスではなく、`timeout' が管理している COMMAND
14497      の終了ステータスを返す。このオプションが役に立つのは、 管理される
14498      COMMAND が無期限の続行時間をサポートしている場合である。
14499
14500 `--foreground'
14501      独立したバックグラウンドのプログラム・グループを作成しない。
14502      その結果、`timeout' に管理される COMMAND が、フォアグラウンドの
14503      TTY を通常どおり使用できるようになる。コマンドが対話的シェルから
14504      直接実行されない場合でも (訳注: たとえば、シェルスクリプト中で
14505      実行される場合でも)、そのコマンドのタイムアウトを実現するには、
14506      この動作が必要になることがあり、次の二つの場合がそれに当たる。
14507        1. COMMAND が対話的であり、たとえば端末からの読み込みが必要な
14508           場合。
14509
14510        2. 端末から直接 COMMAND にシグナルを送ることができるようにしたい
14511           場合。(たとえば、Ctrl-C を送るとか)。
14512
14513      この動作モードでは、COMMAND のいかなる子プロセスも、時間切れで
14514      終了することがないのに注意すること。
14515
14516 `-k DURATION'
14517 `--kill-after=DURATION'
14518      ここで指定した DURATION の経過後に、改めて `KILL' シグナルを送り
14519      付けて、監視対象の COMMAND を確実に終了させる。このオプションを
14520      付けないと、選択したシグナルに COMMAND を終了させる力がなかった
14521      場合に、`timeout' は COMMAND を殺すことができない。
14522
14523 `-s SIGNAL'
14524 `--signal=SIGNAL'
14525      制限時間が来たとき、デフォルトの `TERM' シグナルではなく、指定した
14526      SIGNAL を COMMAND に送る。SIGNAL は `HUP' のような名前でもよく、
14527      番号でもよい。*Note Signal specifications::.
14528
14529    DURATION は浮動小数点数であり、後ろに単位を付けることもできる。
14530      `s' 何秒 (デフォルト)
14531      `m' 何分
14532      `h' 何時間
14533      `d' 何日
14534    DURATION が 0 だと、対象となるコマンドが時間切れなしになる。実際の
14535 制限時間は、システムの制約を受けることに注意していただきたい。秒以下の
14536 制限時間を指定するときは、とりわけそれを考慮に入れるべきである。
14537
14538    終了ステータス:
14539
14540      124: COMMAND がタイムアウトした。
14541      125: `timeout' そのものの実行に失敗した。
14542      126: COMMAND は見つかったが、起動できなかった。
14543      127: COMMAND が見つからなかった。
14544      137: COMMAND に the KILL(9) シグナルを送った (128+9)
14545      それ以外は、COMMAND の終了ステータス。
14546
14547 \1f
14548 File: coreutils-ja.info,  Node: Process control,  Next: Delaying,  Prev: Modified command invocation,  Up: Top
14549
14550 24 プロセス制御
14551 *********************
14552
14553 * Menu:
14554
14555 * kill invocation::          プロセスにシグナルを送る。
14556
14557 \1f
14558 File: coreutils-ja.info,  Node: kill invocation,  Up: Process control
14559
14560 24.1 `kill': プロセスにシグナルを送る
14561 =================================================
14562
14563 `kill' コマンドは、プロセスにシグナルを送る。シグナルを送られた
14564 プロセスは、終了するか、あるいは、シグナルを受け取った瞬間に他の
14565 何らかの形で反応する。また、`kill' は、シグナルに関する情報を一覧
14566 表示する。
14567
14568    書式:
14569
14570      kill [-s SIGNAL | --signal SIGNAL | -SIGNAL] PID...
14571      kill [-l | --list | -t | --table] [SIGNAL]...
14572
14573    シェルの組み込み機能の `kill' やエイリアスのために、`kill' に何の
14574 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
14575 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
14576 避けるためには、`env' 経由で `kill' を起動すればよい (すなわち、 `env
14577 kill ...' のようにだ)。
14578
14579    `kill' コマンドの最初の書式では、すべての PID 引数に対してシグナルが
14580 送られる。シグナルが指定されていない場合に送られるデフォルトのシグナル
14581 は、`TERM' である。 `0' という特別なシグナル番号は、有効なシグナルを
14582 表していないが、引数 PID が指しているプロセスに対してシグナルを送る
14583 ことが可能かどうかを、調べるために使うことができる。
14584
14585    PID が正の数なら、シグナルはプロセス ID が PID のプロセスに送られる。
14586 PID が 0 なら、シグナルはカレントプロセスのプロセスグループに属する
14587 すべてのプロセスに送られる。PID が -1 の場合、シグナルが送られるのは、
14588 ユーザがシグナルを送る権限を持っているすべてのプロセスである。PID が -1
14589 より小さい場合は、PID の絶対値に等しいプロセスグループに属するすべての
14590 プロセスにシグナルが送られる。
14591
14592    PID が正の数ではない場合、システムプロセスに属するプロセス (システム
14593 によって様々である) は、シグナルが送られるプロセスのリストから除外
14594 される。
14595
14596    最初の PID 引数として負の PID を使用したい場合は、その前に`--' オプ
14597 ションを置くべきである。とは言え、`kill -SIGNAL -PID' という書式を使う
14598 場合は、`--' は必要がない。これは、POSIX に対する一般的な拡張である。
14599 そこで、次に挙げるコマンドは等価になる。
14600
14601      kill -15 -1
14602      kill -TERM -1
14603      kill -s TERM -- -1
14604      kill -- -1
14605
14606    最初の書式の `kill' コマンドは、すべての PID 引数が、シグナルが
14607 送られたプロセスをそれぞれ少なくとも一つは指している場合に、成功の
14608 ステータスで終了する。
14609
14610    `kill' コマンドの二番目の書式では、シグナルに関する情報が表示される。
14611 `-l' または `--list'、あるいは、`-t' または `--table' オプションの
14612 指定は必須である。引数 SIGNAL を一つも指定しないと、サポートされている
14613 すべてのシグナルがリストされる。`-l' や `--list' の出力は、シグナル名の
14614 リストであり、1 行に一つづつ表示される。ただし、引数 SIGNAL がすでに
14615 シグナル名である場合に表示されるのは、名前ではなく、シグナル番号だ。
14616 `-t' や `--table' の出力は、シグナル番号、シグナル名、その説明からなる
14617 表である。この書式の `kill' コマンドは、引数として指定されたすべての
14618 SIGNAL が有効なものであり、出力エラーがなかったとき、成功のステータスで
14619 終了する。
14620
14621    `kill' コマンドでは、`--help' や `--version' オプションも使用できる。
14622 *Note Common options::.
14623
14624    SIGNAL の指定には、`HUP' のようなシグナル名や、`1'のようなシグナル
14625 番号、それに、シグナルによって終了させられるときのプロセスの終了ステー
14626 タスを使うことができる (訳注: 最後のものは、GNU coreutils の `kill'
14627 コマンドでは使用できるが、他の系統の `kill' では使えないかもしれない)。
14628 シグナル名は、標準的な形式でも、頭に `SIG' を付けた形式でも構わない。
14629 大文字小文字はどちらを使ってもよいが、`-SIGNAL' という形式のオプション
14630 の場合は例外で、大文字を使わなければならない。小文字を使うと、他の
14631 オプションとまぎらわしいからである。サポートしているシグナル名と
14632 シグナル番号については、「2.5 シグナルの指定」を参照していただきたい。
14633 *Note Signal specifications::.
14634
14635 \1f
14636 File: coreutils-ja.info,  Node: Delaying,  Next: Numeric operations,  Prev: Process control,  Up: Top
14637
14638 25 一時停止
14639 ***************
14640
14641 * Menu:
14642
14643 * sleep invocation::         指定された時間、停止する。
14644
14645 \1f
14646 File: coreutils-ja.info,  Node: sleep invocation,  Up: Delaying
14647
14648 25.1 `sleep': 指定された時間、停止する
14649 ==================================================
14650
14651 `sleep' は、コマンドラインで引数として指定された値を合計した時間だけ
14652 停止する。
14653
14654    書式:
14655
14656      sleep NUMBER[smhd]...
14657
14658    各引数は数値であり、後ろに単位を付けてもよい。デフォルトの単位は
14659 秒である。単位には、以下のものが指定できる。
14660
14661 `s'
14662      秒
14663
14664 `m'
14665      分
14666
14667 `h'
14668      時
14669
14670 `d'
14671      日
14672
14673    `sleep' の従来の実装では、NUMBER は整数でなければならず、引数は
14674 接尾辞なしのものが 1 個しか認められていなかった。それに対して GNU の
14675 `sleep' では、任意の浮動小数点数を複数個指定できる。 *Note Floating
14676 point::.
14677
14678    オプションは、`--help' と `--version' だけである。*Note Common
14679 options::.
14680
14681    シェルの組み込み機能の `sleep' やエイリアスのために、`sleep' に何の
14682 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
14683 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
14684 避けるためには、`env' 経由で `sleep' を起動すればよい (すなわち、 `env
14685 sleep ...' のようにだ)。
14686
14687    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14688
14689 \1f
14690 File: coreutils-ja.info,  Node: Numeric operations,  Next: File permissions,  Prev: Delaying,  Up: Top
14691
14692 26 数値の操作
14693 ******************
14694
14695 以下のプログラムは、数に関係した作業をする。
14696
14697 * Menu:
14698
14699 * factor invocation::        素因数を表示する。
14700 * seq invocation::           連続する数を表示する。
14701
14702 \1f
14703 File: coreutils-ja.info,  Node: factor invocation,  Next: seq invocation,  Up: Numeric operations
14704
14705 26.1 `factor': 素因数を表示する
14706 =======================================
14707
14708 `factor' は、素因数を表示する。
14709
14710    書式:
14711
14712      factor [NUMBER]...
14713      factor OPTION
14714
14715    NUMBER がコマンドラインで指定されていない場合、`factor' は標準入力
14716 から数値を読み込む。このとき、改行、タブ、空白で区切って複数の数値を
14717 入力することができる。
14718
14719    `factor' コマンドで使えるオプションは、いくつもない。
14720
14721 `--help'
14722      簡単なヘルプメッセージを標準出力に表示し、それ以上の処理をせずに
14723      終了する。
14724
14725 `--version'
14726      プログラムのバージョンを標準出力に表示し、それ以上の処理をせずに
14727      終了する。
14728
14729    メルセンヌ素数の 8 番目と 9 番目の積を素因数に分解するには、2.2 GHz
14730 Athlon のシステムで、30 ミリセコンドの CPU 時間を要する。
14731
14732      M8=$(echo 2^31-1|bc)
14733      M9=$(echo 2^61-1|bc)
14734      n=$(echo "$M8 * $M9" | bc)
14735      /usr/bin/time -f %U factor $n
14736      4951760154835678088235319297: 2147483647 2305843009213693951
14737      0.03
14738
14739    同様に、8 番目のフェルマー数、2^256+1 では、同じマシンで約 20 秒
14740 かかる。
14741
14742    大きな数の素因数分解は、そもそも大変な作業である。`factor' が使用
14743 している Pollard Rho アルゴリズムは、比較的小さな因数を持つ数値に
14744 対してとりわけ効率がよい。もし、小さな因数を持たない大きな数値 (たと
14745 えば、二つの大きな素数の積からなる数値) の素因数分解をなさりたいのなら、
14746 他の方法の方がずっとすぐれている。
14747
14748    `factor' が GNU MP を使用せずにビルドされている場合は、単精度の
14749 算術しか利用できない。従って、大きな数値 (一般には 2^64 以上)
14750 には対応していない。単精度用のコードが使用しているアルゴリズムは、
14751 比較的小さな数値を素因数に分解するためのものなのである。
14752
14753    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14754
14755 \1f
14756 File: coreutils-ja.info,  Node: seq invocation,  Prev: factor invocation,  Up: Numeric operations
14757
14758 26.2 `seq': 数列を表示する
14759 =================================
14760
14761 `seq' は、数列を標準出力に表示する。
14762
14763    書式:
14764
14765      seq [OPTION]... LAST
14766      seq [OPTION]... FIRST LAST
14767      seq [OPTION]... FIRST INCREMENT LAST
14768
14769    `seq' は、FIRST から LAST までの数を INCREMENT おきに表示する。
14770 デフォルトでは、それぞれの数は 1 行に 1 個づつ表示される。INCREMENT が
14771 指定されていない場合は、FIRST が LAST より大きい場合でも、デフォルトの
14772 `1' が INCREMENT として使用される。FIRST のデフォルトもまた `1' である。
14773 従って、`seq 1' は `1' を表示するが、`seq 0' や `seq 10 5' は、何も出力
14774 しない。数列が終了するのは、現在の数値に INCREMENT を加えると LAST より
14775 大きくなる時点である。だから、`seq 1 10 10' は、`1' しか表示しない。
14776 なお、数値には浮動小数点数を指定してもよい。*Note Floating point::.
14777
14778    このプログラムでは以下のオプションが使用できる。参照: *note Common
14779 options::.  オプションはオペランドの前に置かなければならない。
14780
14781 `-f FORMAT'
14782 `--format=FORMAT'
14783      すべての数を FORMAT を使用して表示する。FORMAT は、 `printf' 形式の
14784      浮動小数点数の変換指定をただ一つ含むものでなければならない。すなわち、
14785      `%a', `%e', `%f', `%g', `%A', `%E', `%F', `%G' のいづれかである。
14786      `%' の後ろには 0 個以上のフラグを、`-+#0 '' のうちから選んで置く
14787      ことができる。また、それに続けて、1 個以上の数字からなるフィールド
14788      幅を指定することもできるし、さらにその後ろに、`.' とそれに続く 0 個
14789      以上の数字からなる精度を指定することもできる。FORMAT には、任意の
14790      数の `%%' 変換指定が含まれていてもよい。変換指定はすべて、`printf'
14791      の場合と同じ意味を持っている。
14792
14793      デフォルトの表示形式は、FIRST, INCREMENT, LAST がどういう表記を使用
14794      しているかよって決まる。そのすべてが固定小数点の 10進数表記を使用
14795      しているならば、デフォルトの表示形式は `%.Pf' になる。ここで P は、
14796      出力する数値を過不足なく表現できる最小の精度である。それ以外の場合、
14797      デフォルトの表示形式は `%g' になる。
14798
14799 `-s STRING'
14800 `--separator=STRING'
14801      数の区切りに STRING を使う。デフォルトは改行である。出力の最後
14802      には、必ず改行が付く。
14803
14804 `-w'
14805 `--equal-width'
14806      すべての数を同じ桁数で表示する。先頭の空きは 0 で埋める。FIRST,
14807      INCREMENT, LAST は、すべて固定小数点の 10 進数表記でなければなら
14808      ない (他のやり方で先頭を埋めたければ、`--format' を使うこと)。
14809
14810
14811    `-f' オプションを使えば、出力をもっときめ細かく制御することができる。
14812
14813      $ seq -f '(%9.2E)' -9e5 1.1e6 1.3e6
14814      (-9.00E+05)
14815      ( 2.00E+05)
14816      ( 1.30E+06)
14817
14818    出力を 16 進数の整数にしたかったら、`printf' を使って変換すればよい。
14819
14820      $ printf '%x\n' $(seq 1048575 1024 1050623)
14821      fffff
14822      1003ff
14823      1007ff
14824
14825    数のリストが非常に長くなる場合は、`xargs' を使用すると、引数リストの
14826 長さに対するシステムの制限を回避することができる。
14827
14828      $ seq 1000000 | xargs printf '%x\n' | tail -n 3
14829      f423e
14830      f423f
14831      f4240
14832
14833    8 進数の出力を生成するには、printf に対して `%x' の代わりに、`%o'
14834 フォーマットを使用すればよい。
14835
14836    ほとんどのシステムで `seq' は、少なくとも 2^53 までの数値に対して
14837 整数の出力を生成することができる。それより大きい整数に対しては概算に
14838 なる。細かい点は、ご使用のシステムの浮動小数点の実装によって異なって
14839 いる。*Note Floating point::.  `seq' が 2^64 までの整数に対しては、
14840 きちんと動作するが、それより大きな整数に対しては、数値が不正確になる
14841 ことがあるというのは、よくある話である。
14842
14843      $ seq 50000000000000000000 2 50000000000000000004
14844      50000000000000000000
14845      50000000000000000000
14846      50000000000000000004
14847
14848    とは言え、負ではない整数を対象とし、インクリメントが 1 で、フォー
14849 マット指定オプションはないという条件の元では、`seq' は任意の大きな
14850 数値を表示できることも心に留めておいていただきたい。
14851
14852    `seq' でとんでもなく大きな桁の値を扱うときは、気をつけた方がよい。
14853 さもないと、`seq' は内部で浮動小数点を使用しているので、結果を見て
14854 びっくりするかもしれない。たとえば、x86 のプラットフォームでは、
14855 内部表現が 64 ビットの仮数部を使用しているが、そこで次のコマンドを
14856 実行すると、
14857
14858      seq 1 0.0000000000000000001 1.0000000000000000009
14859
14860    `seq' は 1.0000000000000000007 を二度出力し、1.0000000000000000008
14861 をスキップする (訳注: 訳者の amd64 環境では、1.0000000000000000008 では
14862 なく、1.0000000000000000006 をスキップする)。
14863
14864    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14865
14866 \1f
14867 File: coreutils-ja.info,  Node: File permissions,  Next: Date input formats,  Prev: Numeric operations,  Up: Top
14868
14869 27 ファイルの許可属性
14870 ******************************
14871
14872 各ファイルには、一組のファイル・モードビット ("file mode bits") という
14873 ものがあって、ユーザがそのファイルに対してどんなアクセスができるかを
14874 制御している。モードビットは、シンボルによっても、8 進数によっても
14875 表すことができる。
14876
14877 * Menu:
14878
14879 * Mode Structure::           ファイル・モードビットの構成。
14880 * Symbolic Modes::           ファイル・モードビットの覚えやすい表現。
14881 * Numeric Modes::            ファイル・モードビットの 8 進数による表現。
14882 * Operator Numeric Modes::   8 進数によるモードの追加、削除、絶対指定。
14883 * Directory Setuid and Setgid::  ディレクトリの set-user-ID と set-group-ID。
14884
14885 \1f
14886 File: coreutils-ja.info,  Node: Mode Structure,  Next: Symbolic Modes,  Up: File permissions
14887
14888 27.1 ファイル・モードビットの構成
14889 ===============================================
14890
14891 ファイル・モードビットには、二つの構成部分がある。ファイルに対する
14892 通常のアクセスを制御するファイル許可属性ビット ("file permission bits")
14893 と、若干のファイルのみに働く特殊モードビット ("special mode bits")
14894 である。
14895
14896    ユーザがファイルに対して持つ許可 (訳注: アクセス権とも言う) には、 3
14897 種類ある。
14898
14899   1. ファイルを読み込む許可。ディレクトリに対しては、ディレクトリの
14900      中身をリストする許可になる。
14901
14902   2. ファイルに書き出す (ファイルを変更する) 許可。ディレクトリに
14903      対しては、そのディレクトリ中でファイルを作成したり、削除したり
14904      する許可になる。
14905
14906   3. ファイルを実行する (プログラムとしてそれを動かす) 許可。
14907      ディレクトリに対しては、ディレクトリ中のファイルにアクセスする
14908      許可になる。
14909
14910    ユーザにも 3 種類あり、ファイルに対する上記の操作のいづれについても、
14911 それぞれ違った許可を持つことができる。
14912
14913   1. ファイルの所有者。
14914
14915   2. ファイルの所有グループに属するファイルの所有者以外のユーザ。
14916
14917   3. それ以外の全員。
14918
14919    ファイルには、作成されるときに所有者とグループが割り当てられる。
14920 たいていの場合、所有者はファイルを作成したユーザであり、グループは
14921 ファイルが存在するディレクトリのグループだが、オペレーティング
14922 システムやファイルが作成されるファイルシステム、ファイルの作成方法
14923 などによって違うこともある。ファイルの所有者やグループは、`chown' や
14924 `chgrp' コマンドを使って、変更することができる。
14925
14926    上に挙げた 3 種類の許可属性 3 組のほかに、ファイルのモードビット
14927 には三つの特殊モードビットが存在するが、そうしたものは、実行ファイル
14928 (すなわち、プログラム) と -- ほとんどのシステムでは -- ディレクトリ
14929 にしか効果を持たない。
14930
14931   1. ファイルの実行時に、そのプロセスの実効ユーザ ID をファイルの
14932      所有者のものにする ("set-user-ID bit" とか "setuid bit" と
14933      呼ばれる)。若干のシステムでは、ディレクトリに set-user-ID ビット
14934      を付けると、ファイルの作成者が誰であれ、そのディレクトリ中で
14935      作成されるファイルの所有者が、ディレクトリの所有者と同じになる。
14936      また、新しく作られるサブディレクトリに set-user-ID ビットが付く。
14937
14938   2. ファイルの実行時に、そのプロセスの実効グループ ID をファイルの
14939      グループのものにする ("set-group-ID bit" とか "setgid bit" と
14940      呼ばれる)。ほとんどのシステムでは、ディレクトリに set-group-ID
14941      ビットを付けると、ファイルの作成者がどんなグループに属して
14942      いようとも、そのディレクトリ中で作成されるファイルのグループが、
14943      ディレクトリのグループと同じになる。また、新しく作成されるサブ
14944      ディレクトリに set-group-ID ビットが付く。
14945
14946   3. 特権を持たないユーザ (訳注: 要するに、root 以外の一般ユーザ) に
14947      対して、自分が所有するファイルやディレクトリを除き、ディレクトリ
14948      中のファイルの削除や、名前の変更を禁じる。これは、ディレクトリの
14949      削除制限フラグ ("restricted deletion flag") と呼ばれ、`/tmp' の
14950      ような、誰でも書き込めるディレクトリでよく見かけられる。
14951
14952      古いシステムの中には、通常ファイルにこのビットが付いていると、
14953      プログラムのテキスト・イメージをスワップ・デバイスにセーブする
14954      ものがある。そうすることで、実行時にロードが速くなるわけだ。
14955      こちらは、スティッキー・ビット ("sticky bit") と呼ばれる。
14956
14957    上記のファイル・モードビットのほかに、ファイルシステムに固有の
14958 ファイル属性が存在することがある。たとえば、アクセス・コントロール・
14959 リスト (ACL) がそうだし、ファイルが圧縮されているか否か、ファイルが
14960 変更可能か否か (変更不可属性)、ファイルがダンプ可能か否か、といった
14961 属性が存在することもある。そうした属性は、通常、ファイルシステム固有の
14962 プログラムを使って設定される。例を挙げよう。
14963
14964 ext2
14965      GNU 及び GNU/Linux では、ext2 ファイルシステムに固有なファイル
14966      属性は、`chattr' コマンドを使って設定される。
14967
14968 FFS
14969      FreeBSD では、FFS ファイルシステムに固有なファイルフラグは、
14970      `chflags' コマンドを使って設定される。
14971
14972    ファイルのモードビットがそのファイルに対するある操作を許可していたと
14973 しても、それでもその操作に失敗することがある。その理由としては、次の
14974 ようなことが考えられる。
14975
14976    * ファイルシステムに固有な属性やフラグが、その操作を許可していない。
14977
14978    * ファイルシステムが読み込み専用でマウントされている。
14979
14980    たとえば、ファイルに変更不可属性が設定されていると、`chmod a+w FILE'
14981 を直前に実行したとしても、ファイルを変更することはできない。
14982
14983 \1f
14984 File: coreutils-ja.info,  Node: Symbolic Modes,  Next: Numeric Modes,  Prev: Mode Structure,  Up: File permissions
14985
14986 27.2 シンボリックモード
14987 ================================
14988
14989 シンボリックモード ("Symbolic modes") では、ファイルのモードビットの
14990 変更を、1 文字からなるシンボルに対する操作として表現している。
14991 シンボリックモードを使えば、ファイルのモードビットのすべてを変更する
14992 こともできるし、その一部を選択して変更することもできる。もしそうした
14993 ければ、変更前のモードビットの値に基づいて変更することも可能だ。現在の
14994 `umask' に基づいて変更することも、多分できるはずである (*note Umask and
14995 Protection::)。
14996
14997    シンボリックモードの書式は、次のとおりである。
14998
14999      [ugoa...][+-=]PERMS...[,...]
15000
15001 ここで PERMS は `rwxXst' の内の 0 個以上の文字、または `ugo' の内の 1
15002 個の文字である。
15003
15004    以下のセクションでは、シンボリックモードについて、演算子 (operator)
15005 を始め、様々なことを詳しく説明する。
15006
15007 * Menu:
15008
15009 * Setting Permissions::         許可属性の基本操作。
15010 * Copying Permissions::         存在する許可属性をコピーする。
15011 * Changing Special Mode Bits::  特殊モードビット。
15012 * Conditional Executability::   条件付きで実行属性の変更をする。
15013 * Multiple Changes::            複数の変更をする。
15014 * Umask and Protection::        umask の働き。
15015
15016 \1f
15017 File: coreutils-ja.info,  Node: Setting Permissions,  Next: Copying Permissions,  Up: Symbolic Modes
15018
15019 27.2.1 許可属性の設定
15020 ----------------------------
15021
15022 ファイルの許可属性に対するシンボルによる操作 (operation) の基本は、
15023 あるタイプのユーザに対して、ファイルの、読み、書き、実行または
15024 検索を行うための許可属性を、追加したり、削除したり、設定したり
15025 することである。そうした操作には、以下の書式を使用する。
15026
15027      USERS OPERATION PERMISSIONS
15028
15029 上の書式では、三つの部分を空白で区切って示しているが、見やすくする
15030 ためにすぎない。シンボリックモードの指定には空白があってはならない。
15031
15032    USERS の部分は、どのタイプのユーザの、ファイルに対するアクセス権を
15033 変更するかを示している。この部分には、1 個以上の下記の文字を指定する
15034 (あるいは、何も指定しないでもよい。その場合どうなるかは、「Umask と
15035 保険」セクションで説明している。 *note Umask and Protection::)。文字を
15036 2 個以上指定した場合の順番に特別な意味はない。
15037
15038 `u'
15039      ファイルの所有者。
15040
15041 `g'
15042      ファイルの所有グループに属するファイルの所有者以外のユーザ。
15043
15044 `o'
15045      `u' や `g' 以外のすべてのユーザ。
15046
15047 `a'
15048      すべてのユーザ。`ugo' と同じ。
15049
15050    OPERATION の部分は、対象となるユーザのファイルに対するアクセス権を
15051 どんなふうに変更するかを指示しており、以下の記号の一つを使用する。
15052
15053 `+'
15054      USERS がそのファイルに対して、すでにどんな許可を持っているかに
15055      かかわりなく、それに PERMISSIONS を追加する。
15056
15057 `-'
15058      USERS がそのファイルに対して、すでにどんな許可を持っているかに
15059      かかわりなく、そこから PERMISSIONS を削除する。
15060
15061 `='
15062      PERMISSIONS を、そのファイルに対して USERS が持つ許可のすべてに
15063      する。
15064
15065    PERMISSIONS の部分は、ファイルに対するどんなアクセス権を変更するか
15066 を指示しており、通常は 0 個以上の下記の文字を指定する。USERS の部分と
15067 同様、文字を 2 個以上指定した場合の順番に特別な意味はない。PERMISSIONS
15068 の部分に何も指定しないことに意味があるのは、操作に `=' 演算子を使用する
15069 場合だけである。その場合、指定されたユーザは、そのファイルに対して
15070 いかなるアクセス権も持たないことになる。
15071
15072 `r'
15073      USERS の、そのファイルを読む権限。
15074
15075 `w'
15076      USERS の、そのファイルに書き込む権限。
15077
15078 `x'
15079      USERS の、そのファイルを実行する権限。ディレクトリの場合は、
15080      ディレクトリを検索する権限。
15081
15082    たとえば、ある通常ファイルについて、すべてのユーザに読み書きを許可
15083 するが、その実行は許可しないならば、次のように指定する。
15084
15085      a=rw
15086
15087    そのファイルの所有者以外のすべてのユーザから書き込み権限を取り上げる
15088 には、次のようにする。
15089
15090      go-w
15091
15092 上記の指定は、ファイルの所有者がファイルに対して持っているアクセス権には
15093 影響を及ぼさない。また、所有者以外のユーザがそのファイルを読んだり、実行
15094 したりできるかどうかにも、影響を及ぼさない。
15095
15096    ファイルの所有者以外のすべてのユーザに対して、そのファイルに何をする
15097 権限も一切与えないためには、以下のモードを使用すればよい。それでも、
15098 所有者以外のユーザは、ファイルの存在するディレクトリに対する書き込み
15099 権限を持っていれば、そのファイルを削除することができるだろうけれど。
15100
15101      go=
15102
15103 同じことを指定する別のやり方もある。
15104
15105      og-rwx
15106
15107 \1f
15108 File: coreutils-ja.info,  Node: Copying Permissions,  Next: Changing Special Mode Bits,  Prev: Setting Permissions,  Up: Symbolic Modes
15109
15110 27.2.2 存在する許可属性のコピー
15111 -------------------------------------------
15112
15113 ファイルの許可属性を、それが既に持っている許可属性を元にして指定する
15114 こともできる。そうするには、演算子の後ろに `r', `w', `x' という文字を
15115 続ける代わりに、`u', `g', `o' という文字を使用する。一例を挙げよう。
15116
15117      o+g
15118
15119 上記のモード指定は、ファイルのグループに属するユーザのアクセス権を、
15120 その他のユーザがそのファイルに対して持っているアクセス権に追加する。
15121 従って、仮にファイルの最初のモードが 664 (`rw-rw-r--') ならば、上記の
15122 モード指定は、それを 666 (`rw-rw-rw-') に変更することになる。ファイル
15123 の最初のモードが 741 (`rwxr----x') だったら、745 (`rwxr--r-x') になる
15124 だろう。`-' と `=' の演算子の働きも、同様である。
15125
15126 \1f
15127 File: coreutils-ja.info,  Node: Changing Special Mode Bits,  Next: Conditional Executability,  Prev: Copying Permissions,  Up: Symbolic Modes
15128
15129 27.2.3 特殊モードビットの変更
15130 ----------------------------------------
15131
15132 読み込み、書き出し、実行/検索に関するファイルの許可属性を変更できるだけ
15133 ではない。特殊モードビットも変更することができる。特殊モードビットに
15134 ついては、「ファイルのモードビットの構成」の節で簡単に説明している。
15135 *Note Mode Structure::.
15136
15137    ファイルの実行時にユーザ ID をセットするように、ファイルのモード
15138 ビットを変更するには、シンボリックモードの USERS の部分に `u' を使用し、
15139 PERMISSIONS の部分に`s' を使用する。
15140
15141    ファイルの実行時にグループ ID をセットするように、ファイルのモード
15142 ビットを変更するには、シンボリックモードの USERS の部分に `g' を使用し、
15143 PERMISSIONS の部分に `s' を使用する。
15144
15145    ファイルの実行時にユーザ ID とグループ ID の両方をセットするように
15146 するには、シンボリックモードの USERS の部分に何も指定せず (あるいは、
15147 `a' を使用し)、 PERMISSIONS の部分に `s' を使用する。
15148
15149    削除制限フラグやスティッキー・ビットが有効になるように、ファイルの
15150 モードビットを変更するには、シンボリックモードの USERS の部分に何も
15151 指定せず (あるいは、`a' を使用し)、PERMISSIONS の部分に `t' を使用する。
15152
15153    たとえば、あるプログラムに set-user-ID モードビットを設定するには、
15154 次のモードを指定すればよい。
15155
15156      u+s
15157
15158    そのプログラムから set-user-ID と set-group-ID の両方のモードビットを
15159 削除するには、次のモードを指定する。
15160
15161      a-s
15162
15163    削除制限フラグやスティッキー・ビットを設定するには、次のモードを
15164 指定する。
15165
15166      +t
15167
15168    `o+s' という組み合わせには、何の効果もない。GNU のシステムでは、
15169 `u+t' や `g+t' という組み合わせにも、全く効果がなく、また `o+t' は、
15170 単なる `+t' と同じ働きをする。
15171
15172    特殊モードビットの設定や変更では、`=' はあまり役に立たない。
15173 たとえば、こんな指定をしたとしよう。
15174
15175      o=t
15176
15177 上記のモードは、確かに、削除制限フラグやスティッキー・ビットを設定
15178 することはするが、同時に、ファイルのグループに属していないユーザが、
15179 そのファイルに対して、読み、書き、実行/検索の権限を持っていたとしても、
15180 そうした権限をすべて削除してしまう。
15181
15182    set-user-ID や set-group-ID ビットがディレクトリに付いている場合の、
15183 ほかの約束事については、「ディレクトリの Set-User-ID と Set-Group-ID
15184 ビット」の節をご覧になっていただきたい。*Note Directory Setuid and
15185 Setgid::.
15186
15187 \1f
15188 File: coreutils-ja.info,  Node: Conditional Executability,  Next: Multiple Changes,  Prev: Changing Special Mode Bits,  Up: Symbolic Modes
15189
15190 27.2.4 条件付きの実行属性変更
15191 ----------------------------------------
15192
15193 シンボルによる許可属性の指定には、もう一つ特別なタイプがある。`x' の
15194 代わりに、`X' を使用すると、実行/検索の許可属性に変更があるのは、
15195 ファイルがディレクトリである場合か、あるいは、(どのユーザかに) すでに
15196 実行許可が付いていた場合だけになる。
15197
15198    一例を挙げよう。
15199
15200      a+X
15201
15202 上記のモードは、すべてのユーザにディレクトリを検索する許可、または、
15203 ファイルを実行する許可を与えるが、後者については、どのユーザかが、
15204 すでにそのファイルを実行できたならば、という条件が付く。
15205
15206 \1f
15207 File: coreutils-ja.info,  Node: Multiple Changes,  Next: Umask and Protection,  Prev: Conditional Executability,  Up: Symbolic Modes
15208
15209 27.2.5 複数の変更
15210 ----------------------
15211
15212 シンボリックモードの書式は、これまでに述べてきたよりも、実際にはもっと
15213 複雑である (*note Setting Permissions::)。ファイルのモードビットに
15214 対して、複数の変更を一度に行うには、二つの方法がある。
15215
15216    一つ目の方法は、シンボリックモードの USERS の部分の後ろに、 複数の
15217 OPERATION と PERMISSIONS を指定することである。
15218
15219    たとえば、こんなふうにだ。
15220
15221      og+rX-w
15222
15223 このモードは、ファイルの所有者以外のユーザに、読み込み許可を与え、さらに、
15224 ファイルがディレクトリであるか、どのユーザかがすでに実行許可を持っていた
15225 場合には、実行/検索許可も与えている。また、ファイルの所有者以外のユーザ
15226 から、ファイルへの書き出し許可を取り上げている。なお、この指定は、ファイル
15227 の所有者が持っている許可には影響を及ぼさない。このモードは、以下の二つの
15228 モードと等価である。
15229
15230      og+rX
15231      og-w
15232
15233    複数の変更を行う二つ目の方法は、単純なシンボリックモードを 2 個以上、
15234 コンマで区切って指定することである。たとえば、
15235
15236      a+r,go-w
15237
15238 これは、すべてのユーザにそのファイルに対する読み込み許可を与え、
15239 所有者以外のすべてのユーザから書き出し許可を削除している。もう一つ、
15240 例を挙げる。
15241
15242      u=rwx,g=rx,o=
15243
15244 こちらは、そのファイルに対するすべての許可ビットを明示的に設定して
15245 いる。(ファイルのグループに属さないユーザには、ファイルに対する許可を
15246 一切与えていない。)
15247
15248    複数の変更を行う二つの方法を組み合わせて使うこともできる。
15249
15250      a+r,g+x-w
15251
15252 この指定は、すべてのユーザにファイルの読み込み許可を与え、さらに、
15253 ファイルのグループに属するユーザには、実行/検索許可も与えているが、
15254 書き出し許可は与えていない。上記のモードを指定する方法は、ほかにも
15255 いくつかあるだろう。その一つを挙げておく。
15256
15257      u+r,g+rx,o+r,g-w
15258
15259 \1f
15260 File: coreutils-ja.info,  Node: Umask and Protection,  Prev: Multiple Changes,  Up: Symbolic Modes
15261
15262 27.2.6 Umask と保険
15263 ----------------------
15264
15265 シンボリックモードの USERS の部分を省略すると、デフォルトの `a' が
15266 使用される (すべてのユーザが対象になる)。が、この場合、システム変数
15267 `umask' で設定されている許可属性は、全く影響を受けない (訳注: `umask'
15268 で許可しないことになっている許可属性は、現在実際には許可になって
15269 いようと、不許可であろうと、`-w' や `+w' といった USERS 部のない指定
15270 では、変更されないということ。以下で例を挙げて説明している)。`umask'
15271 の値は、`umask' コマンドで設定することができる。`umask' のデフォルト
15272 の値は、システムによって様々である。
15273
15274    シンボリックモードで USERS の部分を省略するのは、`+' 以外の操作では、
15275 おおむね役に立たない。USERS の省略が `+' で役に立つのは、その場合、
15276 意図した以上の許可をファイルに付けてしまわないための、簡単にカスタマイズ
15277 できる保険として、`umask' が使用できるからである。
15278
15279    一例を挙げると、`umask' の値が 2 ということは、ファイルの所有者でも
15280 なく、ファイルのグループにも所属していない一般ユーザに、書き出し許可を
15281 与えないということである。その場合、
15282
15283      +w
15284
15285 というモードは、ファイルの所有者とファイルのグループに所属するユーザに、
15286 書き出し許可を追加するが、それ以外のユーザには、書き出し許可を追加
15287 しない。それに対して、
15288
15289      a+w
15290
15291 というモードは、`umask' を無視して、ファイルへの書き出し許可を、文字通り
15292 すべてのユーザに与えるのである。
15293
15294 \1f
15295 File: coreutils-ja.info,  Node: Numeric Modes,  Next: Operator Numeric Modes,  Prev: Symbolic Modes,  Up: File permissions
15296
15297 27.3 数値モード
15298 ====================
15299
15300 シンボリックモードで指定する代わりに、モードを表す 1 個の 8 進数 (基数
15301 8) を指定することもできる。この数値は常に 8 進数として解釈されるので、
15302 C 言語の場合とは違って、先頭に `0' を付ける必要はない。`0055' という
15303 モードは、`55' というモードと同じなのだ。(とは言え、`00055' のような、
15304 5 桁以上のモードは、特別な扱いを受けることがある。*Note Directory
15305 Setuid and Setgid::.)
15306
15307    数値モードは、たいていの場合、対応するシンボリックモードより短くて
15308 すむが、ファイルの変更前のモードビットを踏まえて指定することが、普通は
15309 できないという制限がある。数値モードでは、絶対的な形で指定することしか
15310 できないのだ。ディレクトリの set-user-ID ビットと set-group-ID ビット
15311 は、この一般的な制限の対象外である。 *Note Directory Setuid and
15312 Setgid::.  なお、演算子付き数値モードを使えば、ファイルの変更前のモード
15313 ビットを踏まえた指定が可能になる。 *Note Operator Numeric Modes::.
15314
15315    ファイルの所有者、ファイルのグループに所属する他のユーザ、それ以外の
15316 一般ユーザ、この 3 種のユーザに与える許可属性には、それぞれ 3 ビットを
15317 要し、その 3 ビットは 1 個の 8 進数で表現される。三つの特殊モードビット
15318 にも、おのおの 1 ビットが必要であり、こちらも一つにまとめて、もう一つの
15319 8 進数として表現される。各ビットの並び方は、最下位のビットから上位の
15320 ビットへ向かって、次のようになっている。
15321
15322      モードの  対応する
15323      値        モードビット
15324
15325                ファイルのグループに所属しない一般ユーザ:
15326         1      実行/検索
15327         2      書き出し
15328         4      読み込み
15329
15330                ファイルのグループに所属する所有者以外のユーザ:
15331        10      実行/検索
15332        20      書き出し
15333        40      読み込み
15334
15335                ファイルの所有者:
15336       100      実行/検索
15337       200      書き出し
15338       400      読み込み
15339
15340                特殊モードビット:
15341      1000      削除制限フラグ、またはスティッキー・ビット
15342      2000      ファイルの実行時にグループ ID をセットする
15343      4000      ファイルの実行時にユーザ ID をセットする
15344
15345    たとえば、数値モードの `4755' は、シンボリックモードの `u=rwxs,go=rx'
15346 に当たり、数値モードの `664' は、シンボリックモードの `ug=rw,o=r' に相当
15347 している。数値モードの `0' は、シンボリックモードの `a=' に相当する。
15348
15349 \1f
15350 File: coreutils-ja.info,  Node: Operator Numeric Modes,  Next: Directory Setuid and Setgid,  Prev: Numeric Modes,  Up: File permissions
15351
15352 27.4 演算子付き数値モード
15353 ===================================
15354
15355 演算子付き数値モードは、`-', `+', `=' を前に付けた数値モードである。
15356 そうした演算子が表している意味は、シンボリックモードの場合と同じだ。
15357 たとえば、`+440' は、ファイルの所有者とグループに対する読み込み許可を
15358 有効にし、`-1' は、その他の一般ユーザに対する実行許可を無効にする。
15359 また、`=600' は、ファイルの所有者に対する読み込みと書き出しの許可を
15360 有効にするが、それ以外のすべての許可を無効にする。演算子付き数値モード
15361 は、シンボリックモードと組み合わせて使うことも可能だ。両者の間は
15362 コンマで区切ればよい。一例を挙げると、`=0,u+r' は、すべての許可を
15363 無効にした上で、ファイルの所有者の読み込み許可だけを有効にする。
15364
15365    コマンド  `chmod =755 DIR' と `chmod 755 DIR' の違いは、前者が
15366 ディレクトリ DIR の setuid と setgid をクリアするのに対して、後者は
15367 それをそのまま維持するという点にある。 *Note Directory Setuid and
15368 Setgid::.
15369
15370    演算子付き数値モードは、GNU による拡張である。
15371
15372 \1f
15373 File: coreutils-ja.info,  Node: Directory Setuid and Setgid,  Prev: Operator Numeric Modes,  Up: File permissions
15374
15375 27.5 ディレクトリの Set-User-ID と Set-Group-ID ビット
15376 =================================================================
15377
15378 ほとんどのシステムでは、ディレクトリに set-group-ID ビットが付いている
15379 と、そのディレクトリ内で新しく作られるファイルは、ディレクトリと同じ
15380 グループを継承し、新しく作られるサブディレクトリは、親ディレクトリの
15381 set-group-ID ビットを継承する。また、若干のシステムでは、ディレクトリの
15382 set-user-ID ビットが、ディレクトリ内の新規ファイルの所有者と、新規サブ
15383 ディレクトリの set-user-ID ビットに対して、同様の効果を持っている。
15384 こうした仕組みによって、新しいファイルを共有するために `chmod' や
15385 `chown' を使う必要が軽減し、ユーザにとってファイルの共有がやりやすく
15386 なっているのである。
15387
15388    ユーザの便宜のためのこうした仕組みは、ディレクトリの set-user-ID
15389 ビットや set-group-ID ビットを拠り所にしている。もし、`chmod' や
15390 `mkdir' が、ディレクトリのそうしたビットを常時クリアする仕様になって
15391 いたら、この仕組みもそれほど便利ではなくなり、ファイルの共有が面倒なこと
15392 になるだろう。それ故、`chmod' などのコマンドは、原則としてディレクトリ
15393 の set-user-ID ビットや set-group-ID ビットを変更しないのである。
15394 set-user-ID ビットや set-group-ID ビットを変更するには、ユーザが
15395 シンボリックモードで明示的にそう指定するか、`=755' のような演算子付き
15396 数値モードを使用するか、数値モードでビットを立てるか、5 桁以上の 8 進数
15397 からなる数値モードでビットをクリアするか、そのどれかをやる必要がある。
15398 set-group-ID ビットの継承をサポートしているシステムでの例を挙げよう。
15399
15400      # 以下のコマンドは、サブディレクトリの set-user-ID ビットと
15401      # set-group-ID ビットを変更しない。従って、デフォルトの値が
15402      # 保持される。
15403      mkdir A B C
15404      chmod 755 A
15405      chmod 0755 B
15406      chmod u=rwx,go=rx C
15407      mkdir -m 755 D
15408      mkdir -m 0755 E
15409      mkdir -m u=rwx,go=rx F
15410
15411    サブディレクトリの set-user-ID ビットや set-group-ID ビットを設定
15412 したかったら、シンボリックモードや数値モードで明示的に指定しなければ
15413 ならない。たとえば、次のようにだ。
15414
15415      # 以下のコマンドは、サブディレクトリに set-user-ID ビットと
15416      # set-group-ID bits を付けようとしている。
15417      mkdir G
15418      chmod 6755 G
15419      chmod +6000 G
15420      chmod u=rwx,go=rx,a+s G
15421      mkdir -m 6755 H
15422      mkdir -m +6000 I
15423      mkdir -m u=rwx,go=rx,a+s J
15424
15425    サブディレクトリの set-user-ID ビットや set-group-ID ビットを
15426 消去したかったら、シンボリックモードで明示的にそう指定するか、
15427 演算子付き数値モードを使用するか、5 桁以上の 8 進数からなる数値
15428 モードで指定するかしなければならない。
15429
15430      # 以下のコマンドは、ディレクトリ D の set-user-ID ビットと
15431      # set-group-ID ビットをクリアしようとしている。
15432      chmod a-s D
15433      chmod -6000 D
15434      chmod =755 D
15435      chmod 00755 D
15436
15437    こうした動作は、GNU による拡張である。移植を考慮したスクリプト
15438 では、ディレクトリの set-user-ID ビットや set-group-ID ビットを
15439 立てたり、クリアしたりするリクエストを当てにしない方がよい。POSIX
15440 の規格で、そうしたリクエストを無視する実装が認められているからだ。
15441 なお、GNU の許可属性指定における 4 桁以下の数値モードの動作は、
15442 ディレクトリの set-user-ID ビットや set-group-ID ビットを維持する
15443 システムで使うスクリプト向けであり、5 桁以上の数値モードの動作は、
15444 そうしたビットを維持しないシステムでも使えるスクリプト向けである。
15445
15446    (訳注: 4 桁以下と 5 桁以上の数値によるモード指定の違いについて
15447 少し整理しておく。数値によるモード指定は、原則として絶対的な指定
15448 である。たとえば、755 と指定すれば、755 に対応するモードビットだけ
15449 が立てられ、それ以外のビットは 0 になる。ただし、ディレクトリの
15450 set-user-ID ビットと set-group-ID ビットについてだけは、話がもう
15451 少し複雑である。4 桁以下の数値による指定の場合、ディレクトリの
15452 set-user-ID ビットや set-group-ID ビットを維持するシステムでは、
15453 そうしたビットはデフォルトや現在の状態が引き継がれるのだから、
15454 ユーザがディレクトリの set-user-ID ビットや set-group-ID ビットを
15455 数値によって指定しても、それは絶対的な指定にならない。デフォルト値や
15456 現在値に対する追加にしかならないのである。当然のこととして、この
15457 方法では消去もできない。それに対して、5 桁以上の数値による指定の
15458 場合は、どんなシステムでも、すべてのモードビットについて、ユーザ
15459 の指定は絶対指定になる。従って、こちらなら、ディレクトリの set-user-ID
15460 ビットや set-group-ID ビットの選択的な設定や消去もできるのである。
15461 もちろん、お使いの `chmod' のバージョンが、5 桁の数値指定をサポート
15462 していればだが。)
15463
15464 \1f
15465 File: coreutils-ja.info,  Node: Date input formats,  Next: Opening the software toolbox,  Prev: File permissions,  Up: Top
15466
15467 28 日付入力の書式
15468 ************************
15469
15470 まず、引用から始める。
15471
15472      時間を計るための我々の単位は、秒から月にいたるまで、あまりにも
15473      複雑で、一貫性がなく、ばらばらなので、時間について間違わずに暗算
15474      をすることなど、ほとんど不可能なほどだ。まったくの話、どこかの
15475      横暴な神様が、人間の知能を時間の奴隷にしてやろうと企んだとしても
15476      -- 腐った決まりごとや不愉快な不意打ちに隷従せずに済ますことなど、
15477      人間にはほとんど不可能にしてやろうと企んだとしても -- 現在我々が
15478      使っているシステムをお下げ渡しになる以上のことは、できなかったに
15479      違いない。我々の時間計算のシステムは、垂直な面も水平な面もない
15480      台形の建築ブロックの集まりのようなものだ。あるいは、ほんの簡単な
15481      考えを述べるにも、凝りに凝った構成や、無駄な不変化詞や、長々しい
15482      婉曲表現が必要な言語のようなものだ。言語や科学のもっとうまく行って
15483      いる思考様式は、我々が経験に果敢に立ち向かうことを、少なくとも
15484      冷静に立ち向かうことを可能にしてくれる。ところが、そうしたものとは
15485      違って、我々の時間計算のシステムは、密かに、しかも執拗に時間に
15486      対する我々の恐怖をかきたてるのである。
15487
15488      ... それは、建築家が長さをフィートで、幅をメートルで、高さをエルで
15489      測らなければならないようなものだ。あるいは、基本的な使用説明書を
15490      読むのに、五つの異なった言語の知識が必要なようなものだ。だから、
15491      我々が、自分にとってすぐ最近の過去や未来を表す、この前の火曜日
15492      (last Tuesday) とか、来週の日曜日 (a week from Sunday) とかいった
15493      表現について、それは一体いつを指しているのだろうと考え込んでは、
15494      どうしようもない混乱を覚えることがよくあるのも、無理からぬこと
15495      なのである。...
15496
15497      -- Robert Grudin, `Time and the Art of Living'.
15498
15499    この章では、GNU のプログラムが認識する日付表現文字列について説明
15500 する。そうした文字列は、ユーザである読者が、様々なプログラムに引数
15501 として渡すことのできるものだ。C のインターフェース (`parse_datetime'
15502 関数で使用する) については、ここでは説明しない。
15503
15504 * Menu:
15505
15506 * General date syntax::      共通規則。
15507 * Calendar date items::      暦日の項目 (19 Dec 1994)。
15508 * Time of day items::        時刻の項目 (9:20pm)。
15509 * Time zone items::          タイムゾーンの項目 (EST, PDT, UTC, ...)。
15510 * Combined date and time of day items::  暦日と時刻を組み合わせた項目
15511                                            (1972-09-24T20:02:00,000000-0500)。
15512 * Day of week items::        曜日の項目 (Monday, Tuesday)。
15513 * Relative items in date strings::  相対表現の項目
15514                                       (next tuesday, 2 years ago)。
15515 * Pure numbers in date strings::    純粋な数値 (19931219, 1440)。
15516 * Seconds since the Epoch::         紀元からの秒数 (@1078100502)。
15517 * Specifying time zone rules::      タイムゾーン・ルールの指定
15518                                       (TZ="America/New_York", TZ="UTC0")。
15519 * Authors of parse_datetime::       parse_datetime の作者 (Bellovin, Eggert,
15520                                       Salz, Berets, et al.)。
15521
15522 \1f
15523 File: coreutils-ja.info,  Node: General date syntax,  Next: Calendar date items,  Up: Date input formats
15524
15525 28.1 日付書式の全体
15526 ==========================
15527
15528 日付 ("date") は、空文字列のこともある文字列であり、空白 (whitespace)
15529 で区切られた多くの項目を含んでいる。各項目の意味に曖昧さが生じないなら、
15530 空白は省略できる。空の文字列は、今日の始まり (すなわち、真夜中) を意味
15531 している。項目の順序は重要ではない。日付文字列では、様々な種類の項目を
15532 指定することができる。
15533
15534    * 暦日の項目
15535
15536    * 時刻の項目
15537
15538    * タイムゾーンの項目
15539
15540    * 日付と時刻を組み合わせた項目
15541
15542    * 曜日の項目
15543
15544    * 相対表現の項目
15545
15546    * 純粋な数値
15547
15548 個々の項目については、次節以下で順番に説明する。
15549
15550    何番目かを示す序数の中には、現れる場所によっては、単語で表現できる
15551 ものがいくつかある。これは、曜日や相対的表現の項目を指定するとき、
15552 たいへん便利だ (下記参照)。使用頻度のきわめて高い序数を取り上げると、
15553 `last' という単語は -1 を表し、`this' は 0 を、`first' と `next' は
15554 両方とも 1 を表している。`second' という単語は時間の単位でもあるので、
15555 序数の 2 を単語で表現する方法はない。だが、便宜を考えて、`third' は 3
15556 を、`fourth' は 4 を、`fifth' は 5 を、`sixth' は 6 を、`seventh' は 7
15557 を、`eighth' は 8 を、`ninth' は 9 を、`tenth' は 10 を、`eleventh' は
15558 11 を、`twelfth' は 12 を表すことになっている。
15559
15560    月がこの形で表現されたときも、やはり数値として (訳注: たとえば、今月
15561 から何ヶ月後と) 指定されたと見なされるのであって、月の名前の省略なしの
15562 表記と解釈されるわけではない (訳注: たとえば、third month を March の
15563 別名の完全表記とは考えない)。そのため、March のような月名を使った場合
15564 とは、指定できる文字列が違ってくる。
15565
15566    現在の実装で使用できる単語は、英語の単語とその省略形のみである。
15567 すなわち、`AM', `DST', `EST', `first', `January', `Sunday', `tomorrow',
15568 `year' などだ。
15569
15570    `date' コマンドの出力だからと言って、必ずしも日付文字列として
15571 プログラムに渡せるとはかぎらない。言語の問題のせいばかりではない。
15572 `IST' のようなタイムゾーン項目には、標準的な意味が存在しないからでも
15573 ある。後でプログラムに構文解析をさせる予定の日付文字列を、`date'
15574 を使用して生成するのなら、日付の書式には、言語が何であるかに依存せず、
15575 `UTC' と `Z' 以外のタイムゾーン項目を使用しないものを指定するべきだ。
15576 それを行う方法をいくつか挙げておく。
15577
15578      $ LC_ALL=C TZ=UTC0 date
15579      Mon Mar  1 00:21:42 UTC 2004
15580      $ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
15581      2004-03-01 00:21:42Z
15582      $ date --rfc-3339=ns  # --rfc-3339 は GNU の拡張。
15583      2004-02-29 16:21:42.692722128-08:00
15584      $ date --rfc-2822  # GNU の拡張。
15585      Sun, 29 Feb 2004 16:21:42 -0800
15586      $ date +'%Y-%m-%d %H:%M:%S %z'  # %z は GNU の拡張。
15587      2004-02-29 16:21:42 -0800
15588      $ date +'@%s.%N'  # %s と %N も GNU の拡張。
15589      @1078100502.692722128
15590
15591    日付を指定する際、アルファベットの大文字と小文字は全く区別されない。
15592 丸カッコで囲めば、コメントを入れることができる。ただし、丸カッコを入れ子
15593 にするときは、開きカッコと閉じカッコがきちんと対応していなければならない。
15594 数字が後に続かないハイフンは、現在のところ無視される。また、数値の前に
15595 付けた 0 も無視される。
15596
15597    `2005-02-29' のような無効な日付や `24:00' のような無効な時刻は、
15598 却下される。閏秒をサポートしていないホストでは、`23:59:60' のような
15599 時刻は、たとえ閏秒に正しく対応する値であっても、却下されるのが普通である。
15600
15601 \1f
15602 File: coreutils-ja.info,  Node: Calendar date items,  Next: Time of day items,  Prev: General date syntax,  Up: Date input formats
15603
15604 28.2 暦日の項目
15605 ====================
15606
15607 暦日の項目 ("calendar date item") では、ある年のある一日を指定する。
15608 月を数字で指定するか、文字で指定するかにかによって、日付の指定法が変わって
15609 くる。以下に挙げる文字列は、すべて暦の上の同じ日付を指定している。
15610
15611      1972-09-24     # ISO 8601 形式。
15612      72-9-24        # 69 から 99 までは、19xx 年と見なし、
15613                     # 00 から 68 までは、20xx 年と見なす。
15614      72-09-24       # 先頭の 0 は無視される。
15615      9/24/72        # アメリカでよく使われる表記。
15616      24 September 1972
15617      24 Sept 72     # September には、4 文字の省略形もある。
15618      24 Sep 72      # 3 文字の省略形は、何月に対しても使用できる。
15619      Sep 24, 1972
15620      24-sep-72
15621      24sep72
15622
15623    年を省略することもできる。その場合は、日付文字列の後方で指定された
15624 年が使用される (訳注: たとえば、`date -d "5/3 2:00 UTC 2015"' のような
15625 場合だろう)。それもない場合は、今年が使われる。例を挙げると、次のような
15626 形である。
15627
15628      9/24
15629      sep 24
15630
15631    要するに、ルールはこうだ。
15632
15633    月を数字で表す場合、ISO 8601 の形式、すなわち `YEAR-MONTH-DAY' が
15634 使用できる。ここで YEAR は任意の正の数であり、MONTH は 01 から 12
15635 までの数、DAY は 01 から 31 までの数である。数が 10 未満のときは、 0
15636 を前に付けることになる。YEAR が 68 以下の場合は、YEAR に2000 が加算
15637 される。また、YEAR が 69 以上、100 未満ならば、1900 が加算される。
15638 アメリカ合衆国で一般的な `MONTH/DAY/YEAR' という書式も使うことが
15639 できる。年を省略した `MONTH/DAY' も可能である。
15640
15641    月の名前を使用する場合は、フルスペルで書いてもよい。すなわち、
15642 `January', `February', `March', `April', `May', `June', `July',
15643 `August', `September', `October', `November', `December' である。月の
15644 名前は、最初の 3 文字に省略することができる。その場合、省略の印の
15645 ピリオドは、付けても付けなくてもよい。また、`September' の代わりに、
15646 `Sept' と書くことも認められている。
15647
15648    月名を使用する場合、暦の上の日付は、以下のどの形で指定してもよい。
15649
15650      DAY MONTH YEAR
15651      DAY MONTH
15652      MONTH DAY YEAR
15653      DAY-MONTH-YEAR
15654
15655    年を省略することもできる。
15656
15657      MONTH DAY
15658
15659 \1f
15660 File: coreutils-ja.info,  Node: Time of day items,  Next: Time zone items,  Prev: Calendar date items,  Up: Date input formats
15661
15662 28.3 時刻の項目
15663 ====================
15664
15665 日付文字列中の時刻の項目 ("time of day item") では、当日の時刻を指定
15666 する。以下に挙げるいくつかの例は、すべて同じ時刻を表している。
15667
15668      20:02:00.000000
15669      20:02
15670      8:02pm
15671      20:02-0500      # EST (U.S. Eastern Standard Time)
15672
15673    もっと一般的に言うと、時刻は `HOUR:MINUTE:SECOND' の形で指定できる。
15674 HOUR は 0 から 23 までの数であり、MINUTE は 0 から 59 までの数である。
15675 SECOND は 0 から 59 までの数であり、`.' や `,' を後ろに付けて、一桁以上
15676 の数字からなる小数を続けてもよい。なお、`:SECOND' は省略することもでき、
15677 その場合は 0 を指定したことになる。閏秒をサポートするホストもまれには
15678 あり、そうしたところでは SECOND に 60 を指定することができる。
15679
15680    時刻に `am' や `pm' (または `a.m.' や `p.m.') が続く場合は、HOUR が
15681 1 から 12 までになる。`:MINUTE' は省略してもよい (0 を指定したものと
15682 見なされる)。`am' は一日の前半を示し、`pm' は一日の後半を示す。この
15683 表記法では、1 の前が 12 になる。すなわち、真夜中は `12am' であり、正午
15684 は `12pm' である。(これは `12am' や `12pm' の 12 を 0 のように見なす解釈
15685 であり、正午を `12m'、深夜を `12pm' とするラテン文化から来た従来の習慣
15686 とは逆になっている。)
15687
15688    また、時刻にはタイムゾーン補正を続けてもよい。補正は `SHHMM' という
15689 形で表現され、S は `+' または `-' 符号、HH は時間帯の時間差、MM は分差の
15690 部分である。分差の部分 MM は指定しないでもよく、その場合は、1 桁ないし
15691 2 桁の補正は、時間差の指定と見なされる。なお、HH と MM の間をコロンで
15692 区切ってもよい。タイムゾーン補正をこの方法で指定した場合、それが、それ
15693 までに指定したいかなるタイムゾーンよりも、また、ローカル・タイムゾーン
15694 よりも優先され、指定した時刻は、協定世界時 (UTC) よりも補正分進んでいる
15695 (あるいは、遅れている) タイムゾーンの時刻であると解釈されることになる。
15696 一例を挙げると、`+0530' と `+05:30' は両方とも、UTC より 5.5 時間進んだ
15697 タイムゾーンを表している (たとえば、インドである)。これは、タイムゾーン
15698 補正を 1 時間以下の部分まで指定する最善の方法である。タイムゾーン補正の
15699 最大値は、24 時間である。
15700
15701    `am'/`pm' とタイムゾーン補正は、どちらか一方のみが指定できる。両方を
15702 指定することはできない。
15703
15704 \1f
15705 File: coreutils-ja.info,  Node: Time zone items,  Next: Combined date and time of day items,  Prev: Time of day items,  Up: Date input formats
15706
15707 28.4 タイムゾーンの項目
15708 ================================
15709
15710 タイムゾーン項目 ("time zone item") では、国際時間帯を指定する。これは
15711 数個の文字によって表されるもので、たとえば、協定世界時 (Coordinated
15712 Universal Time) なら `UTC' または `Z' である。省略の印のピリオドは、
15713 すべて無視される。標準時のタイムゾーン (a non-daylight-saving time
15714 zone) の後ろに、文字列 `DST' を独立した単語として (すなわち、空白、
15715 タブなどを間に置いて) 続ければ、対応する夏時間のタイムゾーンを指定
15716 することができる。ちなみに、標準時のタイムゾーンの後ろに、タイムゾーン
15717 補正を続けて、両方の値を加算することもできる。ただし、その指定法は、
15718 通常 `UTC' に対してしか行われない。たとえば、`UTC+05:30' は `+05:30' と
15719 同じことである。
15720
15721    `UTC' と `Z' 以外のタイムゾーン項目は、時代遅れになりかかっている
15722 ので、使用しない方がよい。理由は解釈が一定しないからであり、たとえば、
15723 `EST' はオーストラリアとアメリカ合衆国で違った意味を持っている。タイム
15724 ゾーン項目を使用するよりも、前節で述べた `-0500' のような、数値による
15725 タイムゾーン補正を使った方が、曖昧さがないので、賢明である。
15726
15727    タイムゾーン項目とタイムゾーン補正のどちらも指定されていない場合、
15728 日付の解釈は、デフォルトのタイムゾーンのルールを用いて行われる (*note
15729 Specifying time zone rules::)。
15730
15731 \1f
15732 File: coreutils-ja.info,  Node: Combined date and time of day items,  Next: Day of week items,  Prev: Time zone items,  Up: Date input formats
15733
15734 28.5 暦日と時刻を組み合わせた項目
15735 ===============================================
15736
15737 ISO 8601 の拡張日時書式は、ISO 8601 形式の日付、`T' という区切り文字、
15738 ISO 8601 形式の時刻という構成になっている。`T' の代わりにスペースが
15739 使われていても、この書式として認識される。
15740
15741    この書式では、時刻は 24 時間表記を使用するべきである。秒については、
15742 コンマまたはピリオドに小数部分を続けることで、小数点以下も指定できる。
15743 ISO 8601 で認められている分や時の小数表現には対応していない。たいていの
15744 ホストがナノセコンドの精度のタイムスタンプをサポートしている。サポート
15745 を超えた精度は、エラーや警告を出さずに単に除去される。
15746
15747    例をいくつか挙げてみよう。
15748
15749      2012-09-24T20:02:00.052-0500
15750      2012-12-31T23:59:59,999999999+1100
15751      1970-01-01 00:00Z
15752
15753 \1f
15754 File: coreutils-ja.info,  Node: Day of week items,  Next: Relative items in date strings,  Prev: Combined date and time of day items,  Up: Date input formats
15755
15756 28.6 曜日の項目
15757 ====================
15758
15759 曜日を明示的に指定すると、未来のその曜日にまで日付を前に進めることに
15760 なる (これが行われるのは、その必要があるときだけである)。
15761
15762    曜日は省略なしに書いてもよい。すなわち、`Sunday', `Monday',
15763 `Tuesday', `Wednesday', `Thursday', `Friday', `Saturday' である。最初の
15764 3 文字に短縮することもでき、その場合、省略の印のピリオドは付けても
15765 付けなくてもよい。`Tuesday' には `Tues'、`Wednesday' には `Wednes'、
15766 `Thursday' には `Thur' または `Thurs' という特殊な省略形もある。
15767
15768    曜日項目の前に数値を付けてもよい。週がその分だけ前に進むことになる。
15769 これは、`third monday' のような表現で使うのが、一番よい。その伝で、
15770 `last DAY' や `next DAY' という表現も許されている (訳注: DAY の部分には
15771 Sunday, Monday などの曜日を指定する)。それぞれ、単独の DAY が表すことに
15772 なる日付より 1 週間前、または 1 週間後の日付になる。
15773
15774    (訳注: next について上記のことが成り立つのは、DAY が今日の曜日の
15775 ときだけである。それ以外の場合は、DAY と `next DAY' は同じになる。)
15776
15777    曜日項目の後ろにコンマがあっても、無視される。
15778
15779    (訳注: 確かに `-d "Thu, 2013-03-07"' といった指定では、コンマが無視
15780 されるが、`-d "next Thu,"' や `-d "3 Thu,"' といった指定では、"invalid
15781 date" と言われ、エラーになる。)
15782
15783 \1f
15784 File: coreutils-ja.info,  Node: Relative items in date strings,  Next: Pure numbers in date strings,  Prev: Day of week items,  Up: Date input formats
15785
15786 28.7 相対表現の項目
15787 ==========================
15788
15789 相対表現の項目 ("Relative items") は、日付を (指定しない場合は、現在の
15790 日付を) 前後に移動させる。また、相対表現の項目の作用は、加算されていく。
15791 相対表現の項目とは、次のようなものである。
15792
15793      1 year
15794      1 year ago
15795      3 years
15796      2 days
15797
15798    時間をどれくらい移動するかの単位は、文字列を使って選択する。まる
15799 数年、あるいは、まる数ヶ月ずらすのなら、`year' や `month' という文字列
15800 を使う。年も月も、曖昧な単位である。すべての年や月が、同じ長さをしている
15801 わけではないからだ。もっと厳密な単位としては、`fortnight' (14 日間)、
15802 `week' (7 日間)、`day' (24 時間)、`hour' (60 分間)、`minute' または
15803 `min' (60 秒間)、`second' または `sec' (1 秒間) がある。こうした単位
15804 には、複数語尾の `s' を付けてもよいが、付けても無視される。
15805
15806    時間の単位の前に、何倍かを示す乗数を置くことができる。乗数には、 `+'
15807 または `-' の符号を付けてもよい。符号なしの数値には、`+' の符号が
15808 付いているものと見なされる。数値を指定しなければ、乗数に 1 を指定した
15809 ことになる。相対表現の項目に `ago' を続けるのは、単位の前にマイナスの
15810 乗数を置くのと同じことである。
15811
15812    `tomorrow' という文字列は、1 日分未来ということである (`day' と
15813 等しい)。`yesterday' は、1 日分過去ということだ (`day ago' と等しい)。
15814
15815    `now' や `today' という文字列は、値 0 の時間移動に対応する相対表現の
15816 項目である。値 0 の時間移動は、先行する項目によって別の日時に変更されて
15817 いないかぎり、今現在の日時を表すということから、`now' (今) や `today'
15818 (今日) という言い方ができるわけだ。こうしたものは、他の項目を強調する
15819 ために、たとえば、`12:00 today' といった具合に使うこともできる。 `this'
15820 という文字列にも、値 0 の時間移動という意味があるが、こちらは `this
15821 thursday' のような日付文字列で使用される。
15822
15823    相対表現の項目によって生成される日付が、標準時と夏時間の切り替えを
15824 典型とするような、時刻調整の境目を越えたものになる場合、生成される日時
15825 は適切に調整される。
15826
15827    単位の曖昧さが、相対表現の項目では問題を起こすことがある。たとえば、
15828 `2003-07-31 -1 month' は、2003-07-01 と評価されるかもしれない。
15829 2003-06-31 が無効な日付だからだ。先月が何月かをもっと確実に引き出す
15830 ためには、今月の 15 日よりも前に、先行する月を求めればよい。例を挙げる。
15831
15832      $ date -R
15833      Thu, 31 Jul 2003 13:02:39 -0700
15834      $ date --date='-1 month' +'Last month was %B?'
15835      Last month was July?
15836      $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
15837      Last month was June!
15838
15839    また、標準時と夏時間の切り替えのような時刻変更があるときの前後で
15840 日付の操作を行う場合も、気を付けた方がよい。24 時間も加算されたり、
15841 減算されたりしてしまうことも、ないとは言えないからだ。そこで、
15842 たいていの場合、日付の計算に取りかかる前に、環境変数 `TZ' を `UTC0'
15843 に設定して、協定世界時を採用するのが賢明である。
15844
15845 \1f
15846 File: coreutils-ja.info,  Node: Pure numbers in date strings,  Next: Seconds since the Epoch,  Prev: Relative items in date strings,  Up: Date input formats
15847
15848 28.8 日付文字列中の純粋な数値
15849 =========================================
15850
15851 純粋な 10 進数をどう解釈するかは、日付文字列の文脈次第である。
15852
15853    10 進数が YYYYMMDD の形をとり、日付文字列中のそれより前に他の暦日の
15854 項目 (*note Calendar date items::) が存在しない場合は、YYYY は暦の上の
15855 ある 1 日の年の部分と見なされる。MM は何番目の月かということ、DD は
15856 その月の日にちである。
15857
15858    10 進数が HHMM の形をとり、日付文字列中のそれより前に他の時刻の
15859 項目が存在しない場合は、HH はある 1 日の時刻の何時の部分と、MM は
15860 何分の部分と見なされる。MM を省略してもよい。
15861
15862    日付文字列中で、ある数値の左側に暦の上の日にちとその日の時刻の両方が
15863 存在し、相対表現の項目が存在しない場合は、その数値が今年の代わりに
15864 使われる。
15865
15866    (訳注: たとえば、`date -d "3/27 10:10 2012"' と指定すると、今年の
15867 代わりに 2012 が使われるということらしい。`date -d "3/27/2001 10:10
15868 2012"' や `date -d "2001-03-27 10:10 2012"' は無効な日付になるし、
15869 `date -d "3/27 1010 2012"' は、1010 年 3 月 27 日 20:12:00 になる。)
15870
15871 \1f
15872 File: coreutils-ja.info,  Node: Seconds since the Epoch,  Next: Specifying time zone rules,  Prev: Pure numbers in date strings,  Up: Date input formats
15873
15874 28.9 Unix 紀元 (the Epoch) からの秒数
15875 ============================================
15876
15877 `@' に数値を続けると、それは、秒数として、システム内部で使われるタイム
15878 スタンプを表すことになる。数値には、小数点 (`.' または `,') が含まれて
15879 いてもよい。内部表現がサポートしていない余分な精度は、マイナスの無限に
15880 向けて切り詰められる。`@' で始まるこうした数値は、他の日付項目のいかなる
15881 ものとも組み合わせて使うことができない。欠けるところのない完全なタイム
15882 スタンプの指定だからである。
15883
15884    コンピュータの内部では、時間は、ある紀元 (an epoch) -- きちんと定義
15885 された時間中のある一点 -- からの秒数として表現されている。GNU や POSIX
15886 のシステムでは、紀元は 1970-01-01 00:00:00 UTC である。従って、`@0' は
15887 その時刻を表し、`@1' は 1970-01-01 00:00:01 UTC を表す、以下同様と
15888 いうことになる。GNU を始め、POSIX に準拠したほとんどのシステムでは、
15889 POSIX に対する拡張として、こうした時間表記をマイナスの秒数を使うことも
15890 含めて、サポートしている。従って、`@-1' は 1969-12-31 23:59:59 UTC を
15891 表すことになる。
15892
15893    旧来の Unix システムでは、秒を 32 ビットの 2 の補数である整数で
15894 数えており、1901-12-13 20:45:52 から 2038-01-19 03:14:07 UTC まで
15895 表すことができる。もっと新しいシステムでは、64 ビットの秒数計算を、
15896 ナノセコンドのサブカウント付きで使用しており、宇宙の寿命として
15897 知られている時間のうちのあらゆる時刻を 1 ナノセコンドの精密さで表す
15898 ことができる。
15899
15900    ほとんどのホストのこうした計算では、閏秒の存在が無視されている。
15901 たとえば、ほとんどのホストで `@915148799' は 1998-12-31 23:59:59 UTC を
15902 表し、`@915148800' は 1999-01-01 00:00:00 UTC を表している。従って、
15903 間にある 1998-12-31 23:59:60 UTC という閏秒を表現する方法は存在しない。
15904
15905 \1f
15906 File: coreutils-ja.info,  Node: Specifying time zone rules,  Next: Authors of parse_datetime,  Prev: Seconds since the Epoch,  Up: Date input formats
15907
15908 28.10 タイムゾーン・ルールの指定
15909 =============================================
15910
15911 通常、日付の解釈は、現在のタイムゾーンのルールを使って行われる。そして、
15912 その現在のタイムゾーンのルールを指定しているのは、環境変数 `TZ' か、
15913 `TZ' が設定されていなければ、システムのデフォルト設定である。今、
15914 ある一つの日付のみに別のタイムゾーンでデフォルトとして使われる一連の
15915 ルールを適用したいとしよう。その場合は、日付を `TZ="RULE"' という文字列
15916 で始めればよい。日付中では、対になった二重引用符 (`"') で RULE を必ず
15917 囲わなければならない。また、RULE 中に引用符やバックスラッシュが
15918 あるときは、それをバックスラッシュでエスケープしなければならない。
15919
15920    一例を挙げると、GNU の `date' コマンドを使って、「パリで 2004 年 10
15921 月 31 日 午前 6 時 30 分のとき、ニューヨークでは何時か?」という質問に
15922 答えることができる、以下で示すように、`TZ="Europe/Paris"'で始まる
15923 日付を使うのである。
15924
15925      $ export TZ="America/New_York"
15926      $ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
15927      Sun Oct 31 01:30:00 EDT 2004
15928
15929    この例では、`--date' のオペランドの最初の部分で、それ自身の `TZ' が
15930 設定されている。そこで、このオペランドの残りの部分は、`Europe/Paris' の
15931 ルールに従って処理され、`2004-10-31 06:30' という文字列が、パリの日時で
15932 あるかのように扱われる。ところが、`date' コマンドの出力は、全体のタイム
15933 ゾーンのルールに従って処理されるので、出力にはニューヨークの時刻が使用
15934 されるのである。(2004 年には、パリは通常ニューヨークより 6 時間進んで
15935 いた。しかし、この例は、時差が 5 時間だったハロウィーンの日のほんの短い
15936 間のことを言っている。)
15937
15938    `TZ' の値はルールであり、ルールには通常、`tz' データベースの地域名が
15939 付けられている (`http://www.twinsun.com/tz/tz-link.htm')。地域名の最新の
15940 一覧は、TWiki Date and Time Gateway で見ることができる
15941 (`http://twiki.org/cgi-bin/xtra/tzdate')。なお、GNU 以外のホストの中
15942 には、`TZ' を設定するとき、`TZ=":America/New_York"' のように、地域名の
15943 前にコロンを置く必要があるものもある。
15944
15945    `tz' データベースには、`Arctic/Longyearbyen' から `Antarctica/South
15946 _Pole' に至るまで、実にさまざまな地域が含まれている。それでも、目下
15947 航海の最中でタイムゾーンが船特有のものである場合や、`tz' データベースに
15948 対応していない non-GNU のホストを使用している場合は、`tz' データベース
15949 の地域名で表されるルールの代わりに、POSIX 式のルールを使う必要がある
15950 かもしれない。`UTC0' のような POSIX 式の単純なルールだと、夏時間なしの
15951 タイムゾーン指定になるが、簡単な夏時間制度なら指定できる他のルールも
15952 存在する。 *Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
15953
15954 \1f
15955 File: coreutils-ja.info,  Node: Authors of parse_datetime,  Prev: Specifying time zone rules,  Up: Date input formats
15956
15957 28.11 `parse_datetime' の作者
15958 ================================
15959
15960 `parse_datetime' は、`getdate' として誕生した。最初の実装を行ったのは、
15961 Steven M. Bellovin (<smb@research.att.com>) であり、ノースカロライナ大学
15962 チャペルヒル校に在学中のことだった。その後、Usenet 上で数人によって
15963 機能が追加され、1990 年 8 月に Rich $alz (<rsalz@bbn.com>) と Jim Berets
15964 (<jberets@bbn.com>) によって徹底的なオーバーホールがなされた。GNU シス
15965 テムのための様々な改訂は、David MacKenzie, Jim Meyering, Paul Eggert
15966 などによって行われた。ほぼ同様の機能を持つ Posix の `getdate' 関数との
15967 衝突を避けるために `get_date' と名前を変えたのも、この改訂の一部であり、
15968 さらに後に、`parse_datetime' と改名した。Posix の `getdate' 関数は、
15969 `strptime' の使用によりロケール特有の日付の解析に優れているが、環境変数
15970 や外部のファイルに依存しており、`parse_datetime' の持つスレッド安全性
15971 (thread-safety) を欠いている。
15972
15973    この章は、Franc,ois Pinard (<pinard@iro.umontreal.ca>) がソースコード
15974 の `parse_datetime.y' を元にして最初に作成し、その後、K. Berry
15975 (<kb@cs.umb.edu>) が増補改訂した。
15976
15977 \1f
15978 File: coreutils-ja.info,  Node: Opening the software toolbox,  Next: About the translation,  Prev: Date input formats,  Up: Top
15979
15980 29 ソフトウェアの道具箱
15981 *********************************
15982
15983 この章の初期のバージョンは、「GNU とは何か? (`What's GNU?')」という
15984 連載記事として `Linux Journal' 1994 年 6 月号に掲載された。執筆者は
15985 Arnold Robbins である。
15986 (`http://www.linuxjournal.com/article.php?sid=2762')
15987
15988 * Menu:
15989
15990 * Toolbox introduction::     はじめに
15991 * I/O redirection::          I/O リダイレクション
15992 * The who command::          `who' コマンド
15993 * The cut command::          `cut' コマンド
15994 * The sort command::         `sort' コマンド
15995 * The uniq command::         `uniq' コマンド
15996 * Putting the tools together::  工具を組み合わせる
15997
15998 \1f
15999 File: coreutils-ja.info,  Node: Toolbox introduction,  Next: I/O redirection,  Up: Opening the software toolbox
16000
16001 はじめに
16002 ============
16003
16004 今月の記事と GNU プロジェクトの関係は、周辺的なものにすぎない。お手元の
16005 GNU/Linux システムの GNU ツールをいくつか取り上げて、こんな使い方もあり
16006 ますよ、と説明している点で、関係があるにすぎないのだ。今月の記事の真の
16007 狙いは、プログラムを開発したり、使用したりする上での、「ソフトウェアは
16008 工具だ」という考え方を説明することである。
16009
16010    ソフトウェアは工具だという思想は、Unix が最初に設計され、開発された
16011 ときの重要で不可欠な考え方だった (Linux も GNU も本質的には Unix の
16012 クローンである)。残念なことに、最近ではインターネットや見栄えのよい GUI
16013 の勢いに押されて、ソフトウェア工具論は流行らなくなっているようだ。
16014 この思想は、様々な問題を解決するための強力な思考モデルを提供してくれる
16015 のだから、まことに残念な話である。
16016
16017    スイス・アーミーナイフをズボンのポケットに (または、小物入れに)
16018 入れて、持ち歩いている人は多い。スイス・アーミーナイフは持っていると
16019 重宝な道具だ。それには、何本かのナイフ、ねじ回し、ピンセット、つまようじ、
16020 爪やすり、コルク抜き、他にもたぶん、いろいろ付いているだろう。日常の
16021 ちょっとした雑用には、何にでも使える簡単な道具があれば済むのだから、
16022 そうした用途にはまさにピッタリの道具である。
16023
16024    しかしながら、熟練した大工は、スイス・アーミーナイフを使って家を建て
16025 たりしない。彼は、その代わりに道具箱を持っていて、そこには用途別の工具
16026 -- のこぎり、金槌、ねじ回し、鉋など -- がぎっしり詰まっている。しかも、
16027 彼は一つ一つの工具について、いつどこで使えばよいかをきちんと心得ている。
16028 ねじ回しの柄で釘を打ち込んだりすることは絶対にないのだ。
16029
16030    ベル研究所にいた Unix の開発者たちは、プロのプログラマやコンピュー
16031 タ・サイエンスの専門家ばかりだった。その彼らが、こういうことに気づいた
16032 のだ。万能型のプログラムは、たった一つのプログラムを使えばよいので、
16033 ユーザには受けがよいかもしれない。だが、いざ実際に作ってみると、そうした
16034 プログラムは、
16035
16036   a. 書くのが難しく、
16037
16038   b. 保守やデバッグが難しく、
16039
16040   c. 新しい状況に合わせて機能を拡張するのが難しい。
16041
16042    むしろ彼らは、プログラムは用途別の工具であるべきだと痛感した。
16043 要するに、個々のプログラムは、「一つの仕事をきちんとやってのければ
16044 よい」。それ以上でもそれ以下でもない。そういったプログラムは、設計
16045 するのも、コードを書くのも、修正するのも、ずっと簡単である --
16046 たった一つのことしかしないからだ。
16047
16048    それだけではない。適切な仕組みを使って、プログラムを組み合わせると、
16049 全体が部分の総和以上になることにも、彼らは気づいた。ある用途専用の
16050 プログラムをいくつか組み合わせると、どのプログラムもそのために作られた
16051 のではない、ある特定の作業をやってのけることができる。それも、それ専用の
16052 プログラムを書かなければならない場合よりも、はるかに迅速に、かつ簡単に
16053 やってのけられるのだ。この記事の以下では、そうした使用法の (典型的な)
16054 例をいくつか紹介する。(大事なことを一つ付記しておく。急がば回れだ。
16055 必要になるかもしれないソフトウェア工具があれば、まずそれを作ること。
16056 道具箱に適切な工具がまだない場合の話であるが。)
16057
16058 \1f
16059 File: coreutils-ja.info,  Node: I/O redirection,  Next: The who command,  Prev: Toolbox introduction,  Up: Opening the software toolbox
16060
16061 I/O リダイレクション
16062 ============================
16063
16064 シェルの入出力リダイレクションについて、基本的なこと、とくに標準入力、
16065 標準出力、標準エラーがどういうものかを、読者がよく御存じだとして、話を
16066 進める。簡単に言うと、標準入力とは、データの入力元、すなわち、データが
16067 そこからやって来る場所のことだ。データの入力元が、ディスク上のファイル
16068 だろうと、キーボードだろうと、磁気テープだろうと、それどころかパンチ
16069 カード・リーダーだろうと、プログラムはそれを知る必要もなければ、気に
16070 かける必要もない。同様に、標準出力とは、データの溜まる場所、データが
16071 そこに行く場所のことだ。プログラムとしては、それがどこになろうと、知ら
16072 なくてもよく、気にかけなくてもよい。標準入力からデータを読み込み、それに
16073 対して何らかの処理を行い、標準出力に送り出すだけのプログラムを、水道の
16074 パイプラインのフィルターになぞらえて、「フィルター ("filter")」と呼ぶ。
16075
16076    Unix のシェルでは、データのパイプラインを作るのはとてもやさしい。
16077
16078      program_to_create_data | filter1 | ... | filterN > final.pretty.data
16079
16080    ここでは、まず最初に生のデータを作成している。各フィルターがその
16081 データに対して何らかの変形を次々に行い、最終的に、データが希望どおりの
16082 形になって、パイプラインから抜け出してくる。
16083
16084    標準入力と標準出力にとっては、それで十分だ。では、標準エラーはどこ
16085 で登場し、どんな役割を果たすのだろうか? 上記パイプラインの `filter1' に
16086 ついて考えてほしい。データを読んでいるうちにエラーが起きたら、どうなる
16087 だろうか? `filter1' がエラーメッセージを標準出力に書き出したら、その
16088 メッセージはパイプラインを下って `filter2' の入力に飲み込まれてしまう。
16089 そうなると、ユーザはたぶんメッセージをまったく目にしないことになるだろう。
16090 そこで、プログラムとしては、ユーザがエラーメッセージに気がついてくれる
16091 ように、それを送ることのできる場所が必要になる。それが、標準エラー
16092 なのであり、標準エラーは通常、現在使用しているコンソールやウィンドウ
16093 に結びついている。プログラムの標準出力を使用中のスクリーン以外に
16094 リダイレクトしている場合でも、それは変わらない。
16095
16096    フィルター・プログラムが協力し合うためには、データのフォーマットに
16097 ついて互いに合意している必要がある。最も素直で使いやすいフォーマットと
16098 言えば、何と言っても、行分けされたテキストだ。そして、Unix のデータファ
16099 イルは、たいていの場合、まさに、ASCII LF (Line Feed) 文字によって行分け
16100 されたバイトの連続なのである。なお、この LF 文字は、Unix の文書では
16101 「改行 (newline)」と呼ばれる習慣になっている (C のプログラマにとっては
16102 `\n' だ)。これこそ、すべての伝統的なフィルター・プログラムによって使用
16103 されて来たフォーマットである。(昔のオペレーティング・システムの多くは、
16104 バイナリ・データを扱うための複雑な手段や専用のプログラムを備えていた。
16105 だが、Unix は、ただ単にテキストエディタでデータを見たり編集できたり
16106 する方がはるかに簡単だという考えから、そうした道具をずっと敬遠してきた
16107 のである。)
16108
16109    さて、前置きはこれくらいで十分だ。まず、道具のいくつかをざっと見て
16110 みよう。その後で、そうした道具をおもしろいやり方で組み合わせる方法を
16111 ご覧に入れる。以下の解説では、当面の問題に関係のあるコマンドライン・
16112 オプションしか取り上げない。いつでもそうすべきことだが、コマンドについて
16113 詳しいことを知りたかったら、ご使用のシステムの文書を参照なさるとよい。
16114
16115 \1f
16116 File: coreutils-ja.info,  Node: The who command,  Next: The cut command,  Prev: I/O redirection,  Up: Opening the software toolbox
16117
16118 `who' コマンド
16119 ==================
16120
16121 最初に取り上げるプログラムは、`who' コマンドだ。これは単独で使うと、
16122 現在ログインしているユーザのリストを生成する (参照: *note who
16123 invocation::)。 筆者がこの原稿を書いているのは、シングルユーザのシステム
16124 だが、数人のユーザがログインしていることにしよう。
16125
16126      $ who
16127      -| arnold   console Jan 22 19:57
16128      -| miriam   ttyp0   Jan 23 14:19(:0.0)
16129      -| bill     ttyp1   Jan 21 09:32(:0.0)
16130      -| arnold   ttyp2   Jan 23 20:48(:0.0)
16131
16132    ここで `$' はお馴染みのシェルプロンプトであり、筆者はそれに対して
16133 `who' と打ち込んだわけだ。三人のユーザがログインしており、筆者は二度
16134 ログインしている。伝統的な Unix のシステムでは、ユーザ名はアルファベット
16135 8 文字までということになっている。このちょっとした豆知識が、後で役に
16136 立つことになる。`who' の出力は悪くはない。だが、大しておもしろいデータ
16137 でもない。
16138
16139 \1f
16140 File: coreutils-ja.info,  Node: The cut command,  Next: The sort command,  Prev: The who command,  Up: Opening the software toolbox
16141
16142 `cut' コマンド
16143 ==================
16144
16145 次に注目するプログラムは `cut' コマンドだ。このコマンドは、入力された
16146 データから縦の列 (columns) やフィールドを切り出す (参照: *note cut
16147 invocation::)。 そこで、`cut' に命じて、`/etc/passwd' ファイルから
16148 ログイン名とフルネームだけ表示させるといったことができる。`/etc/passwd'
16149 には、七つのフィールドがあり、おのおのコロンで区切られている。
16150
16151      arnold:xyzzy:2076:10:Arnold D. Robbins:/home/arnold:/bin/bash
16152
16153    1 番目と 5 番目のフィールドを取り出すには、次のように `cut' を使用
16154 する。
16155
16156      $ cut -d: -f1,5 /etc/passwd
16157      -| root:Operator
16158      ...
16159      -| arnold:Arnold D. Robbins
16160      -| miriam:Miriam A. Robbins
16161      ...
16162
16163    `-c' オプションを付けると、 `cut' は入力行中の特定の文字 (すなわち、
16164 特定の縦の列) を切り出す。これは、入力データが固定幅のフィールドを持ち、
16165 フィールド・セパレータがないときに便利である。たとえば、今月の月曜日は、
16166 何日と何日かをリストするには、次のようにする。
16167
16168      $ cal | cut -c 3-5
16169      -| Mo
16170      -|
16171      -|  6
16172      -| 13
16173      -| 20
16174      -| 27
16175
16176 \1f
16177 File: coreutils-ja.info,  Node: The sort command,  Next: The uniq command,  Prev: The cut command,  Up: Opening the software toolbox
16178
16179 `sort' コマンド
16180 ===================
16181
16182 次に `sort' コマンドを一瞥する。これは Unix 風のシステムにおける最も
16183 強力なコマンドの一つであり、パイプを使って手の込んだデータ処理を行う
16184 とき、気がつくと使っていることがよくあるものだ。
16185
16186    `sort' コマンドは、コマンドラインで指名された各ファイルを読み込んで、
16187 ソートする。その後で、ソートしたデータをマージし、それを標準出力に書き
16188 出す。コマンドラインでファイルが指定されていない場合は、標準入力を読み
16189 込む (こうして、フィルターになる)。ソートは、文字の照合順序、あるいは、
16190 ユーザが順序について指定した基準に基づいて行われる (参照: *note sort
16191 invocation::)。
16192
16193 \1f
16194 File: coreutils-ja.info,  Node: The uniq command,  Next: Putting the tools together,  Prev: The sort command,  Up: Opening the software toolbox
16195
16196 `uniq' コマンド
16197 ===================
16198
16199 最後に目を向けるのは (少なくとも今のところはだが)、`uniq' プログラムだ。
16200 データのソートをしていると、結果に重複行が現れることがよくある。内容が
16201 全く同じ行だ。たいていの場合、各行は一つだけあればよい。そこで、`uniq'
16202 の出番になる。`uniq' プログラムは、標準入力を読み込み、連続する同一行に
16203 ついては、そのうちの一件だけを表示する。`uniq' には、オプションがいくつ
16204 かある。後で `-c' オプションを使うことになるが、これはユニークな、つまり
16205 他と違っている各行を表示するとき、その行が入力中に現れた回数を前に付ける
16206 ものである (参照: *note uniq invocation::)。
16207
16208 \1f
16209 File: coreutils-ja.info,  Node: Putting the tools together,  Prev: The uniq command,  Up: Opening the software toolbox
16210
16211 工具 (tools) を組み合わせる
16212 ====================================
16213
16214 さて、大規模な ISP のサーバーシステムがあって、何十人ものユーザが
16215 ログインしているとしよう。経営側がシステム管理者に、ログインしている
16216 ユーザのソートしたリストを生成するプログラムを書くことを求めている。
16217 しかも、あるユーザが多重ログインをしていても、その人の名前は出力に 1
16218 回だけ現れればよいという条件がある。
16219
16220    システム管理者は腰を据えてシステムのマニュアル類に取り組み、そうした
16221 作業を実行する C のプログラムを書くこともできるだろう。そのためには、
16222 たぶん数百行のコードが必要であり、プログラムを書いて、テストして、
16223 デバッグするには、2 時間ぐらいかかるはずだ。それに対して、ソフトウェアの
16224 道具箱に精通しているシステム管理者なら、C のプログラムを書く代わりに、
16225 ログインしているユーザのリストを生成するところから始めることができる。
16226
16227      $ who | cut -c1-8
16228      -| arnold
16229      -| miriam
16230      -| bill
16231      -| arnold
16232
16233    次に、リストをソートする。
16234
16235      $ who | cut -c1-8 | sort
16236      -| arnold
16237      -| arnold
16238      -| bill
16239      -| miriam
16240
16241    最後に、ソートしたリストを `uniq' に渡して、重複を除く。
16242
16243      $ who | cut -c1-8 | sort | uniq
16244      -| arnold
16245      -| bill
16246      -| miriam
16247
16248    実を言うと、`sort' コマンドには `-u' というオプションがあって、`uniq'
16249 がやることをやってくれる。しかし、`uniq' にはほかの働きもあり、そちらは
16250 `sort -u' で代用することができない。
16251
16252    システム管理者が、以下のように、このパイプラインをシェルスクリプトに
16253 しておけば、システムのすべてのユーザが利用できるようになる (`#' は
16254 システム管理者、すなわち `root' のプロンプトだ)。
16255
16256      # cat > /usr/local/bin/listusers
16257      who | cut -c1-8 | sort | uniq
16258      ^D
16259      # chmod +x /usr/local/bin/listusers
16260
16261    ここには、心に留めておくべき重要なことが四つある。まず第一に、1 行の
16262 コマンドラインにたった四つのプログラムを書くことで、システム管理者は約
16263 2 時間分の仕事をしないで済ますことができた。それだけではない。シェルの
16264 パイプラインは、C のプログラムを使った場合と比べても、ほぼ同じくらい
16265 効率がよく、プログラマの労働時間という点から見ると、ずっとずっと効率が
16266 よい。人間の労働時間はコンピュータの時間よりはるかに高価であり、「何も
16267 かもやるには、いつだって時間が足りない」現代社会では、プログラマの時間
16268 を 2 時間も節約するのは、馬鹿にできない成果だ。
16269
16270    二番目に、ツールを組み合わせることで、個々のプログラムの作者が想像も
16271 しなかったような、ある特定の目的のための仕事をやってのけることができる。
16272 これも、強調しておくべき重要なことである。
16273
16274    第三に、ここでやって見せたように、段階を追ってパイプラインを構成する
16275 のも有益な方法だ。そうすれば、パイプラインの段階ごとにデータを目で見る
16276 ことができるので、ツール類を間違いなく適切に使っているという自信を得る
16277 ことができる。
16278
16279    最後に、実行したパイプラインをシェルスクリプトにまとめておけば、
16280 他のユーザがそのコマンドを使うことができる。彼らのために作成した
16281 手の込んだコマンドの配管工事を、彼らは憶える必要すらないのだ。どう
16282 やって実行するかという点から見ると、シェルスクリプトもコンパイル
16283 されたプログラムも見分けが付かないのである。
16284
16285    ここまでは準備運動だ。続いて、もっと複雑なパイプラインをもう二つ
16286 ご覧に入れよう。そのためには、工具をもう二つ紹介する必要がある。
16287
16288    一つ目は `tr' コマンドだ。"transliterate (翻字する、字を置き換える)"
16289 の意味である。 `tr' コマンドは、一字一字処理して行くというやり方で、
16290 文字を置き換える (参照: *note tr invocation::)。通常、このコマンドを使用
16291 するのは、大文字を小文字に変換するといったことのためである。
16292
16293      $ echo ThIs ExAmPlE HaS MIXED case! | tr '[:upper:]' '[:lower:]'
16294      -| this example has mixed case!
16295
16296    役に立ちそうなオプションがいくつかある。
16297
16298 `-c'
16299      リストされた文字の補集合を動作対象にする。言い換えると、指定された
16300      集合に存在しない文字に対して操作が行われる。
16301
16302 `-d'
16303      一つ目の集合にある文字を出力から削除する。
16304
16305 `-s'
16306      出力中の連続する同一文字を、ただの 1 文字に圧縮する。
16307
16308    すぐ後で、この三つのオプションをすべて使うことになる。
16309
16310    紹介するもう一つのコマンドは、`comm' だ。`comm' コマンドは、二つの
16311 ソートされた入力ファイルを入力データとして受け取り、両ファイルの各行を
16312 三つの列に分けて表示する。出力される列は、一番目のファイルにのみ存在
16313 する行、二番目のファイルにのみ存在する行、両方のファイルに存在する行の
16314 順番である。`-1', `-2', `-3' というコマンドライン・オプションを
16315 付けると、対応する列を表示しないようになる。 (これは直感的ではないので、
16316 ちょっとした慣れが必要だ。参照: *note comm invocation::) 例を挙げよう。
16317
16318      $ cat f1
16319      -| 11111
16320      -| 22222
16321      -| 33333
16322      -| 44444
16323      $ cat f2
16324      -| 00000
16325      -| 22222
16326      -| 33333
16327      -| 55555
16328      $ comm f1 f2
16329      -|         00000
16330      -| 11111
16331      -|                 22222
16332      -|                 33333
16333      -| 44444
16334      -|         55555
16335
16336    ファイル名を `-' にすると、`comm' は通常ファイルではなく、標準入力を
16337 読み込む。
16338
16339    これで、気の利いたパイプラインを組み立てる準備ができた。最初に作る
16340 アプリケーションは、単語の出現頻度カウンターである。これは、ある特定の
16341 単語を使いすぎていないかどうか、文書の作成者が判断するとき、役に立つ。
16342
16343    最初のステップは、入力ファイル中のすべての文字を大文字か小文字の
16344 どちらかに統一することである。"The" と "the" は、頻度計算にとって同じ
16345 単語だ。
16346
16347      $ tr '[:upper:]' '[:lower:]' < whats.gnu | ...
16348
16349    次のステップは、句読点を除去することだ。引用符の付いている単語と
16350 付いていない単語も同じものとして扱った方がよいだろう。それならば、
16351 句読点類をすっぱり取り除いてしまうのが、一番簡単だ。
16352
16353      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' | ...
16354
16355    二番目の `tr' コマンドは、リストされた文字の補集合を操作対象にして
16356 いる。すなわち、アルファベットのすべての文字、数字、アンダースコア、空白
16357 以外を対象にするわけだ。`\n' は改行文字のことであり、これもそのまま残さ
16358 なければならない。(市販のアプリで使うスクリプトなら、念のため ASCII タブ
16359 文字も含めた方がよいだろう。)
16360
16361    この時点で、空白 (訳注: 改行を含む) で区切られた単語からなるデータが
16362 できていることになる。単語には、英数字 (それにアンダースコア) しか含まれ
16363 ていない。次のステップは、データをバラして、1 行 1 単語になるようにする
16364 ことだ。そうすれば、すぐ後で見るように、出現回数の計算がずっと楽になる。
16365
16366      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16367      > tr -s ' ' '\n' | ...
16368
16369    このコマンドは、空白を改行に変える。`-s' オプションが付いているので、
16370 出力中の連続する改行文字は、たった 1 個に圧縮される。これで、空行を
16371 なくすことができるわけだ。(なお、2 行目行頭の `>' という記号は、シェル
16372 の二次プロンプトである。シェルがユーザに、コマンドがまだ最後まで打ち
16373 込まれていないと知らせるとき、これが表示される。)
16374
16375    今や、1 行 1 単語からなるデータが手元にある。句読点は含まれず、すべて
16376 小文字だ。これで、各単語の出現回数を数える準備が整った。
16377
16378      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16379      > tr -s ' ' '\n' | sort | uniq -c | ...
16380
16381    この時点で、データはたぶんこんなふうになっているだろう。
16382
16383           60 a
16384            2 able
16385            6 about
16386            1 above
16387            2 accomplish
16388            1 acquire
16389            1 actually
16390            2 additional
16391
16392    なんと、出力が出現回数ではなく、単語によってソートされている! こちら
16393 としては、最も頻繁に使われる単語ほど先に表示したいのにだ。幸いなことに、
16394 それは簡単に実現できる。`sort' のオプションをもう二つ使うだけでよい。
16395
16396 `-n'
16397      文字としてではなく、数値としてソートする。
16398
16399 `-r'
16400      逆順にソートする。
16401
16402    最終的なパイプラインは次のようになる。
16403
16404      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16405      > tr -s ' ' '\n' | sort | uniq -c | sort -n -r
16406      -|    156 the
16407      -|     60 a
16408      -|     58 to
16409      -|     51 of
16410      -|     51 and
16411      ...
16412
16413    ふう、憶えることがどっさり! うん、でもね、同じ原則を応用してるだけ
16414 なんだよ。たった 2 行、6 個のコマンドで (実際には、長い 1 行を便宜上 2
16415 行に分割しているだけだが) 興味深く有用な作業をするプログラムが
16416 出来上がった。それも、同じこことする C のプログラムを書くよりもずっと
16417 短い時間でだ。
16418
16419    上記のパイプラインをちょっといじるだけで、なんと、簡単なスペル
16420 チェッカーが出来てしまう。ある単語の綴りが正しいかどうかを判断するには、
16421 辞書で調べさえすればよい。その単語が辞書になければ、綴りを間違えている
16422 可能性が高いわけだ。そこで、とりあえず、辞書が必要になる。辞書の在り処
16423 は、慣例からすると `/usr/dict/words' だ。筆者の GNU/Linux システムでは
16424 (1)、それはソートされた 45,402 語からなる辞書である。
16425
16426    それでは、自分の作ったファイルをどうやって辞書と比べるのか? 前の例と
16427 同様、ソートした単語のリストを 1 行 1 語の形式で生成する。
16428
16429      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16430      > tr -s ' ' '\n' | sort -u | ...
16431
16432    必要なのは、辞書にない単語のリストだけだ。そこで、`comm' の出番に
16433 なる。
16434
16435      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16436      > tr -s ' ' '\n' | sort -u |
16437      > comm -23 - /usr/dict/words
16438
16439    `-2' と `-3' のオプションを使うと、辞書 (2 番目のファイル) にしかない
16440 行と、両方のファイルにある行が排除される。1 番目のファイル (標準入力、
16441 すなわち、自分が使った単語のリストだ) にしかない行は、辞書に存在しない
16442 単語だ。そうした単語は、綴りを間違えている可能性がかなり高いわけである。
16443 ご覧に入れたこのパイプラインは、Unix における市販のスペルチェッカーに
16444 対する最初の一太刀だったのである。
16445
16446    他にも一言述べておくべきツールがいくつかある。
16447
16448 `grep'
16449      ファイルを調べて、正規表現にマッチするテキストを検索する。
16450
16451 `wc'
16452      行数、単語数、文字数を計算する。
16453
16454 `tee'
16455      データが流れるパイプのための T 字管。データをファイルと標準出力に
16456      コピーする。
16457
16458 `sed'
16459      ストリーム・エディタ。上級ツール。
16460
16461 `awk'
16462      データ処理用の言語。これも上級ツール。
16463
16464    ソフトウェア工具論が取り入れたものに、次のちょっとしたアドバイスも
16465 ある。「骨の折れる部分は、他の奴にやらせろ」。すなわち、ある道具を
16466 選んで、必要なことの大部分をやらせ、それから、その結果に手を加えて、
16467 こちらの望む形にする、ということである。
16468
16469    要約しておこう。
16470
16471   1. 個々のプログラムは、一つの仕事をきちんとやってのければよい。それ
16472      以上でもそれ以下でもない。
16473
16474   2. プログラムを適切な配管工事で組み合わせると、全体が部分の総和以上に
16475      なる結果が生じる。作者が想像もしなかったようなプログラムの新しい
16476      使用法が見つかることもある。
16477
16478   3. プログラムは決して余計なヘッダや追加情報を出力すべきではない。
16479      そうしたものもパイプラインの先へ送られてしまうかもしれないからだ。
16480      (これは、これまでに言及しなかったが、重要なことだ。)
16481
16482   4. 骨の折れる部分は、他の奴にやらせろ。
16483
16484   5. 自分の道具箱をよく知れ! 個々のプログラムを適切に使え。適切なツール
16485      がなかったら、それを作れ。
16486
16487    これを執筆している時点で、ここで取り上げたプログラムはすべて次の URL
16488 から手に入れることができる。
16489 `http://ftp.gnu.org/old-gnu/textutils/textutils-1.22.tar.gz'
16490 もっと新しいバージョンは以下の場所にある。
16491 `http://ftp.gnu.org/gnu/coreutils'
16492
16493    この記事で筆者が述べたことに、新しいことは何もない。ソフトウェアは
16494 工具だという思想が最初に紹介されたのは、Brian Kernighan と P.J. Plauger
16495 による `Software Tools' という本の中だった (Addison-Wesley, ISBN
16496 0-201-03669-X)。ソフトウェア工具の書き方と使い方を教えるこの本は、1976
16497 年に執筆され、`ratfor' (RATional FORtran) という名前の FORTRAN のプリ
16498 プロセッサを使用している。その当時、C は今ほどありふれてはいず、FORTRAN
16499 がそうだったのだ。最後の章では、`ratfor' を FORTRAN に変換するプロセッサ
16500 を `ratfor' で書いて見せている。`ratfor' は C にとてもよく似ているので、
16501 C を御存じの方なら、コードを追うのに何の苦労もないことだろう。 (訳注:
16502 `Software Tools' の翻訳は「ソフトウェア作法」という題で 1981 年に
16503 出版されている。木村泉 訳、共立出版)
16504
16505    1981 年に本は改訂され、`Software Tools in Pascal' という形でも手に
16506 入るようになった (Addison-Wesley, ISBN 0-201-10342-7)。どちらの本も
16507 現在でも入手可能であり、プログラマなら、一読の価値が十分にある。この 2
16508 冊の本が筆者のプログラミングに対する見方を大きく変えてくれたことに、
16509 疑いの余地はない。
16510
16511    両方の本にあるプログラムは、Brian Kernighan のホームページから手に
16512 入れることができる (`http://cm.bell-labs.com/who/bwk')。Software Tools
16513 Users Group という活動的なグループが長年に渡って存在し、そのメンバーが
16514 オリジナルの `ratfor' プログラムを、FORTRAN コンパイラを持っている
16515 ほとんどすべてのコンピュータ・システムに移植していた。だが、1980 年代の
16516 中頃に Unix が大学を越えて浸透し出すにつれて、グループの人気は衰えて
16517 行った。
16518
16519    現在では GNU のコードをはじめ、Unix クローンのプログラムがどんどん
16520 作られており、上記のプログラムはほとんど関心を持たれていない。それに、
16521 現代の C のバージョンの方がはるかに効率がよく、できることも上記の
16522 プログラムよりずっと多くなっている。それでも、よいプログラミング・
16523 スタイルのお手本として、また、今でも価値がある考え方を熱心に説いている
16524 点において、この 2 冊の本は肩を並べるものがない。筆者としては、大いに
16525 お薦めする次第だ。
16526
16527    謝辞: ソフトウェア工具の最初の道具鍛冶である、Bell 研究所の Brian
16528 Kernighan 氏に、この記事を読んでチェックしてくださったことについて、
16529 心からお礼を申し上げる。
16530
16531    ---------- Footnotes ----------
16532
16533    (1) この記事を 2000 年 11 月に改訂したとき使用したのは、Redhat Linux
16534 6.1 である
16535
16536 \1f
16537 File: coreutils-ja.info,  Node: About the translation,  Next: GNU Free Documentation License,  Prev: Opening the software toolbox,  Up: Top
16538
16539 Appendix A 翻訳について
16540 *****************************
16541
16542 この文書は GNU core utilities version 8.22 の info マニュアルの翻訳
16543 である。間違いの御指摘や改良の御提案は Linux JM project 宛にメールで
16544 なさっていただきたい (<linuxjm-discuss@lists.osdn.me>)。
16545
16546    まず最初に、coreutils の日本語版 info マニュアルの呼び出し方を簡単に
16547 説明する。coreutils の 日本語版 info が install-info コマンドを使って
16548 きちんとシステムにインストールされているならば、コマンドラインから
16549 `info coreutils-ja' で日本語マニュアル全体を、`info chmod-ja' などで
16550 個々のプログラムの日本語マニュアルを呼び出すことができる。英語版を
16551 読むときは、今までどおり `info coreutils' や `info chmod' とすればよい。
16552 個々のコマンドについては、英語版なら `info coreutils 'cp invocation''、
16553 日本語版なら `info coreutils-ja 'cp invocation'' といったマニュアルの
16554 呼び出し方もある。
16555
16556    (注意: ご使用の coreutils のバージョンが 8.23 の場合は、info
16557 マニュアルのトップレベルのメニューに、Coreutils というメニュー項目
16558 (英語版 coreutils マニュアルの最初のページ) のほかに、 coreutils
16559 という小文字のメニュー項目もあるので、話がもう少し複雑である。英語版
16560 coreutils マニュアルの最初のページを info コマンドで開くときは、 `info
16561 Coreutils' と大文字で指定していただきたい。また、 `info coreutils 'cp
16562 invocation'' といった呼び出し方をする場合も、 `info Coreutils 'cp
16563 invocation'' などと Coreutils を大文字にする必要がある。 バージョン
16564 8.22 には、英語版、日本語版とも、この問題はない。)
16565
16566    また、`info' を引数なしで実行すると、info マニュアルのトップレベルの
16567 メニューが開く。ここで、メニュー項目にカーソルを合わせて、リターンキーを
16568 押せば、その項目に飛ぶ。しかし、読みたい項目をキー操作で指定する方が簡単
16569 である。たとえば、`m' キーを押した後 `chmod-ja' と打ち込んで、リターン
16570 キーを押せば、chmod コマンドの日本語版マニュアルが、`chmod' だけなら
16571 英語版マニュアルが表示される。
16572
16573    `coreutils-ja'、`chmod-ja' などと `-ja' を付けるのは、`info'
16574 プログラムを起動するときと、info のトップレベル・メニューにいるとき
16575 だけである。すでに日本語版 coreutils マニュアルのどれかを (それが
16576 coreutils-ja であれ、dd-ja であれ) `info' コマンドで開いている場合は、
16577 `-ja' を後ろに付ける必要がなくなる。と言うより、付けてはいけない。
16578 coreutils-ja の先頭ページのようにコマンドのメニューが存在するページ
16579 では (実際には、スクロールしないと、メニューが見えないが)、たとえば、
16580 `m' に続けて `chmod' と打ち込み、リターンキーを押すだけで、chmod の
16581 日本語の説明が開く。また、日本語 coreutils マニュアルの任意のページ
16582 から coreutils-ja の他のノードへ直接飛ぶ場合も (ノードは、ほぼ章や節に
16583 相当する)、`g' キーを押してから、`chmod invocation' などとノード名を
16584 打ち込み、リターンキーを押せばよい。`m' の場合はタブやスペースで、 `g'
16585 の場合はタブで、文字列の補完ができる。(たぶん coreutils-ja.info の
16586 パッケージには、README.ja というファイルが含まれていると思う。その
16587 「2.1 日本語 info マニュアルの呼び出し方」という節にもう少し詳しい
16588 説明を書いておいたので、ご覧になっていただきたい。)
16589
16590    ここで、日本語の info マニュアルを使用するときの問題点を挙げておく。
16591
16592   1. `info' コマンドは、日本語の行末表示が上手ではない。そのため、
16593      行末に余計な文字が入ることがある。そうしたときは、`C-l' を押して
16594      (Ctrl と l (エル) キーを同時に押す)、画面の再描画を行っていただき
16595      たい。表示が正常になるはずである。Emacs の info リーダーでは、この
16596      問題はめったに起きない。
16597
16598   2. 現在のところ、`info' コマンドでは、`s' や `/' で日本語の単語を検索
16599      できないようだ。`C-s' による日本語の検索は、単語によっては成功する
16600      こともあるが、"Unknown command" で失敗することもあり、これもあまり
16601      頼りにならない。それに対して、Emacs の info リーダーでは、`s' でも
16602      `C-s' でも日本語の検索ができる。
16603
16604   3. coreutils の info のこの翻訳では、インデックスの日本語化まで手が
16605      回らなかった。そのため、インデックスは英語のままである。
16606
16607   4. 古めの Emacs でこの翻訳を読もうとすると、文字化けするかもしれない。
16608      回避法があるのかもしれないが、訳者にはわからなかった。
16609
16610    この翻訳の最初の版は、coreutils-8.20 所収の texinfo ファイルを元に、
16611 Linux JM project のために訳者が新たに翻訳したものだった。以下に、
16612 そのときの後書きをほぼそのまま載せておく。
16613
16614    この info マニュアルの原文は、本文の「序」でも述べているように、
16615 各プログラムの man ページを統合し、増補・改訂したものである。この info
16616 マニュアルがまとめられるにともない、公式の man ページの方はコマンドの
16617 `--help' オプションで見ることができるものとほぼ同文の、簡単な内容の
16618 ものになった。
16619
16620    従来どおりの詳しい man ページを希望する人たちも存在した。そのために
16621 作られたのが、gnumaniak の man ページであり、従来の man ページを info
16622 の情報で増補したものだったが、現在では保守されていないようだ。
16623
16624    作成の経緯がそうしたものなので、この info マニュアルの原文には、
16625 gnumaniak の man ページの原文とほとんど内容が同じものがある。翻訳作業
16626 に当たっては、すべての項目について gnumaniak の man ページの翻訳を
16627 参考にした。あちらの訳文の方がよくできている項目もある (gnumaniak の
16628 翻訳は `http://linuxjm.osdn.jp/html/gnumaniak/man1/' にある)。
16629
16630    この翻訳は、Linux JM project の gnumaniak の翻訳に多くを負っている。
16631 そこで、まず、gnumaniak の翻訳者の方々 -- 中野武雄、佐藤裕一、
16632 白方健太郎、Kazuyuki Tanisako、Omo Kazuki の諸氏にお礼を申し上げる。
16633
16634    訳文を見直す際には、西尾太さんが以前翻訳なさった coreutils-5.2.1 の
16635 info を参考にした。また、当然ながら、新しい man ページ (こちらの
16636 翻訳者は、たぶん Yasuaki Taniguchi さんと Akihiro MOTOKI さん) とも、
16637 できるだけ突き合わせた。西尾さん、Taniguchi さん、元木さんにもお礼を
16638 申し上げる。
16639
16640    gnumaniak や coreutils の man や info の翻訳をなさった方で、私が
16641 お名前を挙げ忘れた方がいらっしゃるかもしれない。お知らせくだされば、
16642 追加訂正する。
16643
16644    訳文には間違った箇所がたくさんあると思う。そのへんは、ご寛恕いただき
16645 たい。皆さんがこの訳文を叩き台にして、増補・改訂・改訳を続け、より
16646 新しく、よりわかりやすい、そして、より正確な coreutils の翻訳を作って
16647 くだされば、最初の翻訳者としてそれにまさる喜びはない。
16648
16649    2014-10-07 訳者
16650
16651    [翻訳履歴]
16652
16653    * 2014-03-15
16654      coreutils-8.20 を翻訳    by 長南洋一
16655      ptx, tsort, chcon, runcon は未訳
16656
16657    * 2014-11-25
16658      coreutils-8.22 を元に増補・改訂    by 長南洋一
16659      numfmt, ptx, tsort, chcon, runcon を翻訳
16660
16661    * 2015-10-09
16662      numfmt の章の構成を修正。訳文の訂正と細かい変更    by 長南洋一
16663
16664 \1f
16665 File: coreutils-ja.info,  Node: GNU Free Documentation License,  Next: Concept index,  Prev: About the translation,  Up: Top
16666
16667 Appendix B GNU Free Documentation License
16668 *****************************************
16669
16670                      Version 1.3, 3 November 2008
16671
16672      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
16673      `http://fsf.org/'
16674
16675      Everyone is permitted to copy and distribute verbatim copies
16676      of this license document, but changing it is not allowed.
16677
16678   0. PREAMBLE
16679
16680      The purpose of this License is to make a manual, textbook, or other
16681      functional and useful document "free" in the sense of freedom: to
16682      assure everyone the effective freedom to copy and redistribute it,
16683      with or without modifying it, either commercially or
16684      noncommercially.  Secondarily, this License preserves for the
16685      author and publisher a way to get credit for their work, while not
16686      being considered responsible for modifications made by others.
16687
16688      This License is a kind of "copyleft", which means that derivative
16689      works of the document must themselves be free in the same sense.
16690      It complements the GNU General Public License, which is a copyleft
16691      license designed for free software.
16692
16693      We have designed this License in order to use it for manuals for
16694      free software, because free software needs free documentation: a
16695      free program should come with manuals providing the same freedoms
16696      that the software does.  But this License is not limited to
16697      software manuals; it can be used for any textual work, regardless
16698      of subject matter or whether it is published as a printed book.
16699      We recommend this License principally for works whose purpose is
16700      instruction or reference.
16701
16702   1. APPLICABILITY AND DEFINITIONS
16703
16704      This License applies to any manual or other work, in any medium,
16705      that contains a notice placed by the copyright holder saying it
16706      can be distributed under the terms of this License.  Such a notice
16707      grants a world-wide, royalty-free license, unlimited in duration,
16708      to use that work under the conditions stated herein.  The
16709      "Document", below, refers to any such manual or work.  Any member
16710      of the public is a licensee, and is addressed as "you".  You
16711      accept the license if you copy, modify or distribute the work in a
16712      way requiring permission under copyright law.
16713
16714      A "Modified Version" of the Document means any work containing the
16715      Document or a portion of it, either copied verbatim, or with
16716      modifications and/or translated into another language.
16717
16718      A "Secondary Section" is a named appendix or a front-matter section
16719      of the Document that deals exclusively with the relationship of the
16720      publishers or authors of the Document to the Document's overall
16721      subject (or to related matters) and contains nothing that could
16722      fall directly within that overall subject.  (Thus, if the Document
16723      is in part a textbook of mathematics, a Secondary Section may not
16724      explain any mathematics.)  The relationship could be a matter of
16725      historical connection with the subject or with related matters, or
16726      of legal, commercial, philosophical, ethical or political position
16727      regarding them.
16728
16729      The "Invariant Sections" are certain Secondary Sections whose
16730      titles are designated, as being those of Invariant Sections, in
16731      the notice that says that the Document is released under this
16732      License.  If a section does not fit the above definition of
16733      Secondary then it is not allowed to be designated as Invariant.
16734      The Document may contain zero Invariant Sections.  If the Document
16735      does not identify any Invariant Sections then there are none.
16736
16737      The "Cover Texts" are certain short passages of text that are
16738      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
16739      that says that the Document is released under this License.  A
16740      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
16741      be at most 25 words.
16742
16743      A "Transparent" copy of the Document means a machine-readable copy,
16744      represented in a format whose specification is available to the
16745      general public, that is suitable for revising the document
16746      straightforwardly with generic text editors or (for images
16747      composed of pixels) generic paint programs or (for drawings) some
16748      widely available drawing editor, and that is suitable for input to
16749      text formatters or for automatic translation to a variety of
16750      formats suitable for input to text formatters.  A copy made in an
16751      otherwise Transparent file format whose markup, or absence of
16752      markup, has been arranged to thwart or discourage subsequent
16753      modification by readers is not Transparent.  An image format is
16754      not Transparent if used for any substantial amount of text.  A
16755      copy that is not "Transparent" is called "Opaque".
16756
16757      Examples of suitable formats for Transparent copies include plain
16758      ASCII without markup, Texinfo input format, LaTeX input format,
16759      SGML or XML using a publicly available DTD, and
16760      standard-conforming simple HTML, PostScript or PDF designed for
16761      human modification.  Examples of transparent image formats include
16762      PNG, XCF and JPG.  Opaque formats include proprietary formats that
16763      can be read and edited only by proprietary word processors, SGML or
16764      XML for which the DTD and/or processing tools are not generally
16765      available, and the machine-generated HTML, PostScript or PDF
16766      produced by some word processors for output purposes only.
16767
16768      The "Title Page" means, for a printed book, the title page itself,
16769      plus such following pages as are needed to hold, legibly, the
16770      material this License requires to appear in the title page.  For
16771      works in formats which do not have any title page as such, "Title
16772      Page" means the text near the most prominent appearance of the
16773      work's title, preceding the beginning of the body of the text.
16774
16775      The "publisher" means any person or entity that distributes copies
16776      of the Document to the public.
16777
16778      A section "Entitled XYZ" means a named subunit of the Document
16779      whose title either is precisely XYZ or contains XYZ in parentheses
16780      following text that translates XYZ in another language.  (Here XYZ
16781      stands for a specific section name mentioned below, such as
16782      "Acknowledgements", "Dedications", "Endorsements", or "History".)
16783      To "Preserve the Title" of such a section when you modify the
16784      Document means that it remains a section "Entitled XYZ" according
16785      to this definition.
16786
16787      The Document may include Warranty Disclaimers next to the notice
16788      which states that this License applies to the Document.  These
16789      Warranty Disclaimers are considered to be included by reference in
16790      this License, but only as regards disclaiming warranties: any other
16791      implication that these Warranty Disclaimers may have is void and
16792      has no effect on the meaning of this License.
16793
16794   2. VERBATIM COPYING
16795
16796      You may copy and distribute the Document in any medium, either
16797      commercially or noncommercially, provided that this License, the
16798      copyright notices, and the license notice saying this License
16799      applies to the Document are reproduced in all copies, and that you
16800      add no other conditions whatsoever to those of this License.  You
16801      may not use technical measures to obstruct or control the reading
16802      or further copying of the copies you make or distribute.  However,
16803      you may accept compensation in exchange for copies.  If you
16804      distribute a large enough number of copies you must also follow
16805      the conditions in section 3.
16806
16807      You may also lend copies, under the same conditions stated above,
16808      and you may publicly display copies.
16809
16810   3. COPYING IN QUANTITY
16811
16812      If you publish printed copies (or copies in media that commonly
16813      have printed covers) of the Document, numbering more than 100, and
16814      the Document's license notice requires Cover Texts, you must
16815      enclose the copies in covers that carry, clearly and legibly, all
16816      these Cover Texts: Front-Cover Texts on the front cover, and
16817      Back-Cover Texts on the back cover.  Both covers must also clearly
16818      and legibly identify you as the publisher of these copies.  The
16819      front cover must present the full title with all words of the
16820      title equally prominent and visible.  You may add other material
16821      on the covers in addition.  Copying with changes limited to the
16822      covers, as long as they preserve the title of the Document and
16823      satisfy these conditions, can be treated as verbatim copying in
16824      other respects.
16825
16826      If the required texts for either cover are too voluminous to fit
16827      legibly, you should put the first ones listed (as many as fit
16828      reasonably) on the actual cover, and continue the rest onto
16829      adjacent pages.
16830
16831      If you publish or distribute Opaque copies of the Document
16832      numbering more than 100, you must either include a
16833      machine-readable Transparent copy along with each Opaque copy, or
16834      state in or with each Opaque copy a computer-network location from
16835      which the general network-using public has access to download
16836      using public-standard network protocols a complete Transparent
16837      copy of the Document, free of added material.  If you use the
16838      latter option, you must take reasonably prudent steps, when you
16839      begin distribution of Opaque copies in quantity, to ensure that
16840      this Transparent copy will remain thus accessible at the stated
16841      location until at least one year after the last time you
16842      distribute an Opaque copy (directly or through your agents or
16843      retailers) of that edition to the public.
16844
16845      It is requested, but not required, that you contact the authors of
16846      the Document well before redistributing any large number of
16847      copies, to give them a chance to provide you with an updated
16848      version of the Document.
16849
16850   4. MODIFICATIONS
16851
16852      You may copy and distribute a Modified Version of the Document
16853      under the conditions of sections 2 and 3 above, provided that you
16854      release the Modified Version under precisely this License, with
16855      the Modified Version filling the role of the Document, thus
16856      licensing distribution and modification of the Modified Version to
16857      whoever possesses a copy of it.  In addition, you must do these
16858      things in the Modified Version:
16859
16860        A. Use in the Title Page (and on the covers, if any) a title
16861           distinct from that of the Document, and from those of
16862           previous versions (which should, if there were any, be listed
16863           in the History section of the Document).  You may use the
16864           same title as a previous version if the original publisher of
16865           that version gives permission.
16866
16867        B. List on the Title Page, as authors, one or more persons or
16868           entities responsible for authorship of the modifications in
16869           the Modified Version, together with at least five of the
16870           principal authors of the Document (all of its principal
16871           authors, if it has fewer than five), unless they release you
16872           from this requirement.
16873
16874        C. State on the Title page the name of the publisher of the
16875           Modified Version, as the publisher.
16876
16877        D. Preserve all the copyright notices of the Document.
16878
16879        E. Add an appropriate copyright notice for your modifications
16880           adjacent to the other copyright notices.
16881
16882        F. Include, immediately after the copyright notices, a license
16883           notice giving the public permission to use the Modified
16884           Version under the terms of this License, in the form shown in
16885           the Addendum below.
16886
16887        G. Preserve in that license notice the full lists of Invariant
16888           Sections and required Cover Texts given in the Document's
16889           license notice.
16890
16891        H. Include an unaltered copy of this License.
16892
16893        I. Preserve the section Entitled "History", Preserve its Title,
16894           and add to it an item stating at least the title, year, new
16895           authors, and publisher of the Modified Version as given on
16896           the Title Page.  If there is no section Entitled "History" in
16897           the Document, create one stating the title, year, authors,
16898           and publisher of the Document as given on its Title Page,
16899           then add an item describing the Modified Version as stated in
16900           the previous sentence.
16901
16902        J. Preserve the network location, if any, given in the Document
16903           for public access to a Transparent copy of the Document, and
16904           likewise the network locations given in the Document for
16905           previous versions it was based on.  These may be placed in
16906           the "History" section.  You may omit a network location for a
16907           work that was published at least four years before the
16908           Document itself, or if the original publisher of the version
16909           it refers to gives permission.
16910
16911        K. For any section Entitled "Acknowledgements" or "Dedications",
16912           Preserve the Title of the section, and preserve in the
16913           section all the substance and tone of each of the contributor
16914           acknowledgements and/or dedications given therein.
16915
16916        L. Preserve all the Invariant Sections of the Document,
16917           unaltered in their text and in their titles.  Section numbers
16918           or the equivalent are not considered part of the section
16919           titles.
16920
16921        M. Delete any section Entitled "Endorsements".  Such a section
16922           may not be included in the Modified Version.
16923
16924        N. Do not retitle any existing section to be Entitled
16925           "Endorsements" or to conflict in title with any Invariant
16926           Section.
16927
16928        O. Preserve any Warranty Disclaimers.
16929
16930      If the Modified Version includes new front-matter sections or
16931      appendices that qualify as Secondary Sections and contain no
16932      material copied from the Document, you may at your option
16933      designate some or all of these sections as invariant.  To do this,
16934      add their titles to the list of Invariant Sections in the Modified
16935      Version's license notice.  These titles must be distinct from any
16936      other section titles.
16937
16938      You may add a section Entitled "Endorsements", provided it contains
16939      nothing but endorsements of your Modified Version by various
16940      parties--for example, statements of peer review or that the text
16941      has been approved by an organization as the authoritative
16942      definition of a standard.
16943
16944      You may add a passage of up to five words as a Front-Cover Text,
16945      and a passage of up to 25 words as a Back-Cover Text, to the end
16946      of the list of Cover Texts in the Modified Version.  Only one
16947      passage of Front-Cover Text and one of Back-Cover Text may be
16948      added by (or through arrangements made by) any one entity.  If the
16949      Document already includes a cover text for the same cover,
16950      previously added by you or by arrangement made by the same entity
16951      you are acting on behalf of, you may not add another; but you may
16952      replace the old one, on explicit permission from the previous
16953      publisher that added the old one.
16954
16955      The author(s) and publisher(s) of the Document do not by this
16956      License give permission to use their names for publicity for or to
16957      assert or imply endorsement of any Modified Version.
16958
16959   5. COMBINING DOCUMENTS
16960
16961      You may combine the Document with other documents released under
16962      this License, under the terms defined in section 4 above for
16963      modified versions, provided that you include in the combination
16964      all of the Invariant Sections of all of the original documents,
16965      unmodified, and list them all as Invariant Sections of your
16966      combined work in its license notice, and that you preserve all
16967      their Warranty Disclaimers.
16968
16969      The combined work need only contain one copy of this License, and
16970      multiple identical Invariant Sections may be replaced with a single
16971      copy.  If there are multiple Invariant Sections with the same name
16972      but different contents, make the title of each such section unique
16973      by adding at the end of it, in parentheses, the name of the
16974      original author or publisher of that section if known, or else a
16975      unique number.  Make the same adjustment to the section titles in
16976      the list of Invariant Sections in the license notice of the
16977      combined work.
16978
16979      In the combination, you must combine any sections Entitled
16980      "History" in the various original documents, forming one section
16981      Entitled "History"; likewise combine any sections Entitled
16982      "Acknowledgements", and any sections Entitled "Dedications".  You
16983      must delete all sections Entitled "Endorsements."
16984
16985   6. COLLECTIONS OF DOCUMENTS
16986
16987      You may make a collection consisting of the Document and other
16988      documents released under this License, and replace the individual
16989      copies of this License in the various documents with a single copy
16990      that is included in the collection, provided that you follow the
16991      rules of this License for verbatim copying of each of the
16992      documents in all other respects.
16993
16994      You may extract a single document from such a collection, and
16995      distribute it individually under this License, provided you insert
16996      a copy of this License into the extracted document, and follow
16997      this License in all other respects regarding verbatim copying of
16998      that document.
16999
17000   7. AGGREGATION WITH INDEPENDENT WORKS
17001
17002      A compilation of the Document or its derivatives with other
17003      separate and independent documents or works, in or on a volume of
17004      a storage or distribution medium, is called an "aggregate" if the
17005      copyright resulting from the compilation is not used to limit the
17006      legal rights of the compilation's users beyond what the individual
17007      works permit.  When the Document is included in an aggregate, this
17008      License does not apply to the other works in the aggregate which
17009      are not themselves derivative works of the Document.
17010
17011      If the Cover Text requirement of section 3 is applicable to these
17012      copies of the Document, then if the Document is less than one half
17013      of the entire aggregate, the Document's Cover Texts may be placed
17014      on covers that bracket the Document within the aggregate, or the
17015      electronic equivalent of covers if the Document is in electronic
17016      form.  Otherwise they must appear on printed covers that bracket
17017      the whole aggregate.
17018
17019   8. TRANSLATION
17020
17021      Translation is considered a kind of modification, so you may
17022      distribute translations of the Document under the terms of section
17023      4.  Replacing Invariant Sections with translations requires special
17024      permission from their copyright holders, but you may include
17025      translations of some or all Invariant Sections in addition to the
17026      original versions of these Invariant Sections.  You may include a
17027      translation of this License, and all the license notices in the
17028      Document, and any Warranty Disclaimers, provided that you also
17029      include the original English version of this License and the
17030      original versions of those notices and disclaimers.  In case of a
17031      disagreement between the translation and the original version of
17032      this License or a notice or disclaimer, the original version will
17033      prevail.
17034
17035      If a section in the Document is Entitled "Acknowledgements",
17036      "Dedications", or "History", the requirement (section 4) to
17037      Preserve its Title (section 1) will typically require changing the
17038      actual title.
17039
17040   9. TERMINATION
17041
17042      You may not copy, modify, sublicense, or distribute the Document
17043      except as expressly provided under this License.  Any attempt
17044      otherwise to copy, modify, sublicense, or distribute it is void,
17045      and will automatically terminate your rights under this License.
17046
17047      However, if you cease all violation of this License, then your
17048      license from a particular copyright holder is reinstated (a)
17049      provisionally, unless and until the copyright holder explicitly
17050      and finally terminates your license, and (b) permanently, if the
17051      copyright holder fails to notify you of the violation by some
17052      reasonable means prior to 60 days after the cessation.
17053
17054      Moreover, your license from a particular copyright holder is
17055      reinstated permanently if the copyright holder notifies you of the
17056      violation by some reasonable means, this is the first time you have
17057      received notice of violation of this License (for any work) from
17058      that copyright holder, and you cure the violation prior to 30 days
17059      after your receipt of the notice.
17060
17061      Termination of your rights under this section does not terminate
17062      the licenses of parties who have received copies or rights from
17063      you under this License.  If your rights have been terminated and
17064      not permanently reinstated, receipt of a copy of some or all of
17065      the same material does not give you any rights to use it.
17066
17067  10. FUTURE REVISIONS OF THIS LICENSE
17068
17069      The Free Software Foundation may publish new, revised versions of
17070      the GNU Free Documentation License from time to time.  Such new
17071      versions will be similar in spirit to the present version, but may
17072      differ in detail to address new problems or concerns.  See
17073      `http://www.gnu.org/copyleft/'.
17074
17075      Each version of the License is given a distinguishing version
17076      number.  If the Document specifies that a particular numbered
17077      version of this License "or any later version" applies to it, you
17078      have the option of following the terms and conditions either of
17079      that specified version or of any later version that has been
17080      published (not as a draft) by the Free Software Foundation.  If
17081      the Document does not specify a version number of this License,
17082      you may choose any version ever published (not as a draft) by the
17083      Free Software Foundation.  If the Document specifies that a proxy
17084      can decide which future versions of this License can be used, that
17085      proxy's public statement of acceptance of a version permanently
17086      authorizes you to choose that version for the Document.
17087
17088  11. RELICENSING
17089
17090      "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
17091      World Wide Web server that publishes copyrightable works and also
17092      provides prominent facilities for anybody to edit those works.  A
17093      public wiki that anybody can edit is an example of such a server.
17094      A "Massive Multiauthor Collaboration" (or "MMC") contained in the
17095      site means any set of copyrightable works thus published on the MMC
17096      site.
17097
17098      "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
17099      license published by Creative Commons Corporation, a not-for-profit
17100      corporation with a principal place of business in San Francisco,
17101      California, as well as future copyleft versions of that license
17102      published by that same organization.
17103
17104      "Incorporate" means to publish or republish a Document, in whole or
17105      in part, as part of another Document.
17106
17107      An MMC is "eligible for relicensing" if it is licensed under this
17108      License, and if all works that were first published under this
17109      License somewhere other than this MMC, and subsequently
17110      incorporated in whole or in part into the MMC, (1) had no cover
17111      texts or invariant sections, and (2) were thus incorporated prior
17112      to November 1, 2008.
17113
17114      The operator of an MMC Site may republish an MMC contained in the
17115      site under CC-BY-SA on the same site at any time before August 1,
17116      2009, provided the MMC is eligible for relicensing.
17117
17118
17119 ADDENDUM: How to use this License for your documents
17120 ====================================================
17121
17122 To use this License in a document you have written, include a copy of
17123 the License in the document and put the following copyright and license
17124 notices just after the title page:
17125
17126        Copyright (C)  YEAR  YOUR NAME.
17127        Permission is granted to copy, distribute and/or modify this document
17128        under the terms of the GNU Free Documentation License, Version 1.3
17129        or any later version published by the Free Software Foundation;
17130        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
17131        Texts.  A copy of the license is included in the section entitled ``GNU
17132        Free Documentation License''.
17133
17134    If you have Invariant Sections, Front-Cover Texts and Back-Cover
17135 Texts, replace the "with...Texts." line with this:
17136
17137          with the Invariant Sections being LIST THEIR TITLES, with
17138          the Front-Cover Texts being LIST, and with the Back-Cover Texts
17139          being LIST.
17140
17141    If you have Invariant Sections without Cover Texts, or some other
17142 combination of the three, merge those two alternatives to suit the
17143 situation.
17144
17145    If your document contains nontrivial examples of program code, we
17146 recommend releasing these examples in parallel under your choice of
17147 free software license, such as the GNU General Public License, to
17148 permit their use in free software.
17149
17150 \1f
17151 File: coreutils-ja.info,  Node: Concept index,  Prev: GNU Free Documentation License,  Up: Top
17152
17153 Index
17154 *****
17155
17156 \0\b[index\0\b]
17157 * Menu:
17158
17159 * !:                                     Connectives for test.
17160                                                               (line   9)
17161 * !=:                                    String tests.        (line  28)
17162 * %:                                     Numeric expressions. (line  15)
17163 * %b:                                    printf invocation.   (line  42)
17164 * &:                                     Relations for expr.  (line  17)
17165 * *:                                     Numeric expressions. (line  15)
17166 * + <1>:                                 Numeric expressions. (line  11)
17167 * +:                                     String expressions.  (line  52)
17168 * +PAGE_RANGE:                           pr invocation.       (line  45)
17169 * - <1>:                                 env invocation.      (line 101)
17170 * -:                                     Numeric expressions. (line  11)
17171 * - and Unix rm:                         rm invocation.       (line 130)
17172 * -, removing files beginning with:      rm invocation.       (line 117)
17173 * --:                                    Common options.      (line  46)
17174 * --across:                              pr invocation.       (line  71)
17175 * --additional-suffix:                   split invocation.    (line 138)
17176 * --address-radix:                       od invocation.       (line  44)
17177 * --adjustment:                          nice invocation.     (line  57)
17178 * --all <1>:                             uname invocation.    (line  38)
17179 * --all <2>:                             nproc invocation.    (line  20)
17180 * --all <3>:                             who invocation.      (line  37)
17181 * --all <4>:                             stty invocation.     (line  29)
17182 * --all <5>:                             du invocation.       (line  34)
17183 * --all <6>:                             df invocation.       (line  61)
17184 * --all <7>:                             Which files are listed.
17185                                                               (line  14)
17186 * --all:                                 unexpand invocation. (line  52)
17187 * --all-repeated:                        uniq invocation.     (line  73)
17188 * --almost-all:                          Which files are listed.
17189                                                               (line  19)
17190 * --apparent-size:                       du invocation.       (line  37)
17191 * --append:                              tee invocation.      (line  27)
17192 * --archive:                             cp invocation.       (line  80)
17193 * --attributes-only:                     cp invocation.       (line  89)
17194 * --author:                              What information is listed.
17195                                                               (line  10)
17196 * --backup <1>:                          ln invocation.       (line  96)
17197 * --backup <2>:                          mv invocation.       (line  67)
17198 * --backup <3>:                          install invocation.  (line  46)
17199 * --backup <4>:                          cp invocation.       (line  96)
17200 * --backup:                              Backup options.      (line  14)
17201 * --batch-size:                          sort invocation.     (line 291)
17202 * --before:                              tac invocation.      (line  23)
17203 * --binary:                              md5sum invocation.   (line  43)
17204 * --block-size <1>:                      du invocation.       (line  55)
17205 * --block-size <2>:                      df invocation.       (line  68)
17206 * --block-size:                          Block size.          (line 151)
17207 * --block-size=SIZE:                     Block size.          (line  12)
17208 * --body-numbering:                      nl invocation.       (line  49)
17209 * --boot:                                who invocation.      (line  41)
17210 * --bourne-shell:                        dircolors invocation.
17211                                                               (line  36)
17212 * --buffer-size:                         sort invocation.     (line 353)
17213 * --bytes <1>:                           du invocation.       (line  61)
17214 * --bytes <2>:                           cut invocation.      (line  31)
17215 * --bytes <3>:                           wc invocation.       (line  47)
17216 * --bytes <4>:                           split invocation.    (line  47)
17217 * --bytes <5>:                           tail invocation.     (line  34)
17218 * --bytes <6>:                           head invocation.     (line  26)
17219 * --bytes:                               fold invocation.     (line  27)
17220 * --c-shell:                             dircolors invocation.
17221                                                               (line  43)
17222 * --canonicalize:                        readlink invocation. (line  28)
17223 * --canonicalize-existing <1>:           realpath invocation. (line  20)
17224 * --canonicalize-existing:               readlink invocation. (line  35)
17225 * --canonicalize-missing <1>:            realpath invocation. (line  28)
17226 * --canonicalize-missing:                readlink invocation. (line  42)
17227 * --changes <1>:                         chmod invocation.    (line  45)
17228 * --changes <2>:                         chgrp invocation.    (line  23)
17229 * --changes:                             chown invocation.    (line  74)
17230 * --characters:                          cut invocation.      (line  39)
17231 * --chars:                               wc invocation.       (line  51)
17232 * --check:                               sort invocation.     (line  23)
17233 * --check-chars:                         uniq invocation.     (line 144)
17234 * --classify:                            General output formatting.
17235                                                               (line  55)
17236 * --color:                               General output formatting.
17237                                                               (line  22)
17238 * --columns:                             pr invocation.       (line  56)
17239 * --compare:                             install invocation.  (line  51)
17240 * --complement:                          cut invocation.      (line  89)
17241 * --compute:                             runcon invocation.   (line  30)
17242 * --context <1>:                         id invocation.       (line  52)
17243 * --context <2>:                         mknod invocation.    (line  63)
17244 * --context <3>:                         mkfifo invocation.   (line  32)
17245 * --context <4>:                         mkdir invocation.    (line  58)
17246 * --context <5>:                         mv invocation.       (line 126)
17247 * --context <6>:                         install invocation.  (line 154)
17248 * --context <7>:                         cp invocation.       (line 435)
17249 * --context:                             What information is listed.
17250                                                               (line 281)
17251 * --count <1>:                           who invocation.      (line  72)
17252 * --count:                               uniq invocation.     (line  59)
17253 * --count-links:                         du invocation.       (line 134)
17254 * --crown-margin:                        fmt invocation.      (line  39)
17255 * --csh:                                 dircolors invocation.
17256                                                               (line  43)
17257 * --date <1>:                            Options for date.    (line  11)
17258 * --date:                                touch invocation.    (line  97)
17259 * --dead:                                who invocation.      (line  45)
17260 * --debug:                               General options in numfmt.
17261                                                               (line  10)
17262 * --decode:                              base64 invocation.   (line  33)
17263 * --delimiter <1>:                       cut invocation.      (line  69)
17264 * --delimiter:                           General options in numfmt.
17265                                                               (line  15)
17266 * --delimiters:                          paste invocation.    (line  62)
17267 * --dereference <1>:                     chcon invocation.    (line  23)
17268 * --dereference <2>:                     stat invocation.     (line  26)
17269 * --dereference <3>:                     du invocation.       (line 129)
17270 * --dereference <4>:                     chgrp invocation.    (line  33)
17271 * --dereference <5>:                     chown invocation.    (line 109)
17272 * --dereference <6>:                     cp invocation.       (line 175)
17273 * --dereference:                         Which files are listed.
17274                                                               (line  90)
17275 * --dereference-args:                    du invocation.       (line  71)
17276 * --dereference-command-line:            Which files are listed.
17277                                                               (line  39)
17278 * --dereference-command-line-symlink-to-dir: Which files are listed.
17279                                                               (line  43)
17280 * --dictionary-order:                    sort invocation.     (line 100)
17281 * --digits:                              csplit invocation.   (line  85)
17282 * --dir:                                 rm invocation.       (line  40)
17283 * --directory <1>:                       mktemp invocation.   (line  95)
17284 * --directory <2>:                       ln invocation.       (line 102)
17285 * --directory <3>:                       install invocation.  (line  77)
17286 * --directory:                           Which files are listed.
17287                                                               (line  30)
17288 * --dired:                               What information is listed.
17289                                                               (line  17)
17290 * --double-space:                        pr invocation.       (line  84)
17291 * --dry-run:                             mktemp invocation.   (line 107)
17292 * --echo:                                shuf invocation.     (line  21)
17293 * --elide-empty-files <1>:               csplit invocation.   (line 102)
17294 * --elide-empty-files:                   split invocation.    (line 143)
17295 * --error:                               stdbuf invocation.   (line  36)
17296 * --escape:                              Formatting the file names.
17297                                                               (line  11)
17298 * --exact:                               shred invocation.    (line 164)
17299 * --exclude-from=FILE:                   du invocation.       (line 284)
17300 * --exclude-type:                        df invocation.       (line 257)
17301 * --exclude=PATTERN:                     du invocation.       (line 289)
17302 * --expand-tabs:                         pr invocation.       (line 108)
17303 * --field:                               General options in numfmt.
17304                                                               (line  20)
17305 * --field-separator:                     sort invocation.     (line 370)
17306 * --fields:                              cut invocation.      (line  48)
17307 * --file <1>:                            Options for date.    (line  26)
17308 * --file:                                stty invocation.     (line  34)
17309 * --file-system:                         stat invocation.     (line  33)
17310 * --file-type:                           General output formatting.
17311                                                               (line  67)
17312 * --files0-from=FILE <1>:                du invocation.       (line  86)
17313 * --files0-from=FILE <2>:                sort invocation.     (line 247)
17314 * --files0-from=FILE:                    wc invocation.       (line  66)
17315 * --filter:                              split invocation.    (line  68)
17316 * --first-line-number:                   pr invocation.       (line 186)
17317 * --follow:                              tail invocation.     (line  51)
17318 * --footer-numbering:                    nl invocation.       (line  78)
17319 * --force <1>:                           ln invocation.       (line 108)
17320 * --force <2>:                           shred invocation.    (line 114)
17321 * --force <3>:                           rm invocation.       (line  44)
17322 * --force <4>:                           mv invocation.       (line  72)
17323 * --force:                               cp invocation.       (line 138)
17324 * --foreground:                          timeout invocation.  (line  26)
17325 * --form-feed:                           pr invocation.       (line 116)
17326 * --format <1>:                          General output formatting.
17327                                                               (line  10)
17328 * --format <2>:                          What information is listed.
17329                                                               (line 138)
17330 * --format <3>:                          General options in numfmt.
17331                                                               (line  23)
17332 * --format:                              od invocation.       (line  94)
17333 * --format=FORMAT <1>:                   seq invocation.      (line  28)
17334 * --format=FORMAT:                       stat invocation.     (line  39)
17335 * --from <1>:                            chown invocation.    (line  83)
17336 * --from:                                General options in numfmt.
17337                                                               (line  33)
17338 * --from-unit:                           General options in numfmt.
17339                                                               (line  42)
17340 * --full-time:                           What information is listed.
17341                                                               (line 107)
17342 * --general-numeric-sort:                sort invocation.     (line 123)
17343 * --goal:                                fmt invocation.      (line  69)
17344 * --group <1>:                           id invocation.       (line  30)
17345 * --group <2>:                           install invocation.  (line  84)
17346 * --group:                               uniq invocation.     (line 107)
17347 * --group-directories-first:             Which files are listed.
17348                                                               (line  53)
17349 * --grouping:                            General options in numfmt.
17350                                                               (line  49)
17351 * --groups <1>:                          chroot invocation.   (line  36)
17352 * --groups:                              id invocation.       (line  34)
17353 * --hardware-platform:                   uname invocation.    (line  43)
17354 * --head-count:                          shuf invocation.     (line  34)
17355 * --header <1>:                          join invocation.     (line 101)
17356 * --header <2>:                          pr invocation.       (line 122)
17357 * --header:                              General options in numfmt.
17358                                                               (line  55)
17359 * --header-numbering:                    nl invocation.       (line  82)
17360 * --header=N:                            General options in numfmt.
17361                                                               (line  55)
17362 * --heading:                             who invocation.      (line  49)
17363 * --help:                                Common options.      (line  40)
17364 * --hide-control-chars:                  Formatting the file names.
17365                                                               (line  24)
17366 * --hide=PATTERN:                        Which files are listed.
17367                                                               (line  61)
17368 * --human-numeric-sort:                  sort invocation.     (line 146)
17369 * --human-readable <1>:                  du invocation.       (line 106)
17370 * --human-readable <2>:                  df invocation.       (line  86)
17371 * --human-readable <3>:                  What information is listed.
17372                                                               (line 122)
17373 * --human-readable:                      Block size.          (line 151)
17374 * --ignore:                              nproc invocation.    (line  26)
17375 * --ignore-backups:                      Which files are listed.
17376                                                               (line  25)
17377 * --ignore-case <1>:                     join invocation.     (line 110)
17378 * --ignore-case <2>:                     uniq invocation.     (line  63)
17379 * --ignore-case:                         sort invocation.     (line 107)
17380 * --ignore-environment:                  env invocation.      (line 101)
17381 * --ignore-fail-on-non-empty:            rmdir invocation.    (line  19)
17382 * --ignore-garbage:                      base64 invocation.   (line  40)
17383 * --ignore-interrupts:                   tee invocation.      (line  32)
17384 * --ignore-leading-blanks:               sort invocation.     (line  91)
17385 * --ignore-nonprinting:                  sort invocation.     (line 166)
17386 * --ignore=PATTERN:                      Which files are listed.
17387                                                               (line  75)
17388 * --indent:                              pr invocation.       (line 191)
17389 * --indicator-style:                     General output formatting.
17390                                                               (line  55)
17391 * --initial:                             expand invocation.   (line  37)
17392 * --inode:                               What information is listed.
17393                                                               (line 130)
17394 * --inodes <1>:                          du invocation.       (line 113)
17395 * --inodes:                              df invocation.       (line  97)
17396 * --input:                               stdbuf invocation.   (line  28)
17397 * --input-range:                         shuf invocation.     (line  25)
17398 * --interactive <1>:                     ln invocation.       (line 113)
17399 * --interactive <2>:                     rm invocation.       (line  61)
17400 * --interactive <3>:                     mv invocation.       (line  78)
17401 * --interactive:                         cp invocation.       (line 163)
17402 * --invalid:                             General options in numfmt.
17403                                                               (line  58)
17404 * --io-blocks:                           truncate invocation. (line  29)
17405 * --iso-8601[=TIMESPEC]:                 Options for date.    (line  34)
17406 * --iterations=NUMBER:                   shred invocation.    (line 119)
17407 * --join-blank-lines:                    nl invocation.       (line  90)
17408 * --join-lines:                          pr invocation.       (line 135)
17409 * --keep-files:                          csplit invocation.   (line  90)
17410 * --kernel-name:                         uname invocation.    (line  74)
17411 * --kernel-release:                      uname invocation.    (line  70)
17412 * --kernel-version:                      uname invocation.    (line  85)
17413 * --key:                                 sort invocation.     (line 264)
17414 * --kibibytes:                           General output formatting.
17415                                                               (line  93)
17416 * --kill-after:                          timeout invocation.  (line  43)
17417 * --length:                              pr invocation.       (line 145)
17418 * --line-bytes:                          split invocation.    (line  62)
17419 * --line-increment:                      nl invocation.       (line  86)
17420 * --lines <1>:                           wc invocation.       (line  59)
17421 * --lines <2>:                           split invocation.    (line  39)
17422 * --lines <3>:                           tail invocation.     (line 182)
17423 * --lines:                               head invocation.     (line  43)
17424 * --link:                                cp invocation.       (line 170)
17425 * --literal:                             Formatting the file names.
17426                                                               (line  18)
17427 * --local:                               df invocation.       (line 109)
17428 * --logical <1>:                         pwd invocation.      (line  17)
17429 * --logical <2>:                         realpath invocation. (line  33)
17430 * --logical:                             ln invocation.       (line 118)
17431 * --login:                               who invocation.      (line  53)
17432 * --lookup:                              who invocation.      (line  57)
17433 * --machine:                             uname invocation.    (line  50)
17434 * --max-depth=DEPTH:                     du invocation.       (line  78)
17435 * --max-line-length:                     wc invocation.       (line  63)
17436 * --max-unchanged-stats:                 tail invocation.     (line 170)
17437 * --merge <1>:                           sort invocation.     (line  39)
17438 * --merge:                               pr invocation.       (line 151)
17439 * --mesg:                                who invocation.      (line  98)
17440 * --message:                             who invocation.      (line  98)
17441 * --mode <1>:                            mknod invocation.    (line  56)
17442 * --mode <2>:                            mkfifo invocation.   (line  24)
17443 * --mode <3>:                            mkdir invocation.    (line  22)
17444 * --mode:                                install invocation.  (line  90)
17445 * --month-sort:                          sort invocation.     (line 174)
17446 * --multiple:                            basename invocation. (line  35)
17447 * --name:                                id invocation.       (line  38)
17448 * --no-clobber <1>:                      mv invocation.       (line  86)
17449 * --no-clobber:                          cp invocation.       (line 183)
17450 * --no-create <1>:                       truncate invocation. (line  25)
17451 * --no-create:                           touch invocation.    (line  93)
17452 * --no-dereference <1>:                  chcon invocation.    (line  28)
17453 * --no-dereference <2>:                  du invocation.       (line 144)
17454 * --no-dereference <3>:                  touch invocation.    (line 111)
17455 * --no-dereference <4>:                  chgrp invocation.    (line  38)
17456 * --no-dereference <5>:                  chown invocation.    (line 114)
17457 * --no-dereference <6>:                  ln invocation.       (line 125)
17458 * --no-dereference:                      cp invocation.       (line 189)
17459 * --no-file-warnings:                    pr invocation.       (line 198)
17460 * --no-group:                            What information is listed.
17461                                                               (line 116)
17462 * --no-newline:                          readlink invocation. (line  48)
17463 * --no-preserve-root <1>:                chcon invocation.    (line  45)
17464 * --no-preserve-root <2>:                chmod invocation.    (line  60)
17465 * --no-preserve-root <3>:                chgrp invocation.    (line  53)
17466 * --no-preserve-root <4>:                chown invocation.    (line 129)
17467 * --no-preserve-root:                    rm invocation.       (line 103)
17468 * --no-renumber:                         nl invocation.       (line 110)
17469 * --no-symlinks:                         realpath invocation. (line  57)
17470 * --no-sync:                             df invocation.       (line 113)
17471 * --no-target-directory <1>:             ln invocation.       (line 203)
17472 * --no-target-directory <2>:             mv invocation.       (line 121)
17473 * --no-target-directory <3>:             install invocation.  (line 145)
17474 * --no-target-directory <4>:             cp invocation.       (line 405)
17475 * --no-target-directory:                 Target directory.    (line  15)
17476 * --nodename:                            uname invocation.    (line  55)
17477 * --null <1>:                            env invocation.      (line  90)
17478 * --null <2>:                            printenv invocation. (line  21)
17479 * --null:                                du invocation.       (line  28)
17480 * --number <1>:                          split invocation.    (line  86)
17481 * --number:                              cat invocation.      (line  33)
17482 * --number-format:                       nl invocation.       (line  97)
17483 * --number-lines:                        pr invocation.       (line 166)
17484 * --number-nonblank:                     cat invocation.      (line  22)
17485 * --number-separator:                    nl invocation.       (line 114)
17486 * --number-width:                        nl invocation.       (line 123)
17487 * --numeric-sort:                        sort invocation.     (line 185)
17488 * --numeric-suffixes:                    split invocation.    (line 130)
17489 * --numeric-uid-gid:                     What information is listed.
17490                                                               (line 246)
17491 * --omit-header:                         pr invocation.       (line 226)
17492 * --omit-pagination:                     pr invocation.       (line 238)
17493 * --one-file-system <1>:                 du invocation.       (line 295)
17494 * --one-file-system <2>:                 rm invocation.       (line  74)
17495 * --one-file-system:                     cp invocation.       (line 429)
17496 * --only-delimited:                      cut invocation.      (line  77)
17497 * --operating-system:                    uname invocation.    (line  66)
17498 * --output <1>:                          stdbuf invocation.   (line  32)
17499 * --output <2>:                          df invocation.       (line 121)
17500 * --output <3>:                          shuf invocation.     (line  39)
17501 * --output:                              sort invocation.     (line 318)
17502 * --output-delimiter:                    cut invocation.      (line  82)
17503 * --output-duplicates:                   od invocation.       (line 165)
17504 * --output-tabs:                         pr invocation.       (line 128)
17505 * --owner:                               install invocation.  (line 103)
17506 * --padding:                             General options in numfmt.
17507                                                               (line  67)
17508 * --page_width:                          pr invocation.       (line 257)
17509 * --pages=PAGE_RANGE:                    pr invocation.       (line  45)
17510 * --parallel:                            sort invocation.     (line 399)
17511 * --parents <1>:                         rmdir invocation.    (line  24)
17512 * --parents <2>:                         mkdir invocation.    (line  36)
17513 * --parents:                             cp invocation.       (line 284)
17514 * --physical <1>:                        pwd invocation.      (line  24)
17515 * --physical <2>:                        realpath invocation. (line  43)
17516 * --physical:                            ln invocation.       (line 147)
17517 * --pid:                                 tail invocation.     (line 147)
17518 * --portability <1>:                     pathchk invocation.  (line  50)
17519 * --portability:                         df invocation.       (line 187)
17520 * --prefix:                              csplit invocation.   (line  66)
17521 * --preserve:                            cp invocation.       (line 197)
17522 * --preserve-context:                    install invocation.  (line 109)
17523 * --preserve-root <1>:                   chcon invocation.    (line  40)
17524 * --preserve-root <2>:                   chmod invocation.    (line  55)
17525 * --preserve-root <3>:                   chgrp invocation.    (line  48)
17526 * --preserve-root <4>:                   chown invocation.    (line 124)
17527 * --preserve-root:                       rm invocation.       (line  92)
17528 * --preserve-status:                     timeout invocation.  (line  20)
17529 * --preserve-timestamps:                 install invocation.  (line 116)
17530 * --print-database:                      dircolors invocation.
17531                                                               (line  48)
17532 * --print-type:                          df invocation.       (line 230)
17533 * --printf=FORMAT:                       stat invocation.     (line  48)
17534 * --process:                             who invocation.      (line  67)
17535 * --processor:                           uname invocation.    (line  59)
17536 * --quiet <1>:                           tty invocation.      (line  19)
17537 * --quiet <2>:                           realpath invocation. (line  52)
17538 * --quiet <3>:                           mktemp invocation.   (line 102)
17539 * --quiet <4>:                           chmod invocation.    (line  51)
17540 * --quiet <5>:                           chgrp invocation.    (line  29)
17541 * --quiet <6>:                           chown invocation.    (line  80)
17542 * --quiet <7>:                           readlink invocation. (line  56)
17543 * --quiet <8>:                           md5sum invocation.   (line  79)
17544 * --quiet <9>:                           csplit invocation.   (line 113)
17545 * --quiet <10>:                          tail invocation.     (line 189)
17546 * --quiet:                               head invocation.     (line  50)
17547 * --quote-name:                          Formatting the file names.
17548                                                               (line  30)
17549 * --quoting-style:                       Formatting the file names.
17550                                                               (line  11)
17551 * --random-sort:                         sort invocation.     (line 215)
17552 * --random-source <1>:                   shred invocation.    (line 125)
17553 * --random-source <2>:                   shuf invocation.     (line  45)
17554 * --random-source:                       sort invocation.     (line 334)
17555 * --range <1>:                           runcon invocation.   (line  47)
17556 * --range:                               chcon invocation.    (line  82)
17557 * --read-bytes:                          od invocation.       (line  80)
17558 * --real:                                id invocation.       (line  43)
17559 * --recursive <1>:                       chcon invocation.    (line  37)
17560 * --recursive <2>:                       chmod invocation.    (line  76)
17561 * --recursive <3>:                       chgrp invocation.    (line  71)
17562 * --recursive <4>:                       chown invocation.    (line 148)
17563 * --recursive <5>:                       rm invocation.       (line 110)
17564 * --recursive <6>:                       cp invocation.       (line 298)
17565 * --recursive:                           Which files are listed.
17566                                                               (line  98)
17567 * --reference <1>:                       chcon invocation.    (line  32)
17568 * --reference <2>:                       Options for date.    (line  57)
17569 * --reference <3>:                       truncate invocation. (line  33)
17570 * --reference <4>:                       touch invocation.    (line 132)
17571 * --reference <5>:                       chmod invocation.    (line  69)
17572 * --reference <6>:                       chgrp invocation.    (line  57)
17573 * --reference:                           chown invocation.    (line 133)
17574 * --reflink[=WHEN]:                      cp invocation.       (line 314)
17575 * --regex:                               tac invocation.      (line  28)
17576 * --relative:                            ln invocation.       (line 159)
17577 * --relative-base:                       realpath invocation. (line  73)
17578 * --relative-to:                         realpath invocation. (line  68)
17579 * --remove:                              shred invocation.    (line 138)
17580 * --remove-destination:                  cp invocation.       (line 342)
17581 * --remove=unlink:                       shred invocation.    (line 138)
17582 * --remove=wipe:                         shred invocation.    (line 138)
17583 * --remove=wipesync:                     shred invocation.    (line 138)
17584 * --repeat:                              shuf invocation.     (line  51)
17585 * --repeated:                            uniq invocation.     (line  67)
17586 * --retry:                               tail invocation.     (line 116)
17587 * --reverse <1>:                         Sorting the output.  (line  28)
17588 * --reverse:                             sort invocation.     (line 209)
17589 * --rfc-2822:                            Options for date.    (line  63)
17590 * --rfc-3339=TIMESPEC:                   Options for date.    (line  75)
17591 * --rfc-822:                             Options for date.    (line  63)
17592 * --role <1>:                            runcon invocation.   (line  39)
17593 * --role:                                chcon invocation.    (line  74)
17594 * --round:                               General options in numfmt.
17595                                                               (line  75)
17596 * --round=down:                          General options in numfmt.
17597                                                               (line  75)
17598 * --round=from-zero:                     General options in numfmt.
17599                                                               (line  75)
17600 * --round=nearest:                       General options in numfmt.
17601                                                               (line  75)
17602 * --round=towards-zero:                  General options in numfmt.
17603                                                               (line  75)
17604 * --round=up:                            General options in numfmt.
17605                                                               (line  75)
17606 * --runlevel:                            who invocation.      (line  77)
17607 * --save:                                stty invocation.     (line  47)
17608 * --section-delimiter:                   nl invocation.       (line  71)
17609 * --sep-string:                          pr invocation.       (line 214)
17610 * --separate-dirs:                       du invocation.       (line 149)
17611 * --separator <1>:                       pr invocation.       (line 203)
17612 * --separator:                           tac invocation.      (line  32)
17613 * --serial:                              paste invocation.    (line  52)
17614 * --set:                                 Options for date.    (line 105)
17615 * --sh:                                  dircolors invocation.
17616                                                               (line  36)
17617 * --show-all:                            cat invocation.      (line  18)
17618 * --show-control-chars <1>:              Formatting the file names.
17619                                                               (line  83)
17620 * --show-control-chars:                  pr invocation.       (line  78)
17621 * --show-ends:                           cat invocation.      (line  29)
17622 * --show-nonprinting <1>:                pr invocation.       (line 243)
17623 * --show-nonprinting:                    cat invocation.      (line  53)
17624 * --show-tabs:                           cat invocation.      (line  46)
17625 * --si <1>:                              du invocation.       (line 157)
17626 * --si <2>:                              df invocation.       (line 207)
17627 * --si <3>:                              What information is listed.
17628                                                               (line 273)
17629 * --si:                                  Block size.          (line 151)
17630 * --signal:                              timeout invocation.  (line  50)
17631 * --silent <1>:                          tty invocation.      (line  19)
17632 * --silent <2>:                          chmod invocation.    (line  51)
17633 * --silent <3>:                          chgrp invocation.    (line  29)
17634 * --silent <4>:                          chown invocation.    (line  80)
17635 * --silent <5>:                          readlink invocation. (line  56)
17636 * --silent <6>:                          csplit invocation.   (line 113)
17637 * --silent <7>:                          tail invocation.     (line 189)
17638 * --silent:                              head invocation.     (line  50)
17639 * --size <1>:                            truncate invocation. (line  37)
17640 * --size:                                What information is listed.
17641                                                               (line 256)
17642 * --size=BYTES:                          shred invocation.    (line 131)
17643 * --skip-bytes:                          od invocation.       (line  63)
17644 * --skip-chars:                          uniq invocation.     (line  43)
17645 * --skip-fields:                         uniq invocation.     (line  33)
17646 * --sleep-interval:                      tail invocation.     (line 135)
17647 * --sort <1>:                            Sorting the output.  (line  34)
17648 * --sort:                                sort invocation.     (line 123)
17649 * --spaces:                              fold invocation.     (line  33)
17650 * --sparse=WHEN:                         cp invocation.       (line 346)
17651 * --split-only:                          fmt invocation.      (line  52)
17652 * --squeeze-blank:                       cat invocation.      (line  38)
17653 * --stable:                              sort invocation.     (line 340)
17654 * --starting-line-number:                nl invocation.       (line 119)
17655 * --status:                              md5sum invocation.   (line  88)
17656 * --strict:                              md5sum invocation.   (line 126)
17657 * --strings:                             od invocation.       (line  85)
17658 * --strip <1>:                           realpath invocation. (line  57)
17659 * --strip:                               install invocation.  (line 126)
17660 * --strip-program:                       install invocation.  (line 130)
17661 * --strip-trailing-slashes <1>:          mv invocation.       (line 106)
17662 * --strip-trailing-slashes:              cp invocation.       (line 382)
17663 * --suffix <1>:                          mktemp invocation.   (line 126)
17664 * --suffix <2>:                          basename invocation. (line  41)
17665 * --suffix <3>:                          ln invocation.       (line 193)
17666 * --suffix <4>:                          mv invocation.       (line 111)
17667 * --suffix <5>:                          install invocation.  (line 135)
17668 * --suffix <6>:                          cp invocation.       (line 395)
17669 * --suffix <7>:                          csplit invocation.   (line  70)
17670 * --suffix <8>:                          General options in numfmt.
17671                                                               (line  82)
17672 * --suffix:                              Backup options.      (line  54)
17673 * --suffix-length:                       split invocation.    (line 121)
17674 * --summarize:                           du invocation.       (line 165)
17675 * --suppress-matched:                    csplit invocation.   (line  93)
17676 * --symbolic:                            ln invocation.       (line 187)
17677 * --symbolic-link:                       cp invocation.       (line 387)
17678 * --sync:                                df invocation.       (line 214)
17679 * --sysv:                                sum invocation.      (line  34)
17680 * --tabs <1>:                            unexpand invocation. (line  28)
17681 * --tabs:                                expand invocation.   (line  24)
17682 * --tabsize:                             General output formatting.
17683                                                               (line 121)
17684 * --tag:                                 md5sum invocation.   (line  99)
17685 * --tagged-paragraph:                    fmt invocation.      (line  45)
17686 * --target-directory <1>:                ln invocation.       (line 198)
17687 * --target-directory <2>:                mv invocation.       (line 116)
17688 * --target-directory <3>:                install invocation.  (line 140)
17689 * --target-directory <4>:                cp invocation.       (line 400)
17690 * --target-directory:                    Target directory.    (line  35)
17691 * --temporary-directory:                 sort invocation.     (line 390)
17692 * --terse:                               stat invocation.     (line  60)
17693 * --text:                                md5sum invocation.   (line 110)
17694 * --threshold:                           du invocation.       (line 171)
17695 * --time <1>:                            who invocation.      (line  85)
17696 * --time <2>:                            du invocation.       (line 213)
17697 * --time <3>:                            touch invocation.    (line  89)
17698 * --time:                                Sorting the output.  (line  13)
17699 * --time-style <1>:                      du invocation.       (line 243)
17700 * --time-style:                          Formatting file timestamps.
17701                                                               (line  27)
17702 * --tmpdir:                              mktemp invocation.   (line 117)
17703 * --to:                                  General options in numfmt.
17704                                                               (line  86)
17705 * --to-unit:                             General options in numfmt.
17706                                                               (line  92)
17707 * --total <1>:                           du invocation.       (line  65)
17708 * --total:                               df invocation.       (line  73)
17709 * --traditional:                         od invocation.       (line 216)
17710 * --type <1>:                            runcon invocation.   (line  43)
17711 * --type <2>:                            chcon invocation.    (line  78)
17712 * --type:                                df invocation.       (line 223)
17713 * --unbuffered:                          split invocation.    (line 153)
17714 * --uniform-spacing:                     fmt invocation.      (line  58)
17715 * --unique <1>:                          uniq invocation.     (line 138)
17716 * --unique:                              sort invocation.     (line 407)
17717 * --universal:                           Options for date.    (line 111)
17718 * --unset:                               env invocation.      (line  96)
17719 * --update <1>:                          mv invocation.       (line  92)
17720 * --update:                              cp invocation.       (line 410)
17721 * --user <1>:                            runcon invocation.   (line  35)
17722 * --user <2>:                            chcon invocation.    (line  70)
17723 * --user:                                id invocation.       (line  48)
17724 * --userspec:                            chroot invocation.   (line  29)
17725 * --utc:                                 Options for date.    (line 111)
17726 * --verbose <1>:                         chcon invocation.    (line  66)
17727 * --verbose <2>:                         chmod invocation.    (line  65)
17728 * --verbose <3>:                         chgrp invocation.    (line  63)
17729 * --verbose <4>:                         chown invocation.    (line 140)
17730 * --verbose <5>:                         rmdir invocation.    (line  33)
17731 * --verbose <6>:                         readlink invocation. (line  60)
17732 * --verbose <7>:                         mkdir invocation.    (line  53)
17733 * --verbose <8>:                         ln invocation.       (line 208)
17734 * --verbose <9>:                         shred invocation.    (line 159)
17735 * --verbose <10>:                        rm invocation.       (line 114)
17736 * --verbose <11>:                        mv invocation.       (line 103)
17737 * --verbose <12>:                        install invocation.  (line 150)
17738 * --verbose <13>:                        cp invocation.       (line 425)
17739 * --verbose <14>:                        split invocation.    (line 157)
17740 * --verbose <15>:                        tail invocation.     (line 193)
17741 * --verbose:                             head invocation.     (line  54)
17742 * --version:                             Common options.      (line  43)
17743 * --version-sort:                        sort invocation.     (line 202)
17744 * --warn:                                md5sum invocation.   (line 120)
17745 * --width <1>:                           General output formatting.
17746                                                               (line 133)
17747 * --width <2>:                           fold invocation.     (line  39)
17748 * --width <3>:                           pr invocation.       (line 247)
17749 * --width <4>:                           fmt invocation.      (line  64)
17750 * --width:                               od invocation.       (line 172)
17751 * --words:                               wc invocation.       (line  55)
17752 * --wrap:                                base64 invocation.   (line  25)
17753 * --writable:                            who invocation.      (line  98)
17754 * --zero <1>:                            id invocation.       (line  58)
17755 * --zero <2>:                            realpath invocation. (line  65)
17756 * --zero <3>:                            dirname invocation.  (line  34)
17757 * --zero <4>:                            basename invocation. (line  46)
17758 * --zero <5>:                            readlink invocation. (line  64)
17759 * --zero:                                shred invocation.    (line 175)
17760 * --zero-terminated <1>:                 join invocation.     (line 171)
17761 * --zero-terminated <2>:                 uniq invocation.     (line 150)
17762 * --zero-terminated <3>:                 shuf invocation.     (line  61)
17763 * --zero-terminated:                     sort invocation.     (line 423)
17764 * -0 <1>:                                env invocation.      (line  89)
17765 * -0 <2>:                                printenv invocation. (line  20)
17766 * -0:                                    du invocation.       (line  27)
17767 * -1 <1>:                                General output formatting.
17768                                                               (line  10)
17769 * -1 <2>:                                join invocation.     (line 116)
17770 * -1:                                    comm invocation.     (line  24)
17771 * -2 <1>:                                join invocation.     (line 120)
17772 * -2:                                    comm invocation.     (line  24)
17773 * -3:                                    comm invocation.     (line  24)
17774 * -a <1>:                                uname invocation.    (line  38)
17775 * -a <2>:                                who invocation.      (line  37)
17776 * -a <3>:                                stty invocation.     (line  29)
17777 * -a <4>:                                basename invocation. (line  35)
17778 * -a <5>:                                tee invocation.      (line  27)
17779 * -a <6>:                                Connectives for test.
17780                                                               (line  12)
17781 * -a <7>:                                du invocation.       (line  34)
17782 * -a <8>:                                df invocation.       (line  61)
17783 * -a <9>:                                touch invocation.    (line  89)
17784 * -a:                                    cp invocation.       (line  80)
17785 * -A:                                    Which files are listed.
17786                                                               (line  19)
17787 * -a <1>:                                Which files are listed.
17788                                                               (line  14)
17789 * -a <2>:                                unexpand invocation. (line  52)
17790 * -a <3>:                                join invocation.     (line  84)
17791 * -a <4>:                                split invocation.    (line 121)
17792 * -a <5>:                                pr invocation.       (line  71)
17793 * -a:                                    od invocation.       (line 185)
17794 * -A <1>:                                od invocation.       (line  44)
17795 * -A:                                    cat invocation.      (line  18)
17796 * -b <1>:                                who invocation.      (line  41)
17797 * -b <2>:                                File type tests.     (line  11)
17798 * -b:                                    du invocation.       (line  61)
17799 * -B <1>:                                du invocation.       (line  55)
17800 * -B:                                    df invocation.       (line  68)
17801 * -b <1>:                                ln invocation.       (line  96)
17802 * -b <2>:                                mv invocation.       (line  67)
17803 * -b <3>:                                install invocation.  (line  46)
17804 * -b <4>:                                cp invocation.       (line  96)
17805 * -b <5>:                                dircolors invocation.
17806                                                               (line  36)
17807 * -b:                                    Formatting the file names.
17808                                                               (line  11)
17809 * -B:                                    Which files are listed.
17810                                                               (line  25)
17811 * -b <1>:                                cut invocation.      (line  31)
17812 * -b <2>:                                sort invocation.     (line  91)
17813 * -b <3>:                                md5sum invocation.   (line  43)
17814 * -b <4>:                                csplit invocation.   (line  70)
17815 * -b <5>:                                split invocation.    (line  47)
17816 * -b <6>:                                fold invocation.     (line  27)
17817 * -b <7>:                                od invocation.       (line 188)
17818 * -b <8>:                                nl invocation.       (line  49)
17819 * -b <9>:                                tac invocation.      (line  23)
17820 * -b <10>:                               cat invocation.      (line  22)
17821 * -b:                                    Backup options.      (line  14)
17822 * -c <1>:                                runcon invocation.   (line  30)
17823 * -c <2>:                                File type tests.     (line  14)
17824 * -c <3>:                                truncate invocation. (line  25)
17825 * -c <4>:                                stat invocation.     (line  39)
17826 * -c <5>:                                du invocation.       (line  65)
17827 * -c <6>:                                touch invocation.    (line  93)
17828 * -c <7>:                                chmod invocation.    (line  45)
17829 * -c <8>:                                chgrp invocation.    (line  23)
17830 * -c <9>:                                chown invocation.    (line  74)
17831 * -c:                                    install invocation.  (line  66)
17832 * -C:                                    install invocation.  (line  51)
17833 * -c:                                    dircolors invocation.
17834                                                               (line  43)
17835 * -C:                                    General output formatting.
17836                                                               (line  15)
17837 * -c <1>:                                Sorting the output.  (line  13)
17838 * -c <2>:                                cut invocation.      (line  39)
17839 * -c <3>:                                uniq invocation.     (line  59)
17840 * -c <4>:                                shuf invocation.     (line  21)
17841 * -c <5>:                                sort invocation.     (line  23)
17842 * -c:                                    wc invocation.       (line  47)
17843 * -C:                                    split invocation.    (line  62)
17844 * -c <1>:                                tail invocation.     (line  34)
17845 * -c <2>:                                head invocation.     (line  26)
17846 * -c <3>:                                pr invocation.       (line  78)
17847 * -c <4>:                                fmt invocation.      (line  39)
17848 * -c:                                    od invocation.       (line 191)
17849 * -COLUMN:                               pr invocation.       (line  56)
17850 * -d <1>:                                Options for date.    (line  11)
17851 * -d <2>:                                who invocation.      (line  45)
17852 * -d <3>:                                mktemp invocation.   (line  95)
17853 * -d:                                    File type tests.     (line  17)
17854 * -D:                                    du invocation.       (line  71)
17855 * -d <1>:                                touch invocation.    (line  97)
17856 * -d <2>:                                ln invocation.       (line 102)
17857 * -d <3>:                                rm invocation.       (line  40)
17858 * -d:                                    install invocation.  (line  77)
17859 * -D:                                    install invocation.  (line  70)
17860 * -d:                                    cp invocation.       (line 130)
17861 * -D:                                    What information is listed.
17862                                                               (line  17)
17863 * -d <1>:                                Which files are listed.
17864                                                               (line  30)
17865 * -d <2>:                                paste invocation.    (line  62)
17866 * -d:                                    cut invocation.      (line  69)
17867 * -D:                                    uniq invocation.     (line  73)
17868 * -d <1>:                                uniq invocation.     (line  67)
17869 * -d <2>:                                sort invocation.     (line 100)
17870 * -d <3>:                                split invocation.    (line 130)
17871 * -d <4>:                                pr invocation.       (line  84)
17872 * -d <5>:                                General options in numfmt.
17873                                                               (line  15)
17874 * -d <6>:                                base64 invocation.   (line  33)
17875 * -d <7>:                                od invocation.       (line 195)
17876 * -d:                                    nl invocation.       (line  71)
17877 * -d DEPTH:                              du invocation.       (line  78)
17878 * -e <1>:                                stdbuf invocation.   (line  36)
17879 * -e <2>:                                realpath invocation. (line  20)
17880 * -e:                                    File characteristic tests.
17881                                                               (line   9)
17882 * -E:                                    echo invocation.     (line  76)
17883 * -e <1>:                                echo invocation.     (line  28)
17884 * -e <2>:                                readlink invocation. (line  35)
17885 * -e <3>:                                join invocation.     (line  96)
17886 * -e <4>:                                split invocation.    (line 143)
17887 * -e:                                    pr invocation.       (line 108)
17888 * -E:                                    cat invocation.      (line  29)
17889 * -e:                                    cat invocation.      (line  25)
17890 * -ef:                                   File characteristic tests.
17891                                                               (line  23)
17892 * -eq:                                   Numeric tests.       (line  19)
17893 * -f:                                    Options for date.    (line  26)
17894 * -F:                                    stty invocation.     (line  34)
17895 * -f <1>:                                File type tests.     (line  20)
17896 * -f <2>:                                stat invocation.     (line  33)
17897 * -f <3>:                                touch invocation.    (line 107)
17898 * -f <4>:                                chmod invocation.    (line  51)
17899 * -f <5>:                                chgrp invocation.    (line  29)
17900 * -f <6>:                                chown invocation.    (line  80)
17901 * -f <7>:                                readlink invocation. (line  28)
17902 * -f:                                    ln invocation.       (line 108)
17903 * -F:                                    ln invocation.       (line 102)
17904 * -f <1>:                                shred invocation.    (line 114)
17905 * -f <2>:                                rm invocation.       (line  44)
17906 * -f <3>:                                mv invocation.       (line  72)
17907 * -f:                                    cp invocation.       (line 138)
17908 * -F:                                    General output formatting.
17909                                                               (line  55)
17910 * -f <1>:                                Sorting the output.  (line  20)
17911 * -f <2>:                                cut invocation.      (line  48)
17912 * -f <3>:                                uniq invocation.     (line  33)
17913 * -f <4>:                                sort invocation.     (line 107)
17914 * -f:                                    csplit invocation.   (line  66)
17915 * -F:                                    tail invocation.     (line 110)
17916 * -f <1>:                                tail invocation.     (line  51)
17917 * -f:                                    pr invocation.       (line 116)
17918 * -F:                                    pr invocation.       (line 116)
17919 * -f <1>:                                od invocation.       (line 198)
17920 * -f:                                    nl invocation.       (line  78)
17921 * -f FORMAT:                             seq invocation.      (line  28)
17922 * -G:                                    id invocation.       (line  34)
17923 * -g <1>:                                id invocation.       (line  30)
17924 * -g:                                    stty invocation.     (line  47)
17925 * -G:                                    Access permission tests.
17926                                                               (line  32)
17927 * -g <1>:                                Access permission tests.
17928                                                               (line   9)
17929 * -g:                                    install invocation.  (line  84)
17930 * -G:                                    What information is listed.
17931                                                               (line 116)
17932 * -g <1>:                                What information is listed.
17933                                                               (line 112)
17934 * -g <2>:                                sort invocation.     (line 123)
17935 * -g:                                    fmt invocation.      (line  69)
17936 * -ge:                                   Numeric tests.       (line  19)
17937 * -gt:                                   Numeric tests.       (line  19)
17938 * -H:                                    chcon invocation.    (line  50)
17939 * -h:                                    chcon invocation.    (line  28)
17940 * -H:                                    who invocation.      (line  49)
17941 * -h <1>:                                File type tests.     (line  24)
17942 * -h:                                    du invocation.       (line 106)
17943 * -H <1>:                                du invocation.       (line 102)
17944 * -H:                                    df invocation.       (line  93)
17945 * -h <1>:                                df invocation.       (line  86)
17946 * -h:                                    touch invocation.    (line 111)
17947 * -H:                                    chgrp invocation.    (line  74)
17948 * -h:                                    chgrp invocation.    (line  38)
17949 * -H:                                    chown invocation.    (line 151)
17950 * -h:                                    chown invocation.    (line 114)
17951 * -H:                                    cp invocation.       (line 155)
17952 * -h:                                    What information is listed.
17953                                                               (line 122)
17954 * -H:                                    Which files are listed.
17955                                                               (line  39)
17956 * -h <1>:                                sort invocation.     (line 146)
17957 * -h <2>:                                pr invocation.       (line 122)
17958 * -h:                                    nl invocation.       (line  82)
17959 * -H:                                    Traversing symlinks. (line  20)
17960 * -h:                                    Block size.          (line 151)
17961 * -i <1>:                                stdbuf invocation.   (line  28)
17962 * -i <2>:                                env invocation.      (line 101)
17963 * -i <3>:                                uname invocation.    (line  43)
17964 * -i <4>:                                tee invocation.      (line  32)
17965 * -i <5>:                                df invocation.       (line  97)
17966 * -i:                                    ln invocation.       (line 113)
17967 * -I:                                    rm invocation.       (line  55)
17968 * -i <1>:                                rm invocation.       (line  50)
17969 * -i <2>:                                mv invocation.       (line  78)
17970 * -i <3>:                                cp invocation.       (line 163)
17971 * -i:                                    What information is listed.
17972                                                               (line 130)
17973 * -I:                                    Which files are listed.
17974                                                               (line  75)
17975 * -i <1>:                                expand invocation.   (line  37)
17976 * -i <2>:                                join invocation.     (line 110)
17977 * -i <3>:                                uniq invocation.     (line  63)
17978 * -i <4>:                                shuf invocation.     (line  25)
17979 * -i <5>:                                sort invocation.     (line 166)
17980 * -i <6>:                                pr invocation.       (line 128)
17981 * -i <7>:                                base64 invocation.   (line  40)
17982 * -i <8>:                                od invocation.       (line 201)
17983 * -i:                                    nl invocation.       (line  86)
17984 * -I[TIMESPEC]:                          Options for date.    (line  34)
17985 * -J:                                    pr invocation.       (line 135)
17986 * -j:                                    od invocation.       (line  63)
17987 * -k <1>:                                timeout invocation.  (line  43)
17988 * -k <2>:                                Access permission tests.
17989                                                               (line  12)
17990 * -k <3>:                                du invocation.       (line 123)
17991 * -k <4>:                                df invocation.       (line 103)
17992 * -k <5>:                                General output formatting.
17993                                                               (line  93)
17994 * -k <6>:                                sort invocation.     (line 264)
17995 * -k <7>:                                csplit invocation.   (line  90)
17996 * -k:                                    Block size.          (line 151)
17997 * -l <1>:                                runcon invocation.   (line  47)
17998 * -l:                                    chcon invocation.    (line  82)
17999 * -L:                                    chcon invocation.    (line  55)
18000 * -l:                                    who invocation.      (line  53)
18001 * -L <1>:                                pwd invocation.      (line  17)
18002 * -L <2>:                                realpath invocation. (line  33)
18003 * -L <3>:                                File type tests.     (line  24)
18004 * -L:                                    stat invocation.     (line  26)
18005 * -l:                                    du invocation.       (line 134)
18006 * -L:                                    du invocation.       (line 129)
18007 * -l:                                    df invocation.       (line 109)
18008 * -L <1>:                                chgrp invocation.    (line  79)
18009 * -L <2>:                                chown invocation.    (line 156)
18010 * -L <3>:                                ln invocation.       (line 118)
18011 * -L:                                    cp invocation.       (line 175)
18012 * -l <1>:                                cp invocation.       (line 170)
18013 * -l:                                    What information is listed.
18014                                                               (line 138)
18015 * -L <1>:                                Which files are listed.
18016                                                               (line  90)
18017 * -L:                                    wc invocation.       (line  63)
18018 * -l <1>:                                wc invocation.       (line  59)
18019 * -l <2>:                                split invocation.    (line  39)
18020 * -l <3>:                                pr invocation.       (line 145)
18021 * -l <4>:                                od invocation.       (line 204)
18022 * -l:                                    nl invocation.       (line  90)
18023 * -L:                                    Traversing symlinks. (line  25)
18024 * -le:                                   Numeric tests.       (line  19)
18025 * -lt:                                   Numeric tests.       (line  19)
18026 * -m <1>:                                uname invocation.    (line  50)
18027 * -m <2>:                                who invocation.      (line  63)
18028 * -m <3>:                                realpath invocation. (line  28)
18029 * -m <4>:                                du invocation.       (line 138)
18030 * -m <5>:                                touch invocation.    (line 128)
18031 * -m <6>:                                readlink invocation. (line  42)
18032 * -m <7>:                                mknod invocation.    (line  56)
18033 * -m <8>:                                mkfifo invocation.   (line  24)
18034 * -m <9>:                                mkdir invocation.    (line  22)
18035 * -m <10>:                               install invocation.  (line  90)
18036 * -m:                                    General output formatting.
18037                                                               (line 106)
18038 * -M:                                    sort invocation.     (line 174)
18039 * -m <1>:                                sort invocation.     (line  39)
18040 * -m <2>:                                wc invocation.       (line  51)
18041 * -m:                                    pr invocation.       (line 151)
18042 * -n <1>:                                nice invocation.     (line  57)
18043 * -n <2>:                                uname invocation.    (line  55)
18044 * -n <3>:                                id invocation.       (line  38)
18045 * -n <4>:                                String tests.        (line  19)
18046 * -n <5>:                                echo invocation.     (line  25)
18047 * -n <6>:                                readlink invocation. (line  48)
18048 * -n <7>:                                ln invocation.       (line 125)
18049 * -n <8>:                                mv invocation.       (line  86)
18050 * -n:                                    cp invocation.       (line 183)
18051 * -N:                                    Formatting the file names.
18052                                                               (line  18)
18053 * -n <1>:                                What information is listed.
18054                                                               (line 246)
18055 * -n <2>:                                cut invocation.      (line  73)
18056 * -n <3>:                                shuf invocation.     (line  34)
18057 * -n <4>:                                sort invocation.     (line 185)
18058 * -n <5>:                                csplit invocation.   (line  85)
18059 * -n <6>:                                split invocation.    (line  86)
18060 * -n <7>:                                tail invocation.     (line 182)
18061 * -n:                                    head invocation.     (line  43)
18062 * -N:                                    pr invocation.       (line 186)
18063 * -n:                                    pr invocation.       (line 166)
18064 * -N:                                    od invocation.       (line  80)
18065 * -n <1>:                                nl invocation.       (line  97)
18066 * -n:                                    cat invocation.      (line  33)
18067 * -n NUMBER:                             shred invocation.    (line 119)
18068 * -ne:                                   Numeric tests.       (line  19)
18069 * -nt:                                   File characteristic tests.
18070                                                               (line  15)
18071 * -o <1>:                                stdbuf invocation.   (line  32)
18072 * -o <2>:                                uname invocation.    (line  66)
18073 * -o:                                    Connectives for test.
18074                                                               (line  15)
18075 * -O:                                    Access permission tests.
18076                                                               (line  28)
18077 * -o <1>:                                truncate invocation. (line  29)
18078 * -o <2>:                                install invocation.  (line 103)
18079 * -o <3>:                                What information is listed.
18080                                                               (line 250)
18081 * -o <4>:                                shuf invocation.     (line  39)
18082 * -o <5>:                                sort invocation.     (line 318)
18083 * -o <6>:                                pr invocation.       (line 191)
18084 * -o:                                    od invocation.       (line 207)
18085 * -ot:                                   File characteristic tests.
18086                                                               (line  19)
18087 * -P:                                    chcon invocation.    (line  60)
18088 * -p <1>:                                uname invocation.    (line  59)
18089 * -p:                                    who invocation.      (line  67)
18090 * -P <1>:                                pwd invocation.      (line  24)
18091 * -P:                                    realpath invocation. (line  43)
18092 * -p:                                    mktemp invocation.   (line 117)
18093 * -P:                                    pathchk invocation.  (line  46)
18094 * -p <1>:                                pathchk invocation.  (line  31)
18095 * -p:                                    File type tests.     (line  29)
18096 * -P <1>:                                du invocation.       (line 144)
18097 * -P <2>:                                df invocation.       (line 187)
18098 * -P <3>:                                chgrp invocation.    (line  84)
18099 * -P:                                    chown invocation.    (line 161)
18100 * -p <1>:                                rmdir invocation.    (line  24)
18101 * -p:                                    mkdir invocation.    (line  36)
18102 * -P:                                    ln invocation.       (line 147)
18103 * -p <1>:                                install invocation.  (line 116)
18104 * -p:                                    cp invocation.       (line 197)
18105 * -P:                                    cp invocation.       (line 189)
18106 * -p <1>:                                dircolors invocation.
18107                                                               (line  48)
18108 * -p <2>:                                General output formatting.
18109                                                               (line 111)
18110 * -p:                                    nl invocation.       (line 110)
18111 * -P:                                    Traversing symlinks. (line  29)
18112 * -q <1>:                                who invocation.      (line  72)
18113 * -q <2>:                                realpath invocation. (line  52)
18114 * -q <3>:                                mktemp invocation.   (line 102)
18115 * -q:                                    readlink invocation. (line  56)
18116 * -Q:                                    Formatting the file names.
18117                                                               (line  30)
18118 * -q <1>:                                Formatting the file names.
18119                                                               (line  24)
18120 * -q <2>:                                csplit invocation.   (line 113)
18121 * -q <3>:                                tail invocation.     (line 189)
18122 * -q:                                    head invocation.     (line  50)
18123 * -r <1>:                                runcon invocation.   (line  39)
18124 * -r:                                    chcon invocation.    (line  74)
18125 * -R:                                    chcon invocation.    (line  37)
18126 * -r:                                    uname invocation.    (line  70)
18127 * -R:                                    Options for date.    (line  63)
18128 * -r <1>:                                Options for date.    (line  57)
18129 * -r <2>:                                who invocation.      (line  77)
18130 * -r <3>:                                id invocation.       (line  43)
18131 * -r <4>:                                Access permission tests.
18132                                                               (line  15)
18133 * -r <5>:                                truncate invocation. (line  33)
18134 * -r:                                    touch invocation.    (line 132)
18135 * -R <1>:                                chmod invocation.    (line  76)
18136 * -R <2>:                                chgrp invocation.    (line  71)
18137 * -R:                                    chown invocation.    (line 148)
18138 * -r:                                    ln invocation.       (line 159)
18139 * -R:                                    rm invocation.       (line 110)
18140 * -r <1>:                                rm invocation.       (line 110)
18141 * -r:                                    cp invocation.       (line 298)
18142 * -R:                                    cp invocation.       (line 298)
18143 * -r:                                    Sorting the output.  (line  28)
18144 * -R:                                    Which files are listed.
18145                                                               (line  98)
18146 * -r:                                    shuf invocation.     (line  51)
18147 * -R:                                    sort invocation.     (line 215)
18148 * -r <1>:                                sort invocation.     (line 209)
18149 * -r <2>:                                sum invocation.      (line  27)
18150 * -r <3>:                                pr invocation.       (line 198)
18151 * -r:                                    tac invocation.      (line  28)
18152 * -s <1>:                                timeout invocation.  (line  50)
18153 * -s <2>:                                uname invocation.    (line  74)
18154 * -s <3>:                                Options for date.    (line 105)
18155 * -s <4>:                                who invocation.      (line  81)
18156 * -s <5>:                                tty invocation.      (line  19)
18157 * -s <6>:                                realpath invocation. (line  57)
18158 * -s <7>:                                basename invocation. (line  41)
18159 * -s:                                    File characteristic tests.
18160                                                               (line  12)
18161 * -S:                                    File type tests.     (line  32)
18162 * -s <1>:                                truncate invocation. (line  37)
18163 * -s:                                    du invocation.       (line 165)
18164 * -S:                                    du invocation.       (line 149)
18165 * -s:                                    readlink invocation. (line  56)
18166 * -S:                                    ln invocation.       (line 193)
18167 * -s:                                    ln invocation.       (line 187)
18168 * -S <1>:                                mv invocation.       (line 111)
18169 * -S:                                    install invocation.  (line 135)
18170 * -s:                                    install invocation.  (line 126)
18171 * -S:                                    cp invocation.       (line 395)
18172 * -s:                                    cp invocation.       (line 387)
18173 * -S:                                    Sorting the output.  (line  34)
18174 * -s <1>:                                What information is listed.
18175                                                               (line 256)
18176 * -s <2>:                                paste invocation.    (line  52)
18177 * -s <3>:                                cut invocation.      (line  77)
18178 * -s:                                    uniq invocation.     (line  43)
18179 * -S:                                    sort invocation.     (line 353)
18180 * -s <1>:                                sort invocation.     (line 340)
18181 * -s <2>:                                sum invocation.      (line  34)
18182 * -s <3>:                                csplit invocation.   (line 113)
18183 * -s:                                    fold invocation.     (line  33)
18184 * -S:                                    pr invocation.       (line 214)
18185 * -s <1>:                                pr invocation.       (line 203)
18186 * -s <2>:                                fmt invocation.      (line  52)
18187 * -s:                                    od invocation.       (line 210)
18188 * -S:                                    od invocation.       (line  85)
18189 * -s <1>:                                nl invocation.       (line 114)
18190 * -s <2>:                                tac invocation.      (line  32)
18191 * -s:                                    cat invocation.      (line  38)
18192 * -S:                                    Backup options.      (line  54)
18193 * -s BYTES:                              shred invocation.    (line 131)
18194 * -t <1>:                                runcon invocation.   (line  43)
18195 * -t:                                    chcon invocation.    (line  78)
18196 * -T:                                    who invocation.      (line  98)
18197 * -t <1>:                                who invocation.      (line  85)
18198 * -t <2>:                                mktemp invocation.   (line 135)
18199 * -t <3>:                                File type tests.     (line  35)
18200 * -t <4>:                                stat invocation.     (line  60)
18201 * -t:                                    du invocation.       (line 171)
18202 * -T:                                    df invocation.       (line 230)
18203 * -t:                                    df invocation.       (line 223)
18204 * -T:                                    ln invocation.       (line 203)
18205 * -t:                                    ln invocation.       (line 198)
18206 * -T:                                    mv invocation.       (line 121)
18207 * -t:                                    mv invocation.       (line 116)
18208 * -T:                                    install invocation.  (line 145)
18209 * -t:                                    install invocation.  (line 140)
18210 * -T:                                    cp invocation.       (line 405)
18211 * -t:                                    cp invocation.       (line 400)
18212 * -T:                                    General output formatting.
18213                                                               (line 121)
18214 * -t <1>:                                Sorting the output.  (line  38)
18215 * -t <2>:                                unexpand invocation. (line  28)
18216 * -t:                                    expand invocation.   (line  24)
18217 * -T:                                    sort invocation.     (line 390)
18218 * -t <1>:                                sort invocation.     (line 370)
18219 * -t:                                    md5sum invocation.   (line 110)
18220 * -T:                                    pr invocation.       (line 238)
18221 * -t <1>:                                pr invocation.       (line 226)
18222 * -t <2>:                                fmt invocation.      (line  45)
18223 * -t:                                    od invocation.       (line  94)
18224 * -T:                                    cat invocation.      (line  46)
18225 * -t:                                    cat invocation.      (line  42)
18226 * -u <1>:                                env invocation.      (line  96)
18227 * -u <2>:                                runcon invocation.   (line  35)
18228 * -u <3>:                                chcon invocation.    (line  70)
18229 * -u <4>:                                Options for date.    (line 111)
18230 * -u <5>:                                who invocation.      (line  88)
18231 * -u <6>:                                id invocation.       (line  48)
18232 * -u <7>:                                mktemp invocation.   (line 107)
18233 * -u <8>:                                Access permission tests.
18234                                                               (line  18)
18235 * -u <9>:                                shred invocation.    (line 138)
18236 * -u <10>:                               mv invocation.       (line  92)
18237 * -u:                                    cp invocation.       (line 410)
18238 * -U:                                    Sorting the output.  (line  53)
18239 * -u <1>:                                Sorting the output.  (line  45)
18240 * -u <2>:                                uniq invocation.     (line 138)
18241 * -u <3>:                                sort invocation.     (line 407)
18242 * -u <4>:                                split invocation.    (line 153)
18243 * -u <5>:                                fmt invocation.      (line  58)
18244 * -u:                                    cat invocation.      (line  49)
18245 * -v <1>:                                chcon invocation.    (line  66)
18246 * -v <2>:                                uname invocation.    (line  85)
18247 * -v <3>:                                chmod invocation.    (line  65)
18248 * -v <4>:                                chgrp invocation.    (line  63)
18249 * -v <5>:                                chown invocation.    (line 140)
18250 * -v <6>:                                rmdir invocation.    (line  33)
18251 * -v <7>:                                readlink invocation. (line  60)
18252 * -v <8>:                                mkdir invocation.    (line  53)
18253 * -v <9>:                                ln invocation.       (line 208)
18254 * -v <10>:                               shred invocation.    (line 159)
18255 * -v <11>:                               rm invocation.       (line 114)
18256 * -v <12>:                               mv invocation.       (line 103)
18257 * -v <13>:                               install invocation.  (line 150)
18258 * -v <14>:                               cp invocation.       (line 425)
18259 * -v:                                    Sorting the output.  (line  62)
18260 * -V:                                    sort invocation.     (line 202)
18261 * -v <1>:                                tail invocation.     (line 193)
18262 * -v <2>:                                head invocation.     (line  54)
18263 * -v <3>:                                pr invocation.       (line 243)
18264 * -v <4>:                                od invocation.       (line 165)
18265 * -v <5>:                                nl invocation.       (line 119)
18266 * -v:                                    cat invocation.      (line  53)
18267 * -w <1>:                                who invocation.      (line  98)
18268 * -w <2>:                                Access permission tests.
18269                                                               (line  21)
18270 * -w <3>:                                General output formatting.
18271                                                               (line 133)
18272 * -w <4>:                                uniq invocation.     (line 144)
18273 * -w <5>:                                md5sum invocation.   (line 120)
18274 * -w <6>:                                wc invocation.       (line  55)
18275 * -w:                                    fold invocation.     (line  39)
18276 * -W:                                    pr invocation.       (line 257)
18277 * -w <1>:                                pr invocation.       (line 247)
18278 * -w <2>:                                fmt invocation.      (line  64)
18279 * -w <3>:                                base64 invocation.   (line  25)
18280 * -w <4>:                                od invocation.       (line 172)
18281 * -w:                                    nl invocation.       (line 123)
18282 * -WIDTH:                                fmt invocation.      (line  64)
18283 * -x <1>:                                Access permission tests.
18284                                                               (line  24)
18285 * -x <2>:                                du invocation.       (line 295)
18286 * -x <3>:                                df invocation.       (line 257)
18287 * -x <4>:                                shred invocation.    (line 164)
18288 * -x <5>:                                cp invocation.       (line 429)
18289 * -x:                                    General output formatting.
18290                                                               (line 116)
18291 * -X:                                    Sorting the output.  (line  70)
18292 * -x:                                    od invocation.       (line 213)
18293 * -X FILE:                               du invocation.       (line 284)
18294 * -z:                                    id invocation.       (line  58)
18295 * -Z:                                    id invocation.       (line  52)
18296 * -z <1>:                                realpath invocation. (line  65)
18297 * -z <2>:                                dirname invocation.  (line  34)
18298 * -z <3>:                                basename invocation. (line  46)
18299 * -z <4>:                                String tests.        (line  15)
18300 * -z:                                    readlink invocation. (line  64)
18301 * -Z <1>:                                mknod invocation.    (line  63)
18302 * -Z <2>:                                mkfifo invocation.   (line  32)
18303 * -Z:                                    mkdir invocation.    (line  58)
18304 * -z:                                    shred invocation.    (line 175)
18305 * -Z <1>:                                mv invocation.       (line 126)
18306 * -Z <2>:                                install invocation.  (line 154)
18307 * -Z <3>:                                cp invocation.       (line 435)
18308 * -Z:                                    What information is listed.
18309                                                               (line 281)
18310 * -z <1>:                                join invocation.     (line 171)
18311 * -z <2>:                                uniq invocation.     (line 150)
18312 * -z <3>:                                shuf invocation.     (line  61)
18313 * -z <4>:                                sort invocation.     (line 423)
18314 * -z:                                    csplit invocation.   (line 102)
18315 * /:                                     Numeric expressions. (line  15)
18316 * 128-bit checksum:                      md5sum invocation.   (line   6)
18317 * 16-bit checksum:                       sum invocation.      (line   6)
18318 * 160-bit checksum:                      sha1sum invocation.  (line   6)
18319 * 224-bit checksum:                      sha2 utilities.      (line   6)
18320 * 256-bit checksum:                      sha2 utilities.      (line   6)
18321 * 384-bit checksum:                      sha2 utilities.      (line   6)
18322 * 512-bit checksum:                      sha2 utilities.      (line   6)
18323 * <:                                     Relations for expr.  (line  21)
18324 * <=:                                    Relations for expr.  (line  21)
18325 * = <1>:                                 Relations for expr.  (line  21)
18326 * =:                                     String tests.        (line  22)
18327 * == <1>:                                Relations for expr.  (line  21)
18328 * ==:                                    String tests.        (line  25)
18329 * >:                                     Relations for expr.  (line  21)
18330 * >=:                                    Relations for expr.  (line  21)
18331 * \( regexp operator:                    String expressions.  (line  24)
18332 * \+ regexp operator:                    String expressions.  (line  27)
18333 * \? regexp operator:                    String expressions.  (line  27)
18334 * \c:                                    printf invocation.   (line  33)
18335 * \OOO:                                  printf invocation.   (line  71)
18336 * \uhhhh:                                printf invocation.   (line  78)
18337 * \Uhhhhhhhh:                            printf invocation.   (line  78)
18338 * \xHH:                                  printf invocation.   (line  71)
18339 * \| regexp operator:                    String expressions.  (line  27)
18340 * _POSIX2_VERSION <1>:                   touch invocation.    (line 150)
18341 * _POSIX2_VERSION <2>:                   uniq invocation.     (line  48)
18342 * _POSIX2_VERSION <3>:                   sort invocation.     (line 460)
18343 * _POSIX2_VERSION <4>:                   tail invocation.     (line 204)
18344 * _POSIX2_VERSION:                       Standards conformance.
18345                                                               (line  20)
18346 * abbreviations for months:              Calendar date items. (line  40)
18347 * access permission tests:               Access permission tests.
18348                                                               (line   6)
18349 * access permissions, changing:          chmod invocation.    (line   6)
18350 * access time:                           dd invocation.       (line 260)
18351 * access time, changing:                 touch invocation.    (line  89)
18352 * access time, printing or sorting files by: Sorting the output.
18353                                                               (line  45)
18354 * access time, show the most recent:     du invocation.       (line 238)
18355 * across columns:                        pr invocation.       (line  71)
18356 * across, listing files:                 General output formatting.
18357                                                               (line 116)
18358 * adding permissions:                    Setting Permissions. (line  38)
18359 * addition:                              Numeric expressions. (line  11)
18360 * ago in date strings:                   Relative items in date strings.
18361                                                               (line  23)
18362 * all lines, grouping:                   uniq invocation.     (line 107)
18363 * all repeated lines, outputting:        uniq invocation.     (line  73)
18364 * alnum:                                 Character sets.      (line  94)
18365 * alpha:                                 Character sets.      (line  97)
18366 * alternate ebcdic, converting to:       dd invocation.       (line  99)
18367 * always color option:                   General output formatting.
18368                                                               (line  28)
18369 * always interactive option:             rm invocation.       (line  68)
18370 * am i:                                  who invocation.      (line  22)
18371 * am in date strings:                    Time of day items.   (line  21)
18372 * and operator <1>:                      Relations for expr.  (line  17)
18373 * and operator:                          Connectives for test.
18374                                                               (line  12)
18375 * append:                                dd invocation.       (line 195)
18376 * appending to the output file:          dd invocation.       (line 195)
18377 * appropriate privileges <1>:            nice invocation.     (line   6)
18378 * appropriate privileges <2>:            hostname invocation. (line   6)
18379 * appropriate privileges <3>:            Setting the time.    (line   6)
18380 * appropriate privileges:                install invocation.  (line 103)
18381 * arbitrary date strings, parsing:       Options for date.    (line  11)
18382 * arbitrary text, displaying:            echo invocation.     (line   6)
18383 * arch:                                  arch invocation.     (line   6)
18384 * arithmetic tests:                      Numeric tests.       (line   6)
18385 * ASCII dump of files:                   od invocation.       (line   6)
18386 * ascii, converting to:                  dd invocation.       (line  90)
18387 * atime, changing:                       touch invocation.    (line  89)
18388 * atime, printing or sorting files by:   Sorting the output.  (line  45)
18389 * atime, show the most recent:           du invocation.       (line 238)
18390 * attributes, file:                      Changing file attributes.
18391                                                               (line   6)
18392 * authors of parse_datetime:             Authors of parse_datetime.
18393                                                               (line   6)
18394 * auto color option:                     General output formatting.
18395                                                               (line  26)
18396 * automounter file systems:              df invocation.       (line  61)
18397 * b for block special file:              mknod invocation.    (line  39)
18398 * background jobs, stopping at terminal write: Local.         (line  44)
18399 * backslash escapes <1>:                 echo invocation.     (line  28)
18400 * backslash escapes:                     Character sets.      (line  13)
18401 * backslash sequences for file names:    Formatting the file names.
18402                                                               (line  11)
18403 * backup files, ignoring:                Which files are listed.
18404                                                               (line  25)
18405 * backup options:                        Backup options.      (line   6)
18406 * backup suffix:                         Backup options.      (line  54)
18407 * backups, making <1>:                   ln invocation.       (line  96)
18408 * backups, making <2>:                   mv invocation.       (line  67)
18409 * backups, making <3>:                   install invocation.  (line  46)
18410 * backups, making <4>:                   cp invocation.       (line  96)
18411 * backups, making:                       Backup options.      (line  14)
18412 * backups, making only:                  cp invocation.       (line  66)
18413 * base64:                                base64 invocation.   (line   6)
18414 * Base64 decoding:                       base64 invocation.   (line  33)
18415 * base64 encoding:                       base64 invocation.   (line   6)
18416 * basename:                              basename invocation. (line   6)
18417 * baud rate, setting:                    Special.             (line  43)
18418 * beeping at input buffer full:          Input.               (line  61)
18419 * beginning of time:                     Time conversion specifiers.
18420                                                               (line  42)
18421 * beginning of time, for POSIX:          Seconds since the Epoch.
18422                                                               (line  13)
18423 * Bellovin, Steven M.:                   Authors of parse_datetime.
18424                                                               (line   6)
18425 * Berets, Jim:                           Authors of parse_datetime.
18426                                                               (line   6)
18427 * Berry, K. <1>:                         Authors of parse_datetime.
18428                                                               (line  19)
18429 * Berry, K.:                             Introduction.        (line  22)
18430 * binary:                                dd invocation.       (line 278)
18431 * binary I/O:                            dd invocation.       (line 278)
18432 * binary input files:                    md5sum invocation.   (line  43)
18433 * bind mount <1>:                        stat invocation.     (line 166)
18434 * bind mount:                            rm invocation.       (line  78)
18435 * blank:                                 Character sets.      (line 100)
18436 * blank lines, numbering:                nl invocation.       (line  90)
18437 * blanks, ignoring leading:              sort invocation.     (line  91)
18438 * block (space-padding):                 dd invocation.       (line 107)
18439 * block size <1>:                        dd invocation.       (line  37)
18440 * block size:                            Block size.          (line   6)
18441 * block size of conversion:              dd invocation.       (line  44)
18442 * block size of input:                   dd invocation.       (line  29)
18443 * block size of output:                  dd invocation.       (line  33)
18444 * block special check:                   File type tests.     (line  11)
18445 * block special files:                   mknod invocation.    (line  13)
18446 * block special files, creating:         mknod invocation.    (line   6)
18447 * BLOCK_SIZE:                            Block size.          (line  12)
18448 * BLOCKSIZE:                             Block size.          (line  12)
18449 * body, numbering:                       nl invocation.       (line  19)
18450 * Bourne shell syntax for color setup:   dircolors invocation.
18451                                                               (line  36)
18452 * breaks, cause interrupts:              Input.               (line  12)
18453 * breaks, ignoring:                      Input.               (line   9)
18454 * brkint:                                Input.               (line  12)
18455 * bs:                                    dd invocation.       (line  37)
18456 * BSD output:                            md5sum invocation.   (line  99)
18457 * BSD sum:                               sum invocation.      (line  27)
18458 * BSD tail:                              tail invocation.     (line  21)
18459 * BSD touch compatibility:               touch invocation.    (line 107)
18460 * bsN:                                   Output.              (line  56)
18461 * btrfs file system type:                df invocation.       (line 243)
18462 * bugs, reporting:                       Introduction.        (line  13)
18463 * built-in shell commands, conflicts with <1>: sleep invocation.
18464                                                               (line  36)
18465 * built-in shell commands, conflicts with <2>: kill invocation.
18466                                                               (line  16)
18467 * built-in shell commands, conflicts with <3>: nice invocation.
18468                                                               (line  43)
18469 * built-in shell commands, conflicts with <4>: pwd invocation.
18470                                                               (line  33)
18471 * built-in shell commands, conflicts with <5>: test invocation.
18472                                                               (line  28)
18473 * built-in shell commands, conflicts with <6>: printf invocation.
18474                                                               (line  19)
18475 * built-in shell commands, conflicts with <7>: echo invocation.
18476                                                               (line  13)
18477 * built-in shell commands, conflicts with <8>: stat invocation.
18478                                                               (line  18)
18479 * built-in shell commands, conflicts with: mknod invocation.  (line  27)
18480 * byte count:                            wc invocation.       (line   6)
18481 * byte-swapping:                         dd invocation.       (line 141)
18482 * c for character special file:          mknod invocation.    (line  42)
18483 * C shell syntax for color setup:        dircolors invocation.
18484                                                               (line  43)
18485 * C-s/C-q flow control:                  Input.               (line  41)
18486 * calendar date item:                    Calendar date items. (line   6)
18487 * canonical file name <1>:               realpath invocation. (line   6)
18488 * canonical file name:                   readlink invocation. (line   6)
18489 * canonicalize a file name <1>:          realpath invocation. (line   6)
18490 * canonicalize a file name:              readlink invocation. (line   6)
18491 * case folding:                          sort invocation.     (line 107)
18492 * case translation:                      Local.               (line  37)
18493 * case, ignored in dates:                General date syntax. (line  69)
18494 * cat:                                   cat invocation.      (line   6)
18495 * cbreak:                                Combination.         (line  51)
18496 * cbs:                                   dd invocation.       (line  44)
18497 * CD-ROM file system type:               df invocation.       (line 248)
18498 * cdfs file system type:                 df invocation.       (line 248)
18499 * cdtrdsr:                               Control.             (line  47)
18500 * change or print terminal settings:     stty invocation.     (line   6)
18501 * change SELinux context:                chcon invocation.    (line   6)
18502 * changed files, verbosely describing:   chgrp invocation.    (line  23)
18503 * changed owners, verbosely describing:  chown invocation.    (line  74)
18504 * changing access permissions:           chmod invocation.    (line   6)
18505 * changing file attributes:              Changing file attributes.
18506                                                               (line   6)
18507 * changing file ownership:               chown invocation.    (line   6)
18508 * changing file timestamps:              touch invocation.    (line   6)
18509 * changing group ownership <1>:          chgrp invocation.    (line   6)
18510 * changing group ownership:              chown invocation.    (line   6)
18511 * changing security context:             chcon invocation.    (line   6)
18512 * changing special mode bits:            Changing Special Mode Bits.
18513                                                               (line   6)
18514 * character classes:                     Character sets.      (line  81)
18515 * character count:                       wc invocation.       (line   6)
18516 * character size:                        Control.             (line  26)
18517 * character special check:               File type tests.     (line  14)
18518 * character special files:               mknod invocation.    (line  13)
18519 * character special files, creating:     mknod invocation.    (line   6)
18520 * characters, special:                   Characters.          (line   6)
18521 * chcon:                                 chcon invocation.    (line   6)
18522 * check file types:                      test invocation.     (line   6)
18523 * checking for sortedness:               sort invocation.     (line  23)
18524 * checksum, 128-bit:                     md5sum invocation.   (line   6)
18525 * checksum, 16-bit:                      sum invocation.      (line   6)
18526 * checksum, 160-bit:                     sha1sum invocation.  (line   6)
18527 * checksum, 224-bit:                     sha2 utilities.      (line   6)
18528 * checksum, 256-bit:                     sha2 utilities.      (line   6)
18529 * checksum, 384-bit:                     sha2 utilities.      (line   6)
18530 * checksum, 512-bit:                     sha2 utilities.      (line   6)
18531 * chgrp:                                 chgrp invocation.    (line   6)
18532 * chmod:                                 chmod invocation.    (line   6)
18533 * chown:                                 chown invocation.    (line   6)
18534 * chroot:                                chroot invocation.   (line   6)
18535 * cio:                                   dd invocation.       (line 205)
18536 * cksum:                                 cksum invocation.    (line   6)
18537 * clocal:                                Control.             (line  41)
18538 * clock skew <1>:                        touch invocation.    (line  20)
18539 * clock skew:                            Formatting file timestamps.
18540                                                               (line  12)
18541 * clone:                                 cp invocation.       (line 314)
18542 * cmspar:                                Control.             (line  17)
18543 * cntrl:                                 Character sets.      (line 103)
18544 * color database, printing:              dircolors invocation.
18545                                                               (line  48)
18546 * color setup:                           dircolors invocation.
18547                                                               (line   6)
18548 * color, distinguishing file types with: General output formatting.
18549                                                               (line  22)
18550 * cols:                                  Special.             (line  27)
18551 * column to wrap data after:             base64 invocation.   (line  25)
18552 * COLUMNS:                               Special.             (line  30)
18553 * columns:                               Special.             (line  27)
18554 * COLUMNS:                               General output formatting.
18555                                                               (line 133)
18556 * combination settings:                  Combination.         (line   6)
18557 * combined date and time of day item:    Combined date and time of day items.
18558                                                               (line   6)
18559 * comm:                                  comm invocation.     (line   6)
18560 * command-line operands to shuffle:      shuf invocation.     (line  21)
18561 * commands for controlling processes:    Process control.     (line   6)
18562 * commands for delaying:                 Delaying.            (line   6)
18563 * commands for exit status:              Conditions.          (line   6)
18564 * commands for file name manipulation:   File name manipulation.
18565                                                               (line   6)
18566 * commands for invoking other commands:  Modified command invocation.
18567                                                               (line   6)
18568 * commands for printing text:            Printing text.       (line   6)
18569 * commands for printing the working context: Working context. (line   6)
18570 * commands for printing user information: User information.   (line   6)
18571 * commands for redirection:              Redirection.         (line   6)
18572 * commands for SELinux context:          SELinux context.     (line   6)
18573 * commands for system context:           System context.      (line   6)
18574 * commas, outputting between files:      General output formatting.
18575                                                               (line 106)
18576 * comments, in dates:                    General date syntax. (line  69)
18577 * common field, joining on:              join invocation.     (line   6)
18578 * common lines:                          comm invocation.     (line  19)
18579 * common options:                        Common options.      (line   6)
18580 * compare values:                        test invocation.     (line   6)
18581 * comparing sorted files:                comm invocation.     (line   6)
18582 * comparison operators:                  Relations for expr.  (line  21)
18583 * concatenate and write files:           cat invocation.      (line   6)
18584 * concurrent I/O:                        dd invocation.       (line 205)
18585 * conditional executability:             Conditional Executability.
18586                                                               (line   6)
18587 * conditions:                            Conditions.          (line   6)
18588 * conflicts with shell built-ins <1>:    sleep invocation.    (line  36)
18589 * conflicts with shell built-ins <2>:    kill invocation.     (line  16)
18590 * conflicts with shell built-ins <3>:    nice invocation.     (line  43)
18591 * conflicts with shell built-ins <4>:    pwd invocation.      (line  33)
18592 * conflicts with shell built-ins <5>:    test invocation.     (line  28)
18593 * conflicts with shell built-ins <6>:    printf invocation.   (line  19)
18594 * conflicts with shell built-ins <7>:    echo invocation.     (line  13)
18595 * conflicts with shell built-ins <8>:    stat invocation.     (line  18)
18596 * conflicts with shell built-ins:        mknod invocation.    (line  27)
18597 * connectives, logical <1>:              Relations for expr.  (line   6)
18598 * connectives, logical:                  Connectives for test.
18599                                                               (line   6)
18600 * constant parity:                       Control.             (line  17)
18601 * context splitting:                     csplit invocation.   (line   6)
18602 * context, system:                       System context.      (line   6)
18603 * control characters, using ^C:          Local.               (line  54)
18604 * control settings:                      Control.             (line   6)
18605 * controlling terminal:                  dd invocation.       (line 266)
18606 * conv:                                  dd invocation.       (line  84)
18607 * conversion block size:                 dd invocation.       (line  44)
18608 * conversion specifiers, date:           Date conversion specifiers.
18609                                                               (line   6)
18610 * conversion specifiers, literal:        Literal conversion specifiers.
18611                                                               (line   6)
18612 * conversion specifiers, time:           Time conversion specifiers.
18613                                                               (line   6)
18614 * converting tabs to spaces:             expand invocation.   (line   6)
18615 * converting while copying a file:       dd invocation.       (line   6)
18616 * cooked:                                Combination.         (line  36)
18617 * Coordinated Universal Time:            Options for date.    (line 111)
18618 * copy on write:                         cp invocation.       (line 314)
18619 * copying directories recursively:       cp invocation.       (line 115)
18620 * copying existing permissions:          Copying Permissions. (line   6)
18621 * copying files:                         cat invocation.      (line   6)
18622 * copying files and directories:         cp invocation.       (line   6)
18623 * copying files and setting attributes:  install invocation.  (line   6)
18624 * core utilities:                        Top.                 (line  31)
18625 * count:                                 dd invocation.       (line  59)
18626 * count_bytes:                           dd invocation.       (line 299)
18627 * COW:                                   cp invocation.       (line 314)
18628 * cp:                                    cp invocation.       (line   6)
18629 * crashes and corruption:                sync invocation.     (line  12)
18630 * CRC checksum:                          cksum invocation.    (line   6)
18631 * cread:                                 Control.             (line  38)
18632 * creating directories:                  mkdir invocation.    (line   6)
18633 * creating FIFOs (named pipes):          mkfifo invocation.   (line   6)
18634 * creating links (hard only):            link invocation.     (line   6)
18635 * creating links (hard or soft):         ln invocation.       (line   6)
18636 * creating output file, avoiding:        dd invocation.       (line 161)
18637 * creating output file, requiring:       dd invocation.       (line 156)
18638 * crN:                                   Output.              (line  46)
18639 * crown margin:                          fmt invocation.      (line  39)
18640 * crt:                                   Combination.         (line  75)
18641 * crterase:                              Local.               (line  22)
18642 * crtkill:                               Local.               (line  59)
18643 * crtscts:                               Control.             (line  44)
18644 * csh syntax for color setup:            dircolors invocation.
18645                                                               (line  43)
18646 * csN:                                   Control.             (line  26)
18647 * csplit:                                csplit invocation.   (line   6)
18648 * cstopb:                                Control.             (line  34)
18649 * ctime, printing or sorting by:         Sorting the output.  (line  13)
18650 * ctime, show the most recent:           du invocation.       (line 228)
18651 * ctlecho:                               Local.               (line  54)
18652 * current working directory, printing:   pwd invocation.      (line   6)
18653 * cut:                                   cut invocation.      (line   6)
18654 * cyclic redundancy check:               cksum invocation.    (line   6)
18655 * data, erasing:                         shred invocation.    (line   6)
18656 * database for color setup, printing:    dircolors invocation.
18657                                                               (line  48)
18658 * date:                                  date invocation.     (line   6)
18659 * date and time of day format, ISO 8601: Combined date and time of day items.
18660                                                               (line   6)
18661 * date conversion specifiers:            Date conversion specifiers.
18662                                                               (line   6)
18663 * date format, ISO 8601:                 Calendar date items. (line  32)
18664 * date input formats:                    Date input formats.  (line   6)
18665 * date options:                          Options for date.    (line   6)
18666 * date strings, parsing:                 Options for date.    (line  11)
18667 * day in date strings:                   Relative items in date strings.
18668                                                               (line  15)
18669 * day of week item:                      Day of week items.   (line   6)
18670 * dd:                                    dd invocation.       (line   6)
18671 * dec:                                   Combination.         (line  78)
18672 * decctlq:                               Combination.         (line  63)
18673 * Decode base64 data:                    base64 invocation.   (line  33)
18674 * delay for a specified time:            sleep invocation.    (line   6)
18675 * delaying commands:                     Delaying.            (line   6)
18676 * deleting characters:                   Squeezing.           (line   6)
18677 * dereferencing symbolic links:          ln invocation.       (line  49)
18678 * descriptor follow option:              tail invocation.     (line  51)
18679 * destination directory <1>:             ln invocation.       (line 198)
18680 * destination directory <2>:             mv invocation.       (line 116)
18681 * destination directory <3>:             install invocation.  (line 140)
18682 * destination directory <4>:             cp invocation.       (line 400)
18683 * destination directory:                 Target directory.    (line  15)
18684 * destinations, multiple output:         tee invocation.      (line   6)
18685 * device file, disk:                     df invocation.       (line  36)
18686 * df:                                    df invocation.       (line   6)
18687 * DF_BLOCK_SIZE:                         Block size.          (line  12)
18688 * diagnostic:                            chcon invocation.    (line  66)
18689 * dictionary order:                      sort invocation.     (line 100)
18690 * differing lines:                       comm invocation.     (line  19)
18691 * digit:                                 Character sets.      (line 106)
18692 * dir:                                   dir invocation.      (line   6)
18693 * dircolors:                             dircolors invocation.
18694                                                               (line   6)
18695 * direct:                                dd invocation.       (line 212)
18696 * direct I/O:                            dd invocation.       (line 212)
18697 * directories, copying:                  cp invocation.       (line   6)
18698 * directories, copying recursively:      cp invocation.       (line 115)
18699 * directories, creating:                 mkdir invocation.    (line   6)
18700 * directories, creating with given attributes: install invocation.
18701                                                               (line  77)
18702 * directories, removing:                 rm invocation.       (line  40)
18703 * directories, removing (recursively):   rm invocation.       (line 110)
18704 * directories, removing empty:           rmdir invocation.    (line   6)
18705 * directory:                             dd invocation.       (line 220)
18706 * directory check:                       File type tests.     (line  17)
18707 * directory components, printing:        dirname invocation.  (line   6)
18708 * directory deletion, ignoring failures: rmdir invocation.    (line  19)
18709 * directory deletion, reporting:         rmdir invocation.    (line  33)
18710 * directory I/O:                         dd invocation.       (line 220)
18711 * directory listing:                     ls invocation.       (line   6)
18712 * directory listing, brief:              dir invocation.      (line   6)
18713 * directory listing, recursive:          Which files are listed.
18714                                                               (line  98)
18715 * directory listing, verbose:            vdir invocation.     (line   6)
18716 * directory order, listing by:           Sorting the output.  (line  20)
18717 * directory, creating temporary:         mktemp invocation.   (line   6)
18718 * directory, stripping from file names:  basename invocation. (line   6)
18719 * dired Emacs mode support:              What information is listed.
18720                                                               (line  17)
18721 * dirname:                               dirname invocation.  (line   6)
18722 * disabling special characters:          Characters.          (line  13)
18723 * disambiguating group names and IDs:    Disambiguating names and IDs.
18724                                                               (line   6)
18725 * discarding file cache:                 dd invocation.       (line 237)
18726 * disk allocation:                       What information is listed.
18727                                                               (line 256)
18728 * disk device file:                      df invocation.       (line  36)
18729 * disk usage:                            Disk usage.          (line   6)
18730 * disk usage by file system:             df invocation.       (line   6)
18731 * disk usage for files:                  du invocation.       (line   6)
18732 * displacement of dates:                 Relative items in date strings.
18733                                                               (line   6)
18734 * displaying text:                       echo invocation.     (line   6)
18735 * displaying value of a symbolic link:   readlink invocation. (line   6)
18736 * division:                              Numeric expressions. (line  15)
18737 * do nothing, successfully:              true invocation.     (line   6)
18738 * do nothing, unsuccessfully:            false invocation.    (line   6)
18739 * DOS file system:                       df invocation.       (line 252)
18740 * double spacing:                        pr invocation.       (line  84)
18741 * down columns:                          pr invocation.       (line  56)
18742 * dsusp:                                 Characters.          (line  53)
18743 * dsync:                                 dd invocation.       (line 225)
18744 * DTR/DSR flow control:                  Control.             (line  47)
18745 * du:                                    du invocation.       (line   6)
18746 * DU_BLOCK_SIZE:                         Block size.          (line  12)
18747 * DVD file system type:                  df invocation.       (line 248)
18748 * ebcdic, converting to:                 dd invocation.       (line  95)
18749 * echo <1>:                              Local.               (line  18)
18750 * echo:                                  echo invocation.     (line   6)
18751 * echoctl:                               Local.               (line  54)
18752 * echoe:                                 Local.               (line  22)
18753 * echok:                                 Local.               (line  26)
18754 * echoke:                                Local.               (line  59)
18755 * echonl:                                Local.               (line  29)
18756 * echoprt:                               Local.               (line  49)
18757 * effective user and group IDs, printing: id invocation.      (line   6)
18758 * effective user ID, printing:           whoami invocation.   (line   6)
18759 * Eggert, Paul:                          Authors of parse_datetime.
18760                                                               (line   6)
18761 * eight-bit characters <1>:              Combination.         (line  55)
18762 * eight-bit characters:                  Control.             (line  26)
18763 * eight-bit input:                       Input.               (line  25)
18764 * ek:                                    Combination.         (line  22)
18765 * empty files, creating:                 touch invocation.    (line  13)
18766 * empty lines, numbering:                nl invocation.       (line  90)
18767 * entire files, output of:               Output of entire files.
18768                                                               (line   6)
18769 * env:                                   env invocation.      (line   6)
18770 * environment variables, printing:       printenv invocation. (line   6)
18771 * environment, printing:                 env invocation.      (line  52)
18772 * environment, running a program in a modified: env invocation.
18773                                                               (line   6)
18774 * eof:                                   Characters.          (line  32)
18775 * eol:                                   Characters.          (line  35)
18776 * eol2:                                  Characters.          (line  38)
18777 * epoch, for POSIX:                      Seconds since the Epoch.
18778                                                               (line  13)
18779 * epoch, seconds since:                  Time conversion specifiers.
18780                                                               (line  42)
18781 * equal string check:                    String tests.        (line  22)
18782 * equivalence classes:                   Character sets.      (line 132)
18783 * erase:                                 Characters.          (line  26)
18784 * erasing data:                          shred invocation.    (line   6)
18785 * error messages, omitting <1>:          chmod invocation.    (line  51)
18786 * error messages, omitting <2>:          chgrp invocation.    (line  29)
18787 * error messages, omitting:              chown invocation.    (line  80)
18788 * evaluation of expressions:             expr invocation.     (line   6)
18789 * even parity:                           Control.             (line  13)
18790 * evenp:                                 Combination.         (line   9)
18791 * exabyte, definition of:                Block size.          (line 126)
18792 * examples of date:                      Examples of date.    (line   6)
18793 * examples of expr:                      Examples of expr.    (line   6)
18794 * exbibyte, definition of:               Block size.          (line 130)
18795 * excl:                                  dd invocation.       (line 156)
18796 * excluding files from du:               du invocation.       (line 284)
18797 * executable file check:                 Access permission tests.
18798                                                               (line  24)
18799 * executables and file type, marking:    General output formatting.
18800                                                               (line  55)
18801 * execute/search permission:             Mode Structure.      (line  21)
18802 * execute/search permission, symbolic:   Setting Permissions. (line  63)
18803 * existence-of-file check:               File characteristic tests.
18804                                                               (line   9)
18805 * existing backup method:                Backup options.      (line  41)
18806 * exit status commands:                  Conditions.          (line   6)
18807 * exit status of chroot:                 chroot invocation.   (line  70)
18808 * exit status of env:                    env invocation.      (line 104)
18809 * exit status of expr:                   expr invocation.     (line  48)
18810 * exit status of false:                  false invocation.    (line   6)
18811 * exit status of ls:                     ls invocation.       (line  31)
18812 * exit status of mktemp:                 mktemp invocation.   (line 145)
18813 * exit status of nice:                   nice invocation.     (line  67)
18814 * exit status of nohup:                  nohup invocation.    (line  52)
18815 * exit status of pathchk:                pathchk invocation.  (line  55)
18816 * exit status of printenv:               printenv invocation. (line  26)
18817 * exit status of realpath:               realpath invocation. (line  93)
18818 * exit status of runcon:                 runcon invocation.   (line  51)
18819 * exit status of sort:                   sort invocation.     (line  67)
18820 * exit status of stdbuf:                 stdbuf invocation.   (line  72)
18821 * exit status of test:                   test invocation.     (line  43)
18822 * exit status of timeout:                timeout invocation.  (line  63)
18823 * exit status of true:                   true invocation.     (line   6)
18824 * exit status of tty:                    tty invocation.      (line  22)
18825 * expand:                                expand invocation.   (line   6)
18826 * expr:                                  expr invocation.     (line   6)
18827 * expression evaluation <1>:             expr invocation.     (line   6)
18828 * expression evaluation:                 test invocation.     (line   6)
18829 * expressions, numeric:                  Numeric expressions. (line   6)
18830 * expressions, string:                   String expressions.  (line   6)
18831 * ext2 file system type:                 df invocation.       (line 243)
18832 * ext3 file system type:                 df invocation.       (line 243)
18833 * ext4 file system type:                 df invocation.       (line 243)
18834 * extended attributes, xattr <1>:        mv invocation.       (line  39)
18835 * extended attributes, xattr:            install invocation.  (line  39)
18836 * extension, sorting files by:           Sorting the output.  (line  70)
18837 * factor:                                factor invocation.   (line   6)
18838 * failure exit status:                   false invocation.    (line   6)
18839 * false:                                 false invocation.    (line   6)
18840 * fat file system file:                  df invocation.       (line 252)
18841 * fdatasync:                             dd invocation.       (line 174)
18842 * ffN:                                   Output.              (line  64)
18843 * field separator character:             sort invocation.     (line 370)
18844 * fields, padding numeric:               Padding and other flags.
18845                                                               (line   6)
18846 * FIFOs, creating:                       mkfifo invocation.   (line   6)
18847 * file attributes, changing:             Changing file attributes.
18848                                                               (line   6)
18849 * file characteristic tests:             File characteristic tests.
18850                                                               (line   6)
18851 * file contents, dumping unambiguously:  od invocation.       (line   6)
18852 * file information, preserving:          cp invocation.       (line 280)
18853 * file information, preserving, extended attributes, xattr: cp invocation.
18854                                                               (line 197)
18855 * file mode bits, numeric:               Numeric Modes.       (line   6)
18856 * file name manipulation:                File name manipulation.
18857                                                               (line   6)
18858 * file names, canonicalization:          realpath invocation. (line   6)
18859 * file names, checking validity and portability: pathchk invocation.
18860                                                               (line   6)
18861 * file names, creating temporary:        mktemp invocation.   (line   6)
18862 * file names, stripping directory and suffix: basename invocation.
18863                                                               (line   6)
18864 * file offset radix:                     od invocation.       (line  44)
18865 * file ownership, changing:              chown invocation.    (line   6)
18866 * file sizes:                            du invocation.       (line  55)
18867 * file space usage:                      du invocation.       (line   6)
18868 * file status:                           stat invocation.     (line   6)
18869 * file system disk usage:                df invocation.       (line   6)
18870 * file system sizes:                     df invocation.       (line  68)
18871 * file system space, retrieving current data more slowly: df invocation.
18872                                                               (line 214)
18873 * file system space, retrieving old data more quickly: df invocation.
18874                                                               (line 113)
18875 * file system status:                    stat invocation.     (line   6)
18876 * file system types, limiting output to certain: df invocation.
18877                                                               (line 109)
18878 * file system types, printing:           df invocation.       (line 230)
18879 * file systems:                          stat invocation.     (line  33)
18880 * file systems and hard links:           ln invocation.       (line   6)
18881 * file systems, omitting copying to different: cp invocation. (line 429)
18882 * file timestamp resolution:             touch invocation.    (line  31)
18883 * file timestamps, changing:             touch invocation.    (line   6)
18884 * file type and executables, marking:    General output formatting.
18885                                                               (line  55)
18886 * file type tests:                       File type tests.     (line   6)
18887 * file type, marking:                    General output formatting.
18888                                                               (line  67)
18889 * file types:                            Special file types.  (line  10)
18890 * file types, special:                   Special file types.  (line   6)
18891 * file utilities:                        Top.                 (line  31)
18892 * files beginning with -, removing:      rm invocation.       (line 117)
18893 * files, copying:                        cp invocation.       (line   6)
18894 * files, creating:                       truncate invocation. (line  13)
18895 * fingerprint, 128-bit:                  md5sum invocation.   (line   6)
18896 * fingerprint, 160-bit:                  sha1sum invocation.  (line   6)
18897 * fingerprint, 224-bit:                  sha2 utilities.      (line   6)
18898 * fingerprint, 256-bit:                  sha2 utilities.      (line   6)
18899 * fingerprint, 384-bit:                  sha2 utilities.      (line   6)
18900 * fingerprint, 512-bit:                  sha2 utilities.      (line   6)
18901 * first in date strings:                 General date syntax. (line  28)
18902 * first part of files, outputting:       head invocation.     (line   6)
18903 * fixed-length records, converting to variable-length: dd invocation.
18904                                                               (line  44)
18905 * floating point:                        Floating point.      (line   6)
18906 * flow control, hardware:                Control.             (line  44)
18907 * flow control, software:                Input.               (line  46)
18908 * flushing, disabling:                   Local.               (line  33)
18909 * fmt:                                   fmt invocation.      (line   6)
18910 * fold:                                  fold invocation.     (line   6)
18911 * folding long input lines:              fold invocation.     (line   6)
18912 * footers, numbering:                    nl invocation.       (line  19)
18913 * force deletion:                        shred invocation.    (line 114)
18914 * formatting file contents:              Formatting file contents.
18915                                                               (line   6)
18916 * formatting of numbers in seq:          seq invocation.      (line  28)
18917 * formatting times <1>:                  date invocation.     (line  21)
18918 * formatting times:                      pr invocation.       (line  88)
18919 * fortnight in date strings:             Relative items in date strings.
18920                                                               (line  15)
18921 * fsync:                                 dd invocation.       (line 178)
18922 * fullblock:                             dd invocation.       (line 287)
18923 * general date syntax:                   General date syntax. (line   6)
18924 * general numeric sort:                  sort invocation.     (line 123)
18925 * gibibyte, definition of:               Block size.          (line 109)
18926 * gigabyte, definition of:               Block size.          (line 105)
18927 * giving away permissions:               Umask and Protection.
18928                                                               (line  15)
18929 * GMT:                                   Options for date.    (line 111)
18930 * grand total of disk size, usage and available space: df invocation.
18931                                                               (line  73)
18932 * grand total of disk space:             du invocation.       (line  65)
18933 * graph:                                 Character sets.      (line 109)
18934 * Greenwich Mean Time:                   Options for date.    (line 111)
18935 * group IDs, disambiguating:             Disambiguating names and IDs.
18936                                                               (line   6)
18937 * group names, disambiguating:           Disambiguating names and IDs.
18938                                                               (line   6)
18939 * group owner, default:                  Mode Structure.      (line  34)
18940 * group ownership of installed files, setting: install invocation.
18941                                                               (line  84)
18942 * group ownership, changing <1>:         chgrp invocation.    (line   6)
18943 * group ownership, changing:             chown invocation.    (line   6)
18944 * group, permissions for:                Setting Permissions. (line  26)
18945 * groups:                                groups invocation.   (line   6)
18946 * growing files:                         tail invocation.     (line  51)
18947 * hangups, immunity to:                  nohup invocation.    (line   6)
18948 * hard link check:                       File characteristic tests.
18949                                                               (line  23)
18950 * hard link, defined:                    ln invocation.       (line  37)
18951 * hard links:                            dd invocation.       (line 275)
18952 * hard links to directories:             ln invocation.       (line 102)
18953 * hard links to symbolic links:          ln invocation.       (line 211)
18954 * hard links, counting in du:            du invocation.       (line 134)
18955 * hard links, creating <1>:              ln invocation.       (line   6)
18956 * hard links, creating:                  link invocation.     (line   6)
18957 * hard links, preserving:                cp invocation.       (line 130)
18958 * hardware class:                        uname invocation.    (line  50)
18959 * hardware flow control:                 Control.             (line  44)
18960 * hardware platform:                     uname invocation.    (line  43)
18961 * hardware type:                         uname invocation.    (line  50)
18962 * hat notation for control characters:   Local.               (line  54)
18963 * head:                                  head invocation.     (line   6)
18964 * head of output:                        shuf invocation.     (line  34)
18965 * headers, numbering:                    nl invocation.       (line  19)
18966 * help, online:                          Common options.      (line  40)
18967 * hex dump of files:                     od invocation.       (line   6)
18968 * holes, copying files with:             cp invocation.       (line 346)
18969 * holes, creating files with:            truncate invocation. (line  15)
18970 * horizontal, listing files:             General output formatting.
18971                                                               (line 116)
18972 * host processor type:                   uname invocation.    (line  59)
18973 * hostid:                                hostid invocation.   (line   6)
18974 * hostname <1>:                          hostname invocation. (line   6)
18975 * hostname:                              uname invocation.    (line  55)
18976 * hour in date strings:                  Relative items in date strings.
18977                                                               (line  15)
18978 * human numeric sort:                    sort invocation.     (line 146)
18979 * human-readable output <1>:             du invocation.       (line 106)
18980 * human-readable output <2>:             df invocation.       (line  86)
18981 * human-readable output <3>:             What information is listed.
18982                                                               (line 122)
18983 * human-readable output:                 Block size.          (line  44)
18984 * hup[cl]:                               Control.             (line  30)
18985 * hurd, author, printing:                What information is listed.
18986                                                               (line  10)
18987 * ibs:                                   dd invocation.       (line  29)
18988 * icanon:                                Local.               (line  11)
18989 * icrnl:                                 Input.               (line  35)
18990 * id:                                    id invocation.       (line   6)
18991 * idle time:                             who invocation.      (line  88)
18992 * IEEE floating point:                   Floating point.      (line   6)
18993 * iexten:                                Local.               (line  15)
18994 * if:                                    dd invocation.       (line  21)
18995 * iflag:                                 dd invocation.       (line 184)
18996 * ignbrk:                                Input.               (line   9)
18997 * igncr:                                 Input.               (line  32)
18998 * ignore file systems:                   df invocation.       (line  61)
18999 * Ignore garbage in base64 stream:       base64 invocation.   (line  40)
19000 * ignoring case:                         sort invocation.     (line 107)
19001 * ignpar:                                Input.               (line  15)
19002 * imaxbel:                               Input.               (line  61)
19003 * immunity to hangups:                   nohup invocation.    (line   6)
19004 * implementation, hardware:              uname invocation.    (line  43)
19005 * indenting lines:                       pr invocation.       (line 191)
19006 * index:                                 String expressions.  (line  45)
19007 * information, about current users:      who invocation.      (line   6)
19008 * initial part of files, outputting:     head invocation.     (line   6)
19009 * initial tabs, converting:              expand invocation.   (line  37)
19010 * inlcr:                                 Input.               (line  28)
19011 * inode number, printing:                What information is listed.
19012                                                               (line 130)
19013 * inode usage:                           df invocation.       (line  97)
19014 * inode usage, dereferencing in du:      du invocation.       (line 113)
19015 * inode, and hard links:                 ln invocation.       (line  37)
19016 * inodes, written buffered:              sync invocation.     (line   6)
19017 * inpck:                                 Input.               (line  22)
19018 * input block size:                      dd invocation.       (line  29)
19019 * input encoding, UTF-8:                 Input.               (line  38)
19020 * input range to shuffle:                shuf invocation.     (line  25)
19021 * input settings:                        Input.               (line   6)
19022 * input tabs:                            pr invocation.       (line 108)
19023 * install:                               install invocation.  (line   6)
19024 * intr:                                  Characters.          (line  20)
19025 * invocation of commands, modified:      Modified command invocation.
19026                                                               (line   6)
19027 * isig:                                  Local.               (line   7)
19028 * ISO 8601 date and time of day format:  Combined date and time of day items.
19029                                                               (line   6)
19030 * ISO 8601 date format:                  Calendar date items. (line  32)
19031 * ISO/IEC 10646:                         printf invocation.   (line  78)
19032 * iso9660 file system type:              df invocation.       (line 248)
19033 * ISO9660 file system type:              df invocation.       (line 248)
19034 * ispeed:                                Special.             (line  17)
19035 * istrip:                                Input.               (line  25)
19036 * items in date strings:                 General date syntax. (line   6)
19037 * iterations, selecting the number of:   shred invocation.    (line 119)
19038 * iuclc:                                 Input.               (line  51)
19039 * iutf8:                                 Input.               (line  38)
19040 * ixany:                                 Input.               (line  57)
19041 * ixoff:                                 Input.               (line  46)
19042 * ixon:                                  Input.               (line  41)
19043 * join:                                  join invocation.     (line   6)
19044 * kernel name:                           uname invocation.    (line  74)
19045 * kernel release:                        uname invocation.    (line  70)
19046 * kernel version:                        uname invocation.    (line  85)
19047 * kibibyte, definition of:               Block size.          (line  91)
19048 * kibibytes for file sizes:              du invocation.       (line 123)
19049 * kibibytes for file system sizes:       df invocation.       (line 103)
19050 * kill <1>:                              kill invocation.     (line   6)
19051 * kill:                                  Characters.          (line  29)
19052 * kilobyte, definition of:               Block size.          (line  86)
19053 * Knuth, Donald E.:                      fmt invocation.      (line  22)
19054 * language, in dates:                    General date syntax. (line  44)
19055 * last DAY <1>:                          Day of week items.   (line  15)
19056 * last DAY:                              Options for date.    (line  11)
19057 * last in date strings:                  General date syntax. (line  28)
19058 * last modified dates, displaying in du: du invocation.       (line 213)
19059 * last part of files, outputting:        tail invocation.     (line   6)
19060 * LC_ALL <1>:                            ls invocation.       (line  18)
19061 * LC_ALL:                                sort invocation.     (line  58)
19062 * LC_COLLATE <1>:                        Relations for expr.  (line  21)
19063 * LC_COLLATE <2>:                        join invocation.     (line  18)
19064 * LC_COLLATE <3>:                        comm invocation.     (line  13)
19065 * LC_COLLATE <4>:                        uniq invocation.     (line  23)
19066 * LC_COLLATE:                            sort invocation.     (line  58)
19067 * LC_CTYPE <1>:                          printf invocation.   (line  78)
19068 * LC_CTYPE:                              sort invocation.     (line  91)
19069 * LC_MESSAGES:                           pr invocation.       (line  16)
19070 * LC_NUMERIC <1>:                        printf invocation.   (line  65)
19071 * LC_NUMERIC <2>:                        sort invocation.     (line 123)
19072 * LC_NUMERIC <3>:                        Floating point.      (line  17)
19073 * LC_NUMERIC:                            Block size.          (line  64)
19074 * LC_TIME <1>:                           date invocation.     (line  11)
19075 * LC_TIME <2>:                           du invocation.       (line 248)
19076 * LC_TIME <3>:                           Formatting file timestamps.
19077                                                               (line  31)
19078 * LC_TIME <4>:                           sort invocation.     (line 174)
19079 * LC_TIME:                               pr invocation.       (line  95)
19080 * LCASE:                                 Combination.         (line  71)
19081 * lcase:                                 Combination.         (line  71)
19082 * lcase, converting to:                  dd invocation.       (line 118)
19083 * lchown <1>:                            chgrp invocation.    (line  33)
19084 * lchown:                                chown invocation.    (line 109)
19085 * leading directories, creating missing: install invocation.  (line  77)
19086 * leading directory components, stripping: basename invocation.
19087                                                               (line   6)
19088 * leap seconds <1>:                      Seconds since the Epoch.
19089                                                               (line  29)
19090 * leap seconds <2>:                      Time of day items.   (line  14)
19091 * leap seconds <3>:                      General date syntax. (line  75)
19092 * leap seconds <4>:                      Examples of date.    (line 108)
19093 * leap seconds <5>:                      Options for date.    (line 111)
19094 * leap seconds <6>:                      Time conversion specifiers.
19095                                                               (line  42)
19096 * leap seconds:                          touch invocation.    (line 142)
19097 * left margin:                           pr invocation.       (line 191)
19098 * length:                                String expressions.  (line  49)
19099 * limiting output of du:                 du invocation.       (line  78)
19100 * line:                                  Special.             (line  37)
19101 * line buffered:                         stdbuf invocation.   (line   6)
19102 * line count:                            wc invocation.       (line   6)
19103 * line numbering:                        nl invocation.       (line   6)
19104 * line settings of terminal:             stty invocation.     (line   6)
19105 * line-breaking:                         fmt invocation.      (line  22)
19106 * line-by-line comparison:               comm invocation.     (line   6)
19107 * LINES:                                 Special.             (line  30)
19108 * link:                                  link invocation.     (line   6)
19109 * links, creating <1>:                   ln invocation.       (line   6)
19110 * links, creating:                       link invocation.     (line   6)
19111 * Linux file system types:               df invocation.       (line 243)
19112 * literal conversion specifiers:         Literal conversion specifiers.
19113                                                               (line   6)
19114 * litout:                                Combination.         (line  59)
19115 * ln:                                    ln invocation.       (line   6)
19116 * ln format for nl:                      nl invocation.       (line 100)
19117 * lnext:                                 Characters.          (line  62)
19118 * local file system types:               df invocation.       (line 243)
19119 * local settings:                        Local.               (line   6)
19120 * logging out and continuing to run:     nohup invocation.    (line   6)
19121 * logical and operator <1>:              Relations for expr.  (line  17)
19122 * logical and operator:                  Connectives for test.
19123                                                               (line  12)
19124 * logical connectives <1>:               Relations for expr.  (line   6)
19125 * logical connectives:                   Connectives for test.
19126                                                               (line   6)
19127 * logical or operator <1>:               Relations for expr.  (line  11)
19128 * logical or operator:                   Connectives for test.
19129                                                               (line  15)
19130 * logical pages, numbering on:           nl invocation.       (line  14)
19131 * login name, printing:                  logname invocation.  (line   6)
19132 * login sessions, printing users with:   users invocation.    (line   6)
19133 * login time:                            who invocation.      (line  12)
19134 * logname:                               logname invocation.  (line   6)
19135 * long ls format:                        What information is listed.
19136                                                               (line 138)
19137 * lower:                                 Character sets.      (line 113)
19138 * lowercase, translating to output:      Output.              (line  13)
19139 * ls:                                    ls invocation.       (line   6)
19140 * LS_BLOCK_SIZE:                         Block size.          (line  12)
19141 * LS_COLORS <1>:                         dircolors invocation.
19142                                                               (line  25)
19143 * LS_COLORS:                             General output formatting.
19144                                                               (line  36)
19145 * lutimes:                               touch invocation.    (line 111)
19146 * machine type:                          uname invocation.    (line  50)
19147 * machine-readable stty output:          stty invocation.     (line  47)
19148 * MacKenzie, D.:                         Introduction.        (line  22)
19149 * MacKenzie, David:                      Authors of parse_datetime.
19150                                                               (line   6)
19151 * Makefiles, installing programs in:     install invocation.  (line  34)
19152 * manipulating files:                    Basic operations.    (line   6)
19153 * manipulation of file names:            File name manipulation.
19154                                                               (line   6)
19155 * mark parity:                           Control.             (line  17)
19156 * match:                                 String expressions.  (line  36)
19157 * matching patterns:                     String expressions.  (line  11)
19158 * MD5:                                   md5sum invocation.   (line   6)
19159 * md5sum:                                md5sum invocation.   (line   6)
19160 * mebibyte, definition of:               Block size.          (line 102)
19161 * mebibytes for file sizes:              du invocation.       (line 138)
19162 * megabyte, definition of:               Block size.          (line  98)
19163 * merging files:                         paste invocation.    (line   6)
19164 * merging files in parallel:             pr invocation.       (line   6)
19165 * merging sorted files:                  sort invocation.     (line  39)
19166 * message status:                        who invocation.      (line  98)
19167 * message-digest, 128-bit:               md5sum invocation.   (line   6)
19168 * message-digest, 160-bit:               sha1sum invocation.  (line   6)
19169 * message-digest, 224-bit:               sha2 utilities.      (line   6)
19170 * message-digest, 256-bit:               sha2 utilities.      (line   6)
19171 * message-digest, 384-bit:               sha2 utilities.      (line   6)
19172 * message-digest, 512-bit:               sha2 utilities.      (line   6)
19173 * Meyering, J.:                          Introduction.        (line  22)
19174 * Meyering, Jim:                         Authors of parse_datetime.
19175                                                               (line   6)
19176 * midnight in date strings:              Time of day items.   (line  21)
19177 * min:                                   Special.             (line   7)
19178 * minute in date strings:                Relative items in date strings.
19179                                                               (line  15)
19180 * minutes, time zone correction by:      Time of day items.   (line  29)
19181 * mkdir:                                 mkdir invocation.    (line   6)
19182 * mkfifo:                                mkfifo invocation.   (line   6)
19183 * mknod:                                 mknod invocation.    (line   6)
19184 * mktemp:                                mktemp invocation.   (line   6)
19185 * modem control:                         Control.             (line  41)
19186 * modes and umask:                       Umask and Protection.
19187                                                               (line   6)
19188 * modes of created directories, setting: mkdir invocation.    (line  22)
19189 * modes of created FIFOs, setting:       mkfifo invocation.   (line  24)
19190 * modification time, sorting files by:   Sorting the output.  (line  38)
19191 * modified command invocation:           Modified command invocation.
19192                                                               (line   6)
19193 * modified environment, running a program in a: env invocation.
19194                                                               (line   6)
19195 * modify time, changing:                 touch invocation.    (line 128)
19196 * month in date strings:                 Relative items in date strings.
19197                                                               (line  15)
19198 * month names in date strings:           Calendar date items. (line  40)
19199 * months, sorting by:                    sort invocation.     (line 174)
19200 * months, written-out:                   General date syntax. (line  38)
19201 * MS-DOS file system:                    df invocation.       (line 252)
19202 * MS-Windows file system:                df invocation.       (line 252)
19203 * mtime, changing:                       touch invocation.    (line 128)
19204 * multicolumn output, generating:        pr invocation.       (line   6)
19205 * multiple changes to permissions:       Multiple Changes.    (line   6)
19206 * multiplication:                        Numeric expressions. (line  15)
19207 * multipliers after numbers:             dd invocation.       (line 326)
19208 * multithreaded sort:                    sort invocation.     (line 399)
19209 * mv:                                    mv invocation.       (line   6)
19210 * name follow option:                    tail invocation.     (line  51)
19211 * name of kernel:                        uname invocation.    (line  74)
19212 * named pipe check:                      File type tests.     (line  29)
19213 * named pipes, creating:                 mkfifo invocation.   (line   6)
19214 * network node name:                     uname invocation.    (line  55)
19215 * never interactive option:              rm invocation.       (line  63)
19216 * newer files, copying only:             cp invocation.       (line 410)
19217 * newer files, moving only:              mv invocation.       (line  92)
19218 * newer-than file check:                 File characteristic tests.
19219                                                               (line  15)
19220 * newline echoing after kill:            Local.               (line  26)
19221 * newline, echoing:                      Local.               (line  29)
19222 * newline, translating to crlf:          Output.              (line  21)
19223 * newline, translating to return:        Input.               (line  28)
19224 * next DAY <1>:                          Day of week items.   (line  15)
19225 * next DAY:                              Options for date.    (line  11)
19226 * next in date strings:                  General date syntax. (line  28)
19227 * NFS file system type:                  df invocation.       (line 238)
19228 * NFS mounts from BSD to HP-UX <1>:      du invocation.       (line 299)
19229 * NFS mounts from BSD to HP-UX:          What information is listed.
19230                                                               (line 264)
19231 * nice:                                  nice invocation.     (line   6)
19232 * niceness:                              nice invocation.     (line   6)
19233 * nl <1>:                                Combination.         (line  18)
19234 * nl:                                    nl invocation.       (line   6)
19235 * nlN:                                   Output.              (line  40)
19236 * no dereference:                        chcon invocation.    (line  28)
19237 * no-op:                                 true invocation.     (line   6)
19238 * noatime:                               dd invocation.       (line 260)
19239 * nocache:                               dd invocation.       (line 237)
19240 * nocreat:                               dd invocation.       (line 161)
19241 * noctty:                                dd invocation.       (line 266)
19242 * node name:                             uname invocation.    (line  55)
19243 * noerror:                               dd invocation.       (line 171)
19244 * noflsh:                                Local.               (line  33)
19245 * nofollow:                              dd invocation.       (line 272)
19246 * nohup:                                 nohup invocation.    (line   6)
19247 * nohup.out:                             nohup invocation.    (line   6)
19248 * nolinks:                               dd invocation.       (line 275)
19249 * non-directories, copying as special files: cp invocation.   (line 115)
19250 * non-directory suffix, stripping:       dirname invocation.  (line   6)
19251 * nonblock:                              dd invocation.       (line 257)
19252 * nonblocking I/O:                       dd invocation.       (line 257)
19253 * none backup method:                    Backup options.      (line  33)
19254 * none color option:                     General output formatting.
19255                                                               (line  24)
19256 * none dd status=:                       dd invocation.       (line  79)
19257 * none, sorting option for ls:           Sorting the output.  (line  53)
19258 * nonempty file check:                   File characteristic tests.
19259                                                               (line  12)
19260 * nonprinting characters, ignoring:      sort invocation.     (line 166)
19261 * nonzero-length string check:           String tests.        (line  19)
19262 * noon in date strings:                  Time of day items.   (line  21)
19263 * not-equal string check:                String tests.        (line  28)
19264 * notrunc:                               dd invocation.       (line 167)
19265 * now in date strings:                   Relative items in date strings.
19266                                                               (line  32)
19267 * noxfer dd status=:                     dd invocation.       (line  75)
19268 * nproc:                                 nproc invocation.    (line   6)
19269 * NTFS file system:                      df invocation.       (line 252)
19270 * ntfs file system file:                 df invocation.       (line 252)
19271 * number of inputs to merge, nmerge:     sort invocation.     (line 291)
19272 * numbered backup method:                Backup options.      (line  37)
19273 * numbering lines:                       nl invocation.       (line   6)
19274 * numbers, written-out:                  General date syntax. (line  28)
19275 * numeric expressions:                   Numeric expressions. (line   6)
19276 * numeric field padding:                 Padding and other flags.
19277                                                               (line   6)
19278 * numeric modes:                         Numeric Modes.       (line   6)
19279 * numeric operations:                    Numeric operations.  (line   6)
19280 * numeric sequences:                     seq invocation.      (line   6)
19281 * numeric sort:                          sort invocation.     (line 185)
19282 * numeric tests:                         Numeric tests.       (line   6)
19283 * numeric uid and gid:                   What information is listed.
19284                                                               (line 246)
19285 * numeric user and group IDs:            What information is listed.
19286                                                               (line 246)
19287 * numfmt:                                numfmt invocation.   (line   6)
19288 * obs:                                   dd invocation.       (line  33)
19289 * ocrnl:                                 Output.              (line  17)
19290 * octal dump of files:                   od invocation.       (line   6)
19291 * octal numbers for file modes:          Numeric Modes.       (line   6)
19292 * od:                                    od invocation.       (line   6)
19293 * odd parity:                            Control.             (line  13)
19294 * oddp:                                  Combination.         (line  14)
19295 * of:                                    dd invocation.       (line  24)
19296 * ofdel:                                 Output.              (line  35)
19297 * ofill:                                 Output.              (line  30)
19298 * oflag:                                 dd invocation.       (line 188)
19299 * olcuc:                                 Output.              (line  13)
19300 * older-than file check:                 File characteristic tests.
19301                                                               (line  19)
19302 * once interactive option:               rm invocation.       (line  65)
19303 * one file system, restricting du to:    du invocation.       (line 295)
19304 * one file system, restricting rm to:    rm invocation.       (line  74)
19305 * one-line output format:                df invocation.       (line 187)
19306 * onlcr:                                 Output.              (line  21)
19307 * onlret:                                Output.              (line  27)
19308 * onocr:                                 Output.              (line  24)
19309 * operating on characters:               Operating on characters.
19310                                                               (line   6)
19311 * operating on sorted files:             Operating on sorted files.
19312                                                               (line   6)
19313 * operating system name:                 uname invocation.    (line  66)
19314 * opost:                                 Output.              (line   9)
19315 * option delimiter:                      Common options.      (line  46)
19316 * options for date:                      Options for date.    (line   6)
19317 * or operator <1>:                       Relations for expr.  (line  11)
19318 * or operator:                           Connectives for test.
19319                                                               (line  15)
19320 * ordinal numbers:                       General date syntax. (line  28)
19321 * ospeed:                                Special.             (line  20)
19322 * other permissions:                     Setting Permissions. (line  29)
19323 * output block size:                     dd invocation.       (line  33)
19324 * output file name prefix <1>:           csplit invocation.   (line  66)
19325 * output file name prefix:               split invocation.    (line  20)
19326 * output file name suffix:               csplit invocation.   (line  70)
19327 * output format:                         stat invocation.     (line  39)
19328 * output format, portable:               df invocation.       (line 187)
19329 * output NUL-byte-terminated lines <1>:  env invocation.      (line  90)
19330 * output NUL-byte-terminated lines <2>:  printenv invocation. (line  21)
19331 * output NUL-byte-terminated lines:      du invocation.       (line  28)
19332 * output of entire files:                Output of entire files.
19333                                                               (line   6)
19334 * output of parts of files:              Output of parts of files.
19335                                                               (line   6)
19336 * output settings:                       Output.              (line   6)
19337 * output tabs:                           pr invocation.       (line 128)
19338 * overwriting of input, allowed <1>:     shuf invocation.     (line  39)
19339 * overwriting of input, allowed:         sort invocation.     (line 318)
19340 * owned by effective group ID check:     Access permission tests.
19341                                                               (line  32)
19342 * owned by effective user ID check:      Access permission tests.
19343                                                               (line  28)
19344 * owner of file, permissions for:        Setting Permissions. (line  23)
19345 * owner, default:                        Mode Structure.      (line  34)
19346 * ownership of installed files, setting: install invocation.  (line 103)
19347 * p for FIFO file:                       mknod invocation.    (line  36)
19348 * pad character:                         Output.              (line  35)
19349 * pad instead of timing for delaying:    Output.              (line  30)
19350 * padding of numeric fields:             Padding and other flags.
19351                                                               (line   6)
19352 * paragraphs, reformatting:              fmt invocation.      (line   6)
19353 * parenb:                                Control.             (line   9)
19354 * parent directories and cp:             cp invocation.       (line 284)
19355 * parent directories, creating:          mkdir invocation.    (line  36)
19356 * parent directories, creating missing:  install invocation.  (line  77)
19357 * parent directories, removing:          rmdir invocation.    (line  24)
19358 * parentheses for grouping:              expr invocation.     (line  36)
19359 * parity:                                Combination.         (line  10)
19360 * parity errors, marking:                Input.               (line  18)
19361 * parity, ignoring:                      Input.               (line  15)
19362 * parmrk:                                Input.               (line  18)
19363 * parodd:                                Control.             (line  13)
19364 * parse_datetime:                        Date input formats.  (line   6)
19365 * parsing date strings:                  Options for date.    (line  11)
19366 * parts of files, output of:             Output of parts of files.
19367                                                               (line   6)
19368 * pass8:                                 Combination.         (line  55)
19369 * paste:                                 paste invocation.    (line   6)
19370 * Paterson, R.:                          Introduction.        (line  22)
19371 * PATH:                                  env invocation.      (line  24)
19372 * pathchk:                               pathchk invocation.  (line   6)
19373 * pattern matching:                      String expressions.  (line  11)
19374 * pebibyte, definition of:               Block size.          (line 123)
19375 * permission tests:                      Access permission tests.
19376                                                               (line   6)
19377 * permissions of installed files, setting: install invocation.
19378                                                               (line  90)
19379 * permissions, changing access:          chmod invocation.    (line   6)
19380 * permissions, copying existing:         Copying Permissions. (line   6)
19381 * permissions, for changing file timestamps: touch invocation.
19382                                                               (line  47)
19383 * permissions, output by ls:             What information is listed.
19384                                                               (line 201)
19385 * petabyte, definition of:               Block size.          (line 119)
19386 * phone directory order:                 sort invocation.     (line 100)
19387 * pieces, splitting a file into:         split invocation.    (line   6)
19388 * Pinard, F. <1>:                        Authors of parse_datetime.
19389                                                               (line  19)
19390 * Pinard, F.:                            Introduction.        (line  22)
19391 * pipe fitting:                          tee invocation.      (line   6)
19392 * Plass, Michael F.:                     fmt invocation.      (line  22)
19393 * platform, hardware:                    uname invocation.    (line  43)
19394 * pm in date strings:                    Time of day items.   (line  21)
19395 * portable file names, checking for:     pathchk invocation.  (line   6)
19396 * portable output format:                df invocation.       (line 187)
19397 * POSIX:                                 Introduction.        (line  12)
19398 * POSIX output format:                   df invocation.       (line 187)
19399 * POSIXLY_CORRECT <1>:                   id invocation.       (line  16)
19400 * POSIXLY_CORRECT <2>:                   printf invocation.   (line  55)
19401 * POSIXLY_CORRECT <3>:                   echo invocation.     (line  81)
19402 * POSIXLY_CORRECT <4>:                   dd invocation.       (line 371)
19403 * POSIXLY_CORRECT <5>:                   sort invocation.     (line 328)
19404 * POSIXLY_CORRECT <6>:                   pr invocation.       (line  95)
19405 * POSIXLY_CORRECT <7>:                   Standards conformance.
19406                                                               (line   6)
19407 * POSIXLY_CORRECT:                       Common options.      (line  11)
19408 * POSIXLY_CORRECT, and block size:       Block size.          (line  12)
19409 * pr:                                    pr invocation.       (line   6)
19410 * prime factors:                         factor invocation.   (line   6)
19411 * print:                                 Character sets.      (line 116)
19412 * print machine hardware name:           arch invocation.     (line   6)
19413 * print name of current directory:       pwd invocation.      (line   6)
19414 * print system information:              uname invocation.    (line   6)
19415 * print terminal file name:              tty invocation.      (line   6)
19416 * Print the number of processors:        nproc invocation.    (line   6)
19417 * printenv:                              printenv invocation. (line   6)
19418 * printf:                                printf invocation.   (line   6)
19419 * printing all or some environment variables: printenv invocation.
19420                                                               (line   6)
19421 * printing color database:               dircolors invocation.
19422                                                               (line  48)
19423 * printing current user information:     who invocation.      (line   6)
19424 * printing current usernames:            users invocation.    (line   6)
19425 * printing groups a user is in:          groups invocation.   (line   6)
19426 * printing real and effective user and group IDs: id invocation.
19427                                                               (line   6)
19428 * printing text:                         echo invocation.     (line   6)
19429 * printing text, commands for:           Printing text.       (line   6)
19430 * printing the current time:             date invocation.     (line   6)
19431 * printing the effective user ID:        whoami invocation.   (line   6)
19432 * printing the host identifier:          hostid invocation.   (line   6)
19433 * printing the hostname:                 hostname invocation. (line   6)
19434 * printing the system uptime and load:   uptime invocation.   (line   6)
19435 * printing user's login name:            logname invocation.  (line   6)
19436 * printing, preparing files for:         pr invocation.       (line   6)
19437 * process zero-terminated items <1>:     join invocation.     (line 171)
19438 * process zero-terminated items <2>:     uniq invocation.     (line 150)
19439 * process zero-terminated items <3>:     shuf invocation.     (line  61)
19440 * process zero-terminated items:         sort invocation.     (line 423)
19441 * processes, commands for controlling:   Process control.     (line   6)
19442 * prompting, and ln:                     ln invocation.       (line 113)
19443 * prompting, and mv:                     mv invocation.       (line  44)
19444 * prompting, and rm:                     rm invocation.       (line  13)
19445 * prompts, forcing:                      mv invocation.       (line  78)
19446 * prompts, omitting:                     mv invocation.       (line  72)
19447 * prterase:                              Local.               (line  49)
19448 * ptx:                                   ptx invocation.      (line   6)
19449 * punct:                                 Character sets.      (line 120)
19450 * pure numbers in date strings:          Pure numbers in date strings.
19451                                                               (line   6)
19452 * pwd:                                   pwd invocation.      (line   6)
19453 * quit:                                  Characters.          (line  23)
19454 * quoting style:                         Formatting the file names.
19455                                                               (line  34)
19456 * radix for file offsets:                od invocation.       (line  44)
19457 * random sort:                           sort invocation.     (line 215)
19458 * random source for shredding:           shred invocation.    (line 125)
19459 * random source for shuffling:           shuf invocation.     (line  45)
19460 * random source for sorting:             sort invocation.     (line 334)
19461 * random sources:                        Random sources.      (line   6)
19462 * ranges:                                Character sets.      (line  50)
19463 * raw:                                   Combination.         (line  42)
19464 * read errors, ignoring:                 dd invocation.       (line 171)
19465 * read from stdin and write to stdout and files: tee invocation.
19466                                                               (line   6)
19467 * read permission:                       Mode Structure.      (line  14)
19468 * read permission, symbolic:             Setting Permissions. (line  57)
19469 * read system call, and holes:           cp invocation.       (line 346)
19470 * readable file check:                   Access permission tests.
19471                                                               (line  15)
19472 * readlink:                              readlink invocation. (line   6)
19473 * real user and group IDs, printing:     id invocation.       (line   6)
19474 * realpath <1>:                          realpath invocation. (line   6)
19475 * realpath:                              readlink invocation. (line   6)
19476 * recursive directory listing:           Which files are listed.
19477                                                               (line  98)
19478 * recursively changing access permissions: chmod invocation.  (line  76)
19479 * recursively changing file ownership:   chown invocation.    (line 148)
19480 * recursively changing group ownership:  chgrp invocation.    (line  71)
19481 * recursively copying directories:       cp invocation.       (line 115)
19482 * redirection:                           Redirection.         (line   6)
19483 * reference file:                        chcon invocation.    (line  32)
19484 * reformatting paragraph text:           fmt invocation.      (line   6)
19485 * regular expression matching:           String expressions.  (line  11)
19486 * regular file check:                    File type tests.     (line  20)
19487 * relations, numeric or string:          Relations for expr.  (line   6)
19488 * relative items in date strings:        Relative items in date strings.
19489                                                               (line   6)
19490 * release of kernel:                     uname invocation.    (line  70)
19491 * relpath:                               realpath invocation. (line  68)
19492 * remainder:                             Numeric expressions. (line  15)
19493 * remote hostname:                       who invocation.      (line  12)
19494 * removing empty directories:            rmdir invocation.    (line   6)
19495 * removing files after shredding:        shred invocation.    (line 138)
19496 * removing files or directories:         rm invocation.       (line   6)
19497 * removing files or directories (via the unlink syscall): unlink invocation.
19498                                                               (line   6)
19499 * removing permissions:                  Setting Permissions. (line  42)
19500 * repeat output values:                  shuf invocation.     (line  51)
19501 * repeated characters:                   Character sets.      (line  74)
19502 * repeated lines, outputting:            uniq invocation.     (line  67)
19503 * repeated output of a string:           yes invocation.      (line   6)
19504 * restricted deletion flag:              Mode Structure.      (line  61)
19505 * return, ignoring:                      Input.               (line  32)
19506 * return, translating to newline <1>:    Output.              (line  17)
19507 * return, translating to newline:        Input.               (line  35)
19508 * reverse sorting <1>:                   Sorting the output.  (line  28)
19509 * reverse sorting:                       sort invocation.     (line 209)
19510 * reversing files:                       tac invocation.      (line   6)
19511 * rm:                                    rm invocation.       (line   6)
19512 * rmdir:                                 rmdir invocation.    (line   6)
19513 * rn format for nl:                      nl invocation.       (line 103)
19514 * root as default owner:                 install invocation.  (line 103)
19515 * root directory, allow recursive destruction: rm invocation. (line 103)
19516 * root directory, allow recursive modification <1>: chmod invocation.
19517                                                               (line  60)
19518 * root directory, allow recursive modification <2>: chgrp invocation.
19519                                                               (line  53)
19520 * root directory, allow recursive modification: chown invocation.
19521                                                               (line 129)
19522 * root directory, disallow recursive destruction: rm invocation.
19523                                                               (line  92)
19524 * root directory, disallow recursive modification <1>: chmod invocation.
19525                                                               (line  55)
19526 * root directory, disallow recursive modification <2>: chgrp invocation.
19527                                                               (line  48)
19528 * root directory, disallow recursive modification: chown invocation.
19529                                                               (line 124)
19530 * root directory, running a program in a specified: chroot invocation.
19531                                                               (line   6)
19532 * rows:                                  Special.             (line  23)
19533 * rprnt:                                 Characters.          (line  56)
19534 * RTS/CTS flow control:                  Control.             (line  44)
19535 * run commands with bounded time:        timeout invocation.  (line   6)
19536 * run with security context:             runcon invocation.   (line   6)
19537 * runcon:                                runcon invocation.   (line   6)
19538 * running a program in a modified environment: env invocation.
19539                                                               (line   6)
19540 * running a program in a specified root directory: chroot invocation.
19541                                                               (line   6)
19542 * rz format for nl:                      nl invocation.       (line 106)
19543 * Salz, Rich:                            Authors of parse_datetime.
19544                                                               (line   6)
19545 * same file check:                       File characteristic tests.
19546                                                               (line  23)
19547 * sane:                                  Combination.         (line  25)
19548 * scheduling, affecting:                 nice invocation.     (line   6)
19549 * screen columns:                        fold invocation.     (line  18)
19550 * seconds since the epoch:               Time conversion specifiers.
19551                                                               (line  42)
19552 * section delimiters of pages:           nl invocation.       (line  71)
19553 * security context <1>:                  id invocation.       (line  52)
19554 * security context <2>:                  mknod invocation.    (line  63)
19555 * security context <3>:                  mkfifo invocation.   (line  32)
19556 * security context <4>:                  mkdir invocation.    (line  58)
19557 * security context <5>:                  mv invocation.       (line 126)
19558 * security context <6>:                  install invocation.  (line 109)
19559 * security context <7>:                  cp invocation.       (line 435)
19560 * security context:                      What information is listed.
19561                                                               (line 281)
19562 * seek:                                  dd invocation.       (line  54)
19563 * seek_bytes:                            dd invocation.       (line 311)
19564 * self-backups:                          cp invocation.       (line  66)
19565 * SELinux <1>:                           id invocation.       (line  52)
19566 * SELinux <2>:                           install invocation.  (line 109)
19567 * SELinux:                               What information is listed.
19568                                                               (line 281)
19569 * SELinux context:                       SELinux context.     (line   6)
19570 * SELinux, context:                      SELinux context.     (line   6)
19571 * SELinux, restoring security context:   mv invocation.       (line 126)
19572 * SELinux, setting/restoring security context <1>: mknod invocation.
19573                                                               (line  63)
19574 * SELinux, setting/restoring security context <2>: mkfifo invocation.
19575                                                               (line  32)
19576 * SELinux, setting/restoring security context <3>: mkdir invocation.
19577                                                               (line  58)
19578 * SELinux, setting/restoring security context <4>: install invocation.
19579                                                               (line 154)
19580 * SELinux, setting/restoring security context: cp invocation. (line 435)
19581 * send a signal to processes:            kill invocation.     (line   6)
19582 * sentences and line-breaking:           fmt invocation.      (line  22)
19583 * separator for numbers in seq:          seq invocation.      (line  46)
19584 * seq:                                   seq invocation.      (line   6)
19585 * sequence of numbers:                   seq invocation.      (line   6)
19586 * set-group-ID:                          Mode Structure.      (line  53)
19587 * set-group-ID check:                    Access permission tests.
19588                                                               (line   9)
19589 * set-user-ID:                           Mode Structure.      (line  46)
19590 * set-user-ID check:                     Access permission tests.
19591                                                               (line  18)
19592 * setgid:                                Mode Structure.      (line  53)
19593 * setting permissions:                   Setting Permissions. (line  46)
19594 * setting the hostname:                  hostname invocation. (line   6)
19595 * setting the time:                      Setting the time.    (line   6)
19596 * setuid:                                Mode Structure.      (line  46)
19597 * setup for color:                       dircolors invocation.
19598                                                               (line   6)
19599 * sh syntax for color setup:             dircolors invocation.
19600                                                               (line  36)
19601 * SHA-1:                                 sha1sum invocation.  (line   6)
19602 * SHA-2:                                 sha2 utilities.      (line   6)
19603 * sha1sum:                               sha1sum invocation.  (line   6)
19604 * sha224sum:                             sha2 utilities.      (line   6)
19605 * sha256sum:                             sha2 utilities.      (line   6)
19606 * sha384sum:                             sha2 utilities.      (line   6)
19607 * sha512sum:                             sha2 utilities.      (line   6)
19608 * SHELL environment variable, and color <1>: dircolors invocation.
19609                                                               (line  25)
19610 * SHELL environment variable, and color: General output formatting.
19611                                                               (line  36)
19612 * shell utilities:                       Top.                 (line  31)
19613 * shred:                                 shred invocation.    (line   6)
19614 * shuf:                                  shuf invocation.     (line   6)
19615 * shuffling files:                       shuf invocation.     (line   6)
19616 * SI output <1>:                         du invocation.       (line 157)
19617 * SI output <2>:                         df invocation.       (line 207)
19618 * SI output <3>:                         What information is listed.
19619                                                               (line 273)
19620 * SI output:                             Block size.          (line  44)
19621 * signals, specifying:                   Signal specifications.
19622                                                               (line   6)
19623 * simple backup method:                  Backup options.      (line  48)
19624 * SIMPLE_BACKUP_SUFFIX:                  Backup options.      (line  54)
19625 * single-column output of files:         General output formatting.
19626                                                               (line  10)
19627 * size:                                  Special.             (line  30)
19628 * size for main memory sorting:          sort invocation.     (line 353)
19629 * size of file to shred:                 shred invocation.    (line 131)
19630 * size of files, reporting:              What information is listed.
19631                                                               (line 256)
19632 * size of files, sorting files by:       Sorting the output.  (line  34)
19633 * skip:                                  dd invocation.       (line  49)
19634 * skip_bytes:                            dd invocation.       (line 305)
19635 * sleep:                                 sleep invocation.    (line   6)
19636 * socket check:                          File type tests.     (line  32)
19637 * software flow control:                 Input.               (line  46)
19638 * sort:                                  sort invocation.     (line   6)
19639 * sort field:                            sort invocation.     (line 264)
19640 * sort stability:                        sort invocation.     (line  46)
19641 * sort's last-resort comparison:         sort invocation.     (line  46)
19642 * sorted files, operations on:           Operating on sorted files.
19643                                                               (line   6)
19644 * sorting files:                         sort invocation.     (line   6)
19645 * sorting ls output:                     Sorting the output.  (line   6)
19646 * space:                                 Character sets.      (line 123)
19647 * space parity:                          Control.             (line  17)
19648 * sparse:                                dd invocation.       (line 126)
19649 * sparse files, copying:                 cp invocation.       (line 346)
19650 * sparse files, creating:                truncate invocation. (line  15)
19651 * special characters:                    Characters.          (line   6)
19652 * special file types:                    Special file types.  (line   6)
19653 * special files:                         mknod invocation.    (line  13)
19654 * special settings:                      Special.             (line   6)
19655 * specifying sets of characters:         Character sets.      (line   6)
19656 * speed:                                 Special.             (line  40)
19657 * split:                                 split invocation.    (line   6)
19658 * splitting a file into pieces:          split invocation.    (line   6)
19659 * splitting a file into pieces by context: csplit invocation. (line   6)
19660 * squeezing empty lines:                 cat invocation.      (line  38)
19661 * squeezing repeat characters:           Squeezing.           (line   6)
19662 * Stallman, R.:                          Introduction.        (line  22)
19663 * standard input:                        Common options.      (line  51)
19664 * standard output:                       Common options.      (line  51)
19665 * standard streams, buffering:           stdbuf invocation.   (line   6)
19666 * start:                                 Characters.          (line  44)
19667 * stat:                                  stat invocation.     (line   6)
19668 * status:                                dd invocation.       (line  70)
19669 * status time, printing or sorting by:   Sorting the output.  (line  13)
19670 * status time, show the most recent:     du invocation.       (line 228)
19671 * stdbuf:                                stdbuf invocation.   (line   6)
19672 * stick parity:                          Control.             (line  17)
19673 * sticky:                                Mode Structure.      (line  61)
19674 * sticky bit check:                      Access permission tests.
19675                                                               (line  12)
19676 * stop:                                  Characters.          (line  47)
19677 * stop bits:                             Control.             (line  34)
19678 * strftime and date:                     date invocation.     (line  21)
19679 * string constants, outputting:          od invocation.       (line  85)
19680 * string expressions:                    String expressions.  (line   6)
19681 * string tests:                          String tests.        (line   6)
19682 * strip directory and suffix from file names: basename invocation.
19683                                                               (line   6)
19684 * stripping non-directory suffix:        dirname invocation.  (line   6)
19685 * stripping symbol table information:    install invocation.  (line 126)
19686 * stripping trailing slashes <1>:        mv invocation.       (line 106)
19687 * stripping trailing slashes:            cp invocation.       (line 382)
19688 * stty:                                  stty invocation.     (line   6)
19689 * substr:                                String expressions.  (line  40)
19690 * subtracting permissions:               Setting Permissions. (line  42)
19691 * subtraction:                           Numeric expressions. (line  11)
19692 * successful exit:                       true invocation.     (line   6)
19693 * suffix, stripping from file names:     basename invocation. (line   6)
19694 * sum:                                   sum invocation.      (line   6)
19695 * summarizing files:                     Summarizing files.   (line   6)
19696 * superblock, writing:                   sync invocation.     (line   6)
19697 * supplementary groups, printing:        groups invocation.   (line   6)
19698 * susp:                                  Characters.          (line  50)
19699 * swab (byte-swapping):                  dd invocation.       (line 141)
19700 * swap space, saving text image in:      Mode Structure.      (line  61)
19701 * swtch:                                 Characters.          (line  41)
19702 * symbol table information, stripping:   install invocation.  (line 126)
19703 * symbol table information, stripping, program: install invocation.
19704                                                               (line 130)
19705 * symbolic (soft) links, creating:       ln invocation.       (line   6)
19706 * symbolic link check:                   File type tests.     (line  24)
19707 * symbolic link to directory, controlling traversal of: Traversing symlinks.
19708                                                               (line   6)
19709 * symbolic link to directory, never traverse <1>: chcon invocation.
19710                                                               (line  60)
19711 * symbolic link to directory, never traverse <2>: chgrp invocation.
19712                                                               (line  84)
19713 * symbolic link to directory, never traverse <3>: chown invocation.
19714                                                               (line 161)
19715 * symbolic link to directory, never traverse: Traversing symlinks.
19716                                                               (line  29)
19717 * symbolic link to directory, traverse each that is encountered <1>: chcon invocation.
19718                                                               (line  55)
19719 * symbolic link to directory, traverse each that is encountered <2>: chgrp invocation.
19720                                                               (line  79)
19721 * symbolic link to directory, traverse each that is encountered <3>: chown invocation.
19722                                                               (line 156)
19723 * symbolic link to directory, traverse each that is encountered: Traversing symlinks.
19724                                                               (line  25)
19725 * symbolic link to directory, traverse if on the command line <1>: chcon invocation.
19726                                                               (line  50)
19727 * symbolic link to directory, traverse if on the command line <2>: chgrp invocation.
19728                                                               (line  74)
19729 * symbolic link to directory, traverse if on the command line <3>: chown invocation.
19730                                                               (line 151)
19731 * symbolic link to directory, traverse if on the command line: Traversing symlinks.
19732                                                               (line  20)
19733 * symbolic link, defined:                ln invocation.       (line  49)
19734 * symbolic links and ln:                 ln invocation.       (line 211)
19735 * symbolic links and pwd:                pwd invocation.      (line  28)
19736 * symbolic links, changing group:        chgrp invocation.    (line  38)
19737 * symbolic links, changing owner <1>:    chgrp invocation.    (line  33)
19738 * symbolic links, changing owner:        chown invocation.    (line  83)
19739 * symbolic links, changing time:         touch invocation.    (line 111)
19740 * symbolic links, copying:               cp invocation.       (line 130)
19741 * symbolic links, copying with:          cp invocation.       (line 387)
19742 * symbolic links, dereferencing:         Which files are listed.
19743                                                               (line  39)
19744 * symbolic links, dereferencing in du:   du invocation.       (line 129)
19745 * symbolic links, dereferencing in stat: stat invocation.     (line  26)
19746 * symbolic links, following:             dd invocation.       (line 272)
19747 * symbolic links, permissions of:        chmod invocation.    (line  12)
19748 * symbolic modes:                        Symbolic Modes.      (line   6)
19749 * symlinks, resolution:                  realpath invocation. (line   6)
19750 * sync <1>:                              sync invocation.     (line   6)
19751 * sync:                                  dd invocation.       (line 234)
19752 * sync (padding with ASCII NULs):        dd invocation.       (line 147)
19753 * synchronize disk and memory:           sync invocation.     (line   6)
19754 * synchronized data and metadata I/O:    dd invocation.       (line 234)
19755 * synchronized data and metadata writes, before finishing: dd invocation.
19756                                                               (line 178)
19757 * synchronized data reads:               dd invocation.       (line 225)
19758 * synchronized data writes, before finishing: dd invocation.  (line 174)
19759 * system context:                        System context.      (line   6)
19760 * system information, printing <1>:      uname invocation.    (line   6)
19761 * system information, printing <2>:      nproc invocation.    (line   6)
19762 * system information, printing:          arch invocation.     (line   6)
19763 * system name, printing:                 hostname invocation. (line   6)
19764 * System V sum:                          sum invocation.      (line  34)
19765 * tab stops, setting:                    expand invocation.   (line  24)
19766 * tabN:                                  Output.              (line  52)
19767 * tabs:                                  Combination.         (line  66)
19768 * tabs to spaces, converting:            expand invocation.   (line   6)
19769 * tac:                                   tac invocation.      (line   6)
19770 * tagged paragraphs:                     fmt invocation.      (line  45)
19771 * tail:                                  tail invocation.     (line   6)
19772 * tandem:                                Input.               (line  46)
19773 * target directory <1>:                  ln invocation.       (line 198)
19774 * target directory <2>:                  mv invocation.       (line 116)
19775 * target directory <3>:                  install invocation.  (line 140)
19776 * target directory <4>:                  cp invocation.       (line 400)
19777 * target directory:                      Target directory.    (line   6)
19778 * tebibyte, definition of:               Block size.          (line 116)
19779 * tee:                                   tee invocation.      (line   6)
19780 * telephone directory order:             sort invocation.     (line 100)
19781 * temporary directory:                   sort invocation.     (line 390)
19782 * temporary files and directories:       mktemp invocation.   (line   6)
19783 * terabyte, definition of:               Block size.          (line 112)
19784 * terminal check:                        File type tests.     (line  35)
19785 * terminal file name, printing:          tty invocation.      (line   6)
19786 * terminal lines, currently used:        who invocation.      (line  12)
19787 * terminal settings:                     stty invocation.     (line   6)
19788 * terminal, using color iff:             General output formatting.
19789                                                               (line  26)
19790 * terse output:                          stat invocation.     (line  60)
19791 * test:                                  test invocation.     (line   6)
19792 * text:                                  dd invocation.       (line 283)
19793 * text I/O:                              dd invocation.       (line 283)
19794 * text image, saving in swap space:      Mode Structure.      (line  61)
19795 * text input files:                      md5sum invocation.   (line 110)
19796 * text utilities:                        Top.                 (line  31)
19797 * text, displaying:                      echo invocation.     (line   6)
19798 * text, reformatting:                    fmt invocation.      (line   6)
19799 * this in date strings:                  Relative items in date strings.
19800                                                               (line  32)
19801 * time <1>:                              Special.             (line  12)
19802 * time:                                  touch invocation.    (line  97)
19803 * time conversion specifiers:            Time conversion specifiers.
19804                                                               (line   6)
19805 * time formats <1>:                      date invocation.     (line  21)
19806 * time formats:                          pr invocation.       (line  88)
19807 * time limit:                            timeout invocation.  (line   6)
19808 * time of day item:                      Time of day items.   (line   6)
19809 * time setting:                          Setting the time.    (line   6)
19810 * time style <1>:                        du invocation.       (line 243)
19811 * time style:                            Formatting file timestamps.
19812                                                               (line  27)
19813 * time units <1>:                        sleep invocation.    (line  13)
19814 * time units:                            timeout invocation.  (line  54)
19815 * time zone correction:                  Time of day items.   (line  29)
19816 * time zone item <1>:                    Time zone items.     (line   6)
19817 * time zone item:                        General date syntax. (line  48)
19818 * time, printing or setting:             date invocation.     (line   6)
19819 * TIME_STYLE <1>:                        du invocation.       (line 273)
19820 * TIME_STYLE:                            Formatting file timestamps.
19821                                                               (line 111)
19822 * timeout:                               timeout invocation.  (line   6)
19823 * timestamps of installed files, preserving: install invocation.
19824                                                               (line 116)
19825 * timestamps, changing file:             touch invocation.    (line   6)
19826 * TMPDIR:                                sort invocation.     (line  73)
19827 * today in date strings:                 Relative items in date strings.
19828                                                               (line  32)
19829 * tomorrow:                              Options for date.    (line  11)
19830 * tomorrow in date strings:              Relative items in date strings.
19831                                                               (line  29)
19832 * topological sort:                      tsort invocation.    (line   6)
19833 * tostop:                                Local.               (line  44)
19834 * total counts:                          wc invocation.       (line  15)
19835 * touch:                                 touch invocation.    (line   6)
19836 * tr:                                    tr invocation.       (line   6)
19837 * trailing slashes:                      Trailing slashes.    (line   6)
19838 * translating characters:                Translating.         (line   6)
19839 * true:                                  true invocation.     (line   6)
19840 * truncate:                              truncate invocation. (line   6)
19841 * truncating output file, avoiding:      dd invocation.       (line 167)
19842 * truncating, file sizes:                truncate invocation. (line   6)
19843 * tsort:                                 tsort invocation.    (line   6)
19844 * tty:                                   tty invocation.      (line   6)
19845 * two-way parity:                        Control.             (line   9)
19846 * type size:                             od invocation.       (line 132)
19847 * TZ <1>:                                Specifying time zone rules.
19848                                                               (line   6)
19849 * TZ <2>:                                Options for date.    (line 111)
19850 * TZ <3>:                                date invocation.     (line  17)
19851 * TZ <4>:                                who invocation.      (line  27)
19852 * TZ <5>:                                stat invocation.     (line 214)
19853 * TZ <6>:                                touch invocation.    (line  76)
19854 * TZ <7>:                                Formatting file timestamps.
19855                                                               (line  19)
19856 * TZ:                                    pr invocation.       (line 101)
19857 * u, and disabling special characters:   Characters.          (line  13)
19858 * ucase, converting to:                  dd invocation.       (line 121)
19859 * umask and modes:                       Umask and Protection.
19860                                                               (line   6)
19861 * uname:                                 uname invocation.    (line   6)
19862 * unblock:                               dd invocation.       (line 112)
19863 * unexpand:                              unexpand invocation. (line   6)
19864 * Unicode:                               printf invocation.   (line  78)
19865 * uniq:                                  uniq invocation.     (line   6)
19866 * unique lines, outputting:              uniq invocation.     (line 138)
19867 * uniquify files:                        uniq invocation.     (line   6)
19868 * uniquifying output:                    sort invocation.     (line 407)
19869 * unlink:                                unlink invocation.   (line   6)
19870 * unprintable characters, ignoring:      sort invocation.     (line 166)
19871 * unsorted directory listing:            Sorting the output.  (line  20)
19872 * upper:                                 Character sets.      (line 126)
19873 * uppercase, translating to lowercase:   Input.               (line  51)
19874 * uptime:                                uptime invocation.   (line   6)
19875 * use time, changing:                    touch invocation.    (line  89)
19876 * use time, printing or sorting files by: Sorting the output. (line  13)
19877 * use time, show the most recent:        du invocation.       (line 228)
19878 * user IDs, disambiguating:              Disambiguating names and IDs.
19879                                                               (line   6)
19880 * user information, commands for:        User information.    (line   6)
19881 * user name, printing:                   logname invocation.  (line   6)
19882 * user names, disambiguating:            Disambiguating names and IDs.
19883                                                               (line   6)
19884 * usernames, printing current:           users invocation.    (line   6)
19885 * users:                                 users invocation.    (line   6)
19886 * UTC:                                   Options for date.    (line 111)
19887 * utmp <1>:                              who invocation.      (line  16)
19888 * utmp <2>:                              users invocation.    (line  16)
19889 * utmp:                                  logname invocation.  (line   6)
19890 * valid file names, checking for:        pathchk invocation.  (line   6)
19891 * variable-length records, converting to fixed-length: dd invocation.
19892                                                               (line  44)
19893 * vdir:                                  vdir invocation.     (line   6)
19894 * verbose ls format:                     What information is listed.
19895                                                               (line 138)
19896 * verifying MD5 checksums:               md5sum invocation.   (line  79)
19897 * version number sort:                   sort invocation.     (line 202)
19898 * version number, finding:               Common options.      (line  43)
19899 * version of kernel:                     uname invocation.    (line  85)
19900 * version, sorting option for ls:        Sorting the output.  (line  62)
19901 * version-control Emacs variable:        Backup options.      (line  25)
19902 * VERSION_CONTROL <1>:                   ln invocation.       (line  96)
19903 * VERSION_CONTROL <2>:                   mv invocation.       (line  67)
19904 * VERSION_CONTROL <3>:                   install invocation.  (line  46)
19905 * VERSION_CONTROL <4>:                   cp invocation.       (line  96)
19906 * VERSION_CONTROL:                       Backup options.      (line  14)
19907 * vertical sorted files in columns:      General output formatting.
19908                                                               (line  15)
19909 * vtN:                                   Output.              (line  60)
19910 * wc:                                    wc invocation.       (line   6)
19911 * week in date strings:                  Relative items in date strings.
19912                                                               (line  15)
19913 * werase:                                Characters.          (line  59)
19914 * who:                                   who invocation.      (line   6)
19915 * who am i:                              who invocation.      (line  22)
19916 * whoami:                                whoami invocation.   (line   6)
19917 * word count:                            wc invocation.       (line   6)
19918 * working context:                       Working context.     (line   6)
19919 * working directory, printing:           pwd invocation.      (line   6)
19920 * wrap data:                             base64 invocation.   (line  25)
19921 * wrapping long input lines:             fold invocation.     (line   6)
19922 * writable file check:                   Access permission tests.
19923                                                               (line  21)
19924 * write permission:                      Mode Structure.      (line  17)
19925 * write permission, symbolic:            Setting Permissions. (line  60)
19926 * write, allowed:                        who invocation.      (line  98)
19927 * wtmp <1>:                              who invocation.      (line  16)
19928 * wtmp:                                  users invocation.    (line  16)
19929 * xcase:                                 Local.               (line  37)
19930 * xdigit:                                Character sets.      (line 129)
19931 * xfs file system type:                  df invocation.       (line 243)
19932 * XON/XOFF flow control:                 Input.               (line  41)
19933 * year in date strings:                  Relative items in date strings.
19934                                                               (line  15)
19935 * yes:                                   yes invocation.      (line   6)
19936 * yesterday:                             Options for date.    (line  11)
19937 * yesterday in date strings:             Relative items in date strings.
19938                                                               (line  29)
19939 * yottabyte, definition of:              Block size.          (line 143)
19940 * Youmans, B.:                           Introduction.        (line  22)
19941 * zero-length string check:              String tests.        (line  15)
19942 * zettabyte, definition of:              Block size.          (line 134)
19943 * |:                                     Relations for expr.  (line  11)
19944
19945
19946 \1f
19947 Tag Table:
19948 Node: Top\7f9795
19949 Node: Introduction\7f27945
19950 Node: Common options\7f30441
19951 Node: Exit status\7f35376
19952 Node: Backup options\7f36547
19953 Node: Block size\7f39663
19954 Node: Floating point\7f47757
19955 Node: Signal specifications\7f49571
19956 Node: Disambiguating names and IDs\7f53004
19957 Ref: Disambiguating names and IDs-Footnote-1\7f55536
19958 Node: Random sources\7f55638
19959 Node: Target directory\7f57994
19960 Node: Trailing slashes\7f63322
19961 Node: Traversing symlinks\7f65053
19962 Node: Treating / specially\7f66855
19963 Node: Special built-in utilities\7f69627
19964 Node: Standards conformance\7f71972
19965 Node: Output of entire files\7f74241
19966 Node: cat invocation\7f75025
19967 Node: tac invocation\7f77447
19968 Node: nl invocation\7f79224
19969 Node: od invocation\7f84554
19970 Node: base64 invocation\7f94361
19971 Node: Formatting file contents\7f96372
19972 Node: fmt invocation\7f96984
19973 Node: numfmt invocation\7f101232
19974 Node: General options in numfmt\7f102634
19975 Node: Possible UNITs\7f108492
19976 Node: Examples of using numfmt\7f112419
19977 Node: pr invocation\7f116659
19978 Node: fold invocation\7f134241
19979 Node: Output of parts of files\7f136350
19980 Node: head invocation\7f136903
19981 Node: tail invocation\7f140203
19982 Node: split invocation\7f155725
19983 Node: csplit invocation\7f166647
19984 Node: Summarizing files\7f173970
19985 Node: wc invocation\7f174871
19986 Node: sum invocation\7f179442
19987 Node: cksum invocation\7f181552
19988 Node: md5sum invocation\7f183106
19989 Node: sha1sum invocation\7f192640
19990 Node: sha2 utilities\7f193706
19991 Node: Operating on sorted files\7f194520
19992 Node: sort invocation\7f195287
19993 Ref: sort invocation-Footnote-1\7f235314
19994 Node: shuf invocation\7f236179
19995 Node: uniq invocation\7f240661
19996 Node: comm invocation\7f249325
19997 Node: ptx invocation\7f252849
19998 Node: General options in ptx\7f258760
19999 Node: Charset selection in ptx\7f259489
20000 Node: Input processing in ptx\7f260979
20001 Node: Output formatting in ptx\7f270127
20002 Node: Compatibility in ptx\7f280798
20003 Node: tsort invocation\7f285655
20004 Node: tsort background\7f290073
20005 Node: Operating on fields\7f292950
20006 Node: cut invocation\7f293386
20007 Node: paste invocation\7f299319
20008 Node: join invocation\7f301463
20009 Node: Operating on characters\7f311823
20010 Node: tr invocation\7f312274
20011 Node: Character sets\7f314812
20012 Node: Translating\7f321530
20013 Node: Squeezing\7f324549
20014 Node: expand invocation\7f329009
20015 Node: unexpand invocation\7f331226
20016 Node: Directory listing\7f334673
20017 Node: ls invocation\7f335285
20018 Ref: ls invocation-Footnote-1\7f338881
20019 Node: Which files are listed\7f339182
20020 Node: What information is listed\7f344777
20021 Node: Sorting the output\7f358485
20022 Node: Details about version sort\7f362148
20023 Node: General output formatting\7f364502
20024 Node: Formatting file timestamps\7f372030
20025 Node: Formatting the file names\7f379865
20026 Node: dir invocation\7f384160
20027 Node: vdir invocation\7f384782
20028 Node: dircolors invocation\7f385284
20029 Node: Basic operations\7f387770
20030 Node: cp invocation\7f388623
20031 Node: dd invocation\7f417020
20032 Node: install invocation\7f437761
20033 Node: mv invocation\7f446895
20034 Node: rm invocation\7f454356
20035 Node: shred invocation\7f461833
20036 Node: Special file types\7f476305
20037 Node: link invocation\7f478797
20038 Node: ln invocation\7f480568
20039 Node: mkdir invocation\7f495351
20040 Node: mkfifo invocation\7f499372
20041 Node: mknod invocation\7f501626
20042 Node: readlink invocation\7f505824
20043 Node: rmdir invocation\7f508943
20044 Node: unlink invocation\7f510628
20045 Node: Changing file attributes\7f511988
20046 Node: chown invocation\7f513196
20047 Node: chgrp invocation\7f522293
20048 Node: chmod invocation\7f526797
20049 Node: touch invocation\7f530983
20050 Node: Disk usage\7f542432
20051 Node: df invocation\7f543452
20052 Node: du invocation\7f558137
20053 Node: stat invocation\7f575268
20054 Node: sync invocation\7f585695
20055 Node: truncate invocation\7f587196
20056 Node: Printing text\7f589699
20057 Node: echo invocation\7f590165
20058 Node: printf invocation\7f593961
20059 Node: yes invocation\7f602902
20060 Node: Conditions\7f603831
20061 Node: false invocation\7f604577
20062 Node: true invocation\7f606251
20063 Node: test invocation\7f608202
20064 Node: File type tests\7f611293
20065 Node: Access permission tests\7f612537
20066 Node: File characteristic tests\7f613704
20067 Node: String tests\7f614695
20068 Node: Numeric tests\7f615643
20069 Node: Connectives for test\7f616862
20070 Node: expr invocation\7f617289
20071 Node: String expressions\7f621261
20072 Node: Numeric expressions\7f624794
20073 Node: Relations for expr\7f625555
20074 Node: Examples of expr\7f627044
20075 Node: Redirection\7f628061
20076 Node: tee invocation\7f628736
20077 Node: File name manipulation\7f635694
20078 Node: basename invocation\7f636397
20079 Node: dirname invocation\7f639171
20080 Node: pathchk invocation\7f641416
20081 Node: mktemp invocation\7f644124
20082 Node: realpath invocation\7f653419
20083 Node: Working context\7f658395
20084 Node: pwd invocation\7f659186
20085 Node: stty invocation\7f661160
20086 Node: Control\7f665232
20087 Node: Input\7f666848
20088 Node: Output\7f669219
20089 Node: Local\7f671085
20090 Node: Combination\7f673392
20091 Node: Characters\7f676141
20092 Node: Special\7f678485
20093 Node: printenv invocation\7f680670
20094 Node: tty invocation\7f682021
20095 Node: User information\7f682928
20096 Node: id invocation\7f683748
20097 Node: logname invocation\7f687026
20098 Node: whoami invocation\7f687839
20099 Node: groups invocation\7f688385
20100 Node: users invocation\7f690101
20101 Node: who invocation\7f691400
20102 Node: System context\7f695650
20103 Node: date invocation\7f696504
20104 Node: Time conversion specifiers\7f698698
20105 Node: Date conversion specifiers\7f702393
20106 Node: Literal conversion specifiers\7f706193
20107 Node: Padding and other flags\7f706541
20108 Node: Setting the time\7f709481
20109 Node: Options for date\7f711254
20110 Node: Examples of date\7f716854
20111 Ref: %s-examples\7f718580
20112 Node: arch invocation\7f722812
20113 Node: nproc invocation\7f723386
20114 Node: uname invocation\7f724819
20115 Node: hostname invocation\7f728810
20116 Node: hostid invocation\7f729609
20117 Node: uptime invocation\7f730564
20118 Node: SELinux context\7f732160
20119 Node: chcon invocation\7f732632
20120 Node: runcon invocation\7f735927
20121 Node: Modified command invocation\7f738277
20122 Node: chroot invocation\7f739537
20123 Ref: chroot invocation-Footnote-1\7f743839
20124 Node: env invocation\7f744379
20125 Node: nice invocation\7f749944
20126 Node: nohup invocation\7f755781
20127 Node: stdbuf invocation\7f759583
20128 Node: timeout invocation\7f763247
20129 Node: Process control\7f767012
20130 Node: kill invocation\7f767250
20131 Node: Delaying\7f772145
20132 Node: sleep invocation\7f772362
20133 Node: Numeric operations\7f773814
20134 Node: factor invocation\7f774157
20135 Node: seq invocation\7f776403
20136 Node: File permissions\7f782007
20137 Node: Mode Structure\7f782960
20138 Node: Symbolic Modes\7f788931
20139 Node: Setting Permissions\7f790510
20140 Node: Copying Permissions\7f794604
20141 Node: Changing Special Mode Bits\7f795692
20142 Node: Conditional Executability\7f798803
20143 Node: Multiple Changes\7f799712
20144 Node: Umask and Protection\7f802153
20145 Node: Numeric Modes\7f804091
20146 Node: Operator Numeric Modes\7f807127
20147 Node: Directory Setuid and Setgid\7f808569
20148 Node: Date input formats\7f814441
20149 Node: General date syntax\7f818326
20150 Node: Calendar date items\7f822587
20151 Node: Time of day items\7f825317
20152 Node: Time zone items\7f828266
20153 Node: Combined date and time of day items\7f830101
20154 Node: Day of week items\7f831243
20155 Node: Relative items in date strings\7f833015
20156 Node: Pure numbers in date strings\7f836810
20157 Node: Seconds since the Epoch\7f838275
20158 Node: Specifying time zone rules\7f840630
20159 Node: Authors of parse_datetime\7f844118
20160 Ref: Authors of get_date\7f844306
20161 Node: Opening the software toolbox\7f845578
20162 Node: Toolbox introduction\7f846406
20163 Node: I/O redirection\7f850623
20164 Node: The who command\7f855203
20165 Node: The cut command\7f856450
20166 Node: The sort command\7f857883
20167 Node: The uniq command\7f858869
20168 Node: Putting the tools together\7f859847
20169 Ref: Putting the tools together-Footnote-1\7f877195
20170 Node: About the translation\7f877303
20171 Node: GNU Free Documentation License\7f885779
20172 Node: Concept index\7f910968
20173 \1f
20174 End Tag Table