OSDN Git Service

info/GNU_coreutils: Ugh, found another bug, fixed.
[linuxjm/jm.git] / info / GNU_coreutils / release / coreutils-ja.info
1 This is coreutils-ja.info, produced by makeinfo version 6.3 from
2 coreutils-ja.texi.
3
4 このマニュアルは、GNU core utilities version 8.26 の詳細な解説である。
5 core utilities には、テキストやファイルを操作するための標準的なプログラ
6 ムが入っている。
7
8    Copyright © 1994-2016 Free Software Foundation, Inc.
9
10    Japanese translation copyright © 2014-2017 Linux JM project
11
12      Permission is granted to copy, distribute and/or modify this
13      document under the terms of the GNU Free Documentation License,
14      Version 1.3 or any later version published by the Free Software
15      Foundation; with no Invariant Sections, with no Front-Cover Texts,
16      and with no Back-Cover Texts.  A copy of the license is included in
17      the section entitled “GNU Free Documentation License”.
18
19    【訳者から御注意】 この文書を info コマンドで閲覧なさっている場合は、
20 行末に余計な文字が入って、読みにくいことがあるかもしれない。 そうしたと
21 きは、Ctrl キーと l (エル) キーを同時に押して、画面を再描画していただき
22 たい。 たぶん、表示が正常になるはずである。
23
24    お手元の coreutils のバージョンが 8.26 以外の場合、 この文書の説明と
25 動作が違うことがあるかもしれない (たとえば、この文書に書いてあるオプショ
26 ンが使えない、あるいは、 使えるはずのオプションの説明がないなど)。 そう
27 した場合は、お使いの coreutils と同じバージョンの info マニュアルや man
28 ページに当ってみていただきたい。そちらの方が正しいはずである。
29 INFO-DIR-SECTION Basics (in Japanese)
30 START-INFO-DIR-ENTRY
31 * Coreutils-ja: (coreutils-ja).  Core GNU (file, text, shell) utilities.
32 * Common options-ja: (coreutils-ja)Common options.
33 * File permissions-ja: (coreutils-ja)File permissions.  Access modes.
34 * Date input formats-ja: (coreutils-ja)Date input formats.    
35 END-INFO-DIR-ENTRY
36
37 INFO-DIR-SECTION Individual utilities (in Japanese)
38 START-INFO-DIR-ENTRY
39 * arch-ja: (coreutils-ja)arch invocation.          Print machine hardware name.
40 * b2sum-ja: (coreutils-ja)b2sum invocation.        Print or check BLAKE2 digests.
41 * base32-ja: (coreutils-ja)base32 invocation.      Base32 encode/decode data.
42 * base64-ja: (coreutils-ja)base64 invocation.      Base64 encode/decode data.
43 * basename-ja: (coreutils-ja)basename invocation.  Strip directory and suffix.
44 * cat-ja: (coreutils-ja)cat invocation.            Concatenate and write files.
45 * chcon-ja: (coreutils-ja)chcon invocation.        Change SELinux CTX of files.
46 * chgrp-ja: (coreutils-ja)chgrp invocation.        Change file groups.
47 * chmod-ja: (coreutils-ja)chmod invocation.        Change access permissions.
48 * chown-ja: (coreutils-ja)chown invocation.        Change file owners and groups.
49 * chroot-ja: (coreutils-ja)chroot invocation.      Specify the root directory.
50 * cksum-ja: (coreutils-ja)cksum invocation.        Print POSIX CRC checksum.
51 * comm-ja: (coreutils-ja)comm invocation.          Compare sorted files by line.
52 * cp-ja: (coreutils-ja)cp invocation.              Copy files.
53 * csplit-ja: (coreutils-ja)csplit invocation.      Split by context.
54 * cut-ja: (coreutils-ja)cut invocation.            Print selected parts of lines.
55 * date-ja: (coreutils-ja)date invocation.          Print/set system date and time.
56 * dd-ja: (coreutils-ja)dd invocation.              Copy and convert a file.
57 * df-ja: (coreutils-ja)df invocation.              Report file system disk usage.
58 * dir-ja: (coreutils-ja)dir invocation.            List directories briefly.
59 * dircolors-ja: (coreutils-ja)dircolors invocation.  Color setup for ls.
60 * dirname-ja: (coreutils-ja)dirname invocation.    Strip last file name component.
61 * du-ja: (coreutils-ja)du invocation.              Report on disk usage.
62 * echo-ja: (coreutils-ja)echo invocation.          Print a line of text.
63 * env-ja: (coreutils-ja)env invocation.            Modify the environment.
64 * expand-ja: (coreutils-ja)expand invocation.      Convert tabs to spaces.
65 * expr-ja: (coreutils-ja)expr invocation.          Evaluate expressions.
66 * factor-ja: (coreutils-ja)factor invocation.      Print prime factors.
67 * false-ja: (coreutils-ja)false invocation.        Do nothing, unsuccessfully.
68 * fmt-ja: (coreutils-ja)fmt invocation.            Reformat paragraph text.
69 * fold-ja: (coreutils-ja)fold invocation.          Wrap long input lines.
70 * groups-ja: (coreutils-ja)groups invocation.      Print group names a user is in.
71 * head-ja: (coreutils-ja)head invocation.          Output the first part of files.
72 * hostid-ja: (coreutils-ja)hostid invocation.      Print numeric host identifier.
73 * hostname-ja: (coreutils-ja)hostname invocation.  Print or set system name.
74 * id-ja: (coreutils-ja)id invocation.              Print user identity.
75 * install-ja: (coreutils-ja)install invocation.    Copy files and set attributes.
76 * join-ja: (coreutils-ja)join invocation.          Join lines on a common field.
77 * kill-ja: (coreutils-ja)kill invocation.          Send a signal to processes.
78 * link-ja: (coreutils-ja)link invocation.          Make hard links between files.
79 * ln-ja: (coreutils-ja)ln invocation.              Make links between files.
80 * logname-ja: (coreutils-ja)logname invocation.    Print current login name.
81 * ls-ja: (coreutils-ja)ls invocation.              List directory contents.
82 * md5sum-ja: (coreutils-ja)md5sum invocation.      Print or check MD5 digests.
83 * mkdir-ja: (coreutils-ja)mkdir invocation.        Create directories.
84 * mkfifo-ja: (coreutils-ja)mkfifo invocation.      Create FIFOs (named pipes).
85 * mknod-ja: (coreutils-ja)mknod invocation.        Create special files.
86 * mktemp-ja: (coreutils-ja)mktemp invocation.      Create temporary files.
87 * mv-ja: (coreutils-ja)mv invocation.              Rename files.
88 * nice-ja: (coreutils-ja)nice invocation.          Modify niceness.
89 * nl-ja: (coreutils-ja)nl invocation.              Number lines and write files.
90 * nohup-ja: (coreutils-ja)nohup invocation.        Immunize to hangups.
91 * nproc-ja: (coreutils-ja)nproc invocation.        Print the number of processors.
92 * numfmt-ja: (coreutils-ja)numfmt invocation.      Reformat numbers.
93 * od-ja: (coreutils-ja)od invocation.              Dump files in octal, etc.
94 * paste-ja: (coreutils-ja)paste invocation.        Merge lines of files.
95 * pathchk-ja: (coreutils-ja)pathchk invocation.    Check file name portability.
96 * pr-ja: (coreutils-ja)pr invocation.              Paginate or columnate files.
97 * printenv-ja: (coreutils-ja)printenv invocation.  Print environment variables.
98 * printf-ja: (coreutils-ja)printf invocation.      Format and print data.
99 * ptx-ja: (coreutils-ja)ptx invocation.            Produce permuted indexes.
100 * pwd-ja: (coreutils-ja)pwd invocation.            Print working directory.
101 * readlink-ja: (coreutils-ja)readlink invocation.  Print referent of a symlink.
102 * realpath-ja: (coreutils-ja)realpath invocation.  Print resolved file names.
103 * rm-ja: (coreutils-ja)rm invocation.              Remove files.
104 * rmdir-ja: (coreutils-ja)rmdir invocation.        Remove empty directories.
105 * runcon-ja: (coreutils-ja)runcon invocation.      Run in specified SELinux CTX.
106 * seq-ja: (coreutils-ja)seq invocation.            Print numeric sequences.
107 * sha1sum-ja: (coreutils-ja)sha1sum invocation.    Print or check SHA-1 digests.
108 * sha2-ja: (coreutils-ja)sha2 utilities.           Print or check SHA-2 digests.
109 * shred-ja: (coreutils-ja)shred invocation.        Remove files more securely.
110 * shuf-ja: (coreutils-ja)shuf invocation.          Shuffling text files.
111 * sleep-ja: (coreutils-ja)sleep invocation.        Delay for a specified time.
112 * sort-ja: (coreutils-ja)sort invocation.          Sort text files.
113 * split-ja: (coreutils-ja)split invocation.        Split into pieces.
114 * stat-ja: (coreutils-ja)stat invocation.          Report file(system) status.
115 * stdbuf-ja: (coreutils-ja)stdbuf invocation.      Modify stdio buffering.
116 * stty-ja: (coreutils-ja)stty invocation.          Print/change terminal settings.
117 * sum-ja: (coreutils-ja)sum invocation.            Print traditional checksum.
118 * sync-ja: (coreutils-ja)sync invocation.          Synchronize memory to disk.
119 * tac-ja: (coreutils-ja)tac invocation.            Reverse files.
120 * tail-ja: (coreutils-ja)tail invocation.          Output the last part of files.
121 * tee-ja: (coreutils-ja)tee invocation.            Redirect to multiple files.
122 * test-ja: (coreutils-ja)test invocation.          File/string tests.
123 * timeout-ja: (coreutils-ja)timeout invocation.    Run with time limit.
124 * touch-ja: (coreutils-ja)touch invocation.        Change file timestamps.
125 * tr-ja: (coreutils-ja)tr invocation.              Translate characters.
126 * true-ja: (coreutils-ja)true invocation.          Do nothing, successfully.
127 * truncate-ja: (coreutils-ja)truncate invocation.  Shrink/extend size of a file.
128 * tsort-ja: (coreutils-ja)tsort invocation.        Topological sort.
129 * tty-ja: (coreutils-ja)tty invocation.            Print terminal name.
130 * uname-ja: (coreutils-ja)uname invocation.        Print system information.
131 * unexpand-ja: (coreutils-ja)unexpand invocation.  Convert spaces to tabs.
132 * uniq-ja: (coreutils-ja)uniq invocation.          Uniquify files.
133 * unlink-ja: (coreutils-ja)unlink invocation.      Removal via unlink(2).
134 * uptime-ja: (coreutils-ja)uptime invocation.      Print uptime and load.
135 * users-ja: (coreutils-ja)users invocation.        Print current user names.
136 * vdir-ja: (coreutils-ja)vdir invocation.          List directories verbosely.
137 * wc-ja: (coreutils-ja)wc invocation.              Line, word, and byte counts.
138 * who-ja: (coreutils-ja)who invocation.            Print who is logged in.
139 * whoami-ja: (coreutils-ja)whoami invocation.      Print effective user ID.
140 * yes-ja: (coreutils-ja)yes invocation.            Print a string indefinitely.
141 END-INFO-DIR-ENTRY
142
143 \1f
144 File: coreutils-ja.info,  Node: Top,  Next: Introduction,  Up: (dir)
145
146 GNU Coreutils
147 *************
148
149 このマニュアルは、GNU core utilities version 8.26 の詳細な解説である。
150 core utilities には、テキストやファイルを操作するための標準的なプログラ
151 ムが入っている。
152
153    Copyright © 1994-2016 Free Software Foundation, Inc.
154
155    Japanese translation copyright © 2014-2017 Linux JM project
156
157      Permission is granted to copy, distribute and/or modify this
158      document under the terms of the GNU Free Documentation License,
159      Version 1.3 or any later version published by the Free Software
160      Foundation; with no Invariant Sections, with no Front-Cover Texts,
161      and with no Back-Cover Texts.  A copy of the license is included in
162      the section entitled “GNU Free Documentation License”.
163
164    【訳者から御注意】 この文書を info コマンドで閲覧なさっている場合は、
165 行末に余計な文字が入って、読みにくいことがあるかもしれない。 そうしたと
166 きは、Ctrl キーと l (エル) キーを同時に押して、画面を再描画していただき
167 たい。 たぶん、表示が正常になるはずである。
168
169    お手元の coreutils のバージョンが 8.26 以外の場合、 この文書の説明と
170 動作が違うことがあるかもしれない (たとえば、この文書に書いてあるオプショ
171 ンが使えない、あるいは、 使えるはずのオプションの説明がないなど)。 そう
172 した場合は、お使いの coreutils と同じバージョンの info マニュアルや man
173 ページに当ってみていただきたい。そちらの方が正しいはずである。
174
175 * Menu:
176
177 * Introduction::             注意事項、概観、著者
178 * Common options::           共通オプション
179 * Output of entire files::   ファイル全体の出力 (cat tac nl od base32 base64)
180 * Formatting file contents:: ファイルの整形 (fmt pr fold)
181 * Output of parts of files:: ファイルの部分出力 (head tail split csplit)
182 * Summarizing files::        チェックサムなど (wc sum b2sum cksum md5sum
183                                sha1sum sha2)
184 * Operating on sorted files::  ソートなど (sort shuf uniq comm ptx tsort)
185 * Operating on fields::      フィールド操作 (cut paste join)
186 * Operating on characters::  文字操作 (tr expand unexpand)
187 * Directory listing::        ディレクトリ一覧 (ls dir vdir dircolors)
188 * Basic operations::         基本操作 (cp dd install mv rm shred)
189 * Special file types::       特殊ファイル型 (mkdir rmdir unlink mkfifo mknod
190                                ln link readlink)
191 * Changing file attributes:: ファイルの属性変更 (chgrp chmod chown touch)
192 * Disk usage::               ディスク使用量など (df du stat sync truncate)
193 * Printing text::            テキストの表示 (echo printf yes)
194 * Conditions::               条件 (false true test expr)
195 * Redirection::              リダイレクション (tee)
196 * File name manipulation::   ファイル名の操作 (dirname basename pathchk
197                                mktemp realpath)
198 * Working context::          作業環境 (pwd stty printenv tty)
199 * User information::         ユーザ情報 (id logname whoami groups users who)
200 * System context::           システム関連 (date arch nproc uname hostname
201                                hostid uptime)
202 * SELinux context::          SELinux コンテキスト (chcon runcon)
203 * Modified command invocation::  実行環境の変更 (chroot env nice nohup stdbuf
204                                    timeout)
205 * Process control::          プロセス制御 (kill)
206 * Delaying::                 一時停止 (sleep)
207 * Numeric operations::       数値の操作 (factor numfmt seq)
208 * File permissions::         アクセス・モード
209 * Date input formats::       日付文字列の指定法
210 * Opening the software toolbox::  ソフトウェア工具という考え方
211 * About the translation::    翻訳について
212 * GNU Free Documentation License::  Copying and sharing this manual
213 * Concept index::            General index
214
215  — ノードの詳細なリスト —
216
217 共通オプション
218
219 * Exit status::              プログラムが実行に成功したか失敗したかの指標
220 * Backup options::           バックアップ・オプション
221 * Block size::               ブロックサイズ
222 * Floating point::           浮動小数点数の表現
223 * Signal specifications::    シグナルの指定
224 * Disambiguating names and IDs::  chgrp, chown, chroot, id
225                                     におけるユーザやグループの指定法
226 * Random sources::           ランダムデータのソース
227 * Target directory::         出力先ディレクトリ
228 * Trailing slashes::         末尾のスラッシュ
229 * Traversing symlinks::      ディレクトリを指すシンボリックリンクのたどり方
230 * Treating / specially::     / (ルート) を特別扱いする
231 * Special built-in utilities::  シェルの組み込みコマンド
232 * Standards conformance::    規格への準拠
233 * Multi-call invocation::    Multi-call プログラムの起動
234
235 ファイル全体の出力
236
237 * cat invocation::           ファイルを結合して、書き出す
238 * tac invocation::           ファイルを結合して、ファイルごとに逆順で書き出す
239 * nl invocation::            行番号を付けて、ファイルを書き出す
240 * od invocation::            ファイルを 8 進数などの形式で書き出す
241 * base32 invocation::        データを ASCII 文字で表示可能なデータに変換する
242 * base64 invocation::        データを ASCII 文字で表示可能なデータに変換する
243
244 ファイル内容の整形
245
246 * fmt invocation::           パラグラフに分かれたテキストを整形し直す
247 * pr invocation::            ページ付けや段組みをしてファイルを表示する
248 * fold invocation::          入力行を指定された幅に合わせて折り返す
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 * b2sum invocation::         BLAKE2 ダイジェストの表示、または検査をする
263 * md5sum invocation::        MD5 ダイジェストの表示、または検査をする
264 * sha1sum invocation::       SHA-1 ダイジェストの表示、または検査をする
265 * sha2 utilities::           SHA-2 ダイジェストの表示、または検査をする
266
267 ソートしたファイルの操作
268
269 * sort invocation::          テキストファイルを並べ替える
270 * shuf invocation::          テキストファイルをシャッフルする
271 * uniq invocation::          ファイルから重複を省く
272 * comm invocation::          ソート済みの二つのファイルを一行づつ比較する
273 * ptx invocation::           ファイル内容の permuted index を作成する
274 * tsort invocation::         トポロジカル・ソート
275
276 ‘ptx’: パミューテド・インデックスを作成する
277
278 * General options in ptx::   プログラム全体の動作に関係するオプション
279 * Charset selection in ptx:: 使用している文字セットについて
280 * Input processing in ptx::  入力のフィールドと文脈、及びキーワードの選択
281 * Output formatting in ptx:: 出力フォーマットのタイプ、及びフィールドの幅
282 * Compatibility in ptx::     GNU による ‘ptx’ の拡張
283
284 フィールド操作
285
286 * cut invocation::           各行の選択した部分を表示する
287 * paste invocation::         複数のファイルの各行をマージする
288 * join invocation::          共通のフィールドに基づいて行を連結する
289
290 文字操作
291
292 * tr invocation::            文字の置換、圧縮、削除を行う
293 * expand invocation::        タブをスペースに変換する
294 * unexpand invocation::      スペースをタブに変換する
295
296 ‘tr’: 文字の置換、圧縮、削除を行う
297
298 * Character sets::           文字集合の指定
299 * Translating::              ある文字集合を別の文字集合に変換する
300 * Squeezing and deleting::   文字の削除
301
302 ディレクトリの一覧表示
303
304 * ls invocation::            ディレクトリの内容を一覧表示する
305 * dir invocation::           ディレクトリの内容を簡潔に表示する
306 * vdir invocation::          ディレクトリの内容を詳細に表示する
307 * dircolors invocation::     ‘ls’ のカラー設定
308
309 ‘ls’: ディレクトリの内容を一覧表示する
310
311 * Which files are listed::      表示対象にするファイル
312 * What information is listed::  表示する情報
313 * Sorting the output::          出力のソート
314 * Details about version sort::  バージョン・ソートの詳細
315 * General output formatting::   出力全体の形式
316 * Formatting file timestamps::  タイムスタンプのフォーマット
317 * Formatting the file names::   ファイル名のフォーマット
318
319 基本的なファイル操作
320
321 * cp invocation::            ファイルやディレクトリをコピーする
322 * dd invocation::            ファイルの変換とコピー
323 * install invocation::       ファイルをコピーし属性をセットする
324 * mv invocation::            ファイルの移動 (名前の変更) を行う
325 * rm invocation::            ファイルやディレクトリを削除する
326 * shred invocation::         セキュリティを向上させたファイルの削除
327
328 特殊なファイル型
329
330 * link invocation::     システムコール link を使って、ハードリンクを作成する
331 * ln invocation::       ファイル間のリンクを作成する
332 * mkdir invocation::    ディレクトリを作成する
333 * mkfifo invocation::   FIFO (名前付きパイプ) を作成する
334 * mknod invocation::    ブロック型やキャラクタ型のスペシャルファイルを作成する
335 * readlink invocation:: シムリンクの値、または正規化されたファイル名を表示する
336 * rmdir invocation::    空のディレクトリを削除する
337 * unlink invocation::   システムコール unlink を使って、ファイルを削除する
338
339 ファイルの属性変更
340
341 * chown invocation::         ファイルの所有者やグループを変更する
342 * chgrp invocation::         ファイルの所有グループを変更する
343 * chmod invocation::         アクセス権を変更する
344 * touch invocation::         ファイルのタイムスタンプを変更する
345
346 ディスク使用量
347
348 * df invocation::            ファイルシステムのディスク使用状態を報告する
349 * du invocation::            ファイルのディスク使用量を概算する
350 * stat invocation::          ファイルやファイルシステムの状態を報告する
351 * sync invocation::          キャッシュされた書き込みを永続的な記憶装置に同期する
352 * truncate invocation::      ファイルサイズの短縮・伸長を行う
353
354 テキストの表示
355
356 * echo invocation::          テキストを 1 行表示する
357 * printf invocation::        データを整形して表示する
358 * yes invocation::           中断されるまで文字列を表示する
359
360 条件
361
362 * false invocation::         何もせず、実行失敗のステータスを返す
363 * true invocation::          何もせず、正常終了する
364 * test invocation::          ファイルタイプのチェックや値の比較を行う
365 * expr invocation::          式を評価する
366
367 ‘test’: ファイルタイプのチェックや値の比較を行う
368
369 * File type tests::            ファイルタイプのテスト
370 * Access permission tests::    アクセス許可のテスト
371 * File characteristic tests::  ファイル特性のテスト
372 * String tests::               文字列のテスト
373 * Numeric tests::              数値のテスト
374
375 ‘expr’: 式を評価する
376
377 * String expressions::       文字列式 (+ : match substr index length)
378 * Numeric expressions::      数式 (+ - * / %)
379 * Relations for expr::       論理結合と関係表現 (| & < <= = == != >= >)
380 * Examples of expr::         ‘expr’ の使用例
381
382 リダイレクション
383
384 * tee invocation::           出力を複数のファイルやプロセスにリダイレクトする
385
386 ファイル名操作
387
388 * basename invocation::      ファイル名からディレクトリと接尾辞を取り除く
389 * dirname invocation::       ファイル名から最後の要素を取り除く
390 * pathchk invocation::       ファイル名の有効性や可搬性を検査する
391 * mktemp invocation::        テンポラリファイルやディレクトリを作成する
392 * realpath invocation::      ファイル名を展開して表示する
393
394 作業環境
395
396 * pwd invocation::           現在作業中のディレクトリを表示する
397 * stty invocation::          端末の諸特性を表示・変更する
398 * printenv invocation::      環境変数のすべて、あるいは一部を表示する
399 * tty invocation::           標準入力に接続している端末のファイル名を表示する
400
401 ‘stty’: 端末の諸特性を表示・変更する
402
403 * Control::                  制御関係の設定
404 * Input::                    入力に関する設定
405 * Output::                   出力に関する設定
406 * Local::                    ローカル設定
407 * Combination::              組み合わせ設定
408 * Characters::               特殊文字
409 * Special::                  特殊設定
410
411 ユーザ情報
412
413 * id invocation::            ユーザの ID を表示する
414 * logname invocation::       現在のログイン名を表示する
415 * whoami invocation::        実効ユーザ ID を表示する
416 * groups invocation::        ユーザが所属しているグループ名を表示する
417 * users invocation::         現在ログインしている全ユーザのログイン名を表示する
418 * who invocation::           現在誰がログインしているかを表示する
419
420 システム関連
421
422 * date invocation::          システムの日付や時刻を表示、設定する
423 * arch invocation::          マシンのハードウェア名を表示する
424 * nproc invocation::         プロセッサ数を表示する
425 * uname invocation::         システムについて情報を表示する
426 * hostname invocation::      システム名を表示、設定する
427 * hostid invocation::        数値によるホストの識別名を表示する
428 * uptime invocation::        システムの連続稼働時間と負荷を表示する
429
430 ‘date’: システムの日付や時刻を表示、設定する
431
432 * Time conversion specifiers:: 時刻関係の変換指定子 %[HIklMNpPrRsSTXzZ]
433 * Date conversion specifiers:: 日付関係の変換指定子 %[aAbBcCdDeFgGhjmuUVwWxyY]
434 * Literal conversion specifiers::  文字変換指定子 %[%nt]
435 * Padding and other flags::  0 や空白による空き埋め、その他
436 * Setting the time::         システムクロックの変更
437 * Options for date::         現在時以外の指定
438 * Date input formats::       日付文字列の指定法
439 * Examples of date::         用例
440
441 SELinux コンテキスト
442
443 * chcon invocation::         ファイルの SELinux コンテキストを変更する
444 * runcon invocation::        指定された SELinux コンテキストでコマンドを実行する
445
446 コマンド実行条件の変更
447
448 * chroot invocation::        ルートディレクトリを変更して、コマンドを実行する
449 * env invocation::           変更した環境でコマンドを実行する
450 * nice invocation::          niceness を変更して、コマンドを実行する
451 * nohup invocation::         ハングアップ・シグナルで終了しないコマンドを実行する
452 * stdbuf invocation::        入出力バッファリングを変更して、コマンドを実行する
453 * timeout invocation::       タイムリミット付きでコマンドを実行する
454
455 プロセス制御
456
457 * kill invocation::          プロセスにシグナルを送る。
458
459 一時停止
460
461 * sleep invocation::         指定された時間、停止する
462
463 数値の操作
464
465 * factor invocation::        素因数を表示する
466 * numfmt invocation::        数値を整形し直す
467 * seq invocation::           数列を表示する
468
469 ‘numfmt’: 数値を整形し直す
470
471 * General options in numfmt::  一般オプション
472 * Possible UNITs::             使用できる UNIT
473 * Examples of using numfmt::   numfmt の使用例
474
475
476 ファイルの許可属性
477
478 * Mode Structure::           ファイルのモードビットの構成
479 * Symbolic Modes::           ファイルのモードビットの憶えやすい表記
480 * Numeric Modes::            ファイルのモードビットの 8 進数による表記
481 * Operator Numeric Modes::   8 進数によるモードの追加、削除、絶対指定
482 * Directory Setuid and Setgid::  ディレクトリの Set-User-ID と
483                                    Set-Group-ID ビット
484
485 日付入力の書式
486
487 * General date syntax::      共通規則
488 * Calendar date items::      19 Dec 1994
489 * Time of day items::        9:20pm
490 * Time zone items::          EST, PDT, UTC, ...
491 * Combined date and time of day items::  1972-09-24T20:02:00,000000-0500
492 * Day of week items::        Monday, Tuesday
493 * Relative items in date strings::  next tuesday, 2 years ago
494 * Pure numbers in date strings::  19931219, 1440
495 * Seconds since the Epoch::  @1078100502
496 * Specifying time zone rules::  TZ="America/New_York", TZ="UTC0"
497 * Authors of parse_datetime::  Bellovin, Eggert, Salz, Berets, et al.
498
499 ソフトウェアの道具箱
500
501 * Toolbox introduction::     はじめに
502 * I/O redirection::          I/O リダイレクション
503 * The who command::          ‘who’ コマンド
504 * The cut command::          ‘cut’ コマンド
505 * The sort command::         ‘sort’ コマンド
506 * The uniq command::         ‘uniq’ コマンド
507 * Putting the tools together::  工具を組み合わせる
508
509 翻訳について
510
511 * About the translation::    翻訳について
512
513 Copying This Manual
514
515 * GNU Free Documentation License::  Copying and sharing this manual
516
517
518 \1f
519 File: coreutils-ja.info,  Node: Introduction,  Next: Common options,  Prev: Top,  Up: Top
520
521 1 序
522 ****
523
524 このマニュアルは作成の途上にある。たとえば、多くのセクションで、 基本的
525 な概念を初心者にわかりやすく説明するといった試みがなされていない。 そこ
526 で、お願いがある。もし、関心がおありなら、このマニュアルの改良に参加して
527 いただきたい。 そうしていただければ、GNU コミュニティ全体が恩恵に浴する
528 ことになる。
529
530    このマニュアルで解説している GNU ユーティリティは、 POSIX の規格にお
531 おむね準拠している。
532
533    バグの報告は、<bug-coreutils@gnu.org> になさっていただきたい。 そのと
534 き、プログラムのバージョン番号、マシンのアーキテクチャ、 入力に使ったフ
535 ァイルといった情報はもとより、 バグの再現に必要な他のいかなる情報も、記
536 載していただきたい。 たとえば、どんな入力をしたか、どんな結果を期待して
537 いたか、実際の結果はどうだったか、 それがおかしいと考える理由は何なのか
538 といったことである。
539
540    ‘sort’ や ‘date’ コマンドの動作に疑問がある場合は、‘--debug’ オプショ
541 ンを試してみていただきたい。 その出力が手がかりになって、バグレポートに
542 対する回答を待つまでもなく、 問題の在り処を突き止め、解決できることも多
543 いからだ。 デバッグの出力が問題を自分で解決するのに十分でないときは、 そ
544 れを圧縮して、提出するバグレポートに添付していただきたい。
545
546    差分の投稿は歓迎するが、何がどう問題なのかの説明もやはり付けていただ
547 きたい。 推測するのが難しいこともあるからだ。 *Note (gcc)Bugs::.
548
549    このマニュアルは、ユーティリティ・プログラムの配布に含まれる Unix man
550 page を元にして作られたものである。そうした man page は、David MacKenzie
551 によって書かれ、Jim Meyering によって改訂されていた。 現在読者がお読みに
552 なっているこのマニュアルは、そうしたユーティリティについての公式文書であ
553 り、 man page の方は、今では改訂作業が行われていない。なお、‘fmt’ の最初
554 の man page の著者は、Ross Paterson だった。 Texinfo 形式への変換を最初
555 に行ったのは、François Pinard である。 Karl Berry が索引を作成し、構成に
556 若干の変更を加えて、その結果に手を入れた。 Free Software Foundation の職
557 員である Brian Youman が textutils, fileutils, sh-utils のマニュアルを統
558 合し、 多数の項目を含む現在のマニュアルを作成した。こうした作業全般に渡
559 って、 Richard Stallman が例によって洞察力に富む貴重な意見を寄せてくれた
560
561
562 \1f
563 File: coreutils-ja.info,  Node: Common options,  Next: Output of entire files,  Prev: Introduction,  Up: Top
564
565 2 共通オプション
566 ****************
567
568 いくつかのオプションは、このマニュアルで取り上げるすべてのプログラムで利
569 用することができる。 そうしたオプションについては、個々のプログラムで同
570 じ説明を繰り返すことはせず、この場で説明しておく (実のところ、そうしたオ
571 プションは、GNU のすべてのプログラムで使用できる (はずである))。
572
573    通常、オプションとオペランドは、どんな順番で指定してもよい。 プログラ
574 ムは、すべてのオプションがいかなるオペランドよりも前にあるかのごとく振る
575 舞うようになっている。 たとえば、‘sort -r passwd -t :’ は、‘:’ が ‘-t’ の
576 オプション引数 (option-argument) なので、‘sort -r -t : passwd’ と同じ動
577 作をする。しかしながら、環境変数 ‘POSIXLY_CORRECT’ が設定されている場合
578 は、オプションはオペランドの前に置かなければならない。 ただし、オプショ
579 ンとオペランドの順番について、そのコマンドに別の決まりがあるときはこのか
580 ぎりではない。
581
582    若干のプログラムでは、二番目以降のオペランドとして先頭に ‘-’ が付くオ
583 ペランドが使えると都合がよい。 そうしたプログラムでは、‘POSIXLY_CORRECT’
584 が設定されていない場合でも、 オプションをオペランドの前に置く必要がある
585 。 そこで、そうしたプログラムの説明には、その旨注意書きを付けておいた。
586 たとえば、‘env’ コマンドのオプションは、オペランドの前に置かなければなら
587 ない。 オペランドとして指定したコマンドが、それ自身のオプションを伴うこ
588 とがあるからだ。
589
590    ロングオプションが使えるたいていのプログラムは、誤解の余地がないかぎ
591 り、そうしたオプションの省略形を認識する。 たとえば、‘rmdir
592 --ignore-fail-on-non-empty’ は、‘rmdir --ignore-fail’ という形でも起動で
593 きるし、‘rmdir --i’ でも大丈夫だ。 ‘ls --h’ のような誤解の余地のあるオプ
594 ションは、まさに曖昧だと判定される。
595
596    このマニュアルで説明するプログラムの中には、‘--help’ や ‘--version’ オ
597 プションを、それが唯一のコマンドライン引数である場合にしか、認識しないも
598 のがある。 そうしたプログラムの場合、ロングオプションの省略形は、常に認
599 識されるとはかぎらない。
600
601 ‘--help’
602      使用法を表示して利用できるすべてのオプションを列挙し、正常終了する
603      。
604
605 ‘--version’
606      バージョン番号を表示し、正常終了する。
607
608 ‘--’
609      オプション群の末尾を示す。これ以降に引数があれば、それが ‘-’ で始ま
610      っている場合でも、オペランドとして扱われる。たとえば、‘sort -- -r’
611      は、‘-r’ という名前のファイルから読み込むということである。
612
613    単独の ‘-’ はオペランドであって、オプションのように見えるが、 オプシ
614 ョンでは全くない。単独の ‘-’ はファイル・オペランドであり、 プログラム次
615 第で、標準入力、あるいは標準出力として扱われる。 後者は、前後の状況から
616 それが明らかな場合だ。たとえば、‘sort -’ は、標準入力から読み込むという
617 ことであり、ただの ‘sort’ と同じである。 使用できないとはっきり断ってい
618 ないかぎり、‘-’ は、ファイル名が要求されるいかなるところでもオペランドと
619 して使用することができる。
620
621 * Menu:
622
623 * Exit status::              プログラムが成功したか失敗したかの指標。
624 * Backup options::           バックアップ・オプション (-b と -S)。
625 * Block size::               ブロックサイズ (BLOCK_SIZE と –block-size)。
626 * Floating point::           浮動小数点数の表現。
627 * Signal specifications::    –signal オプションによるシグナルの指定。
628 * Disambiguating names and IDs::  chgrp, chown, chroot, id における
629                                     ユーザやグループの指定法。
630 * Random sources::           ランダムデータのソース (–random-source)。
631 * Target directory::         出力先ディレクトリの指定。
632 * Trailing slashes::         末尾のスラッシュ (–strip-trailing-slashes)。
633 * Traversing symlinks::      シムリンクをたどる (-H, -L, -P)。
634 * Treating / specially::     –preserve-root や –no-preserve-root の使用。
635 * Special built-in utilities::  組み込みコマンド ‘break’, ‘:’ など。
636 * Standards conformance::    POSIX 規格への準拠。
637 * Multi-call invocation::    Multi-call プログラムの起動。
638
639 \1f
640 File: coreutils-ja.info,  Node: Exit status,  Next: Backup options,  Up: Common options
641
642 2.1 終了ステータス
643 ==================
644
645 ほとんどすべてのコマンドは、実行すると、整数の終了ステータス (“exit
646 status”) を返し、それは他のコマンドの動作を変更するために使用することが
647 できる。 大多数のコマンドにとって、終了ステータス ‘0’ は成功を意味してい
648 る。 失敗は ‘0’ 以外の値によって示され、たいていは ‘1’ だが、 非標準的な
649 プラットフォームでは違うこともある。POSIX の規定が、‘0’ 以外であることし
650 か要求していないからである。
651
652    しかしながら、ここで詳述しているプログラムの中にも、終了ステータスと
653 して上記以外の値を返すものがあり、 ‘0’ や ‘1’ という値に別の意味を与えて
654 いるプログラムさえ、少数ながら存在する。 そうした例外的なプログラムとし
655 ては、‘chroot’, ‘env’, ‘expr’, ‘nice’, ‘nohup’, ‘numfmt’, ‘printenv’,
656 ‘sort’, ‘stdbuf’, ‘test’, ‘timeout’, ‘tty’ などを挙げることができる。
657
658 \1f
659 File: coreutils-ja.info,  Node: Backup options,  Next: Block size,  Prev: Exit status,  Up: Common options
660
661 2.2 バックアップ・オプション
662 ============================
663
664 GNU のプログラムの中には、ファイルの新しいバージョンを書き出す前に、 も
665 しそうしたければ、バックアップを作成できるものがある (少なくとも ‘cp’,
666 ‘install’, ‘ln’, ‘mv’ がそうだ)。下記のオプションは、そうしたバックアッ
667 プを細かく制御する。 こうしたオプションについては、個々のプログラムの説
668 明でも簡単に触れている。
669
670 ‘-b’
671 ‘--backup[=METHOD]’
672      通常では上書きされたり、消去されたりする各ファイルのバックアップを
673      作成する。 このオプションを指定しないと、元のバージョンは破棄される
674      わけだ。 作成するバックアップのタイプを決めるには、METHOD を使用す
675      る。 METHOD を指定せずに、このオプションを使った場合は、環境変数
676      ‘VERSION_CONTROL’ の値が使用される。‘VERSION_CONTROL’ が設定されて
677      いない場合、デフォルトのバックアップタイプは ‘existing’ である。
678
679      このオプションの短縮形である ‘-b’ は、引数を取らないことに注意して
680      いただきたい。 ‘-b’ の使用は、‘--backup=existing’ を使用するのと同
681      じことである。
682
683      このオプションは、Emacs の ‘version-control’ 変数に対応している。 す
684      なわち、METHOD に指定する値は、Emacs で使用される値と同じものである
685      。 とは言え、このオプションでは、より説明的な名前も使用できる。
686      METHOD の有効な値は、以下のものである (他と区別できるならば、省略し
687      た表現も使用できる)。
688
689      ‘none’
690      ‘off’
691           バックアップを作成しない。
692
693      ‘numbered’
694      ‘t’
695           どんな場合でも番号付きのバックアップを作成する。
696
697      ‘existing’
698      ‘nil’
699           番号付きのバックアップがすでに存在する場合は番号付きで、それ以
700           外の場合は単純形式で、ファイルのバックアップを作成する。 (訳注
701           : 単純形式というのは、バックアップファイル名に番号を付けない形
702           式である。 ‘--suffix=SUFFIX’ の説明を参照。)
703
704      ‘simple’
705      ‘never’
706           どんな場合でも単純形式のバックアップを作成する。‘never’ と
707           ‘none’ を混同なさらないようにしていただきたい。
708
709 ‘-S SUFFIX’
710 ‘--suffix=SUFFIX’
711      ‘-b’ で作成される各バックアップファイルの名前の末尾に SUFFIX を付け
712      る。このオプションが指定されていない場合は、環境変数
713      ‘SIMPLE_BACKUP_SUFFIX’ の値が使用される。‘SIMPLE_BACKUP_SUFFIX’ が
714      設定されていない場合、デフォルトの SUFFIX は Emacs の場合と同じで、
715      チルダ ‘~’ である。
716
717 \1f
718 File: coreutils-ja.info,  Node: Block size,  Next: Floating point,  Prev: Backup options,  Up: Common options
719
720 2.3 ブロックサイズ
721 ==================
722
723 GNU プログラムには、ディスクの使用量を「ブロック数」で表示するものがいく
724 つかある (少なくとも、‘df’, ‘du’,‘ls’ がそうだ)。 ブロックのサイズや表示
725 の書式は、使用量をわかりやすくするために、変更することができる。 表示に
726 使用されるブロックサイズは、ファイルシステムのブロックサイズとは、 無関
727 係である。ブロック数に端数が出る場合は、切り上げて整数にする。
728
729    デフォルトのブロックサイズの選択は、次の環境変数を順番に調べることで
730 行われる。 設定されている最初のものがブロックサイズを決めることになる。
731
732 ‘DF_BLOCK_SIZE’
733      この環境変数は、‘df’ コマンドで使うデフォルトのブロックサイズを指定
734      している。 同様に、‘DU_BLOCK_SIZE’ は ‘du’ のデフォルトを、
735      ‘LS_BLOCK_SIZE’ は ‘ls’ のデフォルトを指定している。
736
737 ‘BLOCK_SIZE’
738      この環境変数は、上記のようなコマンド専用の環境変数が設定されていな
739      い場合に、 三つのコマンドのすべてが使用するデフォルトのブロックサイ
740      ズを指定している。
741
742 ‘BLOCKSIZE’
743      この環境変数は、上記のようなコマンド専用の環境変数と ‘BLOCK_SIZE’ の
744      どちらも設定されていない場合に、 通常、ブロック数として表示されるす
745      べての値が使用するデフォルトのブロックサイズを指定している。 ほかの
746      環境変数とは違って、‘BLOCKSIZE’ は、たとえば ‘ls -l’ の出力に含まれ
747      るファイルサイズのような、通常バイト数として表示される値には影響を
748      及ぼさない。
749
750 ‘POSIXLY_CORRECT’
751      ‘COMMAND_BLOCK_SIZE’, ‘BLOCK_SIZE’, ‘BLOCKSIZE’ のいづれも設定され
752      ていず、この変数が設定されている場合は、 ブロックサイズのデフォルト
753      は、512 バイトになる。
754
755    上記の環境変数のいづれも設定されていない場合、 ブロックサイズのデフォ
756 ルトは、現在のところたいていの場合、 1024 バイトである。 ただし、この数
757 値は、将来変更されるかもしれない。なお、‘ls’ の表示するファイルサイズに
758 ついては、ブロックサイズのデフォルトは 1 バイトである。
759
760    ブロックサイズの指定には、1 ブロックあたりのバイト数を示す正の整数を
761 使えばよい。 あるいは、‘human-readable’ や ‘si’ を指定して、 「人間に読
762 みやすい」書式を選ぶこともできる。 整数の後ろには接尾辞 (suffix) を続け
763 てもよい。そうした接尾辞は、単位の前に付けて ‘10’ の累乗倍を表す SI (国
764 際単位系) の接頭辞 (prefix) や、 ‘2’ の累乗倍を表す ISO/IEC 80000-13 (以
765 前は IEC 60027-2 だった) の接頭辞の上位互換である。単位の前に付ける接頭
766 辞については、 次の URL を参照していただきたい。
767 SI prefixes:
768 (http://www.bipm.org/en/publications/si-brochure/chapter3.html).
769 ISO/IEC 80000-13 prefixes:
770 (http://physics.nist.gov/cuu/Units/binary.html).
771
772    「人間に読みやすい」書式の場合、出力するサイズの後ろに、メガバイトな
773 ら ‘M’ といった、大きさを表す文字が続く。‘BLOCK_SIZE=human-readable’ の
774 方は、1024 の累乗を使うので、‘M’ は 1,048,576 バイトを意味している。
775 ‘BLOCK_SIZE=si’ も似ているが、こちらは 1000 の累乗を使用し、さらに ‘B’ と
776 いう文字を追加する。そこで、‘MB’ は 1,000,000 バイトを意味することになる
777
778
779    ブロックサイズの指定の先頭に ‘'’ を付けると、 出力するサイズを数桁ご
780 とに区切って表示することができる。 区切りに使う記号や区切りの位置は、
781 ‘LC_NUMERIC’ のロケールによって決まる。 たとえば、アメリカ英語のロケール
782 では、‘--block-size="'1kB"’ と指定すれば、1234000 バイトという容量が
783 ‘1,234’ と表示されることになるだろう。デフォルトの C ロケールの場合は、
784 区切り記号が存在しないので、先頭の ‘'’ に効果はない。
785
786    ブロックサイズを指定する整数の後ろには、接尾辞を付けて、 その整数の何
787 倍かを示すことができる。大きさを表す (訳注: M, G などの) 文字の後ろに何
788 も続けないときや、‘iB’ を続けるときは、 1024 の累乗倍ということである。
789 それに対して、大きさを表す文字に ‘B’ を続ける場合は、1000 の累乗倍という
790 ことになる。 たとえば、‘1M’ や ‘1MiB’ は ‘1048576’ と同じであり、 ‘1MB’
791 は ‘1000000’ と同じである。
792
793    整数を前に付けずに、接尾辞だけを指定したときの動作は、 ‘1’ が前に付い
794 ているときとほぼ同じだが、大きさの表示が出力の後ろに付く点が違う。 たと
795 えば、‘--block-size="kB"’ は、3000 を ‘3kB’ という形で表示する。
796
797    以下の接尾辞が定義されている。‘1Y’ のような大きな量は、 算術計算の限
798 界のためにお使いのコンピュータでは使用できないかもしれない。
799
800 ‘kB’
801      キロバイト (kilobyte): 10^3 = 1000 バイト。
802 ‘k’
803 ‘K’
804 ‘KiB’
805      キビバイト (kibibyte): 2^{10} = 1024 バイト。 ‘K’ も使えるのは、お
806      まけである。なお本来、SI の接頭辞 (訳注: すなわち 10^3 倍を表す接頭
807      辞) が ‘k’ であり、 ISO/IEC 80000-13 の接頭辞 (訳注: すなわち
808      2^{10} 倍を表す接頭辞) が ‘Ki’ だが、これまでの習慣や POSIX の用法
809      では、 ‘KiB’ の意味で ‘k’ を使っている。
810 ‘MB’
811      メガバイト (megabyte): 10^6 = 1,000,000 バイト。
812 ‘M’
813 ‘MiB’
814      メビバイト (mebibyte): 2^{20} = 1,048,576 バイト。
815 ‘GB’
816      ギガバイト (gigabyte): 10^9 = 1,000,000,000 バイト。
817 ‘G’
818 ‘GiB’
819      ギビバイト (gibibyte): 2^{30} = 1,073,741,824 バイト。
820 ‘TB’
821      テラバイト (terabyte): 10^{12} = 1,000,000,000,000 バイト。
822 ‘T’
823 ‘TiB’
824      テビバイト (tebibyte): 2^{40} = 1,099,511,627,776 バイト。
825 ‘PB’
826      ペタバイト (petabyte): 10^{15} = 1,000,000,000,000,000 バイト。
827 ‘P’
828 ‘PiB’
829      ペビバイト (pebibyte): 2^{50} = 1,125,899,906,842,624 バイト。
830 ‘EB’
831      エクサバイト (exabyte): 10^{18} = 1,000,000,000,000,000,000 バイト
832      。
833 ‘E’
834 ‘EiB’
835      エクスビバイト (exbibyte): 2^{60} = 1,152,921,504,606,846,976 バイ
836      ト。
837 ‘ZB’
838      ゼタバイト (zettabyte): 10^{21} = 1,000,000,000,000,000,000,000 バ
839      イト。
840 ‘Z’
841 ‘ZiB’
842      ゼビバイト (zebibyte): 2^{70} = 1,180,591,620,717,411,303,424 バイ
843      ト。
844 ‘YB’
845      ヨタバイト (yottabyte): 10^{24} = 1,000,000,000,000,000,000,000,000
846      バイト。
847 ‘Y’
848 ‘YiB’
849      ヨビバイト (yobibyte): 2^{80} = 1,208,925,819,614,629,174,706,176 バ
850      イト。
851
852    デフォルトのブロックサイズは、コマンドに対して ‘--block-size=SIZE’ オ
853 プションを明示的に指定することで、上書きすることができる。‘-k’ オプショ
854 ンは、‘--block-size=1K’ と同じであり、環境変数 ‘POSIXLY_CORRECT’ が設定
855 されていないときのデフォルトである。‘-h’ オプションや ‘--human-readable’
856 オプションは、‘--block-size=human-readable’ と同じである。‘--si’ オプシ
857 ョンは、‘--block-size=si’ と同じだ。 なお、‘ls’ コマンドの場合、 ‘-k’ オ
858 プションはファイルの見かけのサイズの表示に影響しないのに対し、
859 ‘--block-size’ オプションは影響することに注意していただきたい。
860
861 \1f
862 File: coreutils-ja.info,  Node: Floating point,  Next: Signal specifications,  Prev: Block size,  Up: Common options
863
864 2.4 浮動小数点数
865 ================
866
867 浮動小数点数を受け取ったり、生成したりするコマンドは、 下層で動いている
868 システムの浮動小数点表現法を使用しており、 丸めエラー、オーバーフローな
869 ど、浮動小数点にかかわる問題をかかえている。 最近のシステムでは、ほとん
870 どすべてが IEEE-754 の浮動小数点を採用しているので、 今日では IEEE-754 の
871 動作を想定しておけば、たいていどこでも問題がない。 IEEE-754 には、正と負
872 の無限があり、正と負のゼロを区別する。 また、NaN (訳注: Not a Number) と
873 いう特別な値を使って、 ゼロをゼロで割るといった無効な演算を表現する。 よ
874 り詳しい情報については、デイビッド・ゴールドバーグの論文 "What Every
875 Computer Scientist Should Know About Floating-Point Arithmetic"
876 (http://www.validlab.com/goldberg/paper.pdf) をご覧になるとよい。
877
878    浮動小数点数をオプションやオペランドや入力として受け取るコマンドは、
879 C の標準関数 ‘strtod’ や ‘strtold’ を使って、 テキストを浮動小数点数に変
880 換している。従って、そうした浮動小数点数には、 ‘1.0e-34’ や ‘-10e100’ と
881 いった指数表現が使用できる。 浮動小数点を解析するコマンドは、大文字小文
882 字を区別しない ‘inf’, ‘infinity’,‘NaN’ といった値も理解する。 もっとも、
883 そうした値が役に立つかどうかは、そのコマンド次第だ。 最近の C の実装では
884 、16 進の浮動小数点数も使える。 たとえば、‘-0x.ep-3’ といったものだが、
885 これは −14/16 掛ける 2^-3 を表し、−0.109375 に等しい。小数点を表す記号が
886 何になるかは、 ‘LC_NUMERIC’ のロケールによって決まる。 *Note
887 (libc)Parsing of Floats::.
888
889 \1f
890 File: coreutils-ja.info,  Node: Signal specifications,  Next: Disambiguating names and IDs,  Prev: Floating point,  Up: Common options
891
892 2.5 シグナルの指定
893 ==================
894
895 SIGNAL の指定には、‘HUP’ のようなシグナル名や ‘1’ のようなシグナル番号、
896 それに、シグナルによって終了させられるときのプロセスの終了ステータスを使
897 うことができる (訳注: 最後のものは、GNU coreutils の ‘kill’ コマンドでは
898 使用できるが、 シェルの組み込みコマンドのような、他の系統の ‘kill’ では
899 使えないかもしれない)。シグナル名は、標準的な形式でも、頭に ‘SIG’ を付け
900 た形式でも構わない。大文字小文字は区別されない。 以下に挙げるシグナル名
901 とシグナル番号は、POSIX の規格に従っているすべてのシステムで使用できる。
902
903 ‘HUP’
904      1.  ハングアップ (Hangup)。
905 ‘INT’
906      2.  端末からの割り込みシグナル (Terminal interrupt)。
907 ‘QUIT’
908      3.  端末からの中止シグナル (Terminal quit)。
909 ‘ABRT’
910      6. プロセスの中断 (Process abort)。
911 ‘KILL’
912      9.  強制終了 (Kill) (捕獲することも無視することもできない)。
913 ‘ALRM’
914      14.  アラームクロック (Alarm Clock)。
915 ‘TERM’
916      15.  終了 (Termination)。
917
918 これ以外にもサポートされているシグナル名があるが、それに対応するシグナル
919 番号はシステムによって様々である。 POSIX 1003.1-2001 に準拠しているすべ
920 てのシステムでは、以下のシグナルも使用できる。
921
922 ‘BUS’
923      メモリオブジェクトの未定義領域へのアクセス。
924 ‘CHLD’
925      チャイルドプロセスが終了 (terminate)、一時停止 (stop)、または再開
926      (continue) した。
927 ‘CONT’
928      実行が停止 (stop) しているならば、再開 (continue) する。
929 ‘FPE’
930      誤った算術演算。
931 ‘ILL’
932      不正な命令。
933 ‘PIPE’
934      読み手のないパイプへの書き出し。
935 ‘SEGV’
936      無効なメモリ参照。
937 ‘STOP’
938      実行を一時停止する (stop) (捕獲することも無視することもできない)。
939 ‘TSTP’
940      端末からの一時停止シグナル。
941 ‘TTIN’
942      バックグラウンドプロセスが端末から読み込もうとしている。
943 ‘TTOU’
944      バックグラウンドプロセスが端末へ書き出そうとしている。
945 ‘URG’
946      高帯域幅のデータがソケットに達している。
947 ‘USR1’
948      ユーザ定義シグナル 1。
949 ‘USR2’
950      ユーザ定義シグナル 2。
951
952 XSI 拡張に対応している POSIX 1003.1-2001 のシステムでは、以下のシグナル
953 も使用できる。
954
955 ‘POLL’
956      ポーリング可能なイベント。
957 ‘PROF’
958      プロファイリング・タイマーがタイムアウトした。
959 ‘SYS’
960      不正なシステムコール。
961 ‘TRAP’
962      Trace/breakpoint トラップ。
963 ‘VTALRM’
964      バーチャル・タイマーがタイムアウトした。
965 ‘XCPU’
966      CPU 時間の上限を超過した。
967 ‘XFSZ’
968      ファイルサイズの上限を超過した。
969
970 XRT 拡張に対応している POSIX 1003.1-2001 のシステムでは、上記以外にも、
971 少なくとも 8 個のリアルタイム・シグナルが使用できる。すなわち、‘RTMIN’,
972 ‘RTMIN+1’, ..., ‘RTMAX-1’, ‘RTMAX’ などだ。
973
974 \1f
975 File: coreutils-ja.info,  Node: Disambiguating names and IDs,  Next: Random sources,  Prev: Signal specifications,  Up: Common options
976
977 2.6 chown, chgrp, chroot, id: ユーザ名かユーザ ID かを明確にする
978 ================================================================
979
980 ‘chown’, ‘chgrp’, ‘chroot’, ‘id’ といったコマンドでは、引数として OWNER
981 や GROUP を渡す際に名前で指定しても、ID 番号で指定してもよい。 この指定
982 法が曖昧であることは明らかである。 もし、ユーザ名やグループ名が数字の連
983 続だったら、どうだろう? (1) コマンドはそれをユーザ名と解釈すべきだろう
984 か? ID 番号と解釈すべきだろうか? POSIX では、「こうしたコマンドは、指
985 定された文字列をまず名前として解決することを試み、 それに失敗した場合の
986 み、ID 番号として解釈しようとすること」と規定している。 この規定では、ユ
987 ーザが引数として ID 番号、たとえば 42 を指定しようとすると、 面倒な話に
988 なる。42 というユーザ名が存在し、それにユーザ ID 番号として別の数字、 た
989 とえば 1000 が割り当てられているといったややこしい状況でも、 うまく処理
990 できなければならないとすると、厄介なことになるのだ。 単に ‘chown 42 F’ を
991 実行したのでは、ファイル ‘F’ の所有者の ID 番号が 1000 になってしまう。
992 これはユーザが意図した動作ではない。
993
994    GNU の ‘chown’, ‘chgrp’, ‘chroot’,‘id’ は、この問題に対する回避策を用
995 意している。この回避策を使用すると、 データベースの検索を省略するので、
996 処理速度が著しく向上することがあるというおまけまで付く。 ユーザやグルー
997 プに ID 番号を指定する際には、その前に ‘+’ を付けさえすればよい。そうす
998 れば、整数として解釈するように強制できるのである。
999
1000      chown +42 F
1001      chgrp +$numeric_group_id another-file
1002      chown +0:+0 /
1003
1004    ‘+’ が前に付く各文字列に対しては、ユーザ名の検索プロセスが省略される
1005 。 何故なら、‘+’ を含む文字列が有効なユーザ名やグループ名であることは絶
1006 対にないからだ。 この書き方は、よく使われているたいていの Unix システム
1007 で使用できるが、Solaris 10 では使用できない。
1008
1009    ---------- Footnotes ----------
1010
1011    (1) 環境によっては、ユーザ名に数字を使うのは、よくあることである。
1012
1013 \1f
1014 File: coreutils-ja.info,  Node: Random sources,  Next: Target directory,  Prev: Disambiguating names and IDs,  Up: Common options
1015
1016 2.7 ランダムデータのソース
1017 ==========================
1018
1019 ‘shuf’, ‘shred’, ‘sort’ コマンドは、 作業を行うためにランダムデータを必
1020 要とすることがある。たとえば、‘sort -R’ ではハッシュ関数をランダムに選ば
1021 ねばならず、その選択のためにランダムデータを必要としている。
1022
1023    デフォルトでは、こうしたコマンドは、プログラム内部の擬似乱数ジェネレ
1024 ータを、 少量のエントロピーによって初期化して使用するが、
1025 ‘--random-source=FILE’ オプションで、 外部ソースを使うように指示すること
1026 もできる。 FILE の中身のバイト数が不十分なときは、エラーが通知される。
1027
1028    たとえば、デバイスファイル ‘/dev/urandom’ を、 ランダムデータのソース
1029 として使用してもよい。通常、このデバイスは、 デバイスドライバーなどのソ
1030 ースから環境ノイズを集めて、エントロピー・プールに入れ、 そのプールを使
1031 って、ランダムなビットを生成する。プールにデータが足りない場合は、 内部
1032 プールを再利用し、暗号的に安全な擬似乱数ジェネレータを使って、 より多く
1033 のビットを作り出す。 とは言え、このデバイスは、大量のランダムデータの生
1034 成のために設計されたものではなく、 比較的動作が遅いことは、承知しておい
1035 た方がよい。
1036
1037    たいていの実用には、‘/dev/urandom’ で十分だが、 プライベートなデータ
1038 の高度で長期に渡る保護が必要になるアプリケーションでは、 ‘/dev/random’ や
1039 ‘/dev/arandom’ のような他のデータソースが必要になるかもしれない。 どんな
1040 データソースが利用できるかは、ご使用のオペレーティング・システム次第だ。
1041
1042    前回コマンドを実行したときの結果を再現するには、 何らかのランダムデー
1043 タをファイルに保存しておき、 そのコマンドの一回目の実行でも二回目の実行
1044 でも、 ランダムソースとしてそのファイルを使用すればよい。 ファイルを使用
1045 する代わりに、たとえば、次のような方法を使っても、 ある値を種として与え
1046 たときの、再現性のある適当な量の擬似ランダムデータを生成することができる
1047
1048
1049      get_seeded_random()
1050      {
1051        seed="$1"
1052        openssl enc -aes-256-ctr -pass pass:"$seed" -nosalt \
1053          </dev/zero 2>/dev/null
1054      }
1055
1056      shuf -i1-100 --random-source=<(get_seeded_random 42)
1057
1058 \1f
1059 File: coreutils-ja.info,  Node: Target directory,  Next: Trailing slashes,  Prev: Random sources,  Up: Common options
1060
1061 2.8 出力先ディレクトリ
1062 ======================
1063
1064 通常、‘cp’, ‘install’, ‘ln’, ‘mv’ といったコマンドは、最後のオペランドが
1065 ディレクトリやディレクトリへのシンボリックリンクの場合、 それを特別扱い
1066 する。たとえば、‘cp source dest’ は、‘dest’ がディレクトリならば、‘cp
1067 source dest/source’ と同じことである。 時には、そうした動作が、ユーザが
1068 求めている動作とは違うこともある。 そこで、こうしたコマンドは、よりきめ
1069 細かな制御ができるように、 以下のオプションをサポートしている。
1070
1071 ‘-T’
1072 ‘--no-target-directory’
1073      最後のオペランドが、ディレクトリやディレクトリへのシンボリックリン
1074      クであっても、それを特別扱いしない。 このオプションは、複数のプログ
1075      ラムが共有領域で作業するとき、競合状態を防止する一助になる。 たとえ
1076      ば、‘mv /tmp/source /tmp/dest’ というコマンドが正常終了しても、
1077      ‘/tmp/source’ が ‘/tmp/dest’ にリネームされたという保証はない。 も
1078      し、何かほかのプロセスが ‘/tmp/dest’ をディレクトリとして作成してい
1079      たら、 ‘/tmp/dest/source’ という名前のファイルになってしまうかもし
1080      れないのだ。 それに対して、‘mv -T /tmp/source /tmp/dest’ が正常終了
1081      した場合は、 ‘/tmp/source’ は間違いなく ‘/tmp/dest’ にリネームされ
1082      ている。
1083
1084      反対に、最後のオペランドをディレクトリとして扱わせたい、 それができ
1085      ない場合は、エラーメッセージを出したい、ということもある。 そういう
1086      ときは、‘--target-directory’ (‘-t’) オプションを使用すればよい。 (訳
1087      注: ターゲット・ディレクトリをコマンドラインの最後に置く代わりに、
1088      ‘--target-directory’ オプションの引数にするということである。)
1089
1090 ‘-t DIRECTORY’
1091 ‘--target-directory=DIRECTORY’
1092      DIRECTORY を、出力されるファイルすべてのディレクトリ部分として使用
1093      する。
1094
1095      ほとんどのプログラムで、コマンドラインの扱いは次のようになっている
1096      。 オプションや、一定数の (0 個のこともある) 位置の固定した引数の処
1097      理が終われば、 引数リストにはもう何も残っていないか、残っているとす
1098      れば、 それはすべて同じように処理されることになる項目 (通常はファイ
1099      ル) のリストのはずある。 ‘xargs’ プログラムは、こうした約束ごとに沿
1100      ってうまく動くように作られている。
1101
1102      ‘mv’ ファミリーのコマンドが変わっているのは、引数の数が不定であり、
1103      しかも最後の引数を特別扱いするという点である (すなわちターゲット・
1104      ディレクトリとして扱う)。 そのため、ある種の作業の実行は、一筋縄で
1105      はいかない。 たとえば、「すべてのファイルをここから ../d/ に移動す
1106      る」がそうだ。 何故なら、‘mv * ../d/’ では、引数を入れておくための
1107      領域を使い切ってしまうかもしれないし、 そうかと言って、‘ls | xargs
1108      ...’ には、実行対象コマンド (訳注: ここでは、‘mv’) を起動するたびに
1109      最後の引数を特別に指定するためのすっきりした方法がないからである。
1110      (シェルコマンドを駆使すれば、できないことはないが、それでは、人間の
1111      労力と脳力を過当に要求することになる。)
1112
1113      ‘--target-directory’ (‘-t’) オプションを使用すると、 ‘cp’, ‘mv’,
1114      ‘ln’, ‘install’ といったプログラムを ‘xargs’ と一緒に使うとき、たい
1115      へん都合がよい。 たとえば、カレントディレクトリから、同じディレクト
1116      リ階層にある ‘d’ ディレクトリへファイルを移動するには、こんなふうに
1117      すればよい。
1118
1119           ls | xargs mv -t ../d --
1120
1121      しかし、これでは、ファイル名の先頭に ‘.’ の付くファイルが移動しない
1122      。GNU ‘find’ プログラムを使えば、次のコマンドでそうしたファイルも移
1123      動させることができる。
1124
1125           find . -mindepth 1 -maxdepth 1 \
1126             | xargs mv -t ../d
1127
1128      とは言え、上記のどちらの方法も、カレントディレクトリにファイルが一
1129      つもない場合や、 空白などの特殊文字を名前に含むファイルがある場合に
1130      は、うまく行かない。 次の例はそうした制限を一掃しているが、GNU
1131      ‘find’ と GNU ‘xargs’ の両方が必要である。
1132
1133           find . -mindepth 1 -maxdepth 1 -print0 \
1134             | xargs --null --no-run-if-empty \
1135                 mv -t ../d
1136
1137 ‘--target-directory’ (‘-t’) オプションと ‘--no-target-directory’ (‘-T’)
1138 オプションを一緒に使うことはできない。
1139
1140 \1f
1141 File: coreutils-ja.info,  Node: Trailing slashes,  Next: Traversing symlinks,  Prev: Target directory,  Up: Common options
1142
1143 2.9 末尾のスラッシュ
1144 ====================
1145
1146 いくつかの GNU プログラム (少なくとも、‘cp’ と ‘mv’) では、 SOURCE 引数
1147 を処理する前に、その引数の末尾にスラッシュが付いていたら、 それを除去す
1148 ることができるようになっている。‘--strip-trailing-slashes’ オプションを
1149 使用することによって、この動作が有効になる。
1150
1151    これが役に立つのは、SOURCE 引数の末尾にスラッシュが付いていて、 しか
1152 も、その引数がディレクトリへのシンボリックリンクを指定しているかもしれな
1153 いときだ。 そうした状況は、実のところ、それほど珍しくない。 と言うのも、
1154 シェルの中には、そうしたシンボリックリンクに対してファイル名の補完を行う
1155 とき、 末尾にスラッシュを自動的に付加するものがあるからだ。 このオプショ
1156 ンを指定しないと、たとえば ‘mv’ は、(システムの rename 関数を通してだが
1157 、) 末尾にスラッシュが付いていることを、 「シンボリックリンクの参照をた
1158 どれ」という指示として解釈しなければならず、 その結果、シンボリックリン
1159 クではなく、間接的に参照されているディレクトリの方をリネームしなければな
1160 らなくなる。 こうした動作がデフォルトになっているのは意外に思えるかもし
1161 れないが、POSIX で要求されている動作であり、POSIX 規格のほかの部分とも首
1162 尾一貫している。
1163
1164 \1f
1165 File: coreutils-ja.info,  Node: Traversing symlinks,  Next: Treating / specially,  Prev: Trailing slashes,  Up: Common options
1166
1167 2.10 シンボリックリンクをたどる
1168 ===============================
1169
1170 以下のオプションは、‘--recursive’ (‘-R’) オプションも同時に指定されてい
1171 るとき、‘chown’ コマンドや ‘chgrp’ コマンドがディレクトリ階層をどうたど
1172 るか、そのたどり方を変更する。 以下のオプションを複数個指定した場合は、
1173 最後に指定したものだけが効果を持つ。 こうしたオプションが指定しているの
1174 は、ディレクトリに対するシンボリックリンクを処理する際に、 そのシンボリ
1175 ックリンクそのものを操作の対象にするのか、 それとも、そのディレクトリ以
1176 下の階層にあるすべてのファイルを操作の対象にするのかということである。
1177
1178    こうしたオプションは、‘--dereference’ や ‘--no-dereference’ (‘-h’)と
1179 は、全く別のものである。あちらは、シンボリックリンクを変更するのか、 そ
1180 れとも、その参照先を変更するのかを制御している。
1181
1182 ‘-H’
1183      ‘--recursive’ (‘-R’) オプションが指定されている場合に、 コマンドラ
1184      インで指定された引数がディレクトリへのシンボリックリンクならば、そ
1185      れをたどる。
1186
1187 ‘-L’
1188      ディレクトリ階層を再帰的にたどっている際に、 ディレクトリへのシンボ
1189      リックリンクに出会ったら、必ずそれをたどる。
1190
1191 ‘-P’
1192      シンボリックリンクを一切たどらない。これが、‘-H’, ‘-L’, ‘-P’ のどれ
1193      も指定されていないときの、デフォルトである。
1194
1195 \1f
1196 File: coreutils-ja.info,  Node: Treating / specially,  Next: Special built-in utilities,  Prev: Traversing symlinks,  Up: Common options
1197
1198 2.11 ‘/’ (ルート) を特別扱いする
1199 ================================
1200
1201 ある種のコマンドは、ディレクトリ階層全体に対して破壊的な作用を及ぼす可能
1202 性がある。 たとえば、しかるべき特権を持ったユーザが、‘rm -rf / tmp/junk’
1203 を誤って実行したら、システム全体のすべてのファイルが消えてしまうかもしれ
1204 ないのだ。 そうしたコマンドの使用が正当であることは、めったにないので、
1205 GNU の ‘rm’ は、‘/’ に還元されるようないかなるディレクトリに対しても、通
1206 常では、操作を拒否するようになっている。 もし、本当にシステムのすべての
1207 ファイルを消去しようと思うのなら、 ‘--no-preserve-root’ オプションを使用
1208 すればよい。 とは言え、ほとんどの用途で、デフォルトの動作 (明示的に指定
1209 するには、 ‘--preserve-root’ オプションを使う) の方が安全である。
1210
1211    ‘chgrp’, ‘chmod’, ‘chown’ などのコマンドも、ディレクトリ階層全体に対
1212 して破壊的な作用を及ぼす可能性がある。 従って、こうしたコマンドもまた、
1213 上記のオプションをサポートしている。 こうしたコマンドは、‘rm’ とは違って
1214 、ファイルを実際に削除してしまうわけではないが、 ‘/’ から再帰的に働くと
1215 きは、一層危険だと言うこともできる。 と言うのは、たいていの場合、処理速
1216 度がずっと早いので、 注意力のあるユーザがコマンドを中断できるより前に、
1217 ‘rm’ の場合より、もっと多くのファイルに被害を与えてしまうからだ。Unix の
1218 習慣も POSIX の規格も、こうしたコマンドが ‘/’ から再帰的に働くことを要求
1219 している。 それ故、デフォルトが ‘--no-preserve-root’ になっているのだが
1220 、 こうしたコマンドは、‘--preserve-root’ オプションを使った方が、ほとん
1221 どの用途でより安全である。 面倒ならば、エイリアスか、シェル関数を作って
1222 、‘--preserve-root’ を指定しておけばよいのだ。
1223
1224    また、‘--preserve-root’ を指定すると、‘/’ を指しているシンボリックリ
1225 ンクの参照をたどる場合でも、‘chgrp’ や ‘chown’ が、‘/’ のグループや所有
1226 者を変更しなくなることも、憶えておいていただきたい。 (訳注: ‘chgrp’ や
1227 ‘chown’ の解説を見ていただけばわかるが、 これは、‘--recursive’ (‘-R’) を
1228 同時に使っているときの話である。)
1229
1230 \1f
1231 File: coreutils-ja.info,  Node: Special built-in utilities,  Next: Standards conformance,  Prev: Treating / specially,  Up: Common options
1232
1233 2.12 特殊ビルトイン・ユーティリティ
1234 ===================================
1235
1236 プログラムの中には、‘nice’ のように、ほかのプログラムを起動できるものが
1237 ある。 たとえば、‘nice cat file’ というコマンドは、コマンド ‘cat file’ を
1238 実行することによって、‘cat’ プログラムを起動する。しかしながら、‘exit’ の
1239 ようなシェルの特殊ビルトイン・ユーティリティ (“special built-in
1240 utilities”) は、この方法で起動することができない。一例を挙げれば、‘nice
1241 exit’ というコマンドは、どんな動作をするかが明確に定義されていない。 終
1242 了する代わりに、エラーメッセージを出すかもしれないのだ。
1243
1244    POSIX 1003.1-2004 の規格では、特殊ビルトイン・ユーティリティとして次
1245 のものを挙げている。
1246
1247      . : break continue eval exec exit export readonly return set shift
1248      times trap unset
1249
1250    たとえば、‘.’, ‘:’, ‘exec’ は、特殊ビルトイン・ユーティリティなので、
1251 ‘nice . foo.sh’, ‘nice :’, ‘nice exec pwd’ といったコマンドの動作は、 読
1252 者が予想なさるかもしれないようなものにはならない。
1253
1254    (訳注: exec, exit など対して、同じシェルの組み込みコマンドでも、cd,
1255 alias, fg, kill, pwd, true, umask などは、通常ビルトイン・ユーティリティ
1256 ("regular built-in utilities") と呼ばれている。 もっとも、nice などから
1257 実行できないという点では、 特殊ビルトイン・ユーティリティも通常ビルトイ
1258 ン・ユーティリティも変わりがない。 nice などから起動できるとすれば、それ
1259 は同名の実行ファイルが存在するからだ)。
1260
1261    多くのシェルは、上記のリストを拡張している。 たとえば、bash では、
1262 ‘history’ や ‘suspend’ といったコマンドが特殊ビルトイン・ユーティリティ
1263 に追加されている。 そこで、bash の場合、‘nice suspend’ というコマンドを
1264 実行すると、 シェルのサスペンドは起こらず、エラーメッセージが出力される
1265
1266
1267 \1f
1268 File: coreutils-ja.info,  Node: Standards conformance,  Next: Multi-call invocation,  Prev: Special built-in utilities,  Up: Common options
1269
1270 2.13 規格への準拠
1271 =================
1272
1273 GNU ユーティリティのデフォルトの動作が POSIX の規格と一致しない場合が、
1274 若干ながら存在する。 そうした非互換性を抑制するには、環境変数
1275 ‘POSIXLY_CORRECT’ を設定すればよい。 もっとも、POSIX に準拠しているか否
1276 かを点検しているのでもないかぎり、 ‘POSIXLY_CORRECT’ を設定する必要は、
1277 おそらくないだろうが。
1278
1279    POSIX の新しいバージョンが、古いバージョンと非互換であることが、 とき
1280 どきある。たとえば、POSIX の古いバージョンでは、‘sort +1’ というコマンド
1281 は、 各入力行の二番目以後のフィールドに基づいて、行の並べ替えを行うこと
1282 になっていた。 ところが、POSIX 1003.1-2001 では、同じコマンドが ‘+1’ と
1283 いう名前のファイルの行を並べ替えることになっており、 フィールドに基づい
1284 た並べ替えを行うには、‘sort -k 2’ という別のコマンドを使わなければならな
1285 いのだ。 そして、さらにややこしいことに、POSIX 1003.1-2008 では、古い動
1286 作と新しい動作のどちらをする実装も認められている。
1287
1288    通常 GNU のユーティリティは、お使いのシステムが規格として採用している
1289 POSIX のバージョンに従っている。GNU ユーティリティを POSIX の別のバージ
1290 ョンに準拠させるには、環境変数 ‘_POSIX2_VERSION’ を設定すればよい。この
1291 環境変数の値は、YYYYMM という形式であり、 その規格が何年の何月に採択され
1292 たかを示している。‘_POSIX2_VERSION’ の値としては、現在のところ、次の三つ
1293 がサポートされている。すなわち、‘199209’, ‘200112’, ‘200809’ であり、そ
1294 れぞれ POSIX 1003.2-1992, POSIX 1003.1-2001, POSIX 1003.1-2008 を表して
1295 いる。 一例を挙げよう。御使用のシステムが POSIX 1003.1-2001 に準拠してい
1296 るのに、動かしているソフトウェアが ‘sort +1’ や ‘tail +10’ といった旧来
1297 の用法も持っている場合には、環境に ‘_POSIX2_VERSION=200809’ を設定するこ
1298 とで、互換性の問題を回避することができる。
1299
1300 \1f
1301 File: coreutils-ja.info,  Node: Multi-call invocation,  Prev: Standards conformance,  Up: Common options
1302
1303 2.14 ‘coreutils’: Multi-call プログラム
1304 =======================================
1305
1306 ‘coreutils’ コマンドは個々のユーティリティ・プログラムを呼び出す。 呼び
1307 出されるユーティリティ・プログラムは、‘coreutils’ を呼び出すために使った
1308 ファイル名の最後の要素によって自動的に選ばれたものか、 あるいは、
1309 ‘--coreutils-prog’ オプションを使って明示的に指定されたものである。
1310
1311    書式:
1312
1313      coreutils --coreutils-prog=PROGRAM ...
1314
1315    ‘coreutils’ は、デフォルトではインストールされない。 従って、移植を考
1316 慮したスクリプトでは、その存在を当てにしない方がよい。
1317
1318    (訳注: 少し説明が必要だろう。coreutils 8.23 以来、ls, sort など、個々
1319 のバイナリを作るのではなく、coreutils という一つの大きなバイナリを作り、
1320 ls, sort などは、言わば coreutils のビルトイン・コマンドとして呼び出すこ
1321 とができるようになった。 つまり、ls は今までどおり ‘ls’ や ‘/bin/ls’ で
1322 も起動できれば、 ‘coreutils --coreutils-prog=ls’ でも起動できるというこ
1323 とである。 前者の場合のベースネームの ls が、本文で言う「‘coreutils’ を
1324 呼び出すために使ったファイル名の最後の要素」に当たるわけだ。 もちろん、
1325 今でも個々のコマンドを独立したバイナリとして作ることもでき、 その場合は
1326 、たぶん ‘coreutils’ というコマンドは存在しないことになる。 詳しくは、
1327 coreutils パッケージに含まれる NEWS ファイルをご覧いただきたい。)
1328
1329 \1f
1330 File: coreutils-ja.info,  Node: Output of entire files,  Next: Formatting file contents,  Prev: Common options,  Up: Top
1331
1332 3 ファイル全体の出力
1333 ********************
1334
1335 次のコマンドはファイル全体を読み込んで、書き出す。 内容に対して何らかの
1336 変換を行うこともある。
1337
1338 * Menu:
1339
1340 * cat invocation::           ファイルを結合して、書き出す。
1341 * tac invocation::           ファイルを結合し、ファイルごとに逆順で書き出す。
1342 * nl invocation::            行番号を付けて、ファイルを書き出す。
1343 * od invocation::            ファイルを 8 進数などの形式で書き出す。
1344 * base32 invocation::        データを ASCII 文字で表示可能なデータに変換する。
1345 * base64 invocation::        データを ASCII 文字で表示可能なデータに変換する。
1346
1347 \1f
1348 File: coreutils-ja.info,  Node: cat invocation,  Next: tac invocation,  Up: Output of entire files
1349
1350 3.1 ‘cat’: ファイルを結合して、書き出す
1351 =======================================
1352
1353 ‘cat’ は、各 FILE (‘-’ は標準入力を意味する) を標準出力にコピーする。
1354 FILE が一つも指定されていない場合は、標準入力から読み込む。
1355
1356    書式:
1357
1358      cat [OPTION] [FILE]...
1359
1360    このプログラムでは以下のオプションが使用できる。参照: *note Common
1361 options::.
1362
1363 ‘-A’
1364 ‘--show-all’
1365      ‘-vET’ と同じ。
1366
1367 ‘-b’
1368 ‘--number-nonblank’
1369      空行以外のすべての出力行に、1 から始まる番号を付ける。
1370
1371 ‘-e’
1372      ‘-vE’ と同じ。
1373
1374 ‘-E’
1375 ‘--show-ends’
1376      各行の末尾に ‘$’ 記号を付ける。
1377
1378 ‘-n’
1379 ‘--number’
1380      すべての出力行に、1 から始まる番号を付ける。このオプションは、‘-b’
1381      が有効になっているときは、無視される。
1382
1383 ‘-s’
1384 ‘--squeeze-blank’
1385      連続する空行の表示を抑制する。すなわち、連続する複数の空行の代わり
1386      に、 たった 1 行だけ空行を出力する。
1387
1388 ‘-t’
1389      ‘-vT’ と同じ。
1390
1391 ‘-T’
1392 ‘--show-tabs’
1393      TAB 文字を ‘^I’ と表示する。
1394
1395 ‘-u’
1396      無視される。POSIX との互換のためにある。
1397
1398 ‘-v’
1399 ‘--show-nonprinting’
1400      LFD と TAB 以外の制御文字を ‘^’ 表記を使って表示する。 高位ビットの
1401      セットされている文字の前には、‘M-’ を付ける。
1402
1403    テキストファイルとバイナリファイルを区別する MS-DOS のようなシステム
1404 では、 ‘cat’ は通常、バイナリモードで読み書きを行う。 しかしながら、
1405 ‘-bensAE’ といったオプションの一つが使われている場合や、 読み込みの対象
1406 が標準入力で、しかも、標準入力が端末である場合は、‘cat’ はテキストモード
1407 で読み込みを行う。同様に出力においても、‘-bensAE’ といったオプションの一
1408 つが使用されていたり、標準出力が端末である場合は、 ‘cat’ はテキストモー
1409 ドで書き出しを行う。
1410
1411    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1412
1413    用例:
1414
1415      # f の内容、標準入力、g の内容の順で出力する。
1416      cat f - g
1417
1418      # 標準入力を標準出力にコピーする。
1419      cat
1420
1421 \1f
1422 File: coreutils-ja.info,  Node: tac invocation,  Next: nl invocation,  Prev: cat invocation,  Up: Output of entire files
1423
1424 3.2 ‘tac’: ファイルを結合し、ファイルごとに逆順で書き出す
1425 =========================================================
1426
1427 ‘tac’ は、各 FILE (‘-’ は標準入力を意味する) を、FILE ごとにレコード
1428 (records、デフォルトでは行) の順番を逆にして、標準出力にコピーする。
1429 FILE が一つも指定されていない場合は、標準入力から読み込む。
1430
1431    書式:
1432
1433      tac [OPTION]... [FILE]...
1434
1435    レコード (“records”) は、ある文字列 (デフォルトでは改行) が出現するこ
1436 とによって区切られる。出力の際、デフォルトでは、この区切り文字列は、 フ
1437 ァイル中でその区切り文字列の直前にあるレコードの末尾に付加される。
1438
1439    このプログラムでは以下のオプションが使用できる。参照: *note Common
1440 options::.
1441
1442 ‘-b’
1443 ‘--before’
1444      出力の際、区切り文字列は、ファイル中でその区切り文字列の直後に来る
1445      レコードの先頭に付加される。
1446
1447 ‘-r’
1448 ‘--regex’
1449      区切り文字列を正規表現として処理する。
1450
1451 ‘-s SEPARATOR’
1452 ‘--separator=SEPARATOR’
1453      改行の代わりに SEPARATOR をレコード区切り文字列 (record separator)
1454      として使用する。注意すべきは、SEPARATOR に空文字列を指定すると、 ゼ
1455      ロバイトを指定したことになることだ。すなわち、入出力レコードが
1456      ASCII NUL で区切られることになる。
1457
1458    テキストファイルとバイナリファイルを区別する MS-DOS のようなシステム
1459 では、 ‘tac’ はバイナリモードで読み書きを行う。
1460
1461    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1462
1463    用例:
1464
1465      # ファイルを一字一字逆にする。
1466      tac -r -s 'x\|[^x]'
1467
1468 \1f
1469 File: coreutils-ja.info,  Node: nl invocation,  Next: od invocation,  Prev: tac invocation,  Up: Output of entire files
1470
1471 3.3 ‘nl’: 行番号を付けて、ファイルを書き出す
1472 ============================================
1473
1474 ‘nl’ は、各 FILE (‘-’ は標準入力を意味する) を、すべての行、または、一部
1475 の行に行番号を付けて、標準出力に書き出す。 FILE が一つも指定されていない
1476 場合は、標準入力から読み込む。
1477
1478    書式:
1479
1480      nl [OPTION]... [FILE]...
1481
1482    ‘nl’ は、入力を (論理) ページセクションに分解する。 デフォルトでは、
1483 行番号は各論理ページセクションで 1 にリセットされる。 ‘nl’ は、すべての
1484 入力ファイルをまとめて、一つのドキュメントとして扱う。 従って、入力ファ
1485 イルが変わるたびに、論理ページや行番号をリセットすることはない。
1486
1487    論理ページは、三つのセクションからなる。すなわち、ヘッダ、本文、フッ
1488 タである。 どのセクションも空であって構わない。 セクションごとに他のセク
1489 ションとは異なる番号付けの方式を選ぶこともできる。
1490
1491    入力ファイル中で論理ページの各セクションが始まる位置を指示するには、
1492 以下の区切り文字列の一つのみからなる行を使用する。
1493
1494 ‘\:\:\:’
1495      ヘッダの先頭。
1496 ‘\:\:’
1497      本文の先頭。
1498 ‘\:’
1499      フッタの先頭。
1500
1501    上記の文字列を構成する二文字は、オプションを使って (下記参照)、‘\’ と
1502 ‘:’ の組み合わせ以外のものに、変更することができる。 だが、各文字列のパ
1503 ターンや長さは、変えることができない。
1504
1505    セクションの区切りは、出力では空行に置き換えられる。 入力ファイル中の
1506 最初のセクション区切り文字列より前にあるテキストは、 いかなるテキストも
1507 、本文セクションの一部と見なされる。 従って、‘nl’ は、セクションの区切り
1508 を全く含まないファイルを、一個の本文セクションとして扱う。
1509
1510    このプログラムでは以下のオプションが使用できる。参照: *note Common
1511 options::.
1512
1513 ‘-b STYLE’
1514 ‘--body-numbering=STYLE’
1515      各論理ページの本文セクションにおける行の番号付けの方式を選択する。
1516      行に番号が付かない場合、行番号の現在値は増加しないが、それでも行番
1517      号の区切り文字は行の前に付く (訳注: ここで言う行番号の区切り文字
1518      (line number separator character) とは、行番号とテキストの区切り文
1519      字ではなく、行頭とテキストとの間にある行番号のために用意された空間
1520      を埋める空白のことらしい)。 番号付けの方式には、以下のものがある。
1521
1522      ‘a’
1523           すべての行に番号を振る。
1524      ‘t’
1525           空ではない行にのみ番号を振る (本文のデフォルト)。
1526      ‘n’
1527           行番号を付けない (ヘッダとフッタのデフォルト)。
1528      ‘pBRE’
1529           基本正規表現 BRE にマッチする部分を含む行にのみ番号を振る。
1530           *Note Regular Expressions: (grep)Regular Expressions.
1531
1532 ‘-d CD’
1533 ‘--section-delimiter=CD’
1534      セクションの区切り文字を CD にする。デフォルトは ‘\:’。 C のみを指
1535      定すると、二番目の文字は、デフォルトと同じ ‘:’ になる。 (‘\’ などの
1536      メタ文字は、シェルが展開しないように、引用符やバックスラッシュで保
1537      護するのをお忘れなく。)
1538
1539 ‘-f STYLE’
1540 ‘--footer-numbering=STYLE’
1541      ‘--body-numbering’ と同様。
1542
1543 ‘-h STYLE’
1544 ‘--header-numbering=STYLE’
1545      ‘--body-numbering’ と同様。
1546
1547 ‘-i NUMBER’
1548 ‘--line-increment=NUMBER’
1549      行番号を NUMBER づつ増やす (デフォルトは 1)。
1550
1551 ‘-l NUMBER’
1552 ‘--join-blank-lines=NUMBER’
1553      空行にも番号を付けるとき、連続する NUMBER (デフォルトは 1) 行の空行
1554      を 1 論理行と数え、最後の空行にのみ番号を振る。連続する空行が
1555      NUMBER 行未満のときは、番号を振らない。 空行というのは、文字を全く
1556      含まない、スペースやタブさえも含まない行のことである。
1557
1558 ‘-n FORMAT’
1559 ‘--number-format=FORMAT’
1560      行番号付けのフォーマットを選択する (デフォルトは ‘rn’)。
1561
1562      ‘ln’
1563           左詰めにする。先頭を 0 で埋めない。
1564      ‘rn’
1565           右詰めにする。先頭を 0 で埋めない。
1566      ‘rz’
1567           右詰めにする。先頭を 0 で埋める。
1568
1569 ‘-p’
1570 ‘--no-renumber’
1571      論理ページの先頭で行番号をリセットしない。
1572
1573 ‘-s STRING’
1574 ‘--number-separator=STRING’
1575      出力中で行番号とテキスト部分との区切りに STRING を使う (デフォルト
1576      はタブ文字)。
1577
1578 ‘-v NUMBER’
1579 ‘--starting-line-number=NUMBER’
1580      各論理ページで行番号を NUMBER から始める (デフォルトは 1)。
1581
1582 ‘-w NUMBER’
1583 ‘--number-width=NUMBER’
1584      行番号に NUMBER 個の文字を使用する (デフォルトは 6 文字)。
1585
1586    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1587
1588 \1f
1589 File: coreutils-ja.info,  Node: od invocation,  Next: base32 invocation,  Prev: nl invocation,  Up: Output of entire files
1590
1591 3.4 ‘od’: ファイルを 8 進数などの形式で書き出す
1592 ===============================================
1593
1594 ‘od’ は、各 FILE (‘-’ は標準入力を意味する) の内容を、 曖昧さの余地がな
1595 い形で標準出力に書き出す。FILE が一つも指定されていない場合は、 標準入力
1596 から読み込む。
1597
1598    書式:
1599
1600      od [OPTION]... [FILE]...
1601      od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
1602      od [OPTION]... --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
1603
1604    各出力行の構成は、入力中の位置をオフセットで表したものの後に、 ファイ
1605 ルのデータをいくつかのまとまりに分けたものが続くという形になっている。 デ
1606 フォルトでは、‘od’ はオフセットを 8 進数で表示する。 ファイル・データの
1607 個々のまとまりは、入力を C 言語の ‘short int’ ごとに分けたものであり、1
1608 個の 8 進数として表示される。
1609
1610    OFFSET を指定した場合、それは、整形と出力を始める前に、 入力を何バイ
1611 ト読み飛ばすかを示している。デフォルトでは、OFFSET は 8 進数と見なされる
1612 が、数字の後ろに小数点を付ければ、10 進数と見なされる。 小数点が指定され
1613 ず、オフセットの数字が ‘0x’ や ‘0X’ で始まっている場合は、 16 進数として
1614 解釈される。もし、数字の後ろに ‘b’ が付いているならば、 読み飛ばすバイト
1615 数は、OFFSET に 512 を掛けたものになる。
1616
1617    (訳注: 数字の後ろに小数点を付けることで OFFSET が 10 進数であることを
1618 示す方法は、現在では無効のようである。 オフセットを 10 進数で指定したけ
1619 れば、‘-j’ オプションを使用した方がよい。)
1620
1621    コマンドが「書式」における第一の型と第二の型のどちらとも取れるときは
1622 、 最後のオペランドが ‘+’ で始まっている場合や、オペランドが 2 個で 2 番
1623 目のオペランドが数字で始まっている場合は、第二の型だと見なされる。 たと
1624 えば、‘od foo 10’ や ‘od +10’ では、‘10’ はオフセットである。 それに対し
1625 て、‘od 10’ では、‘10’ はファイル名である。
1626
1627    このプログラムでは以下のオプションが使用できる。参照: *note Common
1628 options::.
1629
1630 ‘-A RADIX’
1631 ‘--address-radix=RADIX’
1632      ファイル・オフセットの表示に使う基数を選択する。RADIX には、 以下の
1633      一つが使える。
1634
1635      ‘d’
1636           10 進数
1637      ‘o’
1638           8 進数
1639      ‘x’
1640           16 進数
1641      ‘n’
1642           なし (オフセットを表示しない)
1643
1644      デフォルトは 8 進数である。
1645
1646 ‘--endian=ORDER’
1647      入力のバイトオーダーを変更する。入力を別のバイトオーダーで扱うため
1648      、 あるいは、使用システムのエンディアン方式にとらわれない一貫した出
1649      力を生成するために使用する。 変換は、‘--type’ で指定されたサイズと
1650      ORDER のエンディアンに従って行われる。 ORDER には、‘little’ または
1651      ‘big’ が指定できる。
1652
1653 ‘-j BYTES’
1654 ‘--skip-bytes=BYTES’
1655      整形と出力を行う前に、入力を BYTES バイト読み飛ばす。BYTES が ‘0x’
1656      や ‘0X’ で始まっている場合は、16 進数と見なされる。 ‘0’ のみで始ま
1657      っている場合は、8 進数だ。どちらでもない場合は、10 進数である。
1658      BYTES は、整数であり、 以下に挙げるような何倍かを示す接尾辞を後ろに
1659      付けることもできる。接尾辞だけ指定してもよい (訳注: その場合は、1 が
1660      前にあるものと見なされる)。
1661           ‘b’  =>            512 ("blocks")
1662           ‘KB’ =>           1000 (KiloBytes)
1663           ‘K’  =>           1024 (KibiBytes)
1664           ‘MB’ =>      1000*1000 (MegaBytes)
1665           ‘M’  =>      1024*1024 (MebiBytes)
1666           ‘GB’ => 1000*1000*1000 (GigaBytes)
1667           ‘G’  => 1024*1024*1024 (GibiBytes)
1668      ‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。
1669
1670 ‘-N BYTES’
1671 ‘--read-bytes=BYTES’
1672      入力から最大で BYTES バイト出力する。‘bytes’ に接頭辞や接尾辞を付け
1673      ると、 ‘-j’ オプションの場合と同じように解釈される。
1674
1675 ‘-S BYTES’
1676 ‘--strings[=BYTES]’
1677      通常の出力はせず、文字列定数 (“string constants”) のみを出力する。
1678      すなわち、BYTES バイト以上の連続する ASCII 表示文字で、ゼロバイト
1679      (ASCII NUL) が続くものを出力するわけだ。BYTES に接頭辞や接尾辞を付
1680      けると、 ‘-j’ オプションの場合と同じように解釈される。
1681
1682      ‘--strings’ に続く BYTES が省略された場合、デフォルトは 3 である。
1683      (訳注: 短縮形の ‘-S’ では BYTES を省略できない。)
1684
1685 ‘-t TYPE’
1686 ‘--format=TYPE’
1687      ファイルデータの出力形式を選択する。 TYPE は、1 個以上の下記の形式
1688      指定文字からなる文字列である。 一つの TYPE 文字列に複数の形式指定文
1689      字が含まれている場合や、 このオプションを複数回使用した場合は、‘od’
1690      は出力行ごとに、 指定された各データ形式で表現したその行を、指定され
1691      た順番で書き出す。
1692
1693      どんな形式指定であれ、その最後に “z” を付けると、 形式指定によって
1694      生成された出力行の後ろに、 表示可能文字を 1 バイト文字によって表現
1695      したものが、出力される。
1696
1697      ‘a’
1698           文字の名称 (訳注: たとえば、A は A、改行文字は nl)。最上位ビッ
1699           トは無視する。
1700      ‘c’
1701           表示可能な 1 バイト文字、C 言語のバックスラッシュ・エスケープ
1702           、 あるいは 3 桁の 8 進数。
1703      ‘d’
1704           符号付き 10 進数
1705      ‘f’
1706           浮動小数点数 (*note Floating point::)
1707      ‘o’
1708           8 進数
1709      ‘u’
1710           符号なし 10 進数
1711      ‘x’
1712           16 進数
1713
1714      ‘a’ 形式の出力では、空白文字は ‘sp’、改行文字は ‘nl’、ゼロバイトは
1715      ‘nul’ といった具合に表現される。このとき、各バイトの下位 7 ビットの
1716      みが使われ、 最上位ビットは無視される。‘c’ 形式の出力では、上記の例
1717      は、それぞれ ‘ ’、‘\n’、‘\0’ になる。
1718
1719      ‘a’ と ‘c’ 形式を除き、形式指定文字の後ろに 10 進数の整数を続けるこ
1720      とによって、入力データの各数値を読み込んで、 指定されたデータ形式に
1721      変換して行く際に、何バイトづつ使用するかを指定することができる。 あ
1722      るいは、形式指定文字の後ろに以下の文字の一つを続けることによって、
1723      C コンパイラの組み込みデータ型のいづれかのサイズを指定することも可
1724      能だ。 すなわち、整数 (‘d’, ‘o’, ‘u’, ‘x’) に対しては、以下を後置す
1725      る。
1726
1727      ‘C’
1728           char
1729      ‘S’
1730           short
1731      ‘I’
1732           int
1733      ‘L’
1734           long
1735
1736      浮動小数点数 (‘f’) に対しては、次のものが使用できる。
1737
1738      F
1739           float
1740      D
1741           double
1742      L
1743           long double
1744
1745 ‘-v’
1746 ‘--output-duplicates’
1747      連続する行が同一であっても出力する。デフォルトでは、出力する行が、
1748      二行以上連続して全く同一になりそうな場合、‘od’ は最初の行だけを出力
1749      し、 次の行にはアステリスクのみを置いて、二行目以下を省略したことを
1750      示す。
1751
1752 ‘-w[N]’
1753 ‘--width[=N]’
1754      1 出力行当たり、‘n’ バイトの入力をダンプする。 この値は、指定した各
1755      出力形式に結び付いているサイズの最小公倍数の倍数でなければならない
1756      。
1757
1758      このオプションが全く指定されないときのデフォルトは 16 である。 この
1759      オプションが N なしで指定されたときのデフォルトは 32 である。
1760
1761    以下に挙げるいくつかのオプションは、形式指定の簡易版である。GNU ‘od’
1762 では、形式指定オプションと簡易版オプションをどのように組み合わせても構わ
1763 ない。 こうしたオプションは、累加されていく。
1764
1765 ‘-a’
1766      文字の名称で出力する。‘-t a’ と同じ。
1767
1768 ‘-b’
1769      1 バイトづつ 8 進数として出力する。‘-t o1’ と同じ。
1770
1771 ‘-c’
1772      表示可能な 1 バイト文字か、C 言語のバックスラッシュ・エスケープ、 あ
1773      るいは 3 桁の 8 進数として出力する。‘-t c’ と同じ。
1774
1775 ‘-d’
1776      2 バイトづつ符号なし 10 進数として出力する。‘-t u2’ と同じ。
1777
1778 ‘-f’
1779      浮動小数点数として出力する。‘-t fF’ と同じ。
1780
1781 ‘-i’
1782      10 進数の int として出力する。‘-t dI’ と同じ。
1783
1784 ‘-l’
1785      10 進数の long int として出力する。‘-t dL’ と同じ。
1786
1787 ‘-o’
1788      2 バイトづつ 8 進数として出力する。‘-t o2’ と同じ。
1789
1790 ‘-s’
1791      2 バイトづつ 10 進数として出力する。‘-t d2’ と同じ。
1792
1793 ‘-x’
1794      2 バイトづつ 16 進数として出力する。‘-t x2’ と同じ。
1795
1796 ‘--traditional’
1797      昔の ‘od’ で使用できた、オプションではない引数 LABEL を認識する。 書
1798      式は次のようになる。
1799
1800           od --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
1801
1802      この書式を使用すると、ファイルは 1 個までしか指定できないが、必要な
1803      ら、 オフセットを示す引数や、LABEL という、開始位置の仮アドレスを示
1804      す引数を、 続けて指定することができる。引数 LABEL は OFFSET と全く
1805      同じように解釈されるが、出力を開始する位置の仮アドレスを指定してい
1806      る。 仮アドレスは、通常のアドレスの後ろに、カッコで囲まれて、表示さ
1807      れる。
1808
1809    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1810
1811 \1f
1812 File: coreutils-ja.info,  Node: base32 invocation,  Next: base64 invocation,  Prev: od invocation,  Up: Output of entire files
1813
1814 3.5 ‘base32’: データを表示可能データ (printable data) に変換する
1815 ================================================================
1816
1817 ‘base32’ はファイル、または標準入力から読み込んだデータを、 base32 でエ
1818 ンコードした形式に変換する (あるいは、その逆を行う)。 base32 でエンコー
1819 ドした形式は、表示可能な ASCII 文字を用いて、バイナリデータを表現する。
1820 このコマンドの使用法やオプションは、 ‘base64’ と全く同じである。 *Note
1821 base64 invocation::.
1822
1823 \1f
1824 File: coreutils-ja.info,  Node: base64 invocation,  Prev: base32 invocation,  Up: Output of entire files
1825
1826 3.6 ‘base64’: データを表示可能データ (printable data) に変換する
1827 ================================================================
1828
1829 ‘base64’ はファイル、または標準入力から読み込んだデータを、 base64 でエ
1830 ンコードした形式に変換する (あるいは、その逆を行う)。 base64 でエンコー
1831 ドした形式は、表示可能な ASCII 文字を用いて、バイナリデータを表現する。
1832
1833    書式:
1834
1835      base64 [OPTION]... [FILE]
1836      base64 --decode [OPTION]... [FILE]
1837
1838    base64 でエンコードすると、データが元のデータのほぼ 133% に増大する。
1839 base32 エンコーディングの場合は、元のデータのほぼ 160% になる。 こうした
1840 エンコード形式は、RFC4648 に準拠している。
1841 <ftp://ftp.rfc-editor.org/in-notes/rfc4648.txt>
1842
1843    このプログラムでは以下のオプションが使用できる。参照: *note Common
1844 options::.
1845
1846 ‘-w COLS’
1847 ‘--wrap=COLS’
1848      エンコード中に、出力が COLS 文字に達したら改行する。この値は、正の
1849      整数でなければならない。
1850
1851      デフォルトでは、76 文字で改行する。改行を全く行わないようにするには
1852      、値を 0 にする。
1853
1854 ‘-d’
1855 ‘--decode’
1856      動作モードを変更する。デフォルトの、データをエンコードするモードで
1857      はなく、 データをデコードするモードになる。入力には、base64 でエン
1858      コードしたデータが期待され、出力は、エンコードする前のデータになる
1859      。
1860
1861 ‘-i’
1862 ‘--ignore-garbage’
1863      デコードする際、改行文字がどこに現れても、適切に処理する。デコード
1864      中に ASCII 表示可能文字以外を表すバイトが現れたら、一部壊れたデータ
1865      でもデコードできるように、それを無視する。
1866
1867    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1868
1869 \1f
1870 File: coreutils-ja.info,  Node: Formatting file contents,  Next: Output of parts of files,  Prev: Output of entire files,  Up: Top
1871
1872 4 ファイル内容の整形
1873 ********************
1874
1875 以下のコマンドは、ファイルの内容を整形し直す。
1876
1877 * Menu:
1878
1879 * fmt invocation::           パラグラフに分かれたテキストを整形し直す。
1880 * pr invocation::            ページ付けや段組みをしてファイルを表示する。
1881 * fold invocation::          入力行を指定された幅に合わせて折り返す。
1882
1883 \1f
1884 File: coreutils-ja.info,  Node: fmt invocation,  Next: pr invocation,  Up: Formatting file contents
1885
1886 4.1 ‘fmt’: パラグラフに分かれたテキストを整形し直す
1887 ===================================================
1888
1889 ‘fmt’ は行を折り返したり、結合したりして、出力する各行が指定された文字数
1890 に納まるように調整する。 1 行のデフォルトはアスキー文字で 75 文字である
1891 。 (訳注: 日本語のテキストは、通常単語を空白で区切らないので、うまく整形
1892 できない。)
1893
1894    書式:
1895
1896      fmt [OPTION]... [FILE]...
1897
1898    ‘fmt’ は、指定された引数 FILE から (指定されていない場合は、標準入力
1899 から) テキストを読み込んで、標準出力に書き出す。
1900
1901    デフォルトでは、空行、単語間の空白、インデント (字下げ) は、出力でも
1902 そのまま維持される。 インデントの違う入力行が連続する場合は、行の結合は
1903 行われない。 タブは入力のときにスペースに展開され、出力でタブに戻される
1904
1905
1906    ‘fmt’ は、できるだけ文の終わりで改行しようとする。 また、文の最初の単
1907 語の直後や、文の最後の単語の直前で改行するのは避けようとする。 「文の終
1908 わり (“sentence break”)」の定義は、パラグラフがそこで終わっているか、 あ
1909 るいは、単語の末尾に ‘.?!’ のどれかが付き、さらにスペースが 2 個続くか、
1910 行末が来ることである。後者の場合、ピリオドなどとスペース 2 個、あるいは
1911 行末の間にカッコや引用符が入っていてもよい。 TeX と同様、‘fmt’ は、どこ
1912 で行を折り返すかを決める前に、パラグラフ全体を読み込む。 使用しているア
1913 ルゴリズムは、Donald E. Knuth と Michael F. Plass が “Breaking
1914 Paragraphs Into Lines” で提示しているものに変更を加えたものである
1915 (‘Software—Practice & Experience 誌’、第 11 巻 第 11 号 (November 1981)
1916 1119-1184 ページ)。
1917
1918    このプログラムでは以下のオプションが使用できる。参照: *note Common
1919 options::.
1920
1921 ‘-c’
1922 ‘--crown-margin’
1923      クラウンマージン・モード (“Crown margin” mode)。 パラグラフ中の最初
1924      の 2 行のインデントはそのまま維持し、(同一パラグラフの) それに続く
1925      各行の左の余白は 2 行目の左の余白に揃える。
1926
1927      (訳注: これは要するに、1 行目の行頭を字下げしたお馴染みのスタイルの
1928      パラグラフ表示である。 逆に 1 行目が左に張り出しているスタイルもあ
1929      りえる。なお、2 行目以降のインデントは、 ‘--crown-margin’ オプショ
1930      ンによって揃えられるわけではなく、 入力テキストにおいてすでに揃って
1931      いなければならない。 さもないと、そもそも同一パラグラフの行と見なさ
1932      れない。)
1933
1934 ‘-t’
1935 ‘--tagged-paragraph’
1936      標識 (タグ) 付きパラグラフ・モード (“Tagged paragraph” mode)。 クラ
1937      ウンマージン・モードに似ているが、次の点が違う。パラグラフの最初の
1938      行と 2 番目の行のインデントが同じ場合、最初の行は 1 行からなるパラ
1939      グラフとして扱われる。
1940
1941 ‘-s’
1942 ‘--split-only’
1943      行の分割のみを行う。短い行を結合して、長い行を作ることはしない。 そ
1944      の結果、サンプル・コードの行のような、すでに整形されたテキストをむ
1945      やみに結合しないで済む。
1946
1947 ‘-u’
1948 ‘--uniform-spacing’
1949      空白の数を一定にする。すなわち、単語間の空白は 1 個に、文の間の空白
1950      は 2 個にする。
1951
1952 ‘-WIDTH’
1953 ‘-w WIDTH’
1954 ‘--width=WIDTH’
1955      出力する各行を、長くても WIDTH 文字までにする (デフォルトは 75 文字
1956      。GOAL が指定されている場合は、GOAL プラス 10 文字)。
1957
1958 ‘-g GOAL’
1959 ‘--goal=GOAL’
1960      とりあえず、各行を GOAL 文字の長さにしてみようとする。 これは、デフ
1961      ォルトでは WIDTH より 7% 短い。
1962
1963 ‘-p PREFIX’
1964 ‘--prefix=PREFIX’
1965      PREFIX で始まる行のみを整形の対象にする (PREFIX の前にホワイトスペ
1966      ースがあってもよい)。PREFIX とそれに先行するホワイトスペースは、整
1967      形の際に取り除かれ、整形後に各出力行に付け直される。 このオプション
1968      の用途を一つ挙げると、プログラムのコメントのような行だけを整形し、
1969      コードには手を加えないことが考えられる。
1970
1971    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1972
1973 \1f
1974 File: coreutils-ja.info,  Node: pr invocation,  Next: fold invocation,  Prev: fmt invocation,  Up: Formatting file contents
1975
1976 4.2 ‘pr’: ページ付けや段組みをしてファイルを表示する
1977 ====================================================
1978
1979 ‘pr’ は、各 FILE (‘-’ は標準入力を表す) を標準出力に書き出す。FILE が指
1980 定されていない場合は、標準入力を対象にする。 その際、ページ付けを行い、
1981 指定があれば段組みをして出力する。また、すべての FILE を一つに統合し、1
1982 段 1 ファイルの形式で平行して表示することもできる。
1983
1984    (訳注: ‘pr’ はページ構成をするコマンドであって、 長い行の折り返しなど
1985 の整形をするわけではない。そうしたことは、‘fmt’ や ‘fold’ の仕事である。
1986 なお、‘pr’ の日本語対応は十分ではない。 とくに段組みがうまくいかない。)
1987
1988    書式:
1989
1990      pr [OPTION]... [FILE]...
1991
1992    デフォルトでは、5 行のヘッダが各ページに付く。2 行の空行、 日付・ファ
1993 イル名・ページ番号からなる 1 行、そしてもう 2 行の空行という形式である。
1994 5 行の空行からなるフッタも出力される。デフォルトのページ長 (PAGE_LENGTH)
1995 は 66 行なので、本文に使用されるデフォルトの行数は、56 行になる。 ヘッダ
1996 のテキスト行は、‘DATE STRING PAGE’ の形を取り、 STRING の両側に空白を入
1997 れて、行の幅がページ幅 (PAGE_WIDTH) いっぱいになるようにしている。DATE は
1998 日付であり (詳細については、 ‘--date-format’ (‘-D’) オプションを参照)、
1999 STRING は中央揃えのヘッダ文字列 (訳注: デフォルトではファイル名)、 PAGE
2000 はページ番号である。PAGE という単語の綴りは、 ‘LC_MESSAGES’ ロケール・カ
2001 テゴリによって変わってくる。デフォルトの C ロケールでは、‘Page NUMBER’ で
2002 あり、NUMBER の位置には 10 進数のページ番号が入る。
2003
2004    入力にフォームフィード (Form feed) があると、出力では改ページが行われ
2005 る。 フォームフィードが続くと、白紙のページが生ずる。
2006
2007    段組みをした場合、どの段の幅も同じになり、段と段の間には任意の文字列
2008 (デフォルトはスペース) が置かれる。多段組みの出力では、‘-J’ オプションを
2009 使用しないかぎり、各行は常に PAGE_WIDTH (デフォルトは 72) 文字までに切り
2010 詰められる (訳注: これは、各段や段間の空白などを合計した 1 行の長さが、
2011 最長でも PAGE_WIDTH 文字までになるということであって、 各段がそれぞれ
2012 PAGE_WIDTH 文字になるということではない)。 1 段のみの出力では、デフォル
2013 トでは行の切り詰めは行われない。 その場合でも、行の切り詰めを行うには、
2014 ‘-W’ を使用する。
2015
2016    このプログラムでは以下のオプションが使用できる。参照: *note Common
2017 options::.
2018
2019 ‘+FIRST_PAGE[:LAST_PAGE]’
2020 ‘--pages=FIRST_PAGE[:LAST_PAGE]’
2021      表示を FIRST_PAGE ページから始めて、 LAST_PAGE ページで終了する。
2022      ‘:LAST_PAGE’ の指定を省略するのは、ファイルの最後までということであ
2023      る。 スキップするページ数を計算する際、入力ファイル中にフォームフィ
2024      ードがあると、 そのたびに 1 ページ進むことになる。ページ番号は、
2025      ‘+FIRST_PAGE’ を指定してもしなくても同じになる。デフォルトでは、 入
2026      力ファイルの最初のページからページ数を数えるからだ (表示される最初
2027      のページからではない)。 行番号については ‘-N’ オプションで変更する
2028      ことができる。
2029
2030 ‘-COLUMN’
2031 ‘--columns=COLUMN’
2032      個々の FILE に対して COLUMN 段に段組みした出力を生成する (デフォル
2033      トは 1 段)。‘-a’ オプションを使用しない場合、ページ内で本文は、 段
2034      内を上から下へと進む。段が増えると、段の幅は自動的に狭くなる。 ただ
2035      し、‘-W/-w’ を同時に使用して、PAGE_WIDTH を増加させている場合は、そ
2036      のかぎりではない。このオプションを使うと、 切り詰められる行がたぶん
2037      生じるだろう。ページごとの各段の行数は、 できるだけ揃えられる。多段
2038      組みの本文出力では、オプション ‘-e’ と ‘-i’ が有効になる。‘-J’ オプ
2039      ションと一緒に使った場合は、 段の整列と行の切り詰めは行われない。各
2040      行は、元の長さのまま、不定長フィールドとして (free field format) 結
2041      合されるのである。その際も、‘-S’ オプションによってフィールド・セパ
2042      レータを指定することは可能だ。なお ‘-COLUMN’ は、‘-m’ オプションと
2043      一緒に使用できない。
2044
2045 ‘-a’
2046 ‘--across’
2047      個々の FILE を段組みで表示するとき、本文の各行が、段内を上から下へ
2048      ではなく、 左の段から右の段へと進むようにする。‘-COLUMN’ オプション
2049      に指定する段の数は、2 以上でなければならない。 行が段の幅に納まらな
2050      いほど長い場合、その行は切り詰められる。
2051
2052 ‘-c’
2053 ‘--show-control-chars’
2054      制御文字をハット表記 (たとえば、‘^G’) を使って表示する。 他の非表示
2055      文字は、バックスラッシュ付きの 8 進数表記になる。‘pr’ のデフォルト
2056      では、非表示文字の表示文字化は行われない。
2057
2058 ‘-d’
2059 ‘--double-space’
2060      ダブルスペースで出力する (訳注: すなわち、行間を 1 行分あける)。
2061
2062 ‘-D FORMAT’
2063 ‘--date-format=FORMAT’
2064      ヘッダの日付を FORMAT を用いて整形する。FORMAT には、コマンド ‘date
2065      +FORMAT’ で使うのと同じ指定法が使用できる。*Note date invocation::.
2066      ‘%’ で始まる日時の指定を除いて、FORMAT 中の文字はそのまま表示される
2067      。 従って、このオプションを使用すれば、ヘッダの日付の位置に任意の文
2068      字列を指定することもできるわけだ。 たとえば、‘--date-format="Monday
2069      morning"’ といった具合に。
2070
2071      デフォルトの日付書式は ‘%Y-%m-%d %H:%M’ という形である (たとえば、
2072      ‘2001-12-04 23:59’)。だが、環境変数 ‘POSIXLY_CORRECT’ が設定され、
2073      しかも ‘LC_TIME’ ロケール・カテゴリが POSIX ロケールを指定している
2074      場合は、 デフォルトの書式は ‘%b %e %H:%M %Y’ になる (たとえば、
2075      ‘Dec  4 23:59 2001’)。
2076
2077      タイムスタンプは、タイムゾーンのルールに従って表示されるが、 そのル
2078      ールを指定しているのは、環境変数 ‘TZ’ である。 ‘TZ’ が設定されてい
2079      ない場合は、システムのデフォルトのルールに従って表示される。 *Note
2080      Specifying the Time Zone with ‘TZ’: (libc)TZ Variable.
2081
2082 ‘-e[IN-TABCHAR[IN-TABWIDTH]]’
2083 ‘--expand-tabs[=IN-TABCHAR[IN-TABWIDTH]]’
2084      入力の際にタブをスペースに展開する。省略できる引数 IN-TABCHAR は、
2085      入力で使われるタブ文字である (デフォルトは TAB 文字)。 これも省略で
2086      きる二番目の引数 IN-TABWIDTH は、 入力で使われるタブ文字の幅である
2087      。(デフォルトは 8 桁)。
2088
2089 ‘-f’
2090 ‘-F’
2091 ‘--form-feed’
2092      複数個の改行文字ではなく、1 個のフォームフィードを使用して、 出力す
2093      る各ページを分離する。このオプションによって、 66 行というデフォル
2094      トのページの長さが変わることはない。
2095
2096 ‘-h HEADER’
2097 ‘--header=HEADER’
2098      ヘッダのファイル名の部分を、中央揃えの HEADER という文字列で置き換
2099      える。 シェル上では、HEADER はクォートするべきである。また、‘-h’ と
2100      の間に空白を入れた方がよい。
2101
2102 ‘-i[OUT-TABCHAR[OUT-TABWIDTH]]’
2103 ‘--output-tabs[=OUT-TABCHAR[OUT-TABWIDTH]]’
2104      出力の際にスペースをタブで置き換える。省略できる引数 OUT-TABCHAR は
2105      、出力で使われるタブ文字である (デフォルトは TAB 文字)。 これも省略
2106      できる二番目の引数 OUT-TABWIDTH は、出力で使われるタブ文字の幅であ
2107      る (デフォルトは 8 桁)。
2108
2109 ‘-J’
2110 ‘--join-lines’
2111      長い行は長いまま結合する。段組みオプション ‘-COLUMN’, ‘-a -COLUMN’,
2112      ‘-m’ と併せて使用する。‘-W/-w’ による行の切り詰めが無効になる。 段
2113      の整列も行わなくなる。‘--sep-string[=STRING]’ と併せて使ってもよい
2114      。 ‘-J’ というオプションが (‘-W’ や ‘--sep-string’ とともに) 新たに
2115      設けられたのは、‘-w’ や ‘-s’ という、前からある (POSIX に準拠した)
2116      オプションを 3 種の段組みオプションと組み合わせて使ったときの混乱を
2117      解消するためである。
2118
2119 ‘-l PAGE_LENGTH’
2120 ‘--length=PAGE_LENGTH’
2121      1 ページの行数を、ヘッダ行 (及び フッタ行) を含めて、PAGE_LENGTH 行
2122      にする (デフォルトは 66 行)。PAGE_LENGTH が 10 行以下だったら、
2123      ‘-t’ オプションが指定されたかのように、 ヘッダとフッタは省略する。
2124
2125 ‘-m’
2126 ‘--merge’
2127      すべての FILE を統合し、各段に 1 ファイルを割り当てて、平行表示する
2128      。 長すぎて段に納まらない行があれば、‘-J’ オプションが使用されてい
2129      ないかぎり、 切り詰めが行われる。‘--sep-string[=STRING]’ を指定して
2130      もよい。いづれかの FILE に (フォームフィードの指定により) 空白のペ
2131      ージが存在すると、空白の段が生ずるが、それでも段を分離する記号の
2132      STRING は表示される。すなわち、統合されたファイルの最初から最後まで
2133      、 行番号と (訳注: これはもちろん、‘-n’ オプションが指定されている
2134      場合) 段の分離記号は、連続して表示されるわけだ。 ただし、統合された
2135      ページのどの段も空白の場合は、分離記号も行番号も表示されない。 デフ
2136      ォルトのヘッダは、‘DATE PAGE’ という形式になり、 中央には長い空白が
2137      挿入される。‘-h’ や ‘--header’ オプションを ‘-m’ と一緒に使えば、こ
2138      の中央の空白部分に文字列を入れることができる。
2139
2140 ‘-n[NUMBER-SEPARATOR[DIGITS]]’
2141 ‘--number-lines[=NUMBER-SEPARATOR[DIGITS]]’
2142      DIGITS の幅の行番号を表示する (DIGITS のデフォルトは 5 桁)。 通常の
2143      多段組みの出力では、行番号は、各段ごとに本文の最初の DIGITS 桁分の
2144      位置を占めるが、‘-m’ の出力の場合は、各行の先頭だけに表示される。 1
2145      段組みでは、‘-m’ の場合と同様、各行の先頭に付く。 デフォルトでは、
2146      行数は、入力ファイルの最初の行から数え始める (表示される最初の行か
2147      らではない。‘--page’ や ‘-N’ オプションを参照)。 省略可能な引数
2148      NUMBER-SEPARATOR は、行番号の後ろに付けて、 後に続く本文と区別する
2149      ための文字であり、デフォルトのセパレータはタブ文字である。 厳密に言
2150      うと、常にタブが表示されるのは、1 段組みの出力のときだけである。 タ
2151      ブの幅は、本来タブの現れる位置によって変化し、たとえば、‘-o’ オプシ
2152      ョンで指定される左の余白 (MARGIN) によって変わってくるものである。
2153      しかし、多段組みの出力では、「出力される段の幅が同じになる」ことが
2154      優先されるため (POSIX の仕様)、タブの幅は、最初の段における値に固定
2155      され、左の余白の値が変わっても、 変化することはない。従って、
2156      NUMBER-SEPARATOR であるタブの位置には、 常に一定数のスペースが表示
2157      されることになる。スペースをタブに置き換えるかどうかは、 出力される
2158      位置次第である。
2159
2160 ‘-N LINE_NUMBER’
2161 ‘--first-line-number=LINE_NUMBER’
2162      表示される最初のページの最初の行を LINE_NUMBER として行を数えて行く
2163      (入力ファイルの最初の行以外から表示を始めるときによく使う)。
2164
2165 ‘-o MARGIN’
2166 ‘--indent=MARGIN’
2167      スペース MARGIN 個分の余白で各行をインデントする (デフォルトは、 ス
2168      ペース 0 個)。ページの横幅は、‘-W/-w’ で指定した PAGE_WIDTH と余白
2169      を合計したサイズになる。行番号付きの 1 段組み出力では、 行から少し
2170      はみ出す文字が生ずるかもしれない (‘-n’ オプション参照)。
2171
2172 ‘-r’
2173 ‘--no-file-warnings’
2174      引数 FILE がオープンできないときも、警告メッセージを表示しない (終
2175      了ステータスは、それでもやはり 0 以外になる)。
2176
2177 ‘-s[CHAR]’
2178 ‘--separator[=CHAR]’
2179      段と段の区切りに 1 個の文字 CHAR を使う。‘-s’ オプションを指定した
2180      ときのデフォルトの CHAR は、‘-w’ オプションを同時に指定しなければタ
2181      ブ、指定すれば「なし」である。 なお、‘-s’ オプションを指定しない場
2182      合のデフォルトのセパレータはスペースだ。 ‘-s[char]’ オプションを使
2183      用すると、‘-w’ も同時に指定しないかぎり、 3 種の段組みオプション
2184      (‘-COLUMN’|‘-a -COLUMN’|‘-m’) のすべてにおいて、行の切り詰めが行わ
2185      れない。これは、POSIX に準拠した仕様である。
2186
2187 ‘-S[STRING]’
2188 ‘--sep-string[=STRING]’
2189      出力される段の区切りに、文字列 STRING を使用する。‘-s’ オプションが
2190      ‘-W/-w’ オプションに影響を及ぼすのとは異なり、 ‘-S’ オプションは
2191      ‘-W/-w’ オプションに影響を及ぼさない。 また、行の切り詰めや段の整列
2192      にも影響しない。‘-S’ オプションを指定せずに、 ‘-J’ オプションを指定
2193      すると、‘pr’ はデフォルトの出力セパレータであるタブを使用する (訳注
2194      : ‘-J’ 使用時のデフォルトということだと思う)。‘-S’ も ‘-J’ も指定し
2195      ない場合、‘pr’ が区切りに使用するのはスペースである (‘-S" "’ と同じ
2196      こと)。‘-S’ だけで、引数の ‘STRING’ を指定しないと、 空文字列
2197      (‘""’) を指定したことになる。
2198
2199 ‘-t’
2200 ‘--omit-header’
2201      常とは異なり、各ページにヘッダ (とフッタ) を表示しない。 また、ペー
2202      ジの最下部を (空行やフォームフィードで) 埋めることもしない。 ページ
2203      構成は行わないが、入力ファイルにあるフォームフィードは、 そのままに
2204      しておく。つまり、あらかじめ決めておいたページ分割が、 変更されない
2205      ということだ。‘-t’ や ‘-T’ オプションは、 他のオプションと組み合わ
2206      せて使うと、便利なことがある。たとえば、‘-t -e4’ は、入力ファイルの
2207      タブ文字を 4 個のスペースに展開するが、 それ以外何の変更も行わない
2208      。‘-t’ オプションを使用すると、 ‘-h’ オプションが無効になる。
2209
2210 ‘-T’
2211 ‘--omit-pagination’
2212      ヘッダ (とフッタ) を表示しない。さらに、入力ファイルにあるフォーム
2213      フィードをすべて取り除く。
2214
2215 ‘-v’
2216 ‘--show-nonprinting’
2217      非表示文字をバックスラッシュ付きの 8 進数表記で表示する。
2218
2219 ‘-w PAGE_WIDTH’
2220 ‘--width=PAGE_WIDTH’
2221      本文を多段組み出力にしたときにのみ、ページの幅を PAGE_WIDTH 文字に
2222      する (PAGE_WIDTH のデフォルトは 72 字)。各段の幅が等しくなるように
2223      するため、 ページ幅が指定した PAGE_WIDTH より狭くなることがある。 多
2224      段組みで ‘-w’ オプションを指定せず、‘-s[CHAR]’ オプションだけ指定す
2225      ると、デフォルトのページ幅が無効になり、 行の切り詰めや段の整列も行
2226      われなくなる。 すなわち、各段の長い行が長いまま結合されてしまうのだ
2227      。なお、1 段組みの出力では、 PAGE_WIDTH の指定はできない。以上は、
2228      POSIX に準拠した仕様である。
2229
2230 ‘-W PAGE_WIDTH’
2231 ‘--page_width=PAGE_WIDTH’
2232      ページの幅を PAGE_WIDTH 文字にする。この指定は、 段組みオプションが
2233      あってもなくても、有効である。段組みオプションとともに使った場合、
2234      各段の幅が等しくなるようにするため、ページ幅が指定した PAGE_WIDTH よ
2235      り狭くなることがある。‘-J’ オプションを使用しないかぎり、本文の行が
2236      切り詰められる。 3 種の段組みオプション (‘-COLUMN’, ‘-a -COLUMN’,
2237      ‘-m’) と組み合わせて使った場合、段の整列が常に行われる。 セパレータ
2238      を指定するオプションの ‘-S’ や ‘-s’ が、 ‘-W’ オプションを無効にす
2239      ることはない。デフォルトは 72 文字である。 ‘-W PAGE_WIDTH’ オプショ
2240      ンもなく、 段組みオプションも全く指定されていない場合に、行の切り詰
2241      めが行われることは絶対にない (下位互換を維持しつつ、よく行われる作
2242      業のほとんどに対応するために、そうなっている)。 この動作は、‘-W 72
2243      -J’ と同じである。 なお、ヘッダ行が切り詰められることは絶対にない。
2244
2245    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2246
2247 \1f
2248 File: coreutils-ja.info,  Node: fold invocation,  Prev: pr invocation,  Up: Formatting file contents
2249
2250 4.3 ‘fold’: 入力行を指定された幅に合わせて折り返す
2251 ==================================================
2252
2253 ‘fold’ は、各 FILE (‘-’ は標準入力を表す) を、長い行は折り返して、標準出
2254 力に書き出す。 FILE が指定されていない場合は、標準入力を対象にする。
2255
2256    (訳注: ‘fold’ の日本語対応は完全ではない。 3 バイトで表現される UTF-8
2257 の漢字やかなは、1 文字 が 3 桁として計算され、 画面上では 2 桁分を占める
2258 。だから、日本語のテキストが 3 バイトの UTF-8 文字だけで書かれているなら
2259 ば、‘fold -w 105’ で長い行が 1 行 35 字 (70 桁) できちんと折り返される。
2260 だが、出力行の長さが不適切だったり、ASCII 文字や 4 バイトの漢字が交じっ
2261 たりすると、行末や行頭で文字化けが生じかねない。 もちろん、日本語の禁則
2262 処理は期待できない。)
2263
2264    書式:
2265
2266      fold [OPTION]... [FILE]...
2267
2268    デフォルトでは、‘fold’ は 80 桁よりも長い行を折り返す。 出力は必要な
2269 ら何行にも分割されることになる。
2270
2271    ‘fold’ はデフォルトでは、画面上の桁数を数える。従って、タブは 2 桁以
2272 上に数えられるかもしれないし、バックスペースは桁数を減らすことになる。 ま
2273 た、復帰文字 (carriage return) は、桁数を 0 にする。
2274
2275    このプログラムでは以下のオプションが使用できる。参照: *note Common
2276 options::.
2277
2278 ‘-b’
2279 ‘--bytes’
2280      桁数ではなく、バイト数を数える。従って、タブ、バックスペース、復帰
2281      文字も、 他の文字と全く同じように、それぞれ 1 桁を占めるものとして
2282      計算される。
2283
2284 ‘-s’
2285 ‘--spaces’
2286      単語境界で折り返す。行は、行の最大長より前にある最後の空白の後ろで
2287      折り返される。 行にそうした空白がない場合は、通常通り、行の最大長で
2288      折り返される。
2289
2290 ‘-w WIDTH’
2291 ‘--width=WIDTH’
2292      行の最大長に 80 桁ではなく、WIDTH 桁を使用する。
2293
2294      互換性のために、‘fold’ は古い書式のオプション ‘-WIDTH’ もサポートし
2295      ている。新しいスクリプトでは、‘-w WIDTH’ の方を使用すべきである。
2296
2297    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2298
2299 \1f
2300 File: coreutils-ja.info,  Node: Output of parts of files,  Next: Summarizing files,  Prev: Formatting file contents,  Up: Top
2301
2302 5 ファイルの部分出力
2303 ********************
2304
2305 以下のコマンドは、入力の一部を出力する。
2306
2307 * Menu:
2308
2309 * head invocation::          ファイルの先頭部分を出力する。
2310 * tail invocation::          ファイルの末尾部分を出力する。
2311 * split invocation::         ファイルを分割する
2312 * csplit invocation::        ファイルを内容を目印にして分割する。
2313
2314 \1f
2315 File: coreutils-ja.info,  Node: head invocation,  Next: tail invocation,  Up: Output of parts of files
2316
2317 5.1 ‘head’: ファイルの先頭部分を出力する
2318 ========================================
2319
2320 ‘head’ は、各 FILE の先頭部分 (デフォルトでは 10 行) を表示する。 ファイ
2321 ルが指定されていない場合や、FILE として ‘-’ が指定されている場合は、標準
2322 入力から読み込む。
2323
2324    書式:
2325
2326      head [OPTION]... [FILE]...
2327
2328    指定された FILE が 2 個以上あると、 ‘head’ は、次のような 1 行からな
2329 るヘッダを出力する。
2330
2331      ==> FILE NAME <==
2332
2333 このヘッダは、各 FILE の出力の前に置かれる。
2334
2335    このプログラムでは以下のオプションが使用できる。参照: *note Common
2336 options::.
2337
2338 ‘-c [-]NUM’
2339 ‘--bytes=[-]NUM’
2340      ファイルの先頭数行を表示する代わりに、先頭から NUM バイトを表示する
2341      。 ただし、NUM の前に ‘-’ が付いている場合は、各ファイルについて、
2342      末尾の NUM バイトを除いたすべてを表示することになる。 NUM は、整数
2343      であり、 以下に挙げるような何倍かを示す接尾辞を後ろに付けることもで
2344      きる。接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるもの
2345      と見なされる)。
2346           ‘b’  =>            512 ("blocks")
2347           ‘KB’ =>           1000 (KiloBytes)
2348           ‘K’  =>           1024 (KibiBytes)
2349           ‘MB’ =>      1000*1000 (MegaBytes)
2350           ‘M’  =>      1024*1024 (MebiBytes)
2351           ‘GB’ => 1000*1000*1000 (GigaBytes)
2352           ‘G’  => 1024*1024*1024 (GibiBytes)
2353      ‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。
2354
2355 ‘-n [-]NUM’
2356 ‘--lines=[-]NUM’
2357      ファイルの先頭から NUM 行を表示する。ただし、NUM の前に ‘-’ が付い
2358      ている場合は、各ファイルについて、末尾の NUM 行を除いたすべてを表示
2359      することになる。 サイズの乗数接尾辞は、‘-c’ オプションの場合と同様
2360      である。
2361
2362 ‘-q’
2363 ‘--quiet’
2364 ‘--silent’
2365      ファイル名を示すヘッダを出力しない。
2366
2367 ‘-v’
2368 ‘--verbose’
2369      ファイル名を示すヘッダを常に出力する。
2370
2371 ‘-z’
2372 ‘--zero-terminated’
2373      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
2374      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
2375      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
2376      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
2377      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
2378      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
2379      しているのである。
2380
2381    ‘head’ は、互換性を考慮して、‘-[NUM][bkm][cqv]’ というオプション指定
2382 の古い書式もサポートしている。 ただし、この書式が認識されるのは、最初の
2383 オプションとして指定されたときだけである。 NUM は 10 進数であり、‘-c’ オ
2384 プションの場合と同様、 サイズを示す文字 (‘b’, ‘k’, ‘m’) を後ろに続けても
2385 よく、 また、行数であることを明示する ‘l’ や、ほかのオプション文字
2386 (‘cqv’) を続けることもできる。標準的なホストで使うことを意図したスクリプ
2387 トでは、 古い書式ではなく、‘-c NUM’ や ‘-n NUM’ を使用するべきである。 そ
2388 のスクリプトが、古い書式にしか対応していないホストでも動作する必要がある
2389 場合は、 ‘head’ を使わないで済ました方が、たいていの場合簡明である。 た
2390 とえば、‘head -5’ の代わりに、‘sed 5q’ を使用するわけだ。
2391
2392    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2393
2394 \1f
2395 File: coreutils-ja.info,  Node: tail invocation,  Next: split invocation,  Prev: head invocation,  Up: Output of parts of files
2396
2397 5.2 ‘tail’: ファイルの末尾部分を出力する
2398 ========================================
2399
2400 ‘tail’ は、各 FILE の末尾部分 (デフォルトでは 10 行) を表示する。 ファイ
2401 ルが指定されていない場合や、FILE として ‘-’ が指定されている場合は、標準
2402 入力から読み込む。
2403
2404    書式:
2405
2406      tail [OPTION]... [FILE]...
2407
2408    指定された FILE が 2 個以上あると、‘tail’ は、 各 FILE の出力の前に、
2409 以下のような 1 行からなるヘッダを出力する。
2410
2411      ==> FILE NAME <==
2412
2413    tail の出力をさらに処理したい場合は、ファイルヘッダを行頭の見出しに変
2414 更すると便利かもしれない。 こんなふうにすればよい。
2415
2416      tail ... |
2417      awk '
2418        /^==> .* <==$/ {prefix=substr($0,5,length-8)":"; next}
2419        {print prefix$0}
2420      ' | ...
2421
2422    GNU の ‘tail’ は、出力するデータの量に制限がない (ほかの系統の ‘tail’
2423 には、制限があるものもある)。また、GNU の ‘tail’ には、 ‘-r’ オプション
2424 (逆順で表示する) が存在しない。ファイルを逆順にするのは、 ファイルの末端
2425 部分を表示するのとは、全く別の仕事だからだ。BSD の ‘tail’ には、‘-r’ が
2426 あるが、バッファの大きさまでのファイルしか逆順にできず、 それは通常 32
2427 KiB である。ファイルを逆順にするなら、GNU の ‘tac’ コマンドの方が、信頼
2428 性という点でも、用途の広さという点でも優れている。
2429
2430    このプログラムでは以下のオプションが使用できる。参照: *note Common
2431 options::.
2432
2433 ‘-c [+]NUM’
2434 ‘--bytes=[+]NUM’
2435      ファイルの末尾数行を出力する代わりに、末尾の NUM バイトを出力する。
2436      ただし、NUM の前に ‘+’ が付いている場合は、各ファイルの末端から NUM
2437      バイト目ではなく、先頭から NUM バイト目を始点として出力を開始する。
2438      NUM は、整数であり、 以下に挙げるような何倍かを示す接尾辞を後ろに付
2439      けることもできる。接尾辞だけ指定してもよい (訳注: その場合は、1 が
2440      前にあるものと見なされる)。
2441           ‘b’  =>            512 ("blocks")
2442           ‘KB’ =>           1000 (KiloBytes)
2443           ‘K’  =>           1024 (KibiBytes)
2444           ‘MB’ =>      1000*1000 (MegaBytes)
2445           ‘M’  =>      1024*1024 (MebiBytes)
2446           ‘GB’ => 1000*1000*1000 (GigaBytes)
2447           ‘G’  => 1024*1024*1024 (GibiBytes)
2448      ‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。
2449
2450 ‘-f’
2451 ‘--follow[=HOW]’
2452      ファイルの末端まで達しても、さらに文字を読み込もうとして、無限ルー
2453      プする。 たぶん、ファイルのサイズが増加し続けているからである。 複
2454      数のファイルが指定されている場合、‘tail’ は、 異なるファイルから出
2455      力があるたびに、その出力がどのファイルから来たものかわかるように、
2456      ヘッダを表示する。
2457
2458      このオプションを使ってファイルの追跡をするとき、二つの方法が選択で
2459      きるが、 その違いが現れるのは、追いかけているファイルが消去されたり
2460      、 名前を変更されたりしたときだけである。もし、増大しつつあるファイ
2461      ルが削除されたあとでも、 そのファイルの末尾の追跡を続行したいならば
2462      、‘--follow=descriptor’ を使用すればよい。これがデフォルトの動作だ
2463      が、ログファイルを追跡している際には、 役に立たない。ログファイルは
2464      、ローテートされる (すなわち、消去、または名前を変更されてから、改
2465      めてオープンされる) 可能性があるからだ。そうした場合には、
2466      ‘--follow=name’ を使用すれば、 指定した名前のファイルを追跡すること
2467      ができる。おそらく追跡には、 定期的にその名前のファイルをオープンし
2468      直すことで、 何らかのプログラムによってファイルが消去されてから再作
2469      成されなかったかどうかを確かめるといった方法が、 使われることだろう
2470      。なお、inotify をベースにした実装では、そうしたケースを処理するの
2471      に、 ファイルを定期的に再オープンする必要がないことを付記しておく。
2472
2473      どちらの方法を使った場合でも、追跡中のファイルのサイズが小さくなっ
2474      ていることがわかると、 ‘tail’ は、ファイルが短縮されたというメッセ
2475      ージを出し、 ファイルの末端と改めて判断したところからファイルの追尾
2476      を再開する。
2477
2478      ファイルが消去されたときの ‘tail’ の動作は、追いかけているものが、
2479      名前か (‘--follow=name’)、ディスクリプタか (‘--follow=descriptor’)
2480      によって異なっている。名前による追跡の場合、 tail はファイルが消去
2481      されたことを検出できるので、その旨メッセージを表示する。 このとき、
2482      ‘--retry’ も指定されていると、 同じ名前のファイルが再作成されている
2483      かどうか、定期的な検査を継続して行う。 ディスクリプタを追跡する場合
2484      は、ファイルが削除されたり、名前の変更が行われたりしても、 tail は
2485      それを検出しないので、メッセージを出さない。そうしたファイルが、 も
2486      はや元の名前ではアクセスできなくなっていても、なお増大し続けている
2487      ということもありえる。
2488
2489      ‘descriptor’ や ‘name’ というオプションの値は、 長い方のオプション
2490      の形式によってのみ指定できる。‘-f’ では指定できない。
2491
2492      オペランド FILE が全く指定されていず、標準入力が FIFO やパイプであ
2493      る場合は、‘-f’ オプションは無視される。また、標準入力が FIFO やパイ
2494      プである場合は、‘-’ という形で指定されたオペランドがあっても、 ‘-f’
2495      はそれに対して効果を持たない。
2496
2497      カーネルが inotify をサポートしていると、出力はファイルの変更が引き
2498      金になるので、一般に反応がキビキビしている。 それに対して、カーネル
2499      が inotify をサポートしていないと、‘tail’ はチェックごとに 1 秒間ス
2500      リープするので (このデフォルトを変更するには、‘--sleep-interval=N’
2501      を使用する)、 出力がやや遅めに感じられたり、断続的に感じられたりす
2502      るかもしれない。inotify のサポートなしで tail を使用する場合、反応
2503      を向上させるには、sleep する間隔を 1 秒以下に設定すればよい。たとえ
2504      ば、次のようなエイリアスを作成するわけだ。
2505
2506           alias tail='tail -s.1'
2507
2508 ‘-F’
2509      このオプションは ‘--follow=name --retry’ と同じである。すなわち、 フ
2510      ァイルが消去された場合、tail はその名前のファイルをオープンし直そう
2511      とする。 それに失敗しても、ファイルに再びアクセスできるようになるま
2512      で、再オープンを試み続ける。
2513
2514 ‘--max-unchanged-stats=N’
2515      名前によってファイルの追尾を行っているとき、連続して N 回 (デフォル
2516      トは n=5) 追尾動作を実行しても、その間にファイルに変更がなかった場
2517      合に、ファイルを ‘open’ し、‘fstat’ して、 そのファイル名と結びつい
2518      ている「デバイス番号/inode 番号」の組み合わせが、 今でも前と同じま
2519      まかどうかを確認する。ローテートを行うログファイルを追跡している場
2520      合、 この N は、tail がローテートする前に最後の行を表示してから、 新
2521      しいログファイルに溜まっている行を表示するまでの秒数に、ほぼ等しい
2522      。 このオプションに意味があるのは、ポーリングを使用して (すなわち、
2523      inotify を使わずに)、名前による追跡を行うときだけである。
2524
2525 ‘-n [+]NUM’
2526 ‘--lines=[+]NUM’
2527      末尾の NUM 行を出力する。ただし、NUM の前に ‘+’ が付いている場合は
2528      、各ファイルの末端から NUM 行目ではなく、 先頭から NUM 行目を始点と
2529      して出力を開始する。サイズの乗数接尾辞は、‘-c’ の場合と同様である。
2530
2531 ‘--pid=PID’
2532      追跡が名前によって行われていようと、ディスクリプタによって行われて
2533      いようと、 FILE 引数で指定されたすべてのファイルに書き込みを行うプ
2534      ログラムがたった一つならば、 そのプログラムのプロセス番号 PID を指
2535      定することができる。 そうしておくと、そのプロセスが終了する直後に
2536      tail も終了するようになるのだ。 これがきちんと動作するのは、書き込
2537      みプログラムと tail のプロセスが、 同じマシンで動いているときだけで
2538      ある。たとえば、プログラムをビルドするとき、 その出力をファイルに保
2539      存しながら、ファイルが増大して行くのを見守りたいならば、 下記のよう
2540      に ‘make’ と ‘tail’ を実行すればよい。 そうすれば、ビルドが完了した
2541      とき、tail のプロセスも終了する。 このオプションを使わない場合は、
2542      ‘tail -f’ のプロセスを自分で止めなければならないだろう。
2543
2544           $ make >& makerr & tail --pid=$! -f makerr
2545
2546      使用されていない PID を指定した場合や、 tail が対象とするファイルに
2547      書き込んでいるプロセスとは別のプロセスの PID を指定した場合は、
2548      ‘tail’ は、FILE の増大が止まるずっと前に終了してしまうかもしれない
2549      し、 実際に書き込んでいるプログラムが終了してしまっても、当分の間終
2550      了しないかもしれない。 気をつけてほしいが、システムによっては、
2551      ‘--pid’ が使えないことがある。 その場合、‘tail’ は警告メッセージを
2552      出すはずだ。
2553
2554 ‘-q’
2555 ‘--quiet’
2556 ‘--silent’
2557      ファイル名を示すヘッダを出力しない。
2558
2559 ‘--retry’
2560      指定された名前のファイルを繰り返し何度でもオープンしようとする。 こ
2561      のオプションが役に立つのは、ファイルの末尾を追跡している場合がほと
2562      んどである (それ以外の場合は、警告メッセージを出す)。
2563
2564      ファイル・ディスクリプタによって追跡している場合は (すなわち、
2565      ‘--follow=descriptor’ の場合は)、 このオプションは、最初にファイル
2566      をオープンするときの動作にしか影響しない。 ひとたびオープンに成功し
2567      てしまえば、‘tail’ は、ファイル名ではなく、 ファイル・ディスクリプ
2568      タを追跡することになるからである。
2569
2570      ファイル名によって追跡している場合は (すなわち、‘--follow=name’ の
2571      場合は)、‘tail’ は、ユーザによって中断 (kill) されるまで、 いつまで
2572      も繰り返しその名前のファイルを再オープンしようとする。
2573
2574      このオプションを付けないと、 ‘tail’ は、ファイルが存在しなくなった
2575      り、 何かほかの理由でファイルにアクセスできなくなったりすることがあ
2576      っても、 その旨報告するだけで、以後再検査を行うことがない。
2577
2578 ‘-s NUMBER’
2579 ‘--sleep-interval=NUMBER’
2580      何秒間隔で追尾・表示動作を行うかを変更する (デフォルトは 1.0 秒間隔
2581      )。 ‘tail’ は動作の繰り返しごとに、指定されたすべてのファイルについ
2582      て、 サイズが変わっていないかどうかのチェックを行う。‘tail’ の伝統
2583      的な実装では、NUMBER は整数でなければならなかったが、GNU の ‘tail’
2584      では、任意の浮動小数点数を指定することが可能になっている。 *Note
2585      Floating point::.  ‘tail’ が inotify を使用していると、 このポーリ
2586      ング関係の (polling-related) オプションは通常無視される。 ただし、
2587      ‘--pid=P’ も一緒に指定されている場合は別で、その場合は、 プロセス P
2588      が生きているかどうかを、‘tail’ が少なくとも NUMBER 間隔でチェックす
2589      ることになる。
2590
2591 ‘-v’
2592 ‘--verbose’
2593      ファイル名を示すヘッダを常に出力する。
2594
2595 ‘-z’
2596 ‘--zero-terminated’
2597      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
2598      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
2599      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
2600      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
2601      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
2602      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
2603      しているのである。
2604
2605    ‘tail’ は互換性のために、‘tail -[NUM][bcl][f] [FILE]’ という古い用法
2606 もサポートしているが、それが認識されるのは、 上で説明した用法と衝突しな
2607 いときだけである。この旧来の書式では、 オプションはただ 1 個しか指定でき
2608 ず、ファイルも 1 個までしか指定できない。 オプション中の NUM は、省略可
2609 能な 10 進数であり、サイズを表す文字 (‘b’, ‘c’, ‘l’) を後ろに続けて、1 ブ
2610 ロック当たり 512 バイトのブロック数か、バイト数か、行数かを示すことがで
2611 きる。 さらに、‘-f’ と同じ意味を持つ、‘f’ を続けてもよい。
2612
2613    POSIX 1003.1-2001 に準拠していないシステムでは、 旧来のオプション書式
2614 において、先頭の ‘-’ を ‘-c’ や ‘-n’ オプションの場合と同じ意味で ‘+’ に
2615 置き換えることができる。 また、POSIX 1003.1-2001 以前の旧式なシステムで
2616 は、 旧来の用法と標準的な用法が衝突する場合には、旧来の用法が優先される
2617 。 なお、そうした動作は、環境変数 ‘_POSIX2_VERSION’ によってコントロール
2618 できる。 (*note Standards conformance::)。
2619
2620    標準的なホストで使用するためのスクリプトでは、旧来の書式を使わずに、
2621 ‘-c NUM[b]’, ‘-n NUM’ オプションや ‘-f’ オプションの方を使うべきである。
2622 そのスクリプトが、旧来の書式にしか対応していないホストでも動作しなければ
2623 ならない場合でも、 問題を起こしかねない表現を避けるように書き直すことが
2624 、たいていはできるものだ。 たとえば、‘tail -1’ の代わりに、‘sed -n '$p'’
2625 を使うといった具合である。 それさえ不可能な場合は、どちらの書式を使うべ
2626 きかを判断するために、 ‘if tail -c +1 </dev/null >/dev/null 2>&1; then
2627 ...’ といった条件文をスクリプトで使用すればよい。
2628
2629    作成するスクリプトが標準的な動作を想定している場合でも、 POSIX のバー
2630 ジョンによって動作に違いのある用法には、気を付けた方がよい。 たとえば、
2631 ‘tail - main.c’ は避けるべきである。‘tail main.c’ と解釈することも、
2632 ‘tail -- - main.c’ と解釈することもできるからだ。 ‘tail -c 4’ も避けるべ
2633 きである。‘tail -c4’ を意味するかもしれないし、 ‘tail -c 10 4’ を意味す
2634 るかもしれない。‘tail +4’ も使わない方がよい。 ‘tail ./+4’ の意味にも、
2635 ‘tail -n +4’ の意味にも取れるからである。
2636
2637    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2638
2639 \1f
2640 File: coreutils-ja.info,  Node: split invocation,  Next: csplit invocation,  Prev: tail invocation,  Up: Output of parts of files
2641
2642 5.3 ‘split’: ファイルを分割する。
2643 =================================
2644
2645 ‘split’ は、入力ファイル INPUT を分割して複数の出力ファイルを作成する。
2646 各出力ファイルには、INPUT の断片が、連続した形で、 あるいは 1 行づつ順番
2647 に分配された形で含まれることになる (訳注: 前者は単純な分割であり、 後者
2648 は後述の「ラウンド・ロビン方式」である。‘-n’ オプションを参照)。 INPUT が
2649 指定されていない場合や、‘-’ である場合には、標準入力から読み込む。
2650
2651    書式:
2652
2653      split [OPTION] [INPUT [PREFIX]]
2654
2655    デフォルトでは、‘split’ は INPUT を 1000 行づつ各出力ファイルに書き込
2656 む (最後の断片については、何行であれ残っている行を書き込む)。
2657
2658    出力ファイルの名前は、上記書式の PREFIX (デフォルトでは ‘x’) に複数の
2659 文字 (デフォルトでは、‘aa’, ‘ab’, ...) を続けたものであり、各出力ファイ
2660 ルをファイル名による伝統的なソート順で結合すると、 元の入力ファイルが再
2661 構成されるようになっている (ただし、‘-nr/N’ オプションを指定した場合は除
2662 く)。 デフォルトでは、split はまず、作成するファイルに 2 文字からなる接
2663 尾辞 (訳注: suffix、すなわち上記の ‘aa’, ‘ab’ など) を生成して付け、 そ
2664 の接尾辞の 1 番目の文字がアルファベットの最後に達した時点で、接尾辞を 2
2665 文字づつ増やして行く (‘yz’ の次は ‘zaaa’, ‘zaab’, ... という具合)。 こう
2666 した命名法を使えば、出力ファイルがいくつあっても対応できるし、また
2667 ‘--additional-suffix’ オプションを付けたときでも、 出力ファイルが上で述
2668 べたような順に並ぶことになるわけだ。 ‘-a’ オプションが指定されている場合
2669 に、出力ファイルの名前が種切れになってしまうと、 ‘split’ はエラーメッセ
2670 ージを出すが、作成した出力ファイルを消去することはない。
2671
2672    このプログラムでは以下のオプションが使用できる。参照: *note Common
2673 options::.
2674
2675 ‘-l LINES’
2676 ‘--lines=LINES’
2677      INPUT から LINES 行づつ各出力ファイルに書き込む。 ‘--separator’ オ
2678      プションが指定されている場合は、LINES はレコード数の指定になる。
2679
2680      互換性を考慮して、‘split’ は ‘-LINES’ という古いオプションの書式も
2681      サポートしている。新規にスクリプトを書くなら、 ‘-l LINES’ の方を使
2682      うべきである。
2683
2684 ‘-b SIZE’
2685 ‘--bytes=SIZE’
2686      INPUT から SIZE バイトづつ各出力ファイルに書き込む。 SIZE は、整数
2687      であり、 以下に挙げるような何倍かを示す接尾辞を後ろに付けることもで
2688      きる。接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるもの
2689      と見なされる)。
2690           ‘b’  =>            512 ("blocks")
2691           ‘KB’ =>           1000 (KiloBytes)
2692           ‘K’  =>           1024 (KibiBytes)
2693           ‘MB’ =>      1000*1000 (MegaBytes)
2694           ‘M’  =>      1024*1024 (MebiBytes)
2695           ‘GB’ => 1000*1000*1000 (GigaBytes)
2696           ‘G’  => 1024*1024*1024 (GibiBytes)
2697      ‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。
2698
2699 ‘-C SIZE’
2700 ‘--line-bytes=SIZE’
2701      各出力ファイルに、ファイルサイズが SIZE バイトを超過しない範囲で、
2702      INPUT の完全な行をできるだけ多く書き込む。 一つの行やレコードの長さ
2703      が SIZE バイトを越える場合は、複数のファイルに分割される。 SIZE の
2704      書式は、‘--bytes’ オプションの場合と同じである。 ‘--separator’ オプ
2705      ションが指定されている場合は、 できるだけ多くの行ではなく、できるだ
2706      け多くのレコードを書き込むことになる。
2707
2708 ‘--filter=COMMAND’
2709      このオプションを使用すると、各出力は、そのままファイルに書き出され
2710      るのではなく、 パイプを通して一つづつ、指定されたシェルコマンド
2711      COMMAND に引き渡される。COMMAND 中では、環境変数 $FILE を使用するべ
2712      きであり、 この変数には、シェルコマンドを実行するごとに、異なる出力
2713      ファイル名が代入される。 たとえば、1TiB の圧縮ファイルがあるとしよ
2714      う。伸長したら、サイズが大きすぎて、 ディスクに納まり切らない。しか
2715      し、それを分割して、もっと扱いやすいサイズの、 それぞれ圧縮したファ
2716      イルを作らねばならない。そうした課題を解決するには、 次のようなコマ
2717      ンドを実行すればよいだろう。
2718
2719           xz -dc BIG.xz | split -b200G --filter='xz > $FILE.xz' - big-
2720
2721      圧縮率が 10:1 だとすると、上のコマンドは 20GiB のファイルを 50 個ほ
2722      ど生成することになるだろう。ファイルの名前は、‘big-aa.xz’,
2723      ‘big-ab.xz’, ‘big-ac.xz’ などになる。
2724
2725 ‘-n CHUNKS’
2726 ‘--number=CHUNKS’
2727
2728      INPUT を CHUNKS 個の出力ファイルに分割する。 CHUNKS の位置には以下
2729      のものが指定できる。
2730
2731           N      INPUT の現在のサイズに基づいて N 個のファイルを生成する。
2732           K/N    N 個中の K 番目のみを標準出力へ出力する。
2733           l/N    N 個のファイルを生成する。行やレコードの途中で分割しない。
2734           l/K/N  同上。ただし、N 個中の K 番目のみを標準出力に出力する。
2735           r/N    ‘l’ に似ている。ただし、分配はラウンド・ロビン方式で行う。
2736                  (訳注: トランプの親がカードを 1 枚づつ子に配るように、
2737                          入力から 1 行 (1 レコード) づつ各出力ファイルに
2738                          分配して行く。)
2739           r/K/N  同上。ただし、N 個中の K 番目のみを標準出力に出力する。
2740
2741      INPUT を N 個の「部分 (chunk)」に分けたときに出た余りのバイトは、 最
2742      後の「部分」に割り振られる。最初に行われる分割のための計算の後で追
2743      加されるバイトがあっても、 それは捨て去られる (‘r’ モードを使用して
2744      いる場合を除く)。
2745
2746      INPUT の行数が N 行に足りなかったり、INPUT が短縮された場合でも、 N
2747      個のファイルすべてが作成される。
2748
2749      ‘l’ モードについて言うと、「部分」の大きさは、「INPUT サイズ / N」
2750      前後になる。 INPUT は、まず N 個の同一サイズの区画 (partition) に分
2751      割され、 余りがあれば、それは最後の区画に割り当てられる。 ある行の
2752      先頭が、ある区画の内側にある場合、その行は行末まで、その区画に対応
2753      するファイルに書き込まれる。 行やレコードは、たとえ後続する区画にま
2754      ではみ出していても分割されないので、 書き出されるファイルは、区画の
2755      サイズより大きくなることもあれば、小さくなることもある。 行やレコー
2756      ドが後続する区画をすっぽり覆ってしまうほど長い場合には、空っぽのフ
2757      ァイルができることさえある。
2758
2759      ‘r’ モードでは、INPUT のサイズは問題にならない。だから、入力は、 た
2760      とえば、パイプからであっても構わない。
2761
2762 ‘-a LENGTH’
2763 ‘--suffix-length=LENGTH’
2764      使用する接尾辞の長さを LENGTH 文字にする。LENGTH に 0 を指定すると
2765      、‘-a’ オプションを (すでに指定していた場合でも) 全く指定しなかった
2766      のと同じことになり、従って、デフォルトの動作が有効になる。 すなわち
2767      、接尾辞は、2 文字から始まり、‘-n’ や ‘--numeric-suffixes=FROM’ オ
2768      プションが指定されていないかぎり、 必要になるごとに、2 文字づつ自動
2769      的に増えて行く。
2770
2771 ‘-d’
2772 ‘--numeric-suffixes[=FROM]’
2773      接尾辞にアルファベットの小文字ではなく、数字を使用する。 数字の接尾
2774      辞は、 FROM が指定されていれば FROM から、 指定されていなければ 0 か
2775      ら数を数えて行く。
2776
2777      FROM を指定できるのは、長い形式のオプションを使ったときだけである。
2778      FROM を指定すると、‘split’ を一回だけ実行する場合に最初の接尾辞を決
2779      めたり、 それぞれ別々にスプリットする入力に対して相互の接尾辞間をど
2780      れくらい離すかを決めたりすることができるが、 上で述べた接尾辞の長さ
2781      を自動的に増やしていく機能は無効になる。 そこで、ユーザとしては、
2782      ‘99’ を越える数字を接尾辞として使えるようにするため、 ‘-a’ オプショ
2783      ンも併せて指定したくなるかもしれない。 なお、‘--number’ オプション
2784      が指定され、しかも、生成されるファイルの数より FROM が小さい場合は
2785      、一回かぎりの実行と見なされ、接尾辞に最小限必要な長さが、自動的に
2786      割り出される。
2787
2788      (訳注: 上記の「なお」以下で言っているのは、‘split -d -n100
2789      some.data’ などとすると、x00 から x99 までのファイルが作られるが、
2790      ‘split --numeric-suffixes=1 -n100 some.data’ なら、x001 から x100 ま
2791      で、3 桁の接尾辞を持つファイルが作られるということらしい。 しかし、
2792      coreutils 8.26 では、‘split -d -n200 some.data’ や ‘split
2793      --numeric-suffixes=10 -n100 some.data’ は、 "output file suffixes
2794      exhausted" というエラーになる。 そして、‘split -d -n201 some.data’
2795      や ‘split --numeric-suffixes=10 -n101 some.data’ なら、実行に成功す
2796      るのである。よくわからない仕様だと思う。‘--suffix-length’ を使って
2797      、自分で接尾辞の長さを決めた方が、間違いがない。)
2798
2799 ‘--additional-suffix=SUFFIX’
2800      出力ファイル名の末尾に SUFFIX をさらに追加する。 SUFFIX 中にスラッ
2801      シュが含まれていてはならない。
2802
2803 ‘-e’
2804 ‘--elide-empty-files’
2805      サイズ 0 の出力ファイルができないようにする。そうしたものが生成され
2806      ることがあるのは、 ‘--number’ を使ったときである。入力ファイルが (短
2807      縮されたりして) 指定された数の出力ファイルを作るには分量が足りない
2808      場合や、 1 行が長すぎて、後続する「部分」をすっぽり飲み込んでしまっ
2809      ている場合などがそれに当たる。 このオプションが指定されているときで
2810      も、出力ファイルの連続番号が、 順番に増えていくことに変わりはない。
2811
2812 ‘-t SEPARATOR’
2813 ‘--separator=SEPARATOR’
2814      レコード・セパレータとしてデフォルトの改行文字 (ASCII LF) の代わり
2815      に、 文字 SEPARATOR を使用する。ASCII NUL をセパレータに指定するに
2816      は、 二文字からなる文字列 ‘\0’ を使用すればよい。‘split -t '\0'’ の
2817      ようにだ。
2818
2819 ‘-u’
2820 ‘--unbuffered’
2821      ‘--number r/...’ モードにおいて入力を即座に出力する。 このモードは
2822      、作業にかなり時間がかかるのだ。
2823
2824 ‘--verbose’
2825      各出力ファイルをオープンする直前に、診断メッセージを表示する。
2826
2827    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2828
2829    ‘--number’ (‘-n’) の動作を理解していただくために、 用例をいくつか挙げ
2830 てみる。
2831
2832    デフォルトでは、1 行が 2 行以上に分割されることがあるのに、注目してい
2833 ただきたい。
2834
2835      $ seq -w 6 10 > k; split -n3 k; head xa?
2836      ==> xaa <==
2837      06
2838      07
2839      ==> xab <==
2840
2841      08
2842      0
2843      ==> xac <==
2844      9
2845      10
2846
2847    "l/" 修飾子を使用して、行の途中で分割しないようにする。
2848
2849      $ seq -w 6 10 > k; split -nl/3 k; head xa?
2850      ==> xaa <==
2851      06
2852      07
2853
2854      ==> xab <==
2855      08
2856      09
2857
2858      ==> xac <==
2859      10
2860
2861    "r/" 修飾子を使用して、ラウンド・ロビン方式で分配する。
2862
2863      $ seq -w 6 10 > k; split -nr/3 k; head xa?
2864      ==> xaa <==
2865      06
2866      09
2867
2868      ==> xab <==
2869      07
2870      10
2871
2872      ==> xac <==
2873      08
2874
2875    K 番目の「部分」だけ取り出すこともできる。次の例は、33 の「部分」に分
2876 け、 そのうちの 7 番目だけを取り出して、表示している。
2877
2878      $ seq 100 > k; split -nl/7/33 k
2879      20
2880      21
2881      22
2882
2883 \1f
2884 File: coreutils-ja.info,  Node: csplit invocation,  Prev: split invocation,  Up: Output of parts of files
2885
2886 5.4 ‘csplit’: ファイルを内容を目印にして分割する。
2887 ==================================================
2888
2889 ‘csplit’ は、入力ファイル INPUT を分割して 0 個以上の出力ファイルを生成
2890 する。 INPUT が ‘-’ である場合は、標準入力から読み込む。
2891
2892    書式:
2893
2894      csplit [OPTION]... INPUT PATTERN...
2895
2896    出力ファイルの中身がどうなるかは、以下で詳しく述べるように、引数
2897 PATTERN によって決まってくる。引数 PATTERN が、 入力ファイル中に存在しな
2898 い行を指している場合は、エラーになる (たとえば、入力の残りの部分に、指定
2899 された正規表現にマッチする行がもう存在しない場合)。 すべてのパターン・マ
2900 ッチが終わったとき、残っている入力があれば、 最後の出力ファイルに書き出
2901 される。
2902
2903    デフォルトでは、‘csplit’ は、出力ファイルを生成した後で、 各出力ファ
2904 イルに書き込んだバイト数を表示する。
2905
2906    パターン引数 PATTERN には、以下のタイプがある。
2907
2908 ‘N’
2909      入力の最初から N 行目の直前までを含む (つまり、N-1 行目までの) 出力
2910      ファイルを作成する (N は正の整数)。繰り返し回数の指定が後に続く場合
2911      は、 繰り返しごとに、入力ファイルの次の N 行分を含む出力ファイルを
2912      作成していく。 (訳注: パターンが N の場合は、あと何回繰り返すかを正
2913      確かつ具体的に指定しなければならない。 すなわち、回数が多かったり、
2914      {*} を指定すると、‘-k’ も指定しないかぎり、 エラーになり、出力ファ
2915      イルが作成されない。)
2916
2917 ‘/REGEXP/[OFFSET]’
2918      現在行から、入力ファイル中の次に REGEXP にマッチする行の直前までを
2919      内容とする (すなわち、マッチする行は含まない) 出力ファイルを作成す
2920      る。 整数の OFFSET を指定してもよい。指定した場合は、マッチする行に
2921      プラス/マイナス OFFSET した行の直前までの入力が (つまり、その行は含
2922      まない)、 出力ファイルに書き込まれ、書き込まれた次の行から入力の後
2923      続部分が始まることになる。
2924
2925 ‘%REGEXP%[OFFSET]’
2926      上記のタイプと同様だが、出力ファイルを作成しない点が異なる。 要する
2927      に、入力ファイルのその部分は捨てられることになるわけだ。
2928
2929 ‘{REPEAT-COUNT}’
2930      直前に行ったパターンの検索を、さらに REPEAT-COUNT 回繰り返す。
2931      REPEAT-COUNT には正の整数か、アステリスクを指定できる。後者は、 入
2932      力がなくなるまで、必要なだけ何回でも繰り返すことを意味する。 (訳注:
2933      ‘csplit INPUT '/PATTERN_1/' '{3}' '/PATTERN_2/' '{*}'’ のように使用
2934      する。)
2935
2936    出力ファイルの名前は、接頭辞 (prefix、デフォルトでは ‘xx’) に接尾辞
2937 (suffix) を続けたものになる。デフォルトの接尾辞は、二桁の 10 進数を ‘00’
2938 から ‘99’ まで順番に増やして行ったものである。いかなる場合でも、 出力フ
2939 ァイルを、ファイルの名前によってソートした順番で結合すると、 元の入力フ
2940 ァイルが生成されるようになっている。
2941
2942    ‘csplit’ のデフォルトでは、エラーになった場合や、ハングアップ、 割り
2943 込み、中止、終了といったシグナルを受け取った場合には、 それまでに作成し
2944 た出力ファイルをすべて消去してから終了する。
2945
2946    このプログラムでは以下のオプションが使用できる。参照: *note Common
2947 options::.
2948
2949 ‘-f PREFIX’
2950 ‘--prefix=PREFIX’
2951      PREFIX を出力ファイル名の接頭辞として使用する。
2952
2953 ‘-b FORMAT’
2954 ‘--suffix-format=FORMAT’
2955      FORMAT を出力ファイル名の接尾辞として使用する。 このオプションを指
2956      定する場合、接尾辞として指定する文字列には、‘printf(3)’ 方式の変換
2957      指定が必ず一つは (それも、一つだけ) 含まれていなければならない。 変
2958      換指定には、形式指定フラグ、フィールド幅、精度指定といった修飾子を
2959      付けてもよく、 3 種の修飾子をすべて付けることもできる。 フォーマッ
2960      ト文字は、バイナリの符号なし整数である引数を、 人間に読みやすい形式
2961      に変換するものでなければならない。フォーマット文字の ‘d’ と ‘i’ は
2962      、‘u’ の別名であり、‘u’, ‘o’, ‘x’, ‘X’ 変換が可能である。FORMAT の
2963      全体が (現在の出力ファイルが何番目かという情報とともに)
2964      ‘sprintf(3)’ 関数に引き渡され、出力ファイルの一つ一つに対して、ファ
2965      イル名に使う接尾辞が順番に作られることになる。 なお、このオプション
2966      を使用すると、‘--digits’ オプションは無視される。
2967
2968 ‘-n DIGITS’
2969 ‘--digits=DIGITS’
2970      出力ファイル名に含まれる数字の桁数を、デフォルトの 2 桁から DIGITS
2971      桁にする。
2972
2973 ‘-k’
2974 ‘--keep-files’
2975      エラーが起きても、出力ファイルを消去しない。
2976
2977 ‘--suppress-matched’
2978      指定した PATTERN にマッチする行を出力しない。言い換えれば、 境界に
2979      なる行が、分割されたファイルの 2 番目以降の断片の先頭に現れないよう
2980      にする。 (訳注: PATTERN が正規表現の場合には、境界になる行がファイ
2981      ル中にたとえ 1 箇所しかなくても、 その行の表示を抑制するには、
2982      ‘csplit --suppress-matched INPUT PATTERN '{*}'’ などと、繰り返しの
2983      指定をする必要があるようだ。)
2984
2985 ‘-z’
2986 ‘--elide-empty-files’
2987      サイズ 0 の出力ファイルができないようにする (入力ファイルを各部分に
2988      区切る行が、 どの部分においても最初の行になることを期待している場合
2989      に、 このオプションを使わないと、一番目の出力ファイルがたいていサイ
2990      ズ 0 になる)。 このオプションが指定されているときでも、出力ファイル
2991      の連続番号が 0 から始まって、 順番に増えていくことに変わりはない。
2992
2993 ‘-s’
2994 ‘-q’
2995 ‘--silent’
2996 ‘--quiet’
2997      出力ファイルのサイズを表示しない。
2998
2999    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3000
3001    用例を挙げてみよう。まず、練習用に空のディレクトリを作って、そこに移
3002 動する。
3003
3004      $ mkdir d && cd d
3005
3006    次に、1 から 14 まで連続する数を、0 または 5 で終わる行で分割する。
3007
3008      $ seq 14 | csplit - '/[05]$/' '{*}'
3009      8
3010      10
3011      15
3012
3013    ここで表示された各数字は、csplit が今作成した出力ファイルのサイズであ
3014 る。 その出力ファイルの名前をリストする。
3015
3016      $ ls
3017      xx00  xx01  xx02
3018
3019    ‘head’ を使って、内容を見る。
3020
3021      $ head xx*
3022      ==> xx00 <==
3023      1
3024      2
3025      3
3026      4
3027
3028      ==> xx01 <==
3029      5
3030      6
3031      7
3032      8
3033      9
3034
3035      ==> xx02 <==
3036      10
3037      11
3038      12
3039      13
3040      14
3041
3042    次の例では、入力を空行で分割している。
3043
3044      $ csplit --suppress-matched INPUT.TXT '/^$/' '{*}'
3045
3046 \1f
3047 File: coreutils-ja.info,  Node: Summarizing files,  Next: Operating on sorted files,  Prev: Output of parts of files,  Up: Top
3048
3049 6 ファイルの要約 (行数、単語数、チェックサム)
3050 *********************************************
3051
3052 以下のコマンドは、ファイル内容全体を表現する若干の数字を生成する。
3053
3054 * Menu:
3055
3056 * wc invocation::            行数、単語数、バイト数を表示する。
3057 * sum invocation::           チェックサムとブロック数を表示する。
3058 * cksum invocation::         CRC チェックサムとバイト数を表示する。
3059 * b2sum invocation::         BLAKE2 ダイジェストの表示、または検査をする。
3060 * md5sum invocation::        MD5 ダイジェストの表示、または検査をする。
3061 * sha1sum invocation::       SHA-1 ダイジェストの表示、または検査をする。
3062 * sha2 utilities::           SHA-2 ダイジェストの表示、または検査をする。
3063
3064 \1f
3065 File: coreutils-ja.info,  Node: wc invocation,  Next: sum invocation,  Up: Summarizing files
3066
3067 6.1 ‘wc’: 行数、単語数、バイト数を表示する
3068 ==========================================
3069
3070 ‘wc’ は、指定された各 FILE に含まれる、バイト数、文字数、ホワイトスペー
3071 ス (訳注: 空白、タブ、改行など) で区切られた単語数、改行数を算出する。
3072 FILE が指定されなかった場合や、FILE として ‘-’ が指定された場合は、標準
3073 入力を対象とする。
3074
3075    書式:
3076
3077      wc [OPTION]... [FILE]...
3078
3079    ‘wc’ は各ファイルにつき、一行の算出結果を出力する。 引数としてファイ
3080 ルが指定されていれば、そのファイル名を数値の後ろに表示する。 複数の FILE
3081 が指定されている場合は、最後の行で合計を表示し、 ファイル名の列に、「合
3082 計 (‘total’)」と書き込む。表示される数値の順番は、 改行数、単語数、文字
3083 数、バイト数、最長行の長さになる。 各数値は、フィールドに右詰めで表示さ
3084 れ、フィールド間には、少なくとも一個の空白が置かれる。 そうすることで、
3085 複数の数字とファイル名が、たいていの場合きちんと整列するようになっている
3086 のだ。 数値の入るフィールドの幅は、入力に応じて変化するので、 一定のフィ
3087 ールド幅を当てにするべきではない。ただし、GNU の拡張として、 表示される
3088 数値がただ 1 個だけの場合は、その数値の頭に空白を入れないことになってい
3089 る。
3090
3091    デフォルトでは、‘wc’ は 3 個の数値を表示する。 すなわち、改行数、単語
3092 数、バイト数である。 オプションによって、特定の数値のみを表示するように
3093 指定することもできる。 どんなオプションも、それ以前に指定されたオプショ
3094 ンを取り消すことはない。従って、
3095
3096      wc --bytes --words
3097
3098 上記のコマンドは、バイト数と単語数の両方を表示することになる。
3099
3100    ‘--max-line-length’ を指定すると、‘wc’ はファイルごとの最長行の長さを
3101 表示する。さらに、複数のファイルが存在する場合は、 (各最長行の合計ではな
3102 く) 最長行中の最長のものを表示する。ここで言う行の長さは、 画面に表示さ
3103 れる桁数のことである。表示桁数の計算は現在のロケールに従って行われ、 タ
3104 ブ位置は 8 桁ごとに来るものとされる。
3105
3106    このプログラムでは以下のオプションが使用できる。参照: *note Common
3107 options::.
3108
3109 ‘-c’
3110 ‘--bytes’
3111      バイト数のみを表示する。
3112
3113 ‘-m’
3114 ‘--chars’
3115      文字数のみを表示する。
3116
3117 ‘-w’
3118 ‘--words’
3119      単語数のみを表示する。
3120
3121 ‘-l’
3122 ‘--lines’
3123      改行数のみを表示する。
3124
3125 ‘-L’
3126 ‘--max-line-length’
3127      最長表示行の長さのみを表示する。タブ位置は 8 桁ごとにあるものとする
3128      。 ワイド・キャラクタについては、表示される幅を考慮する。非表示文字
3129      の幅は 0 とする。
3130
3131 ‘--files0-from=FILE’
3132      コマンドラインで名前を指定されたファイルの処理を行わない。その代わ
3133      りに、 ファイル FILE に名前が書き込まれているファイルの処理を行う。
3134      なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL) で
3135      終端されていなければならない。このオプションは、ファイル名のリスト
3136      が長すぎて、 コマンドライン長の上限を超過してしまいそうなときに、 便
3137      利である。そうした場合、‘wc’ を ‘xargs’ 経由で実行するのは、望まし
3138      くない。 なぜなら、‘xargs’ はファイルのリストをいくつかの部分に分割
3139      して ‘wc’ に渡すので、‘wc’ はリスト全体の合計ではなく、 部分リスト
3140      ごとの合計を表示してしまうからである。 ASCII NUL で終端されたファイ
3141      ル名のリストを得る方法の一つは、 GNU ‘find’ に ‘-print0’ を付けて使
3142      うことである。 FILE に ‘-’ を指定すれば、 ASCII NUL で終端されたフ
3143      ァイル名を標準入力から読み込むことができる。
3144
3145      たとえば、カレント・ディレクトリ以下にある、すべての ‘.c’ ファイル
3146      や ‘.h’ ファイルの内で、最長の行の長さを知るには、次のようにする。
3147
3148           find . -name '*.[ch]' -print0 |
3149             wc -L --files0-from=- | tail -n1
3150
3151    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3152
3153 \1f
3154 File: coreutils-ja.info,  Node: sum invocation,  Next: cksum invocation,  Prev: wc invocation,  Up: Summarizing files
3155
3156 6.2 ‘sum’: チェックサムとブロック数を表示する
3157 =============================================
3158
3159 ‘sum’ は、指定された各 FILE の 16-bit チェックサムを計算する。 FILE が指
3160 定されなかった場合や、FILE として ‘-’ が指定された場合は、 標準入力を対
3161 象とする。
3162
3163    書式:
3164
3165      sum [OPTION]... [FILE]...
3166
3167    ‘sum’ は各 FILE のチェックサムを表示し、その後にファイルのブロック数
3168 (整数に切り上げたもの) を続ける。複数の FILE が指定されていると、 ファイ
3169 ル名も表示される (デフォルト)。(‘--sysv’ オプションが指定されている場合
3170 は、 引数に一つでもファイルがあれば、そのファイル名が表示される。)
3171
3172    デフォルトでは、GNU の ‘sum’ は、BSD の ‘sum’ と互換性のあるアルゴリ
3173 ズムを使って、チェックサムを計算し、 1 ブロック 1024 バイトのブロック数
3174 でファイルサイズを表示する。
3175
3176    このプログラムでは以下のオプションが使用できる。参照: *note Common
3177 options::.
3178
3179 ‘-r’
3180      デフォルトの (BSD と互換性のある) アルゴリズムを使用する。 このオプ
3181      ションが存在しているのは、System V の ‘sum’ との互換性のためである
3182      。 前方に ‘-s’ オプションも指定されているとき以外、このオプションは
3183      効果を持たない。
3184
3185 ‘-s’
3186 ‘--sysv’
3187      System V の ‘sum’ のデフォルトと互換性のあるアルゴリズムを使って、
3188      チェックサムを計算し、1 ブロック 512 バイトのブロック数でファイルサ
3189      イズを表示する。
3190
3191    ‘sum’ は、互換性のために提供されている。新しいアプリケーションでは、
3192 ‘cksum’ プログラム (次のセクションを参照) を使う方がよい。
3193
3194    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3195
3196 \1f
3197 File: coreutils-ja.info,  Node: cksum invocation,  Next: b2sum invocation,  Prev: sum invocation,  Up: Summarizing files
3198
3199 6.3 ‘cksum’: CRC チェックサムとバイト数を表示する
3200 =================================================
3201
3202 ‘cksum’ は、指定された各 FILE の CRC (cyclic redundancy check、巡回冗長
3203 検査) チェックサムを計算する。 FILE が指定されなかった場合や、FILE とし
3204 て ‘-’ が指定された場合は、 標準入力を対象とする。
3205
3206    書式:
3207
3208      cksum [OPTION]... [FILE]...
3209
3210    ‘cksum’ は、各ファイルの CRC チェックサムとバイト数を表示する。 また
3211 、引数が指定されていない場合を除いて、ファイル名も表示する。
3212
3213    ‘cksum’ は通常、信頼性の低い方法 (たとえば、netnews) によって転送され
3214 たファイルに損傷がないことを確認するために使用される。 受信したファイル
3215 に対する ‘cksum’ の出力を、転送元のファイルに対する ‘cksum’ の出力 (たい
3216 てい、配布物中に入っている) と比較するわけである。
3217
3218    CRC のアルゴリズムは、POSIX 規格によって規定されており、BSD や System
3219 V の ‘sum’ のアルゴリズム (直前のセクションを参照) と互換性がない。 CRC
3220 アルゴリズムの方が信頼性が高い。
3221
3222    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
3223 options::.
3224
3225    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3226
3227 \1f
3228 File: coreutils-ja.info,  Node: b2sum invocation,  Next: md5sum invocation,  Prev: cksum invocation,  Up: Summarizing files
3229
3230 6.4 ‘b2sum’: BLAKE2 ダイジェストの表示、または検査をする
3231 ========================================================
3232
3233 ‘b2sum’ は、指定された各 FILE の 512-bit チェックサムを計算する。
3234 ‘md5sum’ コマンドと同じ使用法とオプションがサポートされている。 *Note
3235 md5sum invocation::.  なお、‘b2sum’ では、以下のオプションも使用できる。
3236
3237 ‘-l’
3238 ‘--length’
3239      ダイジェストのデフォルトの長さを変更 (短縮) する。 長さは bit で指
3240      定する。従って 8 の倍数でなければならない。 ‘--check’ オプションが
3241      指定されていると、このオプションは無視される。 チェックを行うときは
3242      、ダイジェストの長さは自動的に判断されるからである。
3243
3244 \1f
3245 File: coreutils-ja.info,  Node: md5sum invocation,  Next: sha1sum invocation,  Prev: b2sum invocation,  Up: Summarizing files
3246
3247 6.5 ‘md5sum’: MD5 ダイジェストの表示、または検査をする
3248 ======================================================
3249
3250 ‘md5sum’ は、指定された各 FILE の 128-bit チェックサムを計算する。 チェ
3251 ックサムは、指紋 (“fingerprint”) とか、メッセージ・ダイジェスト
3252 (“message-digest”) とも呼ばれる (訳注: ハッシュ値と呼ばれることもある)。
3253
3254    注意: MD5 ダイジェストは、ファイルの不測の損傷を検知することに関して
3255 、 単純な CRC (‘cksum’ コマンドで使用できる) よりも信頼性が高い。 二つの
3256 ファイルがたまたま同一の MD5 値を持っている確率は、ほとんどゼロだからで
3257 ある。 だからと言って、悪意のある改竄に対して安全だと考えてはならない。
3258 ある特定の MD5 指紋を持つファイルを見つけ出すことは、現在のところ事実上
3259 不可能だと考えられているが、 デジタル証明書などのファイルが署名に MD5 ダ
3260 イジェストを使用しているとき、 そうしたファイルに手を加えて、正当に見え
3261 るようする方法なら、周知のことだからである。 もっと安全なハッシュ値が必
3262 要なら、SHA-2 の使用を考慮した方がよい。 *Note sha2 utilities::.
3263
3264    指定された FILE が ‘-’ の場合や、ファイルが全く指定されなかった場合は
3265 、 ‘md5sum’ は標準入力のチェックサムを計算する。また、‘md5sum’ は、ファ
3266 イルとチェックサムの間に矛盾がないかどうかを判定することもできる。
3267
3268    書式:
3269
3270      md5sum [OPTION]... [FILE]...
3271
3272    各 FILE に対して ‘md5sum’ は、デフォルトでは MD5 チェックサム、一個の
3273 空白、入力モードがバイナリかテキストかを示すフラグ、 それにファイル名を
3274 出力する。バイナリモードの指標は ‘*’ であり、 テキストモードの指標は ‘ ’
3275 (空白) である。 モードの区別に意味のあるシステムでは、バイナリモードがデ
3276 フォルトだが、 そうでないシステムではテキストモードがデフォルトである。
3277 FILE にバックスラッシュや改行文字が含まれている場合は、出力する行の先頭
3278 にバックスラッシュを付け、 さらに、ファイル名中の問題のある各文字をバッ
3279 クスラッシュでエスケープする。 そうすることで、わがままなファイル名があ
3280 っても、出力に誤解の余地がないようにしているのだ。 FILE が指定されていな
3281 かったり、‘-’ という形で指定されている場合は、 標準入力から読み込む。
3282
3283    このプログラムでは以下のオプションが使用できる。参照: *note Common
3284 options::.
3285
3286 ‘-b’
3287 ‘--binary’
3288      各入力ファイルをバイナリとして扱う。すなわち、入力ファイルをバイナ
3289      リモードで読み込み、 出力に ‘*’ というフラグを付ける。このオプショ
3290      ンは ‘--text’ の反対である。バイナリファイルとテキストファイルを区
3291      別しない GNU のようなシステムでは、このオプションは入力モードがバイ
3292      ナリであるとのフラグを付けるだけであり、 MD5 チェックサムの値には影
3293      響を及ぼさない。 このオプションは、バイナリファイルとテキストファイ
3294      ルを区別する MS-DOS のようなシステムでは、 デフォルトである。だだし
3295      、読み込みを標準入力から行い、その標準入力が端末であるときは除く。
3296
3297 ‘-c’
3298 ‘--check’
3299      各 FILE から (FILE が指定されなかった場合は、標準入力から)、 ファイ
3300      ル名とチェックサム情報を読み込み (FILE をチェックサム計算の対象とな
3301      るデータとして読み込むわけはない)、 そのチェックサム情報が、それに
3302      対して名前を挙げられているファイルの内容に対応しているかどうかを報
3303      告する。 このモードの ‘md5sum’ に対する入力は、たいていの場合、事前
3304      に ‘md5sum’ を実行してチェックサムを生成したときの出力である。 入力
3305      ファイルの書式は、三種類のものがサポートされている。それは、上記の
3306      デフォルトの出力書式、 ‘--tag’ オプションを付けたときの出力書式、 そ
3307      れに BSD の逆順表示モード (reversed mode) の書式であり、最後のもの
3308      は、デフォルトの書式に似ているが、 バイナリとテキストモードを区別す
3309      る文字を使用しないものである。
3310
3311      そうした入力ファイルの各行に対して、‘md5sum’ は、そこに名前を記載さ
3312      れたファイルを読み込み、 その MD5 チェックサムを計算する。そして、
3313      算出したメッセージダイジェストが、 そのファイル名と同じ行にあるチェ
3314      ックサムと一致しなかった場合は、 そのファイルをテストに失敗したもの
3315      とするのである。 両者が一致した場合は、テストにパスしたことになる。
3316      デフォルトでは、有効な各行に対して標準出力にメッセージを 1 行づつ書
3317      き出し、 指名されているファイルがテストにパスしたかどうかを報告する
3318      。 また、すべてのチェックが完了したとき、テストに失敗したものが一つ
3319      でもあれば、 警告メッセージを標準エラーに出力する。 この出力を抑制
3320      したければ、‘--status’ オプションを使用すればよい。 リストされたフ
3321      ァイルの中に、オープンできなかったり、読み込めなかったりするものが
3322      あった場合や、 有効な行に書いてあるチェックサムが対応するファイルの
3323      実際の値と一致しなかった場合、 それに、有効な行が全く存在しなかった
3324      場合は、‘md5sum’ は 0 以外のステータスで終了する。 それ以外の場合は
3325      正常終了することになる。
3326
3327 ‘--ignore-missing’
3328      このオプションが役に立つのは、チェックサムの照合をするときだけであ
3329      る。 このオプションを指定すると、チェックサムを照合する際にファイル
3330      が存在しなくても、 実行に失敗したり、ステータス情報を出したりしなく
3331      なる。 ダウンロードしたファイルにチェックサムの長大なリストが付いて
3332      いるとき、 一部のファイルの照合をするのに便利である。
3333
3334 ‘--quiet’
3335      このオプションが役に立つのは、チェックサムの照合をするときだけであ
3336      る。 このオプションを指定すると、チェックサムを照合する際、 検査に
3337      成功したファイルごとに ’OK’ (訳注: 日本語では、「成功」または「完了
3338      」) のメッセージを出さなくなる。ただし、ファイルが照合に失敗した場
3339      合は、 デフォルトと同じ 1 ファイル 1 行の形式で結果を報告する。 チ
3340      ェックサムに何らかの不一致があった場合は、失敗を総括した警告メッセ
3341      ージも標準出力に表示する。
3342
3343 ‘--status’
3344      このオプションが役に立つのは、チェックサムの照合をするときだけであ
3345      る。 このオプションを指定すると、チェックサムを照合する際、デフォル
3346      トの 1 ファイルに付き 1 行の判定メッセージを出さなくなる。 また、照
3347      合の失敗があっても、それを総括した警告メッセージを出力することもな
3348      い。 とは言え、ファイルのオープンや読み込みに失敗した場合は、 やは
3349      りそれぞれの診断結果を標準エラーに表示する。 リストされたすべてのフ
3350      ァイルを読み込むことができ、しかも、すべてのファイルについて、 対応
3351      する MD5 チェックサムと矛盾がなければ、正常終了する。 それ以外の場
3352      合は、失敗があったことを示すステータスコードで終了する。
3353
3354 ‘--tag’
3355      BSD スタイルのチェックサムを出力する。 つまり、使用したチェックサム
3356      のアルゴリズムも表示するということだ。 GNU の拡張として、問題を起こ
3357      しかねない文字を含むファイル名は、上述したようにエスケープされ、 さ
3358      らに、行の先頭に エスケープの指標に使われたのと同じ ‘\’ 文字が付け
3359      られる。‘--tag’ オプションはバイナリ・モードを意味し、 ‘--text’ オ
3360      プションと一緒に使うことは認められていない。 そんなことをサポートし
3361      ても、出力の書式をむやみに繁雑にするだけで、 利益はほとんどないから
3362      である。
3363
3364 ‘-t’
3365 ‘--text’
3366      各入力ファイルをテキストとして扱う。すなわち、入力ファイルをテキス
3367      トモードで読み込み、 出力に ‘ ’ というフラグを付ける。このオプショ
3368      ンは ‘--binary’ の反対である。バイナリファイルとテクストファイルを
3369      区別しない GNU のようなシステムでは、このオプションがデフォルトであ
3370      る。 ほかのシステムでも、読み込みを標準入力から行い、その標準入力が
3371      端末であるときは、デフォルトになる。 ただし、‘--tag’ が使用されてい
3372      るときに、このモードがデフォルトになることはない。
3373
3374 ‘-w’
3375 ‘--warn’
3376      チェックサムを照合する際、MD5 チェックサムを記載した行の書式に正し
3377      くないものがあると、 その旨警告を発する。このオプションが役に立つの
3378      は、 チェックされる入力中の、数行を除いたすべての行が、有効なときだ
3379      けである。
3380
3381 ‘--strict’
3382      チェックサムを照合する際、無効な入力行が 1 行でもあれば、 そうした
3383      行のすべてについて警告を発したのち、0 以外の終了ステータスで終了す
3384      る。
3385
3386    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3387
3388 \1f
3389 File: coreutils-ja.info,  Node: sha1sum invocation,  Next: sha2 utilities,  Prev: md5sum invocation,  Up: Summarizing files
3390
3391 6.6 ‘sha1sum’: SHA-1 ダイジェストの表示、または検査をする
3392 =========================================================
3393
3394 ‘sha1sum’ は、指定された各 FILE の 160-bit チェックサムを計算する。 この
3395 コマンドの使用法やオプションは、‘md5sum’ と全く同じである。 *Note md5sum
3396 invocation::.
3397
3398    注意: SHA-1 ダイジェストは MD5 より安全であり、コリジョン (collision、
3399 衝突。別のファイルが同一の指紋を持つこと) が起きたという話を聞いたことは
3400 ない。 しかしながら、大量の — と言っても非現実的なほどではない — リソー
3401 スがあれば、 コリジョンを作り出せることがわかっている。この理由から、
3402 SHA-1 は、もっと安全な SHA-2 ハッシュ・アルゴリズムに徐々に移行すべきだ
3403 と、一般に考えられている。 *Note sha2 utilities::.
3404
3405 \1f
3406 File: coreutils-ja.info,  Node: sha2 utilities,  Prev: sha1sum invocation,  Up: Summarizing files
3407
3408 6.7 sha2 utilities: SHA-2 ダイジェストの表示、または検査をする
3409 ==============================================================
3410
3411 コマンド ‘sha224sum’, ‘sha256sum’, ‘sha384sum’, ‘sha512sum’ は、一まとめ
3412 にして SHA-2 ハッシュと呼ばれる様々な長さのチェックサムを計算する (それ
3413 ぞれ、224, 256, 384, 512 bits である)。 こうしたコマンドの使用法とオプシ
3414 ョンは、‘md5sum’ や ‘sha1sum’ と全く同じである。 *Note md5sum
3415 invocation::.
3416
3417 \1f
3418 File: coreutils-ja.info,  Node: Operating on sorted files,  Next: Operating on fields,  Prev: Summarizing files,  Up: Top
3419
3420 7 ソートしたファイルの操作
3421 **************************
3422
3423 以下のコマンドは、ソートしたファイルを操作 (生成) する。
3424
3425 * Menu:
3426
3427 * sort invocation::          テキストファイルを並べ替える。
3428 * shuf invocation::          テキストファイルをシャッフルする。
3429 * uniq invocation::          ファイルから重複を省く。
3430 * comm invocation::          ソート済みの二つのファイルを一行づつ比較する。
3431 * ptx invocation::           ファイル内容の permuted index を作成する。
3432 * tsort invocation::         トポロジカル・ソート。
3433
3434 \1f
3435 File: coreutils-ja.info,  Node: sort invocation,  Next: shuf invocation,  Up: Operating on sorted files
3436
3437 7.1 ‘sort’: テキストファイルを並べ替える
3438 ========================================
3439
3440 ‘sort’ は、指定されたファイルから読み込んだすべての行に対して、ソート
3441 (sort、一定の基準に従った並べ替え)、マージ (merge、データの統合)、比較
3442 (compare) を行う。ファイルが一つも指定されなかった場合や、FILE として
3443 ‘-’ が指定された場合は、標準入力から読み込む。デフォルトでは、‘sort’ は
3444 結果を標準出力に書き出す。
3445
3446    書式:
3447
3448      sort [OPTION]... [FILE]...
3449
3450    多くのオプションが、‘sort’ が行を比較する方法に影響を及ぼす。 そこで
3451 、結果が期待どおりでないときは、‘--debug’ オプションを使って、どうしてそ
3452 うなったかを調べてみていただきたい。 二つの行の比較は、次のように行われ
3453 る。‘sort’ は、対になる各フィールドを (‘--key’ オプションを参照)、 コマ
3454 ンドラインで指定された順番で、そのフィールドに結びついた順序関係のオプシ
3455 ョンに従いつつ比較し、 相違が見つかるか、比較するフィールドがなくなるま
3456 でそれを続ける。 キーとなるフィールドが指定されていない場合は、デフォル
3457 トのキーである行全体が比較に使用される。 最後に、すべてのキーが同じだっ
3458 たときは、最後の手段として、‘--reverse’ (‘-r’) 以外の順序関係のどんなオ
3459 プションも指定されていないかのように、行全体を比較する。 ‘--stable’ オプ
3460 ションを指定すると、この最後の手段の比較 (“last-resort comparison”) を行
3461 わないようになり、 その結果、すべてのキー・フィールドが等価である行は、
3462 互いに対する元の順序がそのまま維持される。 ‘--unique’ (‘-u’) オプション
3463 も、最後の手段の比較を行わないようにする。
3464
3465    別の指定がなされていないかぎり、すべての比較は、‘LC_COLLATE’ のロケー
3466 ルによって指定されている文字の照合順序で行われる。(1) 行末の改行は、比較
3467 に当たっては、行の一部として扱われない。 入力ファイルの最後のバイトが改
3468 行でなければ、GNU の ‘sort’ は黙って改行を追加する。 GNU の ‘sort’ では
3469 (GNU のすべてのユーティリティについて規定されているとおり)、 入力行の長
3470 さに上限がない。すなわち、各行に含まれるバイト数に制限がない。
3471
3472    ‘sort’ には三つの動作モードがある。ソート (これがデフォルト)、 マージ
3473 、それに、すでにソートされているかどうかのチェックである。 動作モードの
3474 変更には、以下のオプションを使用する。
3475
3476 ‘-c’
3477 ‘--check’
3478 ‘--check=diagnose-first’
3479      指定されたファイルがすでにソートされているかどうかをチェックする。
3480      ファイル全体がソート済みでない場合は、診断メッセージを出し、 順番か
3481      ら外れている最初の箇所を示してから、ステータス 1 で終了する。 ファ
3482      イルがソート済みの場合は、正常終了する。 入力ファイルは、1 個しか指
3483      定できない。
3484
3485 ‘-C’
3486 ‘--check=quiet’
3487 ‘--check=silent’
3488      指定されたファイルがすでにソート済みだったら、正常終了する。 さもな
3489      ければ、ステータス 1 で終了。入力ファイルは、1 個しか指定できない。
3490      このオプションは ‘-c’ と同様だが、診断メッセージを出さない点が異な
3491      る。
3492
3493 ‘-m’
3494 ‘--merge’
3495      指定された複数のファイルを一つのグループとしてソートすることでデー
3496      タの統合を行う。 各入力ファイルは、必ずそれぞれがソート済みでなけれ
3497      ばならない。 マージモードの代わりにソートモードを使えば、 そうした
3498      条件なしで、ソートとマージを行うことができる。 マージモードがあるの
3499      は、それが使える場合は、その方が高速だからである。
3500
3501    終了ステータス:
3502
3503      0: エラーが起きなかった。
3504      1: ‘-c’ や ‘-C’ を付けて実行した際に、入力がソートされていなかった。
3505      2: エラーが起きた。
3506
3507    環境変数 ‘TMPDIR’ が設定されていれば、‘sort’ はその値をテンポラリ・フ
3508 ァイルを置くディレクトリとして ‘/tmp’ の代わりに使用する。
3509 ‘--temporary-directory’ (‘-T’) オプションは、環境変数よりさらに優先され
3510 る。
3511
3512    以下に挙げるオプションは、出力する行の順序に影響を与える。 こうしたオ
3513 プションは、グローバルなオプションとして指定することもできるし、 キーと
3514 なる特定のフィールドに対してのみ働くように指定することもできる。 キーと
3515 なるフィールドが全く指定されていない場合は、グローバルなオプションが行全
3516 体の比較に使用される。 キー・フィールドの指定がある場合は、グローバルな
3517 オプションは、 キー・フィールドのうち、それ自身のオプションが特に指定さ
3518 れていないフィールドに継承される。 POSIX 以前の ‘sort’ のバージョンを使
3519 用している場合、グローバルなオプションが効果を持つのは、 それより後で指
3520 定されるキー・フィールドに対してだけなので、 移植を考慮したシェルスクリ
3521 プトでは、グローバル・オプションを最初に指定した方がよい。
3522
3523 ‘-b’
3524 ‘--ignore-leading-blanks’
3525      各行中でソートに使うキーを捜すときに、文字の前にある空白を無視する
3526      。 デフォルトの空白は、スペースまたはタブだが、‘LC_CTYPE’ のロケー
3527      ルによっては違うかもしれない。 なお、次のことに留意してほしい。 空
3528      白は、使用しているロケールの照合ルールによっては無視されることがあ
3529      るが、 このオプションを指定しておかないと、‘-k’ オプションで指定さ
3530      れるキー中の文字の位置に関して、 空白が意味を持つことになる。
3531
3532 ‘-d’
3533 ‘--dictionary-order’
3534      電話帳 (“phone directory”) 順にソートする。 すなわち、ソートする際
3535      にアルファベット、数字、空白以外のすべての文字を無視する。 デフォル
3536      トのアルファベットと数字は ASCII のそれであり、空白はスペースまたは
3537      タブだが、 後者は ‘LC_CTYPE’ のロケールによっては違うかもしれない。
3538
3539 ‘-f’
3540 ‘--ignore-case’
3541      アルファベットの小文字を、一回すべて対応する大文字に直してから、比
3542      較する。 その結果、たとえば、‘b’ と ‘B’ は等価なものとしてソートさ
3543      れる。 どの文字がどのタイプに属するか (訳注: たとえば、大文字か小文
3544      字か) を決めているのは、‘LC_CTYPE’ のロケールである。‘--unique’ オ
3545      プションと一緒に使用したとき、小文字を使っている等価な行があると、
3546      その小文字の行は捨てられることになる。(大文字を使っている等価な行の
3547      方を捨てる方法は、 現在のところ存在しない。(‘--reverse’ オプション
3548      があっても、 それが効果を発揮するのは、小文字の行が捨てられた後の最
3549      終結果に対してだけなのだ。)) (訳注: 実際の動作はこの説明と少し違う
3550      。最近の ‘sort’ では、 ‘--unique’ と併せて使用した場合、小文字を使
3551      っている行が捨てられるのではなく、 等価な行のうち、最初に現れた行が
3552      残り、それ以外のすべてが捨てられるようである。)
3553
3554 ‘-g’
3555 ‘--general-numeric-sort’
3556 ‘--sort=general-numeric’
3557      各行の先頭部分を倍精度浮動小数点数 (long double-precision floating
3558      point number) に変換して、数値としてソートする (訳注: 実際には、各
3559      行の先頭と言うより、比較される各フィールドの先頭部分を対象にする)。
3560      *Note Floating point::.  オーバーフロー、アンダーフロー、変換エラー
3561      が起きても、 通知しない。行の並ぶ順番は以下のようになる。
3562
3563         • 数字で始まっていない行 (すべて同じ数値と見なされる)。
3564         • NaN (IEEE の浮動小数点演算で使う “Not a Number” を表す値) を一
3565           貫した、ただし、マシンに依存する順番で並べる。
3566         • マイナスの無限大。
3567         • 有限数を数値として昇順で並べる (-0 と +0 は等価とする)。
3568         • プラスの無限大。
3569
3570      このオプションを使うのは、他に方法がないときのみにすること。 処理速
3571      度が ‘--numeric-sort’ (‘-n’) よりずっと遅いし、 浮動小数点数に変換
3572      するとき、情報を失う恐れがあるからだ。
3573
3574 ‘-h’
3575 ‘--human-numeric-sort’
3576 ‘--sort=human-numeric’
3577      数値としてソートする。その際、ソートを、まず数が正か負かによって行
3578      い (負の数、ゼロ、正の数の順)、次に SI 接尾辞 によって行い (接尾辞
3579      なし、‘k’ や ‘K’、そして ‘MGTPEZY’ の順 *note Block size::)、 最後
3580      に数値によって行う。たとえば、‘1023M’ は ‘1G’ の前に来る。 SI 接尾
3581      辞として ‘M’(メガ) は ‘G’ (ギガ) の前になるからだ。 つまり、このオ
3582      プションでソートする対象は、接尾辞の意味が 1000 の累乗か、1024 の累
3583      乗かを問わず、一貫したやり方で、 数値の規模にもっともふさわしい接尾
3584      辞を付けられている数値である。 従って、このオプションは、‘df’,
3585      ‘du’, ‘ls’ などのコマンドに ‘--human-readable’ や ‘--si’ オプション
3586      を付けて実行したときの、一回分の出力をソートするのに用いられる。 数
3587      値の書式は、‘--numeric-sort’ の場合と同じであり (訳注: すなわち、数
3588      値の前に付けた ‘+’ 符号を理解しない)、 SI 接尾辞は、数値の後ろに直
3589      接続いていなければならない。 なお、‘numfmt’ コマンドを使用すること
3590      も考慮していただきたい。‘numfmt’ を使用すれば、数値をソートした後で
3591      、人間に読みやすい形に整形し直すことができるので、 たいていの場合
3592      ‘sort’ の対象に、より精密な数値を使うことが可能になるからだ。
3593
3594 ‘-i’
3595 ‘--ignore-nonprinting’
3596      表示できない文字を無視する。どの文字がどのタイプに属するかを決めて
3597      いるのは、 ‘LC_CTYPE’ のロケールである。より強力なオプションである
3598      ‘--dictionary-order’ (‘-d’) が一緒に指定されていると、 このオプショ
3599      ンは効果を持たない。
3600
3601 ‘-M’
3602 ‘--month-sort’
3603 ‘--sort=month’
3604      比較する部分の先頭が、0 個以上の空白に続いて、月名の短縮形になって
3605      いるとき、 すべての文字を大文字に直して ‘JAN’ < ‘FEB’ < ... < ‘DEC’
3606      の順序で比較する。月名として無効な名前は、有効な月名より前に置かれ
3607      る。 月名のつづりを決めているのは、‘LC_TIME’ カテゴリのロケールであ
3608      る (訳注: だから、英語の月名によってソートするには、ロケールを英語
3609      か C にしておく必要がある)。デフォルトの空白は、スペースまたはタブ
3610      だが、 ‘LC_CTYPE’ のロケールによっては違うかもしれない。
3611
3612 ‘-n’
3613 ‘--numeric-sort’
3614 ‘--sort=numeric’
3615      数値としてソートする。数値は行頭から始まり (訳注: 比較する位置が指
3616      定されていれば、実は行頭でなくてもよい)、 任意個の空白、必要なら
3617      ‘-’ 符号、それに、0 個以上の数字から構成される。 数値は、区切り記号
3618      で 3 桁づつ区切られていてもよく、小数点記号と 0 個以上の数字が続い
3619      ていてもよい。 数字がない場合は、‘0’ と見なされる。小数点記号や桁区
3620      切りの記号を規定しているのは、 ‘LC_NUMERIC’ のロケールである。デフ
3621      ォルトの空白は、スペースまたはタブだが、 ‘LC_CTYPE’ のロケールによ
3622      っては違うかもしれない。
3623
3624      比較は厳密であり、丸めによるエラーはない。
3625
3626      このオプションは、数値に前置した ‘+’ 符号や、指数表記を理解しない。
3627      そうした文字列を数値として比較するには、‘--general-numeric-sort’
3628      (‘-g’) を使用するべきである。
3629
3630 ‘-V’
3631 ‘--version-sort’
3632      バージョン名とバージョン番号によってソートする。標準用法のソートと
3633      動作が似ているが、 10 進数の数字が連続する各部分をインデックス番号
3634      やバージョン番号と見なし、 (文字列としてではなく) 数値として取り扱
3635      う点が違う。 (*Note Details about version sort::.)
3636
3637 ‘-r’
3638 ‘--reverse’
3639      比較の結果を逆順にする。その結果、出力ではより大きなキーの値を持つ
3640      行が、 後ではなく、先に表示される。
3641
3642 ‘-R’
3643 ‘--random-sort’
3644 ‘--sort=random’
3645      ソートを行うのに、入力中のキーをハッシュしてから、そのハッシュ値を
3646      ソートするという方法を用いる。 ハッシュ関数はランダムに選択する。 そ
3647      の際、衝突 (collision) が絶対起きないように関数を選択するので、 値
3648      の違うキーは必ず違うハッシュ値を持つようになる。 これは、入力のラン
3649      ダムな並び替えに似ているが (*note shuf invocation::)、 同じ値を持つ
3650      キーは一緒に並べるという点が、異なっている。
3651
3652      ランダムソートを行うフィールドが複数指定されている場合は、 ランダム
3653      に選択された一つの同じハッシュ関数が、すべてのフィールドで使用され
3654      る。 フィールドごとに別のランダムなハッシュ関数を使うようにするには
3655      、 ‘sort’ を複数回呼び出せばよい。
3656
3657      ハッシュ関数の選択は、 ‘--random-source’ オプションの影響を受ける。
3658
3659    その他のオプション。
3660
3661 ‘--compress-program=PROG’
3662      テンポラリ・ファイルを PROG というプログラムで圧縮する。
3663
3664      PROG プログラムは、 引数が一つも存在しない場合に、標準入力を圧縮し
3665      て標準出力に書き出し、 ‘-d’ オプションの指定があれば、 標準入力を展
3666      開して標準出力に書き出すものでなければならない。
3667
3668      PROG が 0 以外のステータスで終了した場合は、 エラーメッセージを出し
3669      て、‘sort’ の実行を中止する。
3670
3671      PROG の指定中でホワイトスペース (訳注: 空白、タブ、改行など) やバッ
3672      クスラッシュ文字を使ってはならない。 そうした文字は、将来の使用のた
3673      めに、予約されている。
3674
3675 ‘--files0-from=FILE’
3676      コマンドラインで名前を指定されたファイルの処理を行わない。その代わ
3677      りに、 ファイル FILE に名前が書き込まれているファイルの処理を行う。
3678      なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL) で
3679      終端されていなければならない。このオプションは、ファイル名のリスト
3680      が長すぎて、 コマンドライン長の上限を超過してしまいそうなときに、 便
3681      利である。そうした場合、‘sort’ を ‘xargs’ 経由で実行するのは、望ま
3682      しくない。 なぜなら、‘xargs’ はファイルのリストをいくつかの部分に分
3683      割して ‘sort’ に渡すので、‘sort’ はリスト全体のソートした結果ではな
3684      く、 部分リストごとのソートした結果を表示してしまうからである。
3685      ASCII NUL で終端されたファイル名のリストを得る方法の一つは、 GNU
3686      ‘find’ に ‘-print0’ を付けて使うことである。 FILE に ‘-’ を指定すれ
3687      ば、 ASCII NUL で終端されたファイル名を標準入力から読み込むことがで
3688      きる。
3689
3690 ‘-k POS1[,POS2]’
3691 ‘--key=POS1[,POS2]’
3692      行中の POS1 から POS2 までの部分 (両者を含む) を、ソートの対象とな
3693      る場所として指定する。POS2 が省略されている場合は、 POS1 から行末ま
3694      でがソートの対象になる。
3695
3696      最も単純な形の場合、POS で指定するのは、何番目のフィールドかという
3697      ことである (1 から数える)。 フィールドは 1 個以上の空白文字によって
3698      区切られるが、 デフォルトでは、そうした空白文字は比較するとき各フィ
3699      ールドの先頭に含まれることになる。 空白文字の扱い方を調整する方法に
3700      ついては、‘-b’ や ‘-t’ オプションの説明をご覧いただきたい。
3701
3702      より一般的に言うと、各 POS は、‘F[.C][OPTS]’ という形式を取る。 F は
3703      、比較に使用するフィールドは何番目かということであり、 C は、そのフ
3704      ィールドの始めから数えて何番目の文字かということである。 フィールド
3705      や文字の位置は、1 から数える。 なお、POS2 の文字の位置として 0 を指
3706      定すると、 そのフィールドの最後の文字を指すことになる。‘.C’ が、
3707      POS1 で省略されている場合は、デフォルトの 1 (フィールドの最初の文字
3708      ) を指定したことになり、POS2 で省略されている場合は、デフォルトの 0
3709      (フィールドの最後の文字) を指定したことになる。 OPTS は順序関連のオ
3710      プションであり、 これを指定することで、各キーを異なったルールでソー
3711      トすることが可能になる。 詳細については後述しているので、参照してい
3712      ただきたい。 なお、キーは複数のフィールドにまたがることができる。
3713
3714      たとえば、二番目のフィールドでソートするには、‘--key=2,2’ (‘-k
3715      2,2’) を使用する。後述部分で、キーについてさらに説明し、 用例ももっ
3716      とたくさん挙げているので、ご覧になっていただきたい。 また、
3717      ‘--debug’ オプションの説明もご覧になるとよい。‘--debug’ オプション
3718      を使うと、行中のどの部分がソートに使用されているかが明らかになる。
3719
3720 ‘--debug’
3721      各行のソートに使われている部分を強調表示する。 また、使用法に問題が
3722      ありそうなときは、標準エラーに警告メッセージを出す。
3723
3724 ‘--batch-size=NMERGE’
3725      一度にマージする入力ファイルの数を多くても NMERGE 個までとする。
3726
3727      NMERGE 個を越える入力ファイルをマージしなければならない場合、‘sort’
3728      は NMERGE 個のファイルからなるグループを作ってマージし、 その結果を
3729      テンポラリ・ファイルに保存する。 そして、今度はそれを入力として使用
3730      して、後に続くマージを行うのである。
3731
3732      NMERGE の値が大きいと、実行速度が向上し、ハードディスクの一時的な使
3733      用が減るかもしれないが、 その分、メモリの使用量と I/O が増加する。
3734      逆に、NMERGE の値が小さいと、メモリに対する要求と I/O は減少するか
3735      もしれないが、 その分、ハードディスクの一時的な使用が増え、実行速度
3736      が低下することになる。
3737
3738      NMERGE の値は、2 以上でなければならない。デフォルトの値は 16 だが、
3739      これは実装次第なので、将来は変わるかもしれない。
3740
3741      NMERGE の値は、オープンできるファイル・ディスクリプタの上限によって
3742      制限されているかもしれない。 ‘ulimit -n’ や ‘getconf OPEN_MAX’ コマ
3743      ンドを使えば、使用しているシステムの上限を知ることができる。 ただし
3744      、そうした上限がさらに小さくなっていることもあり、 使用中のプログラ
3745      ムがすでにファイルをいくつかオープンしている場合や、 オープンできる
3746      ファイルの数についてオペレーティング・システムに他の制限がある場合
3747      が、 それに当たる。NMERGE がリソースの上限を越えているときは、
3748      ‘sort’ は警告メッセージを出さずに、より小さい値を使用する。
3749
3750 ‘-o OUTPUT-FILE’
3751 ‘--output=OUTPUT-FILE’
3752      出力を標準出力ではなく、OUTPUT-FILE に書き出す。通常、‘sort’ は、入
3753      力をすべて読み込んでから、OUTPUT-FILE をオープンする。 従って、
3754      ‘sort -o F F’ や ‘cat F | sort -o F’ といったコマンドを使って、ファ
3755      イルを直接書き変えるやり方でソートをすることが可能だ。 とは言え、他
3756      の用途に使用されていないファイルに出力する方が、おおむね安全である
3757      。 ファイルを直接書き変えるやり方でソートしている最中に、システムが
3758      クラッシュしたり、 ‘sort’ が入出力エラーなど、深刻なエラーに遭遇し
3759      たりすると、データが失われてしまいかねないからだ。 また、‘--merge’
3760      (‘-m’) オプションを指定した場合は、‘sort’ は、入力をすべて読み込む
3761      前に、出力ファイルをオープンするかもしれないので、 ‘cat F | sort -m
3762      -o F - G’ といったコマンドは安全ではない。 ‘cat’ が ‘F’ の読み込み
3763      を済ます前に、‘sort’ が ‘F’ への書き込みを始めてしまうかもしれない
3764      からだ。
3765
3766      比較的新しいシステムでも、環境変数 ‘POSIXLY_CORRECT’ を設定している
3767      場合は、 たとえば ‘sort F -o F’ のように、入力ファイルの後に ‘-o’ オ
3768      プションを置くことはできない。移植を考慮したスクリプトでは、 ‘-o
3769      OUTPUT-FILE’ を入力ファイルの前で指定するべきである。
3770
3771 ‘--random-source=FILE’
3772      FILE をランダムデータのソースとして使用する。そのランダムデータは、
3773      ‘-R’ オプションでどのランダムハッシュ関数を使うかを決めるのに使用さ
3774      れる。 *Note Random sources::.
3775
3776 ‘-s’
3777 ‘--stable’
3778
3779      最後の手段の比較 (last-resort comparison) を行うのを止めて、‘sort’
3780      を入力順尊重 (stable) にする。このオプションは、フィールド指定オプ
3781      ションや、 ‘--reverse’ (‘-r’) 以外のグローバルな順序関係のオプショ
3782      ンが指定されていなければ、効果を持たない。
3783
3784      (訳注: いわゆる stable sort (普通、安定ソート、固定ソートと訳される
3785      ) である。 たとえば、‘-b’ オプションを使って、先行する空白を無視し
3786      て比較した場合に、等価となる行があったとしよう。 通常では、それでも
3787      、最後の手段の比較によって、 先行する空白の有無も考慮に入れた行全体
3788      の比較が行われ、 等価な行に順序を付けることになるが、‘--stable’ オ
3789      プションが指定されていると、 それをしないので、等価な行は入力された
3790      ときの順序で出力される)。
3791
3792 ‘-S SIZE’
3793 ‘--buffer-size=SIZE’
3794      指定された SIZE のメインメモリをソート用のバッファとして使用する。
3795      デフォルトでは、SIZE は 1024 バイトを 1 単位とする数値である。‘%’ を
3796      後ろに付けると、SIZE は、物理メモリの何パーセントの意味になる。 後
3797      置するのが ‘K’ ならば、SIZE は 1024 倍され (デフォルトと同じ)、 ‘M’
3798      なら 1,048,576 倍、‘G’ なら 1,073,741,824 倍される。 ‘T’, ‘P’, ‘E’,
3799      ‘Z’, ‘Y’ の後置も、同じ理屈である。 ‘b’ を後置すると、SIZE はバイト
3800      数と見なされ、掛け算は行われない。
3801
3802      このオプションを指定すると、‘sort’ は作業を始めるとき、 デフォルト
3803      よりも大きかったり、小さかったりするソート用のバッファを使用するこ
3804      とになり、 そのために動作速度が向上することがある。 とは言え、この
3805      オプションは起動直後のバッファサイズにしか影響を持たない。 ‘sort’ が
3806      SIZE を越える入力行に出会うと、バッファのサイズは SIZE 以上に拡大さ
3807      れるからである。
3808
3809 ‘-t SEPARATOR’
3810 ‘--field-separator=SEPARATOR’
3811      各行でソートに使うキーを探すとき、文字 SEPARATOR をフィールド・セパ
3812      レータとして使用する。 デフォルトでフィールドを区分するのは、非空白
3813      文字と空白文字の間の空文字列である。 デフォルトの空白は、スペースと
3814      タブだが、‘LC_CTYPE’ のロケールによっては、 違うかもしれない。
3815
3816      たとえば、入力行が ‘ foo bar’ だったとしよう。‘sort’ はこれを
3817      ‘ foo’ と ‘ bar’ のフィールドに分割する。 フィールド・セパレータは
3818      前後どちらのフィールドにも属さないことになっている。 そこで、‘sort
3819      -t " "’ を使用した場合は、同じ入力行が、空っぽのフィールド、 ‘foo’、
3820      それに ‘bar’ という 3 個のフィールドを持つことになる。 とは言え、キ
3821      ー・フィールドが、‘-k 2’ のように、行末まで続く場合や、 ‘-k 2,3’ の
3822      ように、範囲からなる場合は、 範囲の両端の間に存在するフィールド・セ
3823      パレータは、キー・フィールド中にそのまま保持される。
3824
3825      ASCII NUL をフィールド・セパレータに指定するには、二文字からなる文
3826      字列 ‘\0’ を使用すればよい。‘sort -t '\0'’ のようにだ。
3827
3828 ‘-T TEMPDIR’
3829 ‘--temporary-directory=TEMPDIR’
3830      テンポラリファイルの置き場所にディレクトリ TEMPDIR を使用する。 こ
3831      の指定は、環境変数 ‘TMPDIR’ に優先する。このオプションを二回以上指
3832      定すると、 テンポラリファイルの置き場所として、指定されたすべてのデ
3833      ィレクトリが使用されることになる。 大規模なソートやマージを行って、
3834      I/O が足枷になる場合、このオプションを使って、 別のディスク上にあり
3835      、別のコントローラを使用している複数のディレクトリを指定すると、 実
3836      行速度が向上することがよくある。
3837
3838 ‘--parallel=N’
3839      平行して実行するソートの数を N に設定する。デフォルトでは、 N は、
3840      利用できるプロセッサーの数になっている。ただし、上限は 8 であり、こ
3841      れは、それ以上にしても、速度の向上が頭打ちになるからだ。 N 個のスレ
3842      ッドを使用すると、メモリの使用量が log N 倍になることにも注意してい
3843      ただきたい。 参照 *note nproc invocation::.
3844
3845 ‘-u’
3846 ‘--unique’
3847
3848      通常は、等価と評価される複数の行の内、最初のもののみを出力する。
3849      ‘--check’ (‘-c’ または ‘-C’) オプションが指定されている場合は、 等
3850      価と評価される行が、2 行連続していないかをチェックする (訳注: 等価
3851      な行の連続があると、終了ステータスが 1 になる)。
3852
3853      また、このオプションを指定すると、デフォルトでは実行する、最後の手
3854      段の比較を行わなくなる。
3855
3856      コマンド ‘sort -u’ と ‘sort | uniq’ は等価である。 しかし、その等価
3857      性は、‘sort’ に何か他のオプションが付いたときにまでは及ばない。 た
3858      とえば、‘sort -n -u’ は、唯一性のチェックをするとき、行頭にある数字
3859      の並びの値しか調べないが、 ‘sort -n | uniq’ の方は、行全体を検査す
3860      るのである。*Note uniq invocation::.
3861
3862 ‘-z’
3863 ‘--zero-terminated’
3864      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
3865      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
3866      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
3867      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
3868      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
3869      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
3870      しているのである。
3871
3872    ‘sort’ の従来の (すなわち BSD と System V の) 実装では、 いくつかのオ
3873 プションの解釈が互いに異なっていた。 とりわけ、‘-b’, ‘-f’, ‘-n’ について
3874 そうだった。 GNU の sort は、POSIX 規格の動作に従っており、 これは、たい
3875 ていの場合 (常にではない!)、System V の動作と同じである。POSIX によると
3876 、‘-n’ はもはや ‘-b’ を自動的に設定しない。 そこで、動作の一貫性のために
3877 、‘-M’ も同様に変更した。 この変更によって、フィールドを指定するとき、文
3878 字の位置がどこを指すかが、 微妙なケースでは変わってくるかもしれない。 こ
3879 れに対する唯一の対処法は、明示的に ‘-b’ オプションを指定することである。
3880
3881    ‘-k’ によってソート・フィールドを指定するとき、 その位置指定の後ろに
3882 オプション文字 ‘MbdfghinRrV’ のうち任意のものを付けることができる。 その
3883 場合、そのフィールドは、グローバルな順序関係のオプションを一切引き継がな
3884 いことになる。 ‘-b’ オプションは、フィールド限定のオプションとしては、 フ
3885 ィールド指定の開始位置と終端位置の片方、あるいは両方に付けることができる
3886 が、 グローバル・オプションから継承した場合は、両方に付いていることにな
3887 る。 入力行が、行頭やフィールド間に複数の空白を含んでいる可能性があって
3888 、 しかも ‘-t’ を使っていない場合は、‘-k’ を使用するとき、‘-b’ と組み合
3889 わせるか、先行する空白を暗黙のうちに無視するオプション (すなわち ‘Mghn’)
3890 と組み合わせるのが普通だ。そうしないと、フィールドにある先行する空白の数
3891 の違いのせいで、 結果がわけのわからないものになりかねないからである。
3892
3893    ソートフィールド指定の開始位置が、行末より後ろや、終端側のフィールド
3894 より後ろに来てしまうと、 そのフィールドは空になる。‘-b’ オプションを指定
3895 した場合、 フィールド指定の ‘.C’ の部分は、そのフィールドの最初の非空白
3896 文字から数えることになる。
3897
3898    POSIX 1003.1-2001 に準拠していないシステムの ‘sort’ では、ソート・キ
3899 ーの指定に、‘+POS1 [-POS2]’ という 0 から数える旧来の書式が使用できる。
3900 ‘sort +A.X -B.Y’ という旧来のコマンドは、 もし Y が ‘0’ であるか、指定さ
3901 れていない場合は、 ‘sort -k A+1.X+1,B’ と同じである。 それ以外の場合は、
3902 ‘sort -k A+1.X+1,B+1.Y’ と同じだ。
3903
3904    (訳注: 旧来の書式と新しい書式の違いは、フィールドやフィールド中の文字
3905 の位置を 0 から数えるか、1 から数えるかだけではない。 終端指定の位置が、
3906 旧来の書式ではキー・フィールドに含まれないのに対し (つまり、その直前まで
3907 なのに対し)、新しい書式では含まれるという違いもある。 そこで、上のように
3908 なる。なお、旧来の書式であれ、新しい書式であれ、 デフォルトのフィールド
3909 ・セパレータは、 「非空白文字と空白文字の間の空文字列」であることに注意
3910 していただきたい。)
3911
3912    この旧来の動作は、環境変数 ‘_POSIX2_VERSION’ を使えば、コントロールす
3913 ることができる (*note Standards conformance::)。また、‘POSIXLY_CORRECT’
3914 が設定されていないときに、‘-POS2’ が存在する旧来の書式を使っても、有効に
3915 なる。
3916
3917    標準的なホストで使用することを意図したスクリプトでは、旧来の書式は使
3918 わずに、 ‘-k’ の方を使用するべきである。たとえば、‘sort +2’ は使わない方
3919 がよい。 ‘sort ./+2’ と解釈されるか、‘sort -k 3’ と解釈されるか、わから
3920 ないからである。 そのスクリプトが、旧来の書式にしか対応していないホスト
3921 でも動作しなければならないのなら、 スクリプト中で ‘if sort -k 1
3922 </dev/null >/dev/null 2>&1; then ...’ といったテストを行って、どちらの書
3923 式を使うべきかを判断すればよい。
3924
3925    用例をいくつか挙げて、オプションの様々な組み合わせを説明する。
3926
3927    • 数値としてソートし、降順に (つまり、通常の逆に) 並べる。
3928
3929           sort -n -r
3930
3931    • 同時にソートを 4 つまで行う。バッファサイズを 10M にする。
3932
3933           sort --parallel=4 -S 10M
3934
3935    • 1 番目と 2 番目のフィールドを無視し、さらに 3 番目のフィールドの先
3936      頭の空白も無視して、 アルファベット順に並べる。ここで使っているキー
3937      は一つであり、 それは 3 番目のフィールドの最初の非空白文字に始まっ
3938      て、 各行の末尾まで続くすべての文字からなっている。
3939
3940           sort -k 3b
3941
3942    • 2 番目のフィールドを数値としてソートし、同点の決着を付けるために、
3943      5 番目のフィールドの 3 番目と 4 番目の文字をアルファベット順でソー
3944      トする。 フィールドの区切りには ‘:’ を使用する。
3945
3946           sort -t : -k 2,2n -k 5.3,5.4
3947
3948      ここで注意していただきたいが、もし ‘-k 2,2n’ の代わりに ‘-k 2n’ と
3949      書いたなら、‘sort’ は、2 番目のフィールドに始まり、行末まで続くすべ
3950      ての文字を、 主キー (primary key) として、それも「数値」のキーとし
3951      て使用したことだろう。 ‘sort’ を実行するたいていの場合について言え
3952      ることだが、 複数のフィールドにまたがるキーを数値として使用しても、
3953      期待する結果は得られないものである。
3954
3955      もう一つ注意していただきたい。 上の例では、‘n’ 修飾子を最初のキーの
3956      フィールド終端指定に付けている。 これは、‘-k 2n,2’ とか ‘-k 2n,2n’
3957      とか指定しても、同じことだったろう。‘b’ を除くすべての修飾子は、 キ
3958      ー指定のフィールド開始側に付けるか、フィールド終端側に付けるか、 あ
3959      るいは、その両方に付けるかにかかわりなく、 付けられた「キー・フィー
3960      ルド全体」に適用されるのである。
3961
3962    • パスワードファイルを 5 番目のフィールドでソートする。このとき、 先
3963      頭の空白は無視する。5 番目のフィールドが同じ値になる行については、
3964      3 番目のフィールドのユーザ ID 番号でソートする。 フィールドの区切り
3965      は、‘:’ という文字である。
3966
3967           sort -t : -k 5b,5 -k 3,3n /etc/passwd
3968           sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
3969           sort -t : -b -k 5,5 -k 3,3n /etc/passwd
3970
3971      この三つのコマンドは同じ働きをする。 1 番目のコマンドは、最初のキー
3972      の開始位置では先行する空白を無視し、 二番目のキーを数値としてソート
3973      するように指定している。他の二つのコマンドは、 グローバル・オプショ
3974      ンは修飾子がないソート・キーによって継承されるという特性を利用して
3975      いる。 この場合、継承がうまく働くのは、‘-k 5b,5b’ と ‘-k 5b,5’ が同
3976      じことだからだ (訳注: 「‘-b’ オプションは ... グローバル・オプショ
3977      ンから継承した場合は、(開始位置と終端位置の) 両方に付いていることに
3978      なる」ので、3 番目のコマンドは、‘-k 5b,5b’ と指定するのと事実上等し
3979      い)。両者が同じになるのは、‘.C’ という文字位置を欠いたフィールド終
3980      端の指定では、 先頭の空白をスキップしてもしなくても、終端位置は変わ
3981      らないからである。
3982
3983    • 一群のログファイルをソートする。主キーとして IPv4 アドレスを使用し
3984      、 副キーとしてタイムスタンプを使用する。二つの行の主キーと副キーが
3985      全く同じ場合は、 入力されたときと同じ順番で、その行を出力する。ログ
3986      ファイルは、次のような行からなっている。
3987
3988           4.150.156.3 - - [01/Apr/2004:06:31:51 +0000] message 1
3989           211.24.3.231 - - [24/Apr/2004:20:17:39 +0000] message 2
3990
3991      フィールドは、ただ 1 個の空白で区切られている。 IPv4 アドレスのソー
3992      トは辞書順 (lexicographically) で行う。 たとえば、212.61.52.2 は
3993      212.129.233.201 の前に来る。 61 は 129 よりも小さいからだ。
3994
3995           sort -s -t ' ' -k 4.9n -k 4.5M -k 4.2n -k 4.14,4.21 file*.log |
3996           sort -s -t '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n
3997
3998      この例の場合は、‘sort’ を一回起動するだけでは、ことがすまない。 日
3999      付が空白 1 個のすぐ後に置かれているだけなのに対して、 IPv4 の構成要
4000      素は ‘.’ で区切られているからである。そこで、作業を分割し、 ‘sort’
4001      を 2 回起動している。1 回目はタイムスタンプでソートし、 2 回目は
4002      IPv4 アドレスでソートするわけだ。タイムスタンプは、 年、月、日のフ
4003      ィールドの順番でソートし、最後に、時・分・秒のフィールドでソートし
4004      ているが、 それは ‘-k’ オプションを使って、各フィールドを分離するこ
4005      とで実現している。 時・分・秒を除いて、各キー・フィールドの終端を指
4006      定する必要はない。 ‘n’ や ‘M’ 修飾子は、フィールドの先頭にある数値
4007      や月名の短縮形に基づいてソートを行うが、 そうしたものは、フィールド
4008      の境界を越えられないからである。IPv4 アドレスのソートは、 辞書順で
4009      行っている。なお、二回目のソートで ‘-s’ を使っているのは、 主キーで
4010      一ヶ所にまとめられる行が、副キーによってソートされているようにする
4011      ためである。 それに対して、一回目のソートで ‘-s’ を使っているのは、
4012      二つのソートの組み合わせ全体を入力順尊重 (stable) にするためだ。
4013
4014    • アルファベットの大文字小文字の違いを無視してソートし、その順番で
4015      tags ファイルを作成する。
4016
4017           find src -type f -print0 | sort -z -f | xargs -0 etags --append
4018
4019      この例では、‘-print0’, ‘-z’, ‘-0’ といったオプションを使っている。
4020      そのため、空白などの特殊文字を含んでいるファイル名が、 ソート操作に
4021      よって分断されることがない。
4022
4023    • 慣用句 DSU (Decorate Sort Undecorate) の手法 (訳注: 指標を付けて、
4024      ソートして、指標を取る) を採用して、短いものから長いものへと、行を
4025      並べる。
4026
4027           awk '{print length, $0}' /etc/passwd | sort -n | cut -f2- -d' '
4028
4029      一般に、あるデータが ‘sort’ コマンドでは直接ソートできないとか、 効
4030      率が悪いというとき、そうしたデータをソートするのに、この手法が役に
4031      立つ。
4032
4033    • ディレクトリをランダムな順番でで並べる。ただし、各ディレクトリ内の
4034      ファイルについては、 その順番を維持する。一例を挙げると、この方法で
4035      演奏リストを作成すれば、 アルバムはシャッフルするけれど、 各アルバ
4036      ム内の曲は通常のソート順で演奏するといったことが可能になる。
4037
4038           ls */* | sort -t / -k 1,1R -k 2,2
4039
4040    ---------- Footnotes ----------
4041
4042    (1) POSIX 以外のロケールを使用すると (たとえば、‘LC_ALL’ を ‘en_US’ に
4043 設定すると)、‘sort’ の出力が、見慣れない順序でソートされたものになるかも
4044 しれない。 その場合は、環境変数 ‘LC_ALL’ を ‘C’ にすればよい。 注意すべ
4045 きは、‘LC_COLLATE’ だけを設定したのでは、二つの問題が生じてしまうという
4046 ことだ。 一つは、‘LC_ALL’ も設定されている場合、‘LC_COLLATE’ は無効だと
4047 いうこと。二つ目は、‘LC_CTYPE’ が (‘LC_CTYPE’ が設定されていないときは、
4048 ‘LANG’ が) ‘LC_COLLATE’ と矛盾する値に設定されている場合、動作が未定義だ
4049 ということである。 たとえば、‘LC_CTYPE’ が ‘ja_JP.PCK’ であるのに、
4050 ‘LC_COLLATE’ が ‘en_US.UTF-8’ の場合、‘sort’ の動作は未定義なのである。
4051
4052 \1f
4053 File: coreutils-ja.info,  Node: shuf invocation,  Next: uniq invocation,  Prev: sort invocation,  Up: Operating on sorted files
4054
4055 7.2 ‘shuf’: テキストをシャッフルする
4056 ====================================
4057
4058 ‘shuf’ は、入力された行をランダムに並べ替えてから出力することによって、
4059 入力のシャッフルを行う。どの並び替えが出力されるかは、確率的に等しい。
4060
4061    書式:
4062
4063      shuf [OPTION]... [FILE]
4064      shuf -e [OPTION]... [ARG]...
4065      shuf -i LO-HI [OPTION]...
4066
4067    ‘shuf’ には三つの動作モードがあり、それぞれ、入力行をどこから取得する
4068 かが違っている。 デフォルトでは、標準入力から行を読み込む。以下のオプシ
4069 ョンは、動作モードを変更する。
4070
4071 ‘-e’
4072 ‘--echo’
4073      コマンドラインの各オペランドを入力行として扱う。
4074
4075 ‘-i LO-HI’
4076 ‘--input-range=LO-HI’
4077      LO から HI の範囲の符号なしの 10 進整数を 1 行に 1 個含むファイルか
4078      ら入力があったかのように動作する。
4079
4080    ‘shuf’ の他のオプションは、どの動作モードでも、その動作に影響を与える
4081
4082
4083 ‘-n COUNT’
4084 ‘--head-count=COUNT’
4085      最大でも COUNT 行までしか出力しない。デフォルトでは、入力されたすべ
4086      ての行を出力する。
4087
4088 ‘-o OUTPUT-FILE’
4089 ‘--output=OUTPUT-FILE’
4090      出力を、標準出力ではなく、OUTPUT-FILE に書き出す。‘shuf’ は、 入力
4091      をすべて読み込んでから、OUTPUT-FILE をオープンする。従って、 ‘shuf
4092      -o F <F’ や ‘cat F | shuf -o F’ というコマンドを使って、 ファイルを
4093      直接書き変える形でシャッフルしても安全である。
4094
4095 ‘--random-source=FILE’
4096      ランダムデータのソースとして FILE を使用する。 そのランダムデータは
4097      どんな並べ替えになるかを決めるのに使用される。 *Note Random
4098      sources::.
4099
4100 ‘-r’
4101 ‘--repeat’
4102      値の反復出力を行う。別の言い方をすると、置き換えるものについてその
4103      つど選択を行う。 このオプションを使用した場合、出力は入力を並び替え
4104      たものになるのではない。 そうではなく、各出力行がすべての入力からラ
4105      ンダムに選ばれるのである。 このオプションは、たいてい
4106      ‘--head-count’ と組み合わせて使用する。 ‘--head-count’ を指定しない
4107      と、‘shuf’ はいつまでも出力を続けることになる。
4108
4109 ‘-z’
4110 ‘--zero-terminated’
4111      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
4112      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
4113      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
4114      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
4115      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
4116      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
4117      しているのである。
4118
4119    例を挙げる。
4120
4121      shuf <<EOF
4122      A man,
4123      a plan,
4124      a canal:
4125      Panama!
4126      EOF
4127
4128 上記の結果は、こんな出力になるかもしれない。
4129
4130      Panama!
4131      A man,
4132      a canal:
4133      a plan,
4134
4135 同様に、次のコマンドの出力は、
4136
4137      shuf -e clubs hearts diamonds spades
4138
4139 こうなるかもしれない。
4140
4141      clubs
4142      diamonds
4143      spades
4144      hearts
4145
4146 下記は、‘shuf -i 1-4’ というコマンドの出力の一例である。
4147
4148      4
4149      2
4150      1
4151      3
4152
4153 上記のどの例でも、入力行は 4 行である。 従って、入力は 24 とおりに並べ替
4154 えることが可能であり、‘shuf’ が生成するのは、そのどれか一つである。 一般
4155 的に言うと、入力行が N 行なら、N! とおりに (N の階乗、すなわち、
4156 N * (N - 1) * ... * 1 とおりに) 並べ替えて、出力することができる。
4157
4158 それぞれが 0 から 9 までの範囲にある数値を 50 回ランダムに出力するには、
4159 次のようにする。
4160
4161      shuf -r -n 50 -i 0-9
4162
4163 コイン・トス 100 回をシミュレートする。
4164
4165      shuf -r -n 100 -e Head Tail
4166
4167    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4168
4169 \1f
4170 File: coreutils-ja.info,  Node: uniq invocation,  Next: comm invocation,  Prev: shuf invocation,  Up: Operating on sorted files
4171
4172 7.3 ‘uniq’: ファイルから重複を省く
4173 ==================================
4174
4175 ‘uniq’ は、指定された INPUT ファイルにある行を、重複を省いて書き出す。 フ
4176 ァイルが指定されていない場合や、INPUT として ‘-’ が指定されている場合は
4177 、標準入力を対象とする。
4178
4179    書式:
4180
4181      uniq [OPTION]... [INPUT [OUTPUT]]
4182
4183    デフォルトでは、‘uniq’ は入力された行を表示するとき、 隣接する同一行
4184 があれば、出力に重複する行が現れないように、最初の行だけを残して、 残り
4185 の行を捨ててしまう。また、オプションによっては、重複しない行を捨てること
4186 や、 すべての隣接する同一行を捨てることもできる。
4187
4188    入力はソートされている必要はないが、重複する入力行が検出されるのは、
4189 それが隣接しているときだけである。もし、隣接していない重複行も捨てたいの
4190 なら、 ‘sort -u’ を使うとよいだろう。 *Note sort invocation::.
4191
4192    比較には ‘LC_COLLATE’ ロケール・カテゴリが指定しているルールを使用す
4193 る。
4194
4195    OUTPUT ファイルが指定されていない場合、‘uniq’ は標準出力に書き出す。
4196
4197    このプログラムでは以下のオプションが使用できる。参照: *note Common
4198 options::.
4199
4200 ‘-f N’
4201 ‘--skip-fields=N’
4202      重複の検査を行う前に、各行のフィールドを N 個スキップする。その行に
4203      N 個より少ないフィールドしかない場合は、比較に空の文字列を使用する
4204      。 フィールドとは、少なくとも 1 個以上のスペースやタブで間を区切ら
4205      れた、スペースやタブを含まない文字の連続である。
4206
4207      互換性のために、‘uniq’ は ‘-N’ という旧来のオプション書式をサポート
4208      している。 新しいスクリプトでは、‘-f N’ の方を使うべきである。
4209
4210 ‘-s N’
4211 ‘--skip-chars=N’
4212      重複の検査を行う前に、N 文字スキップする。 その行に N 個より少ない
4213      文字しかない場合は、比較に空の文字列を使用する。 フィールドをスキッ
4214      プするオプションと、文字をスキップするオプションの両方を使っている
4215      場合は、 フィールドのスキップが先に行われる。
4216
4217      POSIX 1003.1-2001 に準拠していないシステムでは、‘uniq’ が ‘+N’ とい
4218      う旧来のオプションの書式をサポートしている。 この旧来の書式は、環境
4219      変数 ‘_POSIX2_VERSION’ を使えば、コントロールできるが (*note
4220      Standards conformance::)、 移植を考慮したスクリプトでは、この環境変
4221      数に動作が依存するコマンドの使用は、避けた方がよい。 たとえば、
4222      ‘uniq +10’ ではなく、‘uniq ./+10’ や ‘uniq -s 10’ を使うべきだ。前
4223      者では、‘+10’ が、オプションかファイル名か、まぎらわしいからである
4224      。
4225
4226 ‘-c’
4227 ‘--count’
4228      各行に出現回数を付けて表示する。
4229
4230 ‘-i’
4231 ‘--ignore-case’
4232      行を比較するとき、アルファベットの大文字小文字を区別しない。
4233
4234 ‘-d’
4235 ‘--repeated’
4236      重複していない行を除去する。このオプションを単独で使った場合、
4237      ‘uniq’ は、連続する同一行のうち、最初の 1 行だけを表示し、それ以外
4238      の何も表示しない。
4239
4240 ‘-D’
4241 ‘--all-repeated[=DELIMIT-METHOD]’
4242      入力行のうち、連続する同一行の二行目以降を除去せず、重複していない
4243      行だけを除去する。 このオプションが役に立つのは、主として、大文字小
4244      文字を無視するとか、 選択したフィールドのみを比較するとかいった、他
4245      のオプションと組み合わせて使うときである。 長い書式のオプションで使
4246      用できる DELIMIT-METHOD は、 省略可能であり、指定した場合は、重複行
4247      のグループ間の区切り方を指示することになる。 DELIMIT-METHOD は、以
4248      下の一つでなければならない。
4249
4250      ‘none’
4251           重複行のグループ間に、区切りの印を置かない。‘--all-repeated’
4252           (‘-D’) とのみ指定するのと同じことである。
4253
4254      ‘prepend’
4255           重複行の各グループの前に改行を出力する。 ‘--zero-terminated’
4256           (‘-z’) を指定している場合は、 区切りの印として改行の代わりに、
4257           ゼロバイト (ASCII NUL) を使用する。
4258
4259      ‘separate’
4260           重複行のグループ間を 1 個の改行で分離する。これは、‘prepend’ を
4261           使うのとほぼ同じだが、最初のグループの前に区切りの印を挿入しな
4262           いのが異なっている。 それ故、ユーザが出力を直接見る場合に、よ
4263           り適しているかもしれない。‘--zero-terminated’ (‘-z’) を指定し
4264           ている場合は、 区切りの印として改行の代わりに、ゼロバイト
4265           (ASCII NUL) を使用する。
4266
4267      注意していただきたいが、グループ同士を改行で分離しているとき、 入力
4268      ストリームに複数の空行があると、出力がまぎらわしいものになる。 これ
4269      を避けるには、入力を ‘tr -s '\n'’ でフィルタリングして、 複数の空行
4270      をなくせばよい。
4271
4272      このオプションは、GNU による拡張である。
4273
4274 ‘--group[=DELIMIT-METHOD]’
4275      すべての行を出力し、他と区別される各グループの間に区切りを入れる。
4276      ‘--zero-terminated’ (‘-z’) を指定している場合は、 区切りの印として
4277      改行の代わりに、ゼロバイト (ASCII NUL) を使用する。 DELIMIT-METHOD
4278      は省略可能であり、指定した場合は、グループ間の区切り方を指示するこ
4279      とになる。 DELIMIT-METHOD は、以下の一つでなければならない。
4280
4281      ‘separate’
4282           他と区別されるグループを 1 個の区切りの印で分離する。 これが、
4283           何も指定されていないときの、デフォルトの区切り方であり、 出力
4284           をユーザに直接見せる場合に適している。
4285
4286      ‘prepend’
4287           他と区別される各グループの前に区切りの印を出力する。
4288
4289      ‘append’
4290           他と区別される各グループの後ろに区切りの印を出力する。
4291
4292      ‘both’
4293           他と区別される各グループの前後に区切りの印を出力する。
4294
4295      注意していただきたいが、グループ同士を改行で分離しているとき、 入力
4296      ストリームに複数の空行があると、出力がまぎらわしいものになる。 これ
4297      を避けるには、入力を ‘tr -s '\n'’ でフィルタリングして、 複数の空行
4298      をなくせばよい。
4299
4300      このオプションは、GNU による拡張である。
4301
4302 ‘-u’
4303 ‘--unique’
4304      重複する入力行のグループを表示するときは (訳注: すなわち、
4305      ‘--all-repeated’ (‘-D’) オプションを使用しているときは)、グループの
4306      最後の行を表示しない。 このオプションを単独で使用する場合は、ユニー
4307      クな (訳注: この場合は、同一行が連続していないという意味) 行だけを
4308      表示し、それ以外の何も表示しない。
4309
4310 ‘-w N’
4311 ‘--check-chars=N’
4312      各行で (フィールドや文字をスキップする指定があれば、スキップした後
4313      で) 文字を何個まで比較するかを指定する。デフォルトでは、行の残り全
4314      部が比較の対象になる。
4315
4316 ‘-z’
4317 ‘--zero-terminated’
4318      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
4319      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
4320      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
4321      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
4322      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
4323      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
4324      しているのである。 ‘-z’ オプションを使用した場合、改行文字はフィー
4325      ルド・セパレータ扱いになる。
4326
4327    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4328
4329 \1f
4330 File: coreutils-ja.info,  Node: comm invocation,  Next: ptx invocation,  Prev: uniq invocation,  Up: Operating on sorted files
4331
4332 7.4 ‘comm’: ソート済みの二つのファイルを一行づつ比較する
4333 ========================================================
4334
4335 ‘comm’ は、二つの入力ファイルの共通する行と独自な行を、標準出力に区別し
4336 て書き出す。 ‘-’ というファイル名は、標準入力を意味している。
4337
4338    書式:
4339
4340      comm [OPTION]... FILE1 FILE2
4341
4342    入力ファイルは、‘comm’ に渡す前に、‘LC_COLLATE’ のロケールによって規
4343 定されている照合順序でソートされていなければならない。 入力ファイルが改
4344 行以外の文字で終わっている場合は、自動的に改行が追加される。 ‘sort’ コマ
4345 ンドをオプションなしで実行すると、‘comm’ の入力にふさわしいファイルが必
4346 ず得られる。
4347
4348    オプションを付けずに実行すると、‘comm’ は 3 列の出力を生成する。 1 列
4349 目は FILE1 にのみある行であり、2 列目は FILE2 にのみある行、そして 3 列
4350 目は両方のファイルに共通する行である。各列は、1 個のタブ文字で区切られる
4351
4352
4353    ‘-1’, ‘-2’, ‘-3’ というオプションは、対応する列 (と区切り記号) を表示
4354 しないようにする。 オプションについては、「共通オプション」の章も参照す
4355 ること。 *note Common options::.
4356
4357    比較のための他のユーティリティとは違って、‘comm’ の終了ステータスは、
4358 比較結果の如何によらない。‘comm’ は、正常終了すると 0 の終了コードを返す
4359 。 エラーがあれば、0 以外のステータスで終了する。
4360
4361    ‘--check-order’ を指定した場合、入力がソートされていないと、 エラーメ
4362 ッセージを出して、実行を中断する。‘--nocheck-order’ オプションを指定した
4363 場合は、入力がソートされていなくても、エラーメッセージを出すことはない。
4364 どちらのオプションも指定されていない場合に、入力がソートされていないとの
4365 診断を下すのは、 片方の入力ファイルにもう一方と対にならない行が見つかっ
4366 たときだけである。 入力ファイルがソートされていないと診断すると、‘comm’
4367 は 0 以外のステータスで終了する (従って、そうした出力は使用するべきでは
4368 ない)。
4369
4370    入力ファイルがきちんとソートされていず、しかも、対にならない行を含む
4371 場合に、 ‘--nocheck-order’ を指定して、そうしたファイルを ‘comm’ で無理
4372 矢理処理しても、何か特定の結果をもたらすことは保証できない。 おそらく出
4373 力は、期待に添わないものになるだろう。
4374
4375 ‘--check-order’
4376      入力ファイルのどちらかの内容がきちんとソートされていないと、 エラー
4377      メッセージを出して、実行に失敗する。
4378
4379 ‘--nocheck-order’
4380      入力ファイルの内容がソートされた順番になっているかどうかを、 どちら
4381      のファイルについてもチェックしない。
4382
4383      その他のオプション。
4384
4385 ‘--output-delimiter=STR’
4386      出力における隣り合う列の間に、デフォルトのタブ文字 1 個ではなく、
4387      STR を出力する。
4388
4389      区切り記号の STR は、空であってはならない。
4390
4391 ‘--total’
4392      最後の行に要約を出力する。
4393
4394      通常の出力と同じように、1 列目は FILE1 にのみある行の合計数、 2 列
4395      目は FILE2 にのみある行の合計数、3 列目は両方のファイルに共通する行
4396      の合計数である。 さらに 4 列目に ‘total’ という文字が追加される。
4397
4398      次の例では、‘comm’ は通常の出力を省略して (‘-123’)、 要約のみを表示
4399      している。
4400
4401           $ printf '%s\n' a b c d e     > file1
4402           $ printf '%s\n'   b c d e f g > file2
4403           $ comm --total -123 file1 file2
4404           1       2       4       total
4405
4406      このオプションは GNU の拡張である (coreutils 8.26 から)。 移植を考
4407      慮したスクリプトで合計数を出したければ、‘wc’ を使用するべきである。
4408      たとえば、上記の例なら、次のようにする。
4409
4410           $ comm -23 file1 file2 | wc -l    # file1 にのみある行の行数
4411           1
4412           $ comm -13 file1 file2 | wc -l    # file2 にのみある行の行数
4413           2
4414           $ comm -12 file1 file2 | wc -l    # 両方のファイルに共通する行の行数
4415           4
4416
4417 ‘-z’
4418 ‘--zero-terminated’
4419      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
4420      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
4421      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
4422      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
4423      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
4424      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
4425      しているのである。
4426
4427 \1f
4428 File: coreutils-ja.info,  Node: ptx invocation,  Next: tsort invocation,  Prev: comm invocation,  Up: Operating on sorted files
4429
4430 7.5 ‘ptx’: パミューテド・インデックスを作成する
4431 ===============================================
4432
4433 ‘ptx’ の基本的な働きは、テキストファイルを読み込んで、 パミューテド・イ
4434 ンデックスを作成することである。パミューテド・インデックスというのは、 各
4435 キーワードに前後の文脈を付けて索引項目にするインデックスのことだ。
4436
4437    (訳注: パミューテド・インデックスは、KWIC (Key Word In Context) イン
4438 デックスとも言われる。簡単に言えば、本文にあるとおり、 キーワードに前後
4439 の文脈を付けて項目として立てる索引のことである。たとえば、"The cow
4440 jumped over the moon." という文があるとしよう。今、キーワードを角カッコ
4441 ([]) で示すとすると、‘ptx’ による一番簡単なパミューテド・インデックスの
4442 作成では、 この文から、
4443
4444      [The] cow jumped over the moon.
4445      The [cow] jumped over the moon.
4446      The cow [jumped] over the moon.
4447      The cow jumped [over] the moon.
4448      The cow jumped over [the] moon.
4449      The cow jumped over the [moon].
4450
4451 という、キーワードの位置だけが違う 6 個の索引項目が作られ、 キーワードに
4452 よってソートされて、出力される。 「パミューテド (permuted)」というのは、
4453 文中でキーワードが順番に移動するのを、 円順列 (cyclic permutation) に見
4454 立てているかららしい。 「順列索引」と訳されることもある。
4455
4456    上記の文を cow.txt というファイルに保存し、それに対して ‘-A’ オプショ
4457 ンのみを付けて ‘ptx’ を実行してみよう。 その出力は、次のようになる。出力
4458 された行のほぼ中央にある (すなわち、少し長めの空白の後ろの) 単語がキーワ
4459 ードである。 大文字小文字を区別してアルファベット順に並んでいるのが、お
4460 わかりになるだろう。 各行頭にあるのは、‘-A’ オプションによって生成された
4461 参照箇所情報 (ファイル名と行番号) である。
4462
4463      $ echo "The cow jumped over the moon." >cow.txt
4464      $ ptx -A cow.txt
4465      cow.txt:1:  .                        The cow jumped over the moon
4466      cow.txt:1:                     The   cow jumped over the moon.
4467      cow.txt:1:                 The cow   jumped over the moon.
4468      cow.txt:1: The cow jumped over the   moon.
4469      cow.txt:1:          The cow jumped   over the moon.
4470      cow.txt:1:     The cow jumped over   the moon.
4471
4472    パミューテド・インデックスの代表的な例としては、 英語などの聖書の巻末
4473 に付属している文脈付きの語句索引、「コンコーダンス」を挙げることができる
4474 。 実際、この文書でもコンコーダンスをパミューテド・インデックスの同義語
4475 として使用している。 なお、この ‘ptx’ プログラムは、日本語に対応していな
4476 い。)
4477
4478    ‘ptx’ 実行の書式は次のうちのどちらかである。
4479
4480      ptx [OPTION ...] [FILE ...]
4481      ptx -G [OPTION ...] [INPUT [OUTPUT]]
4482
4483    ‘-G’ (または、それと等価な ‘--traditional’) オプションを指定すると、
4484 GNU によるすべての拡張が無効になり、従来のモードで動作するようになる。 従
4485 って、いくつかの制限が課されるようになり、プログラムのオプションのデフォ
4486 ルトの値がいくつか変更される。 ‘-G’ が指定されていない場合は、GNU による
4487 拡張が常に有効になる。 ‘ptx’ に対する GNU の拡張については、この文書では
4488 折に触れて説明している。 拡張の詳細なリストについては、「GNU による
4489 ‘ptx’ の拡張」の節を御覧になっていただきたい。 *Note Compatibility in
4490 ptx::.
4491
4492    個々のオプションについては、以下に続く節で説明する。
4493
4494    GNU による拡張が有効になっていれば、オプションの後ろに 0 個以上の
4495 FILE を指定することができる。FILE を一つも指定しない場合は、標準入力が読
4496 み込まれる。 FILE を 1 個以上指定した場合、それは入力ファイルの名前であ
4497 り、 入力ファイルはすべて順番に、あたかもすべてのファイルが結合されてい
4498 るかのように読み込まれる。 とは言え、各ファイル同士は文脈的に完全に分離
4499 しており、 参照箇所情報の自動作成を指定している場合に、参照箇所のファイ
4500 ル名や行番号が指し示すのは、 個々の入力テキストファイルのそれである。 ど
4501 の場合でも、‘ptx’ は、パミューテド・インデックスを標準出力に出力する。
4502
4503    GNU による拡張が有効になっていない場合、すなわち、プログラムが従来モ
4504 ードで動作する場合は、 オプションのほかに 0 から 2 個のパラメータを指定
4505 できる。パラメータがない場合、 プログラムは標準入力を読み込んで、標準出
4506 力にパミューテド・インデックスを出力する。 パラメータが 1 個だけの場合、
4507 それが示しているのは、標準入力の代わりに読み込まれるテキストファイル (訳
4508 注: 上記書式の INPUT) の名前である。 パラメータが二つある場合、それぞれ
4509 が示しているのは、読み込み対象の INPUT ファイルと出力先の OUTPUT ファイ
4510 ルの名前だ。 この場合、二番目のパラメータによって指定されたファイルの元
4511 の内容が破壊されることに、 くれぐれも気をつけていただきたい。この動作は
4512 、System V の ‘ptx’ との互換性を維持するために必要になっているものだが、
4513 通常 GNU の規格では、オプションによって指定されるのではない出力パラメー
4514 タを、使用しないように勧めている。
4515
4516    オプションの値や入力テキストファイルとして指定するいかなるファイルに
4517 対しても、 ファイル名の代わりに 1 個のダッシュ ‘-’ を使用することができ
4518 る。 その場合は、標準入力が使われることになる。もっとも、この習慣をプロ
4519 グラム 1 回の起動につき 1 回以上使うのは、たぶん理屈に合わない。
4520
4521 * Menu:
4522
4523 * General options in ptx::   プログラム全体の動作に関係するオプション。
4524 * Charset selection in ptx:: 使用している文字セットについて。
4525 * Input processing in ptx::  入力のフィールドと文脈、及びキーワードの選択。
4526 * Output formatting in ptx:: 出力フォーマットのタイプ、及びフィールドの幅。
4527 * Compatibility in ptx::     
4528
4529 \1f
4530 File: coreutils-ja.info,  Node: General options in ptx,  Next: Charset selection in ptx,  Up: ptx invocation
4531
4532 7.5.1 一般オプション
4533 --------------------
4534
4535 ‘-G’
4536 ‘--traditional’
4537      すでに述べたように、このオプションは ‘ptx’ に対する GNU による拡張
4538      のすべてを無効にして、動作を従来モードに切り替える。
4539
4540 ‘--help’
4541      簡単なヘルプメッセージを標準出力に表示し、それ以上の処理をせずに終
4542      了する。
4543
4544 ‘--version’
4545      プログラムのバージョンを標準出力に表示し、それ以上の処理をせずに終
4546      了する。
4547
4548    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4549
4550 \1f
4551 File: coreutils-ja.info,  Node: Charset selection in ptx,  Next: Input processing in ptx,  Prev: General options in ptx,  Up: ptx invocation
4552
4553 7.5.2 ‘ptx’ が使用する文字セット
4554 --------------------------------
4555
4556 現在の設定では、‘ptx’ プログラムは、入力ファイルが符号化に 8-bit の ISO
4557 8859-1 コード (Latin-1 文字セットとも言われる) を使用していると見なすよ
4558 うになっている。 ただし、MS-DOS 用にコンパイルされている場合は別で、 そ
4559 の場合は、IBM-PC の文字セットが使用される (GNU の ‘ptx’ が MS-DOS マシン
4560 で使えるかどうか、今ではわからないけれど)。 7-bit ASCII と比べると、ISO
4561 8859-1 の文字セットは、アルファベットの部分が異なっている。 そのため、正
4562 規表現におけるマッチングの振る舞いが変わってくる。 キーワードに対するデ
4563 フォルトの正規表現が (訳注: つまり、GNU の拡張が有効なときの ‘\w+’ が)、
4564 英語で使用しない文字や、ウムラウトやアクセントのような発音区別符の付いた
4565 文字を受け入れることになるのである。 とは言え、キーワードのソート方法は
4566 今だに大雑把であり、使用している文字セットの順序にきわめて盲目的に従って
4567 いる。
4568
4569 ‘-f’
4570 ‘--ignore-case’
4571      ソートするとき、小文字を大文字と同じものとして扱う。
4572
4573 \1f
4574 File: coreutils-ja.info,  Node: Input processing in ptx,  Next: Output formatting in ptx,  Prev: Charset selection in ptx,  Up: ptx invocation
4575
4576 7.5.3 単語の選択と入力の処理
4577 ----------------------------
4578
4579 ‘-b FILE’
4580 ‘--break-file=FILE’
4581
4582      このオプションを使えば、単語を構成するのはどんな文字かを、‘-W’ とは
4583      別のやり方で定義することができる。このオプションでファイルを指名し
4584      、 そこに、単語の構成要素になることができない文字のリストを入れてお
4585      くのである。 このファイルは、“Break file” と呼ばれる。Break file に
4586      含まれていないいかなる文字も、単語の構成要素になるわけだ。‘-b’ と
4587      ‘-W’ の両方のオプションが指定されている場合は、‘-W’ の方が優先され
4588      、‘-b’ は無視される。
4589
4590      GNU の拡張が有効になっているとき、改行を単語区切り文字 (break
4591      character) にしない唯一の方法は、単語区切り文字をすべて Break file
4592      に書き込み、 そこに改行を全く含めないことである。Break file 末尾の
4593      改行も除かなければならない。 GNU の拡張が無効な場合、スペース、タブ
4594      、改行は、それが Break file に含まれていなくても、常に単語区切り文
4595      字と見なされる。
4596
4597 ‘-i FILE’
4598 ‘--ignore-file=FILE’
4599
4600      このオプションで指名するファイルには、 出力するコンコーダンスでキー
4601      ワードとして採用しない単語のリストを入れておく。 このファイルは、
4602      “Ignore file” と呼ばれる。 このファイルは、1 行 1 単語の形式であり
4603      、単語の分離は常に行末によって行われて、 ‘-S’ オプションの値の影響
4604      を受けることはない。
4605
4606 ‘-o FILE’
4607 ‘--only-file=FILE’
4608
4609      このオプションで指名するファイルには、 出力するコンコーダンスでキー
4610      ワードとして採用する単語のリストを入れておく。 このファイルに書かれ
4611      ていないどんな単語も、キーワードとして採用されることはない。 このフ
4612      ァイルは、“Only file” と呼ばれる。 このファイルは、1 行 1 単語の形
4613      式であり、単語の分離は常に行末によって行われて、 ‘-S’ オプションの
4614      値の影響を受けることはない。
4615
4616      Only file として使われるデフォルトのファイルは存在しない。Only file
4617      と Ignore file の両方が指定されている場合に、ある単語がキーワードと
4618      見なされるのは、 その単語が Only file に存在し、しかも Ignore file
4619      に存在しないときだけである。
4620
4621 ‘-r’
4622 ‘--references’
4623
4624      各入力行において、行頭にあるホワイトスペース以外の文字の連続を参照
4625      箇所情報 (訳注: たとえば、ファイル名、ページ番号、行番号など) とし
4626      て扱うようにする。この参照箇所情報は、その入力行がどこにあるかを、
4627      作成されるパミューテド・インデックス中で示すために用いられる。 参照
4628      箇所情報の生成についての詳細は、次節「出力のフォーマット」を御覧い
4629      ただきたい。 *Note Output formatting in ptx::. このオプションを使用
4630      すると、‘-S’ オプションのデフォルトの値が変更されることになる (訳注
4631      : すなわち、GNU の拡張が有効な場合も、‘-S’ オプションのデフォルト値
4632      が文末ではなく、行末になる)。
4633
4634      このオプションを使用したとき、‘ptx’ プログラムは、参照箇所情報が出
4635      力される文脈に混入しないようにするが、 その試みはそれほど徹底したも
4636      のではない。しかし、文脈が改行できちんと終止していれば、 ‘ptx’ はそ
4637      の試みに成功する。もし、‘-r’ オプションが ‘-S’ オプションのデフォル
4638      ト値とともに使われているか、 あるいは、GNU の拡張が無効になっている
4639      ならば、この条件は必ず満たされることになる。 従って、その場合は、参
4640      照箇所情報が出力される文脈からきちんと分離される。
4641
4642      (訳注: 文脈 (context) というのは、 出力については、キーワードとその
4643      前後と考えておけばよいが、入力について言うと、 ‘ptx’ が操作の対象に
4644      する本文の単位 — 入力のまとまり — を指すことになる。 ‘-S’ の値によ
4645      って、普通は文か、行になる。)
4646
4647 ‘-S REGEXP’
4648 ‘--sentence-regexp=REGEXP’
4649
4650      このオプションでは、行の終わり、または文の終わりを示す正規表現を指
4651      定する。
4652
4653      (訳注: もう少し説明すると、このオプションで指定するのは、 入力を何
4654      で区切るかということである。改行で区切れば、いわゆる行が、‘ptx’ の
4655      操作の対象となる入力のまとまり (入力の単位) になり、 ピリオドなどで
4656      区切れば、いわゆる文が、入力のまとまりになる。 このまとまりが ‘ptx’
4657      にとっての文脈でもある。 ただし、出力では、文脈のすべてが表示される
4658      とはかぎらない。 なお、そうしたければ、行末や文末以外で入力を区切る
4659      こともできる。)
4660
4661      実際のテキストでは、ここで指定される正規表現のみが、 行の終わりや文
4662      の終わりの指標として使われているとはかぎらない。 また、入力の区切り
4663      に何を指定しようとも、このオプションの外で特別な意味を持つことはな
4664      い (訳注: すなわち、オプション ‘-A’, ‘-i’, ‘-o’ などには影響が及ば
4665      ない)。デフォルトでは、GNU の拡張が有効なとき、‘-r’ オプションが指
4666      定されていなければ、文の終わりの方が入力の区切りとして使われる。 そ
4667      の場合は、GNU Emacs から取り込まれた次の正規表現が使用される。
4668
4669           [.?!][]\"')}]*\\($\\|\t\\|  \\)[ \t\n]*
4670
4671      GNU の拡張が無効になっている場合や、‘-r’ オプションが指定されている
4672      場合は、 行の終わりの方が入力の区切りとして使用される。 その場合、
4673      デフォルトの正規表現は、単に次のものである。
4674
4675           \n
4676
4677      空の REGEXP を使用するのは、行末や文末の認識を全く無効にするのと同
4678      じである。 その場合、ファイル全体が、たった 1 個の長い行、あるいは
4679      、長い文と見なされることになる。 ユーザとしては、オプション ‘-F ""’
4680      を使用して、省略の印の生成も全く行わないようにしたくなるかもしれな
4681      い。 *Note Syntax of Regular Expressions: (emacs)Regexps.
4682
4683      キーワードがたまたま入力行や入力文の先頭近くにあると、 出力する文脈
4684      行の行頭に、使用しない領域が生ずることがよくある。 また、キーワード
4685      が入力行や入力文の末尾近くにあると、 出力する文脈行の行末に、使用し
4686      ない領域がしばしば生ずる。 ‘ptx’ プログラムは、その文脈を折り返して
4687      、そうした不使用領域を埋めようと試みる。 すなわち、その入力行や入力
4688      文の後続する部分 (TAIL) を使って、 出力する行の左にある不使用領域を
4689      埋め、その入力行や入力文の先行する部分 (HEAD) を使って、出力する行
4690      の右にある不使用領域を埋めるのである。
4691
4692      このオプションの引数中では、ユーザーの便宜のために、 C 言語由来のよ
4693      く使うバックスラッシュ・エスケープシーケンスの多くが、‘ptx’ そのも
4694      のによって認識され、対応する文字に変換されるようになっている。
4695
4696 ‘-W REGEXP’
4697 ‘--word-regexp=REGEXP’
4698
4699      このオプションでは、各キーワードとなる単語とはどのようなものかを示
4700      す正規表現を指定する。 デフォルトでは、GNU の拡張が有効になっていれ
4701      ば、単語とはアルファベットの文字の連続である。 すなわち、使用される
4702      正規表現は ‘\w+’ だ。 GNU の拡張が無効な場合、デフォルトで単語と見
4703      なされるのは、 何であれ、スペース、タブ、改行で区切られているもので
4704      ある。 この場合、使用される正規表現は ‘[^ \t\n]+’ になる。
4705
4706      REGEXP に空の文字列を指定するのは、このオプションを使用しないのと同
4707      じことである。 *Note Syntax of Regular Expressions: (emacs)Regexps.
4708
4709      このオプションの引数中では、ユーザーの便宜のために、 C 言語で見られ
4710      るような、よく使うバックスラッシュ・エスケープシーケンスの多くが、
4711      ‘ptx’ そのものによって認識され、対応する文字に変換されるようになっ
4712      ている。
4713
4714 \1f
4715 File: coreutils-ja.info,  Node: Output formatting in ptx,  Next: Compatibility in ptx,  Prev: Input processing in ptx,  Up: ptx invocation
4716
4717 7.5.4 出力のフォーマット
4718 ------------------------
4719
4720 出力のフォーマットを決めるのは、主として ‘-O’ と ‘-T’ オプションだが、 両
4721 者については、以下のオプション一覧で説明している。‘-O’ も ‘-T’ も指定さ
4722 れず、しかも、GNU の拡張が有効な場合、‘ptx’ プログラムは、 ダム端末に適
4723 した出力フォーマットを選択する。 各キーワードは一行の中央に表示され、前
4724 後の文脈がその左右に出力される。 コンコーダンスとしての出力が一目でわか
4725 るように (訳注: すなわち、どれがキーワードで、どれがその前後の語句かわか
4726 りやすいように)、 各フィールドはきちんと揃えられる。おまけの機能として、
4727 次のものがある。 参照箇所情報の自動作成が ‘-A’ オプションによって選択さ
4728 れ、 参照箇所が左側の文脈の前に表示される場合には (すなわち、‘-R’ オプシ
4729 ョンが選択されていない場合には)、 参照箇所の後ろにコロンが追加される。こ
4730 うしておくと、参照箇所を GNU Emacs の ‘next-error’ 処理にうまく渡せるよ
4731 うになるのである。 このデフォルトの出力フォーマットでは、改行やタブのよ
4732 うなホワイトスペース文字は、 それぞれ単にただ 1 個のスペースに変換される
4733 だけであり、 連続するスペースをわざわざ圧縮するようなことは行われない。
4734 この動作は、将来変更されるかもしれない。そうしたホワイトスペース文字を除
4735 いて、 使用している 256 文字からなる文字セット中のほかのすべての文字は、
4736 入力から出力へと手を加えずにそのまま送り出される。
4737
4738    出力フォーマットは、以下のオプションによって、さらに制御される。
4739
4740 ‘-g NUMBER’
4741 ‘--gap-size=NUMBER’
4742
4743      出力行の各フィールドは、ホワイトスペースによって区切られるが、 その
4744      フィールド同士の間隔の最小サイズを指定する。
4745
4746 ‘-w NUMBER’
4747 ‘--width=NUMBER’
4748
4749      最終的に出力される各行の最大長を指定する。 参照箇所を使用する際、そ
4750      の長さが最大長に含まれるかどうかは、 ‘-R’ オプションを付けるか付け
4751      ないかよって決まる。 ‘-R’ オプションを指定しない場合、 すなわち、参
4752      照箇所が左の文脈より前に表示される場合は、すべての参照箇所中の最大
4753      長が、 出力行の最大長の長さの内に含まれることになる。‘-R’ オプショ
4754      ンを指定した場合、すなわち、参照箇所が右の文脈より後に表示される場
4755      合は、 参照箇所や、それに先行するフィールドの区切りが占める領域は、
4756      出力行の最大長の長さに含まれない。
4757
4758 ‘-A’
4759 ‘--auto-reference’
4760
4761      参照箇所情報の自動生成を選択する。 ファイル名と行番号からなる参照箇
4762      所が自動的に生成されて、各入力行に付くことになる。 ファイル名と行番
4763      号は 1 個のコロンで区切られる。 ただし、標準入力から読み込んでいる
4764      場合は、ファイル名は空になる。 ‘-A’ と ‘-r’ の両方のオプションが指
4765      定されている場合は、 入力中にある参照箇所情報が読み込まれた上で本文
4766      から外されることは ‘-r’ 単独の場合と同じだが、出力時に使用されるの
4767      は、自動生成された参照箇所の方である。 すなわち、入力中にある参照箇
4768      所情報は、自動生成されたもので置き換えられる。
4769
4770 ‘-R’
4771 ‘--right-side-refs’
4772
4773      デフォルトの出力フォーマットでは、‘-R’ オプションを使用しない場合、
4774      ‘-r’ や ‘-A’ オプションの働きによって生成される参照箇所は、 出力行
4775      の左の端、すなわち、左の文脈の前に表示される。それに対して、 デフォ
4776      ルトの出力フォーマットで ‘-R’ オプションを指定した場合、 参照箇所が
4777      表示されるのは、各出力行の右端、すなわち、右の文脈の後ろになる。 ほ
4778      かのいかなる出力フォーマットにおいても、基本的に ‘-R’ オプションは
4779      無視されるが (訳注: デフォルト以外の出力フォーマットでは、 ‘-R’ オ
4780      プションがあってもなくても、参照箇所は右端に出力される)、 それでも
4781      、‘-R’ オプションが付いていると、参照箇所の長さが、‘-w’ で指定した
4782      出力行全体の長さの内に入らないという働きだけは残る。
4783
4784      このオプションは、GNU の拡張が無効であるときは、常に自動的に選択さ
4785      れる。
4786
4787 ‘-F STRING’
4788 ‘--flag-truncation=STRING’
4789
4790      このオプションを指定すると、出力に省略があった場合、それを示すため
4791      に文字列 STRING を使用するようになる。ほとんどの出力フィールドは、
4792      理論上では、‘-S’ オプションで何を選択するかによって、現在の行、また
4793      は、現在の文の、先頭や末尾に向かって伸びて行くものである。 しかし、
4794      ‘-w’ オプションによって長さを変更できるとは言え、 出力行には許され
4795      る最大長というものがあり、 その最大長はさらにさまざまな出力フィール
4796      ドで使用する領域に分割されている。 従って、フィールドは、それを収納
4797      する現在の出力行の先頭や末尾を越えて伸ばすことができないために、 切
4798      り詰めなければならないことがあり、そういうときに、省略が行われるの
4799      である。 省略の指標として使用されるデフォルトの文字列は、1 個のスラ
4800      ッシュである。 これは、‘-F /’ と指定した場合と同じだ。
4801
4802      STRING には、‘-F ...’ のように 1 個以上の文字を指定してもよい。 ま
4803      た、STRING が空文字列 (‘-F ""’) の場合には、 省略のフラグは立てられ
4804      ないことになり、従って、省略の指標は一切付加されない。
4805
4806      このオプションの引数中では、ユーザーの便宜のために、 C 言語で見られ
4807      るような、よく使うバックスラッシュ・エスケープシーケンスの多くが、
4808      ‘ptx’ そのものによって認識され、対応する文字に変換されるようになっ
4809      ている。
4810
4811 ‘-M STRING’
4812 ‘--macro-name=STRING’
4813
4814      ‘nroff’ や ‘troff’、あるいは TeX で処理するのにふさわしい出力フォー
4815      マットを生成するとき、 ‘xx’ の代わりに使用する別の文字列 STRING を
4816      指定する。 (訳注: ‘-O’ や ‘-T’ オプションを参照。)
4817
4818 ‘-O’
4819 ‘--format=roff’
4820
4821      出力フォーマットとして、‘nroff’ や ‘troff’ で処理するのに適した形式
4822      を選択する。各出力行は次のようになる。 (訳注: 下記の TAIL と HEAD に
4823      ついては、前節 ‘--sentence-regexp’ オプションの説明の終わりから 2 番
4824      目のパラグラフをご覧いただきたい。 REF は参照箇所である。)
4825
4826           .xx "TAIL" "BEFORE" "KEYWORD_AND_AFTER" "HEAD" "REF"
4827
4828      従って、あとは、出力の整形を担当する roff のマクロ ‘.xx’ を出力ファ
4829      イルに書き込めばよいことになる。この出力フォーマットは、 GNU の拡張
4830      が無効なときのデフォルトである。‘xx’ を別のマクロ名に変更するには、
4831      ‘-M’ オプションを使用すればよい (訳注: ‘-M "xx"’ のように、‘xx’ の
4832      部分のみ指定する)。
4833
4834      この出力フォーマットでは、改行やタブのような非表示文字は、 それぞれ
4835      ただ 1 個のスペースに変換されるだけで、 連続するスペースをわざわざ
4836      圧縮するようなことは行われない。 ダブルクォート文字 ‘"’ はそれぞれ
4837      二重化されるので、 ‘nroff’ や ‘troff’ によって正しく処理される。
4838
4839 ‘-T’
4840 ‘--format=tex’
4841
4842      出力フォーマットとして、TeX で処理するのに適した形式を選択する。 各
4843      出力行は、次のようになる。 (訳注: 下記の TAIL と HEAD については、
4844      前節 ‘--sentence-regexp’ オプションの説明の終わりから 2 番目のパラ
4845      グラフをご覧いただきたい。 REF は参照箇所である。)
4846
4847           \xx {TAIL}{BEFORE}{KEYWORD}{AFTER}{HEAD}{REF}
4848
4849      従って、あとは、出力の整形を担当する ‘\xx’ コマンドの定義を出力ファ
4850      イルに書き込めばよいことになる。 なお、参照箇所の生成が行われていな
4851      い場合、すなわち、‘-A’ オプションも ‘-r’ オプションも指定されていな
4852      い場合には、 各 ‘\xx’ 呼び出しの最後の引数は出力されないことに注意
4853      していただきたい。 ‘xx’ を別のマクロ名に変更するには、‘-M’ オプショ
4854      ンを使用すればよい (訳注: ‘-M "xx"’ のように、‘xx’ の部分のみ指定す
4855      る)。
4856
4857      この出力フォーマットでは、‘$’, ‘%’, ‘&’, ‘#’, ‘_’ のような特殊文字
4858      のいくつかは、自動的にバックスラッシュで保護される。 波カッコ ‘{’,
4859      ‘}’ は、一対のドル記号とバックスラッシュとで保護される (強引に数式
4860      モードにするわけだ)。 バックスラッシュそのものは、‘\backslash{}’ と
4861      いうシーケンスになる。 同形の他の文字と区別するために文字の上下に付
4862      ける発音区別符のうち、 サーカムフレックスとチルダは、それぞれ ‘\^{
4863      }’ と ‘\~{ }’ というシーケンスになる (訳注: 実際には ‘{ }’ の位置に
4864      a なり e なりといった文字が来る)。 使用している文字セット中の他の発
4865      音区別符が付いている文字についても、 可能なかぎり、適切な TeX のシ
4866      ーケンスが生成される。それ以外の文字について言うと、 改行やタブのよ
4867      うな非表示文字や、ASCII の文字セットに属さない他のすべての文字は、
4868      単にただ 1 個のスペースに変換され、連続するスペースをわざわざ圧縮す
4869      るようなことは行われない。 TeX のための特殊文字の処理は以上のような
4870      ものだが、 改善する方法があれば、作者までお知らせいただきたい。
4871
4872 \1f
4873 File: coreutils-ja.info,  Node: Compatibility in ptx,  Prev: Output formatting in ptx,  Up: ptx invocation
4874
4875 7.5.5 GNU による ‘ptx’ の拡張
4876 -----------------------------
4877
4878 このバージョンの ‘ptx’ には、System V の ‘ptx’ には存在しない機能がいく
4879 つかある。 そうした追加機能は、コマンドラインオプションの ‘-G’ を使えば
4880 、働かなくなるが、 ほかのコマンドラインオプションによって上書きされれば
4881 、話は別である。 もっとも、GNU の拡張の中には、上書きによって回復できな
4882 いものもあるので、 GNU の拡張を使いたければ、‘-G’ オプションを最初から使
4883 わないのが、 すっきりした方法だ。以下に、このプログラムと System V の
4884 ‘ptx’ の相違点を挙げておく。
4885
4886    • このプログラムでは、一度に複数の入力ファイルを読み込むことができる
4887      。 また、生成したコンコーダンスは、常に標準出力に書き出される。 そ
4888      れに対して、System V の ‘ptx’ は、ファイルをたった 1 個しか読み込ま
4889      ず、 結果を書き出すのは、標準出力のこともあるが、コマンドに 2 番目
4890      の FILE パラメータが指定されていれば、その FILE に対してである。
4891
4892      オプションで指定しない出力パラメータを持つのは、危険な習慣であり、
4893      GNU では、できるだけ避けるようにしている。従って、‘ptx’ を GNU と
4894      System V のどちらでも、問題なく同じように使いたいなら、入力ファイル
4895      は常に一つしか使わず、 実行結果は常に標準出力に書き出されるものと考
4896      えておいた方がよい。 また、‘ptx’ を使用してアプリケーションを作成す
4897      る場合には、 インストールされている ‘ptx’ で ‘-G’ オプションが使用
4898      できるとわかれば、 ‘ptx’ を呼び出すとき、‘-G’ オプションを必ず付け
4899      るようにしたくなるかもしれない。
4900
4901    • System V の ‘ptx’ で利用できるオプションは、‘-b’, ‘-f’, ‘-g’, ‘-i’,
4902      ‘-o’, ‘-r’, ‘-t’, ‘-w’ だけである。 他のオプションは、すべて GNU の
4903      拡張だが、今この箇条書きで繰り返すことはしない。 なお、オプションの
4904      中には、以下でも述べているように、GNU の拡張が有効になっていると、
4905      効果が少し変わるものもある。
4906
4907    • GNU の拡張のデフォルトでは、コンコーダンス出力のフォーマットは、
4908      ‘troff’ や ‘nroff’ 向けになっていない。 むしろ、ダム端末向けのフォ
4909      ーマットになっている。‘troff’ や ‘nroff’ 向けの出力を選択したかった
4910      ら、‘-O’ オプションを使用すればよい。
4911
4912    • ‘-R’ オプションを使用しないと、 参照箇所の最大長が、出力行全体の長
4913      さから差し引かれる。 GNU の拡張を無効にすると、参照箇所の長さは、出
4914      力行の長さの勘定に入らないことになる。
4915
4916    • GNU の拡張が無効になっていても、256 バイトの文字セットのすべての文
4917      字が — ASCII NUL バイト含めて — 常に入力ファイルから読み込まれて処
4918      理され、 有害な作用をもたらすことはない。それに対して、 System V の
4919      ‘ptx’ は、8-bit の文字を受け付けない。 若干の制御文字も拒否する。ま
4920      た、チルダ ‘~’ も拒否する。
4921
4922    • GNU の拡張が無効になっていても、入力行の長さは、利用できるメモリに
4923      よってしか制限されない。 それに対して、System V の ‘ptx’ が処理の対
4924      象にするのは、 各行に付き最初の 200 文字だけである。
4925
4926    • 単語区切り文字 (break character、単語を構成しない文字) のデフォルト
4927      は、 使用している文字セットにおけるアルファベットのすべての文字 (発
4928      音区別符のあるなしを問わない) 以外のあらゆる文字である。 GNU の拡張
4929      が無効な場合は、単語区切り文字のデフォルトは、スペース、タブ、改行
4930      のみになる。
4931
4932    • このプログラムは、出力行の長さを System V の ‘ptx’ より上手に処理す
4933      る。 GNU の拡張が無効になっている場合、このプログラムは System V の
4934      ‘ptx’ の動作をなるべく真似ようとするが、 それでも、System V のちょ
4935      っとした癖のいくつかは、完全には再現できない。
4936
4937    • ユーザは Ignore file と Only file の両方を指定することができる。
4938      System V の ‘ptx’ では、そんなことはできない。
4939
4940 \1f
4941 File: coreutils-ja.info,  Node: tsort invocation,  Prev: ptx invocation,  Up: Operating on sorted files
4942
4943 7.6 ‘tsort’: トポロジカル・ソート
4944 =================================
4945
4946 ‘tsort’ は、指定された FILE に対してトポロジカル・ソートを行う。 入力フ
4947 ァイルが指定されていない場合や、FILE として ‘-’ が指定されている場合は、
4948 標準入力を対象にする。 より詳しい説明や、このコマンドが作成された経緯に
4949 ついては、次節「‘tsort’: 誕生の背景」を御覧になっていただきたい。 *note
4950 tsort background::
4951
4952    書式:
4953
4954      tsort [OPTION] [FILE]
4955
4956    ‘tsort’ は入力を、空白で区切られた 2 個一組の文字列として読み込む。 そ
4957 うした文字列の各組は、部分的な順序を示している。 出力は、与えられた部分
4958 的な順序に対応する全体としての順序である。
4959
4960    例を挙げよう。
4961
4962      tsort <<EOF
4963      a b c
4964      d
4965      e f
4966      b c d e
4967      EOF
4968
4969 (訳注: 上の例は、"a b/c d/e f/b c/d e" という組を与えている。)
4970
4971    出力は、こうなる。
4972
4973      a
4974      b
4975      c
4976      d
4977      e
4978      f
4979
4980    もっと現実的な例を考えてみよう。たくさんの関数をすべて一つのファイル
4981 に書いているとしよう。 しかも、一つを除いて、他のすべての関数を static と
4982 して宣言している。 現在のところ、その例外 (‘main’ ということにする) が、
4983 ファイル中で定義されている最初の関数であり、それが直接呼び出す関数群がそ
4984 れに続き、 さらにその後に、その関数群が呼び出す関数が続く ... という形に
4985 なっている。さて、ここで、プロトタイプを利用することにしたとしよう。 そ
4986 うなると、呼び出される関数のすべてを宣言するか (そのためには、定義の部分
4987 から情報をどっさりコピーしなければならない)、 あるいは、できるだけ多く
4988 の関数が、使用される前に定義されているように、 関数群を並べ替えるか、ど
4989 ちらかを選ばなければならない。 後者の作業を自動化する方法の一つが、各関
4990 数についてそれが直接呼び出す関数のリストを作成することである。 そうした
4991 リストを生成するプログラムはたくさんある。 いわゆるコール・グラフを作成
4992 するプログラムだ。 以下のリストをご覧になっていただきたい。 各行は、左側
4993 の関数が右側の関数を直接呼び出していることを示している。
4994
4995      main parse_options
4996      main tail_file
4997      main tail_forever
4998      tail_file pretty_name
4999      tail_file write_header
5000      tail_file tail
5001      tail_forever recheck
5002      tail_forever pretty_name
5003      tail_forever write_header
5004      tail_forever dump_remainder
5005      tail tail_lines
5006      tail tail_bytes
5007      tail_lines start_lines
5008      tail_lines dump_remainder
5009      tail_lines file_lines
5010      tail_lines pipe_lines
5011      tail_bytes xlseek
5012      tail_bytes start_bytes
5013      tail_bytes dump_remainder
5014      tail_bytes pipe_bytes
5015      file_lines dump_remainder
5016      recheck pretty_name
5017
5018    ここで ‘tsort’ を使用すると、 こうした関数について、上記の後者の要求
5019 を満たすような順番を作成することができる。
5020
5021      example$ tsort call-graph | tac
5022      dump_remainder
5023      start_lines
5024      file_lines
5025      pipe_lines
5026      xlseek
5027      start_bytes
5028      pipe_bytes
5029      tail_lines
5030      tail_bytes
5031      pretty_name
5032      write_header
5033      tail
5034      recheck
5035      parse_options
5036      tail_file
5037      tail_forever
5038      main
5039
5040    ‘tsort’ は、入力にループがあれば検出し、 出会った最初のループを標準エ
5041 ラーに書き出す。
5042
5043    一般に、ある部分的な順序に対して、唯一の全体的な順序というものは存在
5044 しないことに、 留意していただきたい。上記のコール・グラフの場合で言えば
5045 、 関数 ‘parse_options’ は、‘main’ の前でありさえすれば、 リストのどこに
5046 でも来ることができる。
5047
5048    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
5049 options::.
5050
5051    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5052
5053 * Menu:
5054
5055 * tsort background::         tsort が誕生した経緯。
5056
5057 \1f
5058 File: coreutils-ja.info,  Node: tsort background,  Up: tsort invocation
5059
5060 7.6.1 ‘tsort’: 誕生の背景
5061 -------------------------
5062
5063 ‘tsort’ が存在しているのは、Unix のリンカのごく初期のバージョンでは、 一
5064 つのアーカイブファイルの処理をたった一回しか行わず、 それも、ファイルの
5065 最初から最後へと順番に見ていくだけだったからである。当時の ‘ld’ は、アー
5066 カイブ中の各オブジェクトを読み込むとき、 そのオブジェクトがプログラムに
5067 必要かどうかの判断を、 リンク作業のその時点でまだ定義されていない何らか
5068 のシンボルを定義しているかどうかを基準にして行っていた。
5069
5070    そのため、アーカイブ中の依存関係には、特別な扱いが必要になった。 たと
5071 えば、‘scanf’ はたぶん ‘read’ を呼んでいる。 それは、リンカがアーカイブ
5072 をたった一回最初から順番に読んで行くとき、‘scanf.o’ が ‘read.o’ より前に
5073 あることが重要だったということである。 なぜなら、そうなっていないと、
5074 ‘scanf’ を呼ぶけれど、‘read’ を呼ばないプログラムでは、‘read’ に対する参
5075 照が、予期に反して "unresolved" になってしまいかねなかったからだ。
5076
5077    この問題に対処する方法は、次のようなものだった。 まず、オブジェクトフ
5078 ァイル同士の依存関係の集合を生成した。 この作業は、‘lorder’ というシェル
5079 スクリプトによって行われていた。 筆者の知るかぎり、現在 GNU では lorder
5080 というツールを提供していないが、 BSD 系のディストリビューションでは、今
5081 でもなお見つけることができる。
5082
5083    次に、この ‘lorder’ の出力に対して ‘tsort’ を実行した。 そして、その
5084 ソートされた結果を使って、アーカイブにオブジェクトを追加する順番を決めた
5085 のである。
5086
5087    こうした作業全体が、1980 年ごろから時代遅れのものになった。 というの
5088 は、Unix のアーカイブは現在ではシンボル・テーブルを内蔵しており (従来は
5089 ‘ranlib’ によって作られていたが、今ではたいてい ‘ar’ そのものによって作
5090 られている)、Unix のリンカはこのシンボル・テーブルを使用して、 アーカイ
5091 ブファイルに対する複数回の読み込みを効率的に行うからである。
5092
5093    ともあれ、これが tsort が誕生した経緯である。 すなわち、当時のリンカ
5094 のアーカイブファイルを取り扱う方法に問題があり、 その問題を解決するため
5095 の工夫だったのだ。 そして、その問題は、その後、別のやり方で解決されるよ
5096 うになったのである。
5097
5098 \1f
5099 File: coreutils-ja.info,  Node: Operating on fields,  Next: Operating on characters,  Prev: Operating on sorted files,  Up: Top
5100
5101 8 フィールド操作
5102 ****************
5103
5104 * Menu:
5105
5106 * cut invocation::           各行の選択した部分を表示する。
5107 * paste invocation::         複数のファイルの各行をマージする。
5108 * join invocation::          共通のフィールドに基づいて行を連結する。
5109
5110 \1f
5111 File: coreutils-ja.info,  Node: cut invocation,  Next: paste invocation,  Up: Operating on fields
5112
5113 8.1 ‘cut’: 各行の選択した部分を表示する
5114 =======================================
5115
5116 ‘cut’ は、各ファイルから各行の一部を抜き出して、標準出力に書き出す。 フ
5117 ァイルが指定されていない場合や、ファイル名として ‘-’ が指定されている場
5118 合は、標準入力を対象とする。
5119
5120    書式:
5121
5122      cut OPTION... [FILE]...
5123
5124    以下のオプション一覧で BYTE-LIST, CHARACTER-LIST, FIELD-LIST と表記さ
5125 れているものは、コンマで区切られた、1 個以上の数字や範囲からなるリストで
5126 ある (範囲は、ダッシュを間に挟む 2 個の数字)。バイト、文字、フィールドは
5127 1 から数える。 不完全な範囲を指定することもでき、‘-M’ は ‘1-M’ と同じこ
5128 とであり、‘N-’ は ‘N’ から行末、あるいは最後のフィールドまでと同じことで
5129 ある。 リストの要素は、繰り返してもよく、部分的に重なり合ってもよく、ど
5130 んな順序で指定してもよい。 ただし、入力中の選択した部分が書き出されるの
5131 は、読み込まれたときと同じ順序であり、 しかも、ただ一度だけである。(訳注
5132 : たとえば、‘-f 3,1,3’ などと指定することはできるが、出力されるときは
5133 field-1, field-3 の順番であり、field-3 が二度出力されることもない。)
5134
5135    このプログラムでは以下のオプションが使用できる。参照: *note Common
5136 options::.
5137
5138 ‘-b BYTE-LIST’
5139 ‘--bytes=BYTE-LIST’
5140      BYTE-LIST で指定された位置にあるバイトのみを選択して、表示する。 タ
5141      ブやバックスペースも他の文字と同様に扱う。 すなわち、そうしたものも
5142      1 バイトを占める。出力用のデリミタ (delimiter、区切りの印) が指定さ
5143      れている場合は (‘--output-delimiter’ の説明を参照)、 選択されたバイ
5144      トからなる範囲同士の間にデリミタ文字列を出力する。
5145
5146 ‘-c CHARACTER-LIST’
5147 ‘--characters=CHARACTER-LIST’
5148      CHARACTER-LIST で指定された位置にある文字のみを選択して、表示する。
5149      現在のところ、‘-b’ と同じだが、プログラムの国際化が進むと、 動作が
5150      変わることになるだろう。タブやバックスペースも他の文字と同様に扱う
5151      。 すなわち、そうしたものも 1 文字と数える。 出力用のデリミタが指定
5152      されている場合は (‘--output-delimiter’ の説明を参照)、 選択された文
5153      字からなる範囲同士の間にデリミタ文字列を出力する。
5154
5155 ‘-f FIELD-LIST’
5156 ‘--fields=FIELD-LIST’
5157      FIELD-LIST で指定されたフィールドのみを選択して、表示する。 フィー
5158      ルドの区切りは、デフォルトではタブ文字 1 個である。 なお、
5159      ‘--only-delimited’ (‘-s’) オプションが指定されていない場合は、 デリ
5160      ミタ文字を全く含まない行も表示する。
5161
5162      一言言っておくと、‘awk’ を使えば、もっと洗練されたフィールド処理が
5163      できるようになる。 たとえば、フィールドの順番を入れ替える、 空白文
5164      字を入れて列が揃うようにしたフィールドを取り扱う、そういったことが
5165      可能になる。 ‘awk’ ならデフォルトで、フィールドの区切りに空白文字の
5166      連続を使用し (そして、フィールドの前後から除去し)、さらに、行頭と行
5167      末の空白を無視してくれるのだ。
5168           awk '{print $2}'      # 2 番目のフィールドを表示する
5169           awk '{print $(NF-1)}' # 最後から 2 番目のフィールドを表示する
5170           awk '{print $2,$1}'   # 最初の 2 フィールドを逆に並べる
5171      ‘cut’ では、任意の順番でフィールドを指定することができるが、 出力は
5172      常にファイル中で出会った順番であることに注意していただきたい。
5173
5174      ありそうにないことだが、‘awk’ が利用できない状況だとしよう。 その場
5175      合は、‘join’ コマンドを使えば、 上記で ‘awk’ がやっているように、空
5176      白文字を処理することができる。
5177           join -a1 -o 1.2     - /dev/null # 2 番目のフィールドを表示する
5178           join -a1 -o 1.2,1.1 - /dev/null # 最初の 2 フィールドを逆に並べる
5179
5180 ‘-d INPUT_DELIM_BYTE’
5181 ‘--delimiter=INPUT_DELIM_BYTE’
5182      ‘-f’ と併せて使うと、入力のフィールド区切りに INPUT_DELIM_BYTE の最
5183      初のバイトが使用される (デフォルトはタブ)。
5184
5185 ‘-n’
5186      マルチバイト文字を分割しない (現在のところ、機能しない)。
5187
5188 ‘-s’
5189 ‘--only-delimited’
5190      ‘-f’ を使うとき、フィールド区切り文字を含まない行の表示をしない。 通
5191      常は、フィールド区切り文字を含まない行は、行全体がそのまま表示され
5192      る。
5193
5194 ‘--output-delimiter=OUTPUT_DELIM_STRING’
5195      ‘-f’ と一緒に使った場合は、出力フィールド間が OUTPUT_DELIM_STRING で
5196      区切られる。 ‘-f’ を指定したときのデフォルトは、入力時のデリミタを
5197      使用することである。 ‘-b’ や ‘-c’ を使用して、(フィールドの範囲では
5198      なく) バイト位置や文字位置の範囲を選択した場合は、 選択されたバイト
5199      の重なり合わない範囲同士の間に OUTPUT_DELIM_STRING が出力される。
5200
5201 ‘--complement’
5202      このオプションは GNU の拡張である。‘-b’, ‘-c’, ‘-f’ オプションで選
5203      択されたバイト、文字、フィールドを含まない部分を選択して、表示する
5204      。 言い換えれば、そうしたオプションによって指定されたバイトや文字や
5205      フィールドは「表示しない」ということだ。 このオプションは、フィール
5206      ドがたくさんあるとき、そのうちの一部を除いたすべてを表示したい場合
5207      に便利である。
5208
5209 ‘-z’
5210 ‘--zero-terminated’
5211      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
5212      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
5213      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
5214      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
5215      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
5216      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
5217      しているのである。
5218
5219    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5220
5221 \1f
5222 File: coreutils-ja.info,  Node: paste invocation,  Next: join invocation,  Prev: cut invocation,  Up: Operating on fields
5223
5224 8.2 ‘paste’: 複数のファイルの各行をマージする
5225 =============================================
5226
5227 ‘paste’ は、指定された各ファイルの行番号が同じ行を、 タブ文字を間にはさ
5228 んで連結して、標準出力に書き出す。 入力ファイルが全く指定されていない場
5229 合や、ファイル名が ‘-’ だった場合は、 標準入力が使用される。
5230
5231    書式:
5232
5233      paste [OPTION]... [FILE]...
5234
5235    たとえば、次のような 2 個のファイルに対して、
5236      $ cat num2
5237      1
5238      2
5239      $ cat let3
5240      a
5241      b
5242      c
5243
5244    各ファイルから行を順番に拾う。
5245      $ paste num2 let3
5246      1       a
5247      2       b
5248              c
5249
5250    片方のファイルの行を二回使う。
5251      $ paste num2 let3 num2
5252      1       a      1
5253      2       b      2
5254              c
5255
5256    標準入力から行を取得して混ぜる。
5257      $ paste - let3 - < num2
5258      1       a      2
5259              b
5260              c
5261
5262    連続する行を、スペースを間にはさんで結合する。
5263      $ seq 4 | paste -d ' ' - -
5264      1 2
5265      3 4
5266
5267    このプログラムでは以下のオプションが使用できる。参照: *note Common
5268 options::.
5269
5270 ‘-s’
5271 ‘--serial’
5272      各ファイルから 1 行づつ取り出して連結するのではなく、 一つのファイ
5273      ルのすべての行をまとめて 1 行に連結する。 上の例のデータを使用する
5274      と、
5275
5276           $ paste -s num2 let3
5277           1       2
5278           a       b       c
5279
5280 ‘-d DELIM-LIST’
5281 ‘--delimiters=DELIM-LIST’
5282      連結する行の区切りに、タブではなく、DELIM-LIST の各文字を順番に使用
5283      する。 DELIM-LIST を使い切ってしまった場合は、最初の文字に戻って使
5284      用して行く。 上記のデータを例に取ると、
5285
5286           $ paste -d '%_' num2 let3 num2
5287           1%a_1
5288           2%b_2
5289           %c_
5290
5291 ‘-z’
5292 ‘--zero-terminated’
5293      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
5294      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
5295      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
5296      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
5297      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
5298      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
5299      しているのである。
5300
5301    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5302
5303 \1f
5304 File: coreutils-ja.info,  Node: join invocation,  Prev: paste invocation,  Up: Operating on fields
5305
5306 8.3 ‘join’: 共通のフィールドに基づいて行を結合する
5307 ==================================================
5308
5309 ‘join’ は、二つの入力ファイルを対象に、同一の共通フィールド (join field)
5310 を持つことで「対」になっている各行を、 1 行にまとめて、標準出力に書き出
5311 す。
5312
5313    書式:
5314
5315      join [OPTION]... FILE1 FILE2
5316
5317    FILE1 と FILE2 の片方は ‘-’、すなわち標準入力であってもよい (両方とも
5318 標準入力は不可)。FILE1 と FILE2 は、 共通フィールドに基づいてソートされ
5319 ているべきである。
5320
5321    通常、ソート順は、‘LC_COLLATE’ のロケールが規定している照合順序である
5322 。 ‘-t’ オプションが指定されていない場合は、両ファイルについて並び方を比
5323 較する際、 ‘sort -b’ の場合と同様に、共通フィールドの先頭にある空白が無
5324 視される。 また、‘--ignore-case’ が指定されている場合は、 ‘sort -f’ と同
5325 様、共通フィールドでアルファベットの大文字と小文字は区別されない。
5326
5327    ‘sort’ の出力を ‘join’ に渡すなら、‘sort’ と ‘join’ が使用するロケー
5328 ルやオプションは首尾一貫していなければならない。 ‘sort -k 1b,1’ のような
5329 コマンドを使用すれば、 デフォルトの共通フィールドに基づいて、ファイルを
5330 ソートすることができる。 しかし、ロケール、共通フィールド、区切り記号、
5331 比較オプションなどにデフォルト以外のものを使用する場合は、 ‘join’ と
5332 ‘sort’ の間で矛盾が起きないように、そうしたものを選択しなければならない
5333 のだ。 ‘join -t ''’ が指定された場合は、行全体が共通フィールドとして考慮
5334 の対象になるが、 これは、sort のデフォルトの動作に対応している。
5335
5336    入力のすべての行が対になっている場合は、GNU による拡張が利用できる。
5337 この場合、並んでいる順番は、対になる二つのフィールドが同じであると判断さ
5338 れるならば、どんな順番でもよい。 ただし、並び方の比較を上述のように行っ
5339 たとき、二つのフィールドが同じだと判断される場合であり、 その場合のみで
5340 ある。例を挙げよう。
5341
5342      $ cat file1
5343      a a1
5344      c c1
5345      b b1
5346      $ cat file2
5347      a a2
5348      c c2
5349      b b2
5350      $ join file1 file2
5351      a a1 a2
5352      c c1 c2
5353      b b1 b2
5354
5355    ‘--check-order’ を指定した場合、入力がソートされていないと、 エラーメ
5356 ッセージを出して、実行を中断する。‘--nocheck-order’ オプションを指定した
5357 場合は、入力がソートされていなくても、エラーメッセージを出すことはない。
5358 どちらのオプションも指定されていない場合に、入力がソートされていないとの
5359 診断を下すのは、 片方の入力ファイルにもう一方と対にならない行が見つかっ
5360 たときだけであり、 それも入力ファイルのどちらも空ではなく、中身を持って
5361 いるときだけである。 入力ファイルがソートされていないと診断すると、
5362 ‘join’ は 0 以外のステータスで終了する (従って、そうした出力は使用するべ
5363 きではない)。
5364
5365    入力ファイルがきちんとソートされていず、しかも、対にならない行を含む
5366 場合に、 ‘--nocheck-order’ を指定して、そうしたファイルを ‘join’ で無理
5367 矢理処理しても、何か特定の結果をもたらすことは保証できない。 おそらく出
5368 力は、期待に添わないものになるだろう。
5369
5370    デフォルトの動作は次のようになっている。
5371    • 共通フィールド (join field) は、各行の最初のフィールドである。
5372    • 入力の各フィールドは、1 個以上の空白 (スペースやタブ) で区切られる
5373      。 行頭の空白は無視される。
5374    • 出力の各フィールドは、1 個のスペースで区切られる。
5375    • 各出力行の構成は、共通フィールド、FILE1 の残りのフィールド、 FILE2
5376      の残りのフィールドの順になる。
5377
5378    このプログラムでは以下のオプションが使用できる。参照: *note Common
5379 options::.
5380
5381 ‘-a FILE-NUMBER’
5382      FILE-NUMBER (‘1’ か ‘2’) のファイルに、もう一方のファイルと対になら
5383      ない行がある場合、 通常の出力のほかに、その行も表示する。
5384
5385 ‘--check-order’
5386      入力ファイルのどちらかの内容がきちんとソートされていないと、 エラー
5387      メッセージを出して、実行に失敗する。
5388
5389 ‘--nocheck-order’
5390      入力ファイルの内容がソートされた順番になっているかどうかを、 どちら
5391      のファイルについてもチェックしない。これが、デフォルトである。
5392
5393 ‘-e STRING’
5394      入力では欠けているフィールドを、出力では STRING で補う。 すなわち、
5395      オプション ‘-1’, ‘-2’, ‘-j’, ‘-o’ などを指定したときに、欠けている
5396      フィールドがそれに当たる。
5397
5398 ‘--header’
5399      各入力ファイルの最初の行をヘッダ行と見なす。ヘッダ行も結合され、 最
5400      初の出力行として表示される。‘-o’ を使って、出力フォーマットを指定し
5401      ている場合は、 ヘッダ行もそのフォーマットに従って出力される。 ヘッ
5402      ダ行は、‘--check-order’ が指定されていても、並び順のチェックを受け
5403      ない。 なお、両ファイルのヘッダ行がマッチしない場合は、 一番目のフ
5404      ァイルのヘッダ・フィールドが使用される。
5405
5406 ‘-i’
5407 ‘--ignore-case’
5408      キーを比較する際、アルファベットの大文字小文字を区別しない。 このオ
5409      プションを使用するときは、 両方の入力ファイルの行が、同じように大文
5410      字小文字を区別せず並んでいなければならない。 そうした順番で並べるに
5411      は、‘sort -f’ を使えばよい。
5412
5413 ‘-1 FIELD’
5414      ファイル 1 では FIELD 番目のフィールドを共通フィールドとする (FIELD
5415      は正の整数)。
5416
5417 ‘-2 FIELD’
5418      ファイル 2 では FIELD 番目のフィールドを共通フィールドとする (FIELD
5419      は正の整数)。
5420
5421 ‘-j FIELD’
5422      ‘-1 FIELD -2 FIELD’ と等価。
5423
5424 ‘-o FIELD-LIST’
5425 ‘-o auto’
5426      キーワードの ‘auto’ が指定されると、 ‘join’ は各ファイルの最初の行
5427      を元にして、出力フォーマットを推測する。 それは、デフォルトの出力フ
5428      ォーマットとほぼ同じだが、 それだけでなく、各行に必ず同数のフィール
5429      ドを出力するようにする。 また、欠けているフィールドがあれば、‘-e’ オ
5430      プションの指定する文字列で補う。 余分なフィールドは除去する。
5431
5432      ‘auto’ が指定されていない場合は、FIELD-LIST のフォーマットに従って
5433      、 各出力行を構成する。FIELD-LIST の各要素は、‘0’ 一文字か、M.N と
5434      いう形を取る。ここで、M はファイル番号 (FILE-NUMBER) であり、‘1’ か
5435      ‘2’ である。N はフィールド番号であり、正の整数である。
5436
5437      ‘0’ というフィールド指定は、共通フィールドを指している。ほとんどの
5438      場合、 ‘0’ というフィールド指定と同じことが、共通フィールドを明示的
5439      に M.N で示すことでも、実現できるだろう。しかしながら、(‘-a’ オプシ
5440      ョンなり ‘-v’ オプションなりを使用して)、対にならない行を表示する場
5441      合、 対にならない行が両方のファイルに存在すると、FIELD-LIST で M.N
5442      をどう使おうとも、共通フィールドを指定できないのだ。‘join’ で共通フ
5443      ィールドの指定が常に可能になるように、POSIX は ‘0’ というフィールド
5444      指定法を考案したのである。
5445
5446      FIELD-LIST の各要素は、コンマ、または空白で区切られる。 区切りに空
5447      白を使用するときは、シェルによって解釈されないように、 たいていの場
5448      合引用符で囲む必要がある。たとえば、コマンド ‘join -o 1.2,2.2’ と
5449      ‘join -o '1.2 2.2'’ は、同じ動作になる。
5450
5451      FIELD-LIST の指定は、すべての出力行に適用される。これは、‘-a’ や
5452      ‘-v’ オプションによって出力されるものにも当てはまる。
5453
5454 ‘-t CHAR’
5455      入出力のフィールドの区切りに、文字 CHAR を使用する。 CHAR は、入力
5456      ファイルに現れる一つ一つが、有意なものとして扱われる。 ‘sort -t
5457      CHAR’ を ‘-b’ なしで実行すれば、 このオプションに対応する順序に行を
5458      並べることができる。 ‘join -t ''’ を指定すると、行全体が共通フィー
5459      ルドとして考慮の対象になり、 これは sort のデフォルトの動作に対応し
5460      ている。 ‘-t '\0'’ を指定すると、ASCII NUL 文字がフィールドの区切り
5461      に使用される。
5462
5463 ‘-v FILE-NUMBER’
5464      通常の出力はせず、FILE-NUMBER (‘1’ か ‘2’ である) のファイルに存在
5465      する、対にならない各行を表示する。
5466
5467 ‘-z’
5468 ‘--zero-terminated’
5469      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
5470      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
5471      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
5472      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
5473      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
5474      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
5475      しているのである。 ‘-z’ オプションを使用した場合、改行文字はフィー
5476      ルド・セパレータ扱いになる。
5477
5478    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5479
5480 \1f
5481 File: coreutils-ja.info,  Node: Operating on characters,  Next: Directory listing,  Prev: Operating on fields,  Up: Top
5482
5483 9 文字操作
5484 **********
5485
5486 以下のコマンドは、個々の文字に対して操作を行う。
5487
5488 * Menu:
5489
5490 * tr invocation::            文字の置換、圧縮、削除を行う。
5491 * expand invocation::        タブをスペースに変換する。
5492 * unexpand invocation::      スペースをタブに変換する。
5493
5494 \1f
5495 File: coreutils-ja.info,  Node: tr invocation,  Next: expand invocation,  Up: Operating on characters
5496
5497 9.1 ‘tr’: 文字の置換、圧縮、削除を行う
5498 ======================================
5499
5500 書式:
5501
5502      tr [OPTION]... SET1 [SET2]
5503
5504    ‘tr’ は標準入力を標準出力にコピーするが、 その際に次の操作の一つを行
5505 う。
5506
5507    • 文字を置換する。置換した結果に同一文字の連続があるときは、それを 1
5508      文字に圧縮することもできる。
5509    • 同一文字の連続を 1 文字に圧縮する。
5510    • 文字を削除する。
5511    • 文字を削除する。さらに、削除した結果に同一文字の連続があるときは、
5512      それを 1 文字に圧縮する。
5513
5514    上記書式の SET1 と (もし、指定しているなら) SET2 の二つの引数には、 順
5515 序が意味を持つ文字の集合を指定する。以下の説明で、それぞれ SET1、SET2 と
5516 呼ばれることになるそうした文字集合こそ、入力中に存在する文字のうちで
5517 ‘tr’ が操作の対象とする文字群である。‘--complement’ (‘-c’, ‘-C’) オプシ
5518 ョンを指定すると、SET1 の代わりにその補集合 (SET1 に含まれないすべての文
5519 字) が使われることになる。
5520
5521    現在のところ、‘tr’ が完全に対応しているのは、シングルバイト文字だけで
5522 ある。 将来は、マルチバイト文字もサポートすることになるだろうが、 そのと
5523 きは、‘-C’ オプションで文字集合の補集合を作り、‘-c’ オプションで値 (訳注
5524 : いわゆる文字コード) の集合の補集合を作ることになるだろう。 この区別が
5525 意味を持つのは、指定する値の中に文字ではないものがあるときだけだが、 そ
5526 ういった事態は、マルチバイト・エンコーディングを使用しているロケールで、
5527 入力にエンコーディング・エラーが含まれるときしか起きそうにない。
5528
5529    このプログラムでは、‘--help’ や ‘--version’ オプションも使える。
5530 *Note Common options::. なお、オプションは、オペランドの前で指定しなけれ
5531 ばならない。
5532
5533    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5534
5535 * Menu:
5536
5537 * Character sets::           文字集合の指定。
5538 * Translating::              ある文字集合の別の文字集合への変換。
5539 * Squeezing and deleting::   文字の削除。
5540
5541 \1f
5542 File: coreutils-ja.info,  Node: Character sets,  Next: Translating,  Up: tr invocation
5543
5544 9.1.1 文字集合の指定
5545 --------------------
5546
5547 SET1 や SET2 引数の書式は、正規表現の書式に似ているが、 正規表現ではなく
5548 、文字のリストにすぎない。 そうした文字列中のほとんどの文字は、単にその
5549 文字自身を表しているだけだが、 便宜のため文字列中では以下に列挙する簡易
5550 記法も使うことができる。 簡易記法によっては、以下で述べているように、
5551 SET1 と SET2 のどちらか一方でしか使えないこともある。
5552
5553 バックスラッシュ・エスケープ
5554
5555      以下のバックスラッシュ・エスケープ・シーケンスを認識する。
5556
5557      ‘\a’
5558           Control-G (ベル).
5559      ‘\b’
5560           Control-H (バックスペース).
5561      ‘\f’
5562           Control-L (フォームフィード).
5563      ‘\n’
5564           Control-J (改行).
5565      ‘\r’
5566           Control-M (復帰).
5567      ‘\t’
5568           Control-I (水平タブ).
5569      ‘\v’
5570           Control-K (垂直タブ).
5571      ‘\OOO’
5572           1 から 3 桁の 8 進数 OOO によって表される値を持つ 8 ビット文字
5573           。 ‘\400’ は、‘\040’ ‘0’ という連続する 2 バイトに解釈されるの
5574           で、注意すること。
5575      ‘\\’
5576           1 個のバックスラッシュ。
5577
5578      上記以外の 1 個の文字がバックスラッシュに続く場合は、その文字として
5579      解釈される。 またバックスラッシュには、特別な意味を打ち消す働きもあ
5580      るので、 ‘[’, ‘]’, ‘*’, ‘-’ をエスケープするのにも使用できる。
5581
5582 範囲指定
5583
5584      ‘M-N’ という表記は、昇順で M から N までのすべての文字に展開される
5585      。 M は文字の照合順序で N より前のものでなければならず、 さもないと
5586      、エラーになる。たとえば、‘0-9’ は ‘0123456789’ と同じである。
5587
5588      System V の書式では、範囲は、角カッコ (square brackets)を使って囲
5589      むことになっているが、 GNU の ‘tr’ はこの書式をサポートしていない。
5590      System V の書式で指定した場合でも、置換が期待どおり行われることもあ
5591      るが、 それは、たいていの場合、角カッコが角カッコに置換されるからで
5592      ある。 そうだとしても、予想外の動作をすることもあるので、 角カッコ
5593      の使用は避けた方がよい。たとえば、‘tr -d '[0-9]'’ は、数字だけでな
5594      く、角カッコも削除してしまう。
5595
5596      昔からよく使われている範囲の指定法の多くが — 正しい用法として認めら
5597      れているものでさえ — 他のシステムで使えるとはかぎらない。 たとえば
5598      、EBCDIC のホストでは、 ‘A-Z’ という範囲の指定をしても、 たいていの
5599      人が予想するような結果は得られないだろう。 なぜなら、そこでは ‘A’ か
5600      ら ‘Z’ までが、ASCII におけるように隣り合ってはいないからである。
5601      POSIX 準拠の ‘tr’ を使うことができるならば、この問題を回避する最善
5602      の方法は、文字クラスを使用することである (下記参照)。それができない
5603      場合は、範囲の要素を一つ一つ書き込むのが、 一番可搬性のある方法だ
5604      (一番野暮ったい方法でもあるけれど)。
5605
5606 文字の繰り返し
5607
5608      SET2 における ‘[C*N]’ という表記は、 文字 C の N 個の連続に展開され
5609      る。 従って、‘[y*6]’ は ‘yyyyyy’ と同じである。また、SET2 における
5610      ‘[C*]’ という表記は、SET2 を SET1 と同じ長さにするのに必要な数の C
5611      の連続に展開される。 N が ‘0’ で始まっている場合は、 8 進数として扱
5612      われる。それ以外の場合は、10 進数である。
5613
5614 文字クラス
5615
5616      ‘[:CLASS:]’ という表記は、(あらかじめ定義されている) 文字クラス
5617      CLASS に属するすべての文字に展開される。 展開された文字に特定の順序
5618      はないが、‘upper’ と ‘lower’ の文字クラスは別で、この二つは、昇順に
5619      展開される。 ‘--delete’ (‘-d’) と ‘--squeeze-repeats’ (‘-s’) オプシ
5620      ョンの両方を指定している場合は、SET2 で任意の文字クラスを使用するこ
5621      とができる。 それ以外の場合 SET2 で使えるのは、‘lower’ と ‘upper’ の
5622      文字クラスだけであり、それも、対応する文字クラスを (すなわち、
5623      ‘upper’ に対しては ‘lower’、‘lower’ に対しては ‘upper’ を)、 SET1 の
5624      対応する位置で指定しているときだけである。 その場合は、大文字小文字
5625      の変換を指定していることになるわけだ。 以下に文字クラスの名前を列挙
5626      する。なお、無効なクラス名を指定すると、エラーになる。
5627
5628      ‘alnum’
5629           アルファベットの文字と数字。
5630      ‘alpha’
5631           アルファベットの文字。
5632      ‘blank’
5633           水平方向の空白 (Horizontal whitespace)。
5634      ‘cntrl’
5635           制御文字。
5636      ‘digit’
5637           数字。
5638      ‘graph’
5639           表示可能文字。空白を含まない (訳注: スペースもタブも改行も、す
5640           なわち、ホワイトスペースを一切含まない)。
5641      ‘lower’
5642           アルファベットの小文字。
5643      ‘print’
5644           表示可能文字。空白を含む (訳注: タブや改行は含まないが、スペー
5645           ス (0x20) は含む)。
5646      ‘punct’
5647           句読点 (訳注: 引用符なども含む)。
5648      ‘space’
5649           水平方向や垂直方向の空白 (Horizontal or vertical whitespace)。
5650      ‘upper’
5651           アルファベットの大文字。
5652      ‘xdigit’
5653           16 進数の数字。
5654
5655 等価クラス
5656
5657      ‘[=C=]’ という書式は、C と等価な文字のすべてに展開される。 展開され
5658      る文字の間に特定の順序はない。等価クラスは、比較的最近の発明であり
5659      、 英語以外のアルファベットをサポートするためのものである。 しかし
5660      ながら、等価クラスを定義したり、何が等価クラスに含まれるかを決定し
5661      たりする標準的な方法は存在しないようだ。 そのため、GNU の ‘tr’ は、
5662      等価クラスを十分に実装していない。 各文字の等価クラスにはその文字し
5663      か含まれていないので、あまり使い道がない。
5664
5665 \1f
5666 File: coreutils-ja.info,  Node: Translating,  Next: Squeezing and deleting,  Prev: Character sets,  Up: tr invocation
5667
5668 9.1.2 置換
5669 ----------
5670
5671 ‘tr’ は、SET1 と SET2 の両方が指定され、‘--delete’ (‘-d’) オプションが指
5672 定されていない場合は、文字の置換を行う。 ‘tr’ は入力の中に SET1 に存在す
5673 る文字が現れるたびに、 それを SET2 の対応する文字に置き換える。 入力中の
5674 SET1 に存在しない文字は、読み飛ばして、変更しない。 ある文字が SET1 中に
5675 2 個以上存在し、SET2 中のそれに対応する文字がすべて同じでない場合、 置換
5676 に使用するのは、最後の文字だけである。 たとえば、次の二つのコマンドは、
5677 同じ動作をする。
5678
5679      tr aaa xyz
5680      tr a z
5681
5682    ‘tr’ がよく使われるのは、アルファベットの小文字を大文字に変換するとき
5683 である。 それには、いろいろな方法がある。例を三つほど挙げてみる。
5684
5685      tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
5686      tr a-z A-Z
5687      tr '[:lower:]' '[:upper:]'
5688
5689 ただし、上記の ‘a-z’ のような範囲指定の使用は、 可搬性がないことに注意し
5690 ていただきたい。
5691
5692    ‘tr’ で置換を行う際には、普通 SET1 と SET2 を同じ長さにする。SET1 が
5693 SET2 より短いと、SET2 の後尾にある余分な文字が無視されることになる。
5694
5695    逆に、SET1 が SET2 より長い場合は、可搬性がなくなる。 POSIX の規定で
5696 は、結果は未定義なのだ。こうした場合、BSD の ‘tr’ は、 SET2 の最後の文字
5697 を必要なだけ繰り返して、SET2 が SET1 と同じ長さになるようにする。 System
5698 V の ‘tr’ は、SET1 を SET2 と同じ長さに切り詰める。
5699
5700    デフォルトでは、GNU 版の ‘tr’ は、この問題を BSD の ‘tr’ と同じやり方
5701 で処理する。そして、‘--truncate-set1’ (‘-t’) オプションが指定されている
5702 場合のみ、System V の ‘tr’ のように処理するのである。 このオプション
5703 (‘--truncate-set1’) は、置換以外の操作では無視される。
5704
5705    この問題で System V の ‘tr’ の動作を選ぶと、 比較的よく使われる BSD 式
5706 の次の慣用表現が使えなくなる。
5707
5708      tr -cs A-Za-z0-9 '\012'
5709
5710 なぜなら、System V の動作では、アルファベットと数字以外のすべての文字を
5711 改行文字に変換するのではなく、 ゼロバイトしか (ASCII NUL 文字、それが
5712 SET1 の補集合の最初の要素である) 改行文字に変換しないからだ。
5713
5714 ちなみに、上記の慣用表現は、システムによってはうまく動作しない。 なぜな
5715 ら、範囲指定を使っているからであり、また、改行の 8 進数によるコードを
5716 012 と決め込んでいるからでもある。‘tr’ が POSIX に準拠しているなら、 以
5717 下の方が、よりよい書き方である。
5718
5719      tr -cs '[:alnum:]' '[\n*]'
5720
5721 \1f
5722 File: coreutils-ja.info,  Node: Squeezing and deleting,  Prev: Translating,  Up: tr invocation
5723
5724 9.1.3 連続する文字の圧縮と文字の削除
5725 ------------------------------------
5726
5727 ‘--delete’ (‘-d’) オプションのみが指定された場合、‘tr’ は、 SET1 に存在
5728 する文字が入力中にあれば、それを削除する。
5729
5730    ‘--squeeze-repeats’ (‘-s’) オプションのみが指定され、置換が要求されて
5731 いない場合、 ‘tr’ は、SET1 に存在する文字が入力中に連続して現れるたびに
5732 、 その部分をただ 1 個のその文字に置き換える。
5733
5734    ‘--delete’ と ‘--squeeze-repeats’ の両方が指定された場合、 ‘tr’ は、
5735 まず SET1 を使って削除を行い、 その後で、残っている文字に対して、SET2 を
5736 使って連続する同一文字の圧縮を行う。
5737
5738    ‘--squeeze-repeats’ オプションは、置換の際に使用することもできる。 そ
5739 の場合、‘tr’ は、まず置換を実行し、その後で、置換結果に対して、 SET2 を
5740 使って連続する同一文字の圧縮を行う。
5741
5742    例をいくつか挙げて、オプションの様々な組み合わせを説明する。
5743
5744    • すべてのゼロバイトを削除する。
5745
5746           tr -d '\0'
5747
5748    • 入力中のすべての単語 (訳注: 空白などで前後を区切られた文字列) を 1
5749      行に 1 個づつ書き出す。 このコマンドは、アルファベットと数字以外の
5750      すべてを改行文字に変換し、 さらに、改行が連続して現れるそれぞれの箇
5751      所を 1 個の改行文字に圧縮している。
5752
5753           tr -cs '[:alnum:]' '[\n*]'
5754
5755    • 連続する改行文字が現れるごとに、それを一個の改行文字に変換する。 す
5756      なわち、空行を除去する。
5757
5758           tr -s '\n'
5759
5760    • 文書中の単語の重複を探し出す。たとえば、 改行を挟んで同じ単語を繰り
5761      返して、 “the the” のように書いてしまうとことは、よくあることである
5762      。 以下の Bourne シェルのスクリプトは、次のように動作する。 まず、
5763      句読点や空白文字が 1 個以上続けて現れるたびに、それを 1 個の改行文
5764      字に置き換える。 そうすることで、単語が 1 行に 1 個づつ出力されるこ
5765      とになるわけだ。 次には、すべての大文字を小文字に変換する。そして、
5766      最後に、‘uniq’ を ‘-d’ オプション付きで実行して、重複した単語のみを
5767      書き出すのである。
5768
5769           #!/bin/sh
5770           cat -- "$@" \
5771             | tr -s '[:punct:][:blank:]' '[\n*]' \
5772             | tr '[:upper:]' '[:lower:]' \
5773             | uniq -d
5774
5775    • 文字のちょっとした集団を削除するのは、たいていの場合ごく簡単である
5776      。 たとえば、‘a’, ‘x’, ‘M’ という文字をすべて消すには、 次のように
5777      するだけでよい。
5778
5779           tr -d axM
5780
5781      ところが、削除する文字の一つに ‘-’ があると、‘-’ は特殊な意味をもっ
5782      ているので、厄介なことになりかねない。 上記と同様の作業を行うけれど
5783      、今度は ‘-’ という文字もついでにすべて削除するとしよう。 ‘tr -d
5784      -axM’ をやってみるかもしれないが、うまく行かないだろう。 ‘tr’ が
5785      ‘-a’ をコマンドライン・オプションとして解釈しようとするからである。
5786      それではと、ハイフンを文字列の内側に入れてみることもできる。 ‘tr -d
5787      a-xM’ のようにだ。だが、これもうまく行きそうにない。 ‘tr’ が ‘a-x’
5788      を 3 個の文字としてではなく、‘a’...‘x’ という文字の範囲として解釈す
5789      ることになるからだ。 この問題を解決する方法の一つは、ハイフンを文字
5790      のリストの最後に置くことである。
5791
5792           tr -d axM-
5793
5794      あるいは、‘--’ を使って、オプション処理はここで終わりと明示すること
5795      もできる。
5796
5797           tr -d -- -axM
5798
5799      より普遍的な方法は、等価クラスの記法 ‘[=c=]’ を、‘c’ を ‘-’ で (あ
5800      るいは、他の任意の文字で) 置き換えて使うことである。
5801
5802           tr -d '[=-=]axM'
5803
5804      上記の例では、角カッコがシェルによって解釈されないように、 シングル
5805      クォートを使っていることに注意していただきたい。
5806
5807 \1f
5808 File: coreutils-ja.info,  Node: expand invocation,  Next: unexpand invocation,  Prev: tr invocation,  Up: Operating on characters
5809
5810 9.2 ‘expand’: タブをスペースに変換する
5811 ======================================
5812
5813 ‘expand’ は指定された各 FILE の内容を標準出力に書き出し、 その際にタブ文
5814 字を適切な数のスペースに変換する。 FILE が指定されていない場合や、FILE と
5815 して ‘-’ が指定されている場合は、標準入力を対象にする。
5816
5817    書式:
5818
5819      expand [OPTION]... [FILE]...
5820
5821    デフォルトでは、‘expand’ はすべてのタブをスペースに変換する。 バック
5822 スペース文字は、出力にそのまま残しておく。バックスペースには、 タブ幅を
5823 計算する際に、桁数を減らす働きがあるのだ。デフォルトの動作は、 ‘-t 8’ を
5824 指定したときと同じである (タブ位置を 8 桁ごとにする)。
5825
5826    このプログラムでは以下のオプションが使用できる。参照: *note Common
5827 options::.
5828
5829 ‘-t TAB1[,TAB2]...’
5830 ‘--tabs=TAB1[,TAB2]...’
5831      タブ位置 (tab stop) が一つだけ指定された場合には、 (訳注: 入力行に
5832      おける) タブ位置が TAB1 桁ごとあるものとする (デフォルトは 8 桁ごと
5833      )。それ以外の場合は、タブ位置を TAB1, TAB2, ... 桁目に置き (行頭を
5834      0 桁目として数える)、 指定された最後のタブ位置より後ろにあるタブは
5835      1 個のスペースで置き換える。 タブ位置の指定は、コンマで区切ってもよ
5836      く、空白で区切ってもよい。
5837
5838      互換性を考慮して、GNU の ‘expand’ は、‘-TAB1[,TAB2]...’ という、 こ
5839      のオプションの古い書式も認めている。新しいスクリプトでは、 ‘-t
5840      TAB1[,TAB2]...’ の方を使うべきである。
5841
5842 ‘-i’
5843 ‘--initial’
5844      各行の行頭にあるタブ群だけを (言い換えれば、スペースでもタブでもな
5845      いどんな文字よりも前にある 1 個以上のタブだけを) スペースに変換する
5846      。
5847
5848    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5849
5850 \1f
5851 File: coreutils-ja.info,  Node: unexpand invocation,  Prev: expand invocation,  Up: Operating on characters
5852
5853 9.3 ‘unexpand’: スペースをタブに変換する
5854 ========================================
5855
5856 ‘unexpand’ は、指定された各 FILE の内容を標準出力に書き出し、 その際に各
5857 行の先頭にある複数の空白 (blank) を、必要な数のタブ文字に変換する。 FILE
5858 が指定されていない場合や、FILE として ‘-’ が指定されている場合は、 標準
5859 入力を対象にする。デフォルトの POSIX ロケールでは、空白 (“blank”) とは、
5860 スペースかタブのことである。 他のロケールでは、ほかの空白文字が追加され
5861 ているかもしれない。
5862
5863    書式:
5864
5865      unexpand [OPTION]... [FILE]...
5866
5867    デフォルトでは、‘unexpand’ が変換するのは、各行の行頭にある複数の空白
5868 だけである (言い換えれば、空白以外のどんな文字よりも前にある複数の空白だ
5869 け)。 バックスペース文字は、出力にそのまま残しておく。バックスペースには
5870 、 タブ幅を計算する際に、桁数を減らす働きがあるのだ。 デフォルトでは、タ
5871 ブ位置は 8 桁ごとに置かれる。
5872
5873    このプログラムでは以下のオプションが使用できる。参照: *note Common
5874 options::.
5875
5876 ‘-t TAB1[,TAB2]...’
5877 ‘--tabs=TAB1[,TAB2]...’
5878      タブ位置 (tab stop) が一つだけ指定された場合には、 (訳注: 入力行に
5879      おける) タブ位置をデフォルトの 8 桁ごとではなく、TAB1 桁ごとに設定
5880      する。 それ以外の場合は、タブ位置を TAB1, TAB2, ... 桁目に置き (行
5881      頭を 0 桁目として数える)、指定された最後のタブ位置より後ろにある空
5882      白は、 変換せず、そのままにする。タブ位置の指定は、コンマで区切って
5883      もよく、空白で区切ってもよい。 このオプションを指定すると、‘-a’ オ
5884      プションが自動的に設定される。
5885
5886      (訳注: 一例を挙げておく。たとえば、‘-t 8,12’ なら、入力行は、先頭を
5887      0 桁目として、8 桁目、12 桁目にタブ位置があると見なされる。 そこで
5888      、先頭に 12 個のスペースがある行に対して ‘unexpand -t 8,12’ を行う
5889      と、 空白がタブ 2 個に変換される。出力におけるタブ位置はデフォルト
5890      のままなので、 出力ではその行は、 0 から数えて 16 桁目から文字が始
5891      まることになる。)
5892
5893      互換性を考慮して、GNU の ‘unexpand’ は、 ‘-TAB1[,TAB2]...’ という、
5894      このオプションの古い書式も認めている。 そちらを使う場合は、タブ位置
5895      を必ずコンマで区切らなければならない。 なお、‘-t’ とは違って、この
5896      古いオプションは、‘-a’ を自動的に設定しない。新しいスクリプトでは
5897      (訳注: 古い書式と同じ動作をさせたい場合)、 古い書式に代えて、
5898      ‘--first-only -t TAB1[,TAB2]...’ を使うべきである。
5899
5900 ‘-a’
5901 ‘--all’
5902      空白の連続が、行の中で空白以外の文字の後ろにある場合でも、 タブ位置
5903      の直前にある 2 個以上の空白の連続は、すべて変換する。
5904
5905    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5906
5907 \1f
5908 File: coreutils-ja.info,  Node: Directory listing,  Next: Basic operations,  Prev: Operating on characters,  Up: Top
5909
5910 10 ディレクトリの一覧表示
5911 *************************
5912
5913 この章では、‘ls’ とその変種の ‘dir’ 及び ‘vdir’ について説明する。 こう
5914 したコマンドは、ファイルに関する情報を一覧表示する。
5915
5916 * Menu:
5917
5918 * ls invocation::            ディレクトリの内容を一覧表示する。
5919 * dir invocation::           簡潔な ls。
5920 * vdir invocation::          詳細な ls。
5921 * dircolors invocation::     ls のカラー設定など。
5922
5923 \1f
5924 File: coreutils-ja.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory listing
5925
5926 10.1 ‘ls’: ディレクトリの内容を一覧表示する
5927 ===========================================
5928
5929 ‘ls’ プログラムはファイルに関する情報を一覧表示する (ファイルは、いかな
5930 るタイプでもよく、ディレクトリでもよい)。 オプションとファイルを示す引数
5931 は、ほとんどのコマンドと同様、どんな順番で指定しても構わない。
5932
5933    コマンドラインで指定したオプション以外の引数がディレクトリならば、
5934 ‘ls’ はデフォルトでは、そのディレクトリの内容を一覧表示する。 その際、再
5935 帰的な表示はせず、名前が ‘.’ で始まるファイルも表示しない。 オプション以
5936 外の引数がディレクトリでなければ、単にそのファイルの名前を表示するのが、
5937 ‘ls’ のデフォルトの動作である。 オプション以外の引数が一つも指定されてい
5938 ない場合は、カレントディレクトリを対象にし、あたかも ‘.’ という引数を一
5939 つだけ付けて起動したかのように動作する。
5940
5941    デフォルトでは、出力を、現在のロケール設定に従って、アルファベット順
5942 でソートする (1)。 標準出力が端末の場合は、出力を多段組みで (訳注: すな
5943 わち、1 行に複数ファイルの形式で) 表示し、制御文字を疑問符として出力する
5944 (ソートは縦方向に行う)。 それ以外の場合は、出力が 1 行 1 ファイルの形式
5945 になり、制御文字はそのまま手を加えずに出力する。
5946
5947    (訳注: 端末へ出力されるファイル名は、現在ではデフォルトのスタイルが、
5948 「制御文字を疑問符で」から別のものに変更されているかもしれない。 詳しく
5949 は、「ファイル名のフォーマット」の節の ‘--quoting-style’ の訳注をご覧い
5950 ただきたい。)
5951
5952    ‘ls’ はきわめて基本的なプログラムなので、長年の間にオプションがどんど
5953 ん増えてしまった。 以下のサブセクションでは、そうしたオプションについて
5954 説明している。 各サブセクション内では、オプションを (大文字小文字を無視
5955 して) アルファベット順に並べている。 このようにオプションをサブセクショ
5956 ンに分けてはみたが、この分類法は完全なものではない。 オプションの中には
5957 、‘ls’ の動作の複数の側面に作用するものもあるからである。
5958
5959    終了ステータス:
5960
5961      0: 成功
5962      1: 軽微な問題 (たとえば、コマンドライン引数として指定されていない
5963         ファイルやディレクトリにアクセスできなかった場合。ディレクトリの
5964         内容を一覧表示しようとしたとき、その中にあるエントリが今まさに
5965         削除やリネームの最中だと、そういうことが起きる)
5966      2: 深刻なトラブル (たとえば、メモリの不足、無効なオプション、
5967         コマンドライン引数として指定されたファイルやディレクトリに
5968         アクセスできなかった場合、ディレクトリのループなど)
5969
5970    参照 *note Common options::.
5971
5972 * Menu:
5973
5974 * Which files are listed::      表示対象にするファイル
5975 * What information is listed::  表示する情報
5976 * Sorting the output::          出力のソート
5977 * Details about version sort::  バージョン・ソートの詳細
5978 * General output formatting::   出力全体の形式
5979 * Formatting file timestamps::  タイムスタンプのフォーマット
5980 * Formatting the file names::   ファイル名のフォーマット
5981
5982    ---------- Footnotes ----------
5983
5984    (1) POSIX 以外のロケールを使用している場合は (たとえば、‘LC_ALL’ を
5985 ‘en_US’ に設定している場合は)、‘ls’ の出力が、見慣れない順序で並んでいる
5986 かもしれない。そうした場合は、環境変数 ‘LC_ALL’ を ‘C’ にしてみるとよい
5987
5988
5989 \1f
5990 File: coreutils-ja.info,  Node: Which files are listed,  Next: What information is listed,  Up: ls invocation
5991
5992 10.1.1 表示対象にするファイル
5993 -----------------------------
5994
5995 以下のオプションは、どんなファイルについて ‘ls’ が情報を表示するかを決定
5996 する。 デフォルトで ‘ls’ が表示するのは、コマンドラインで指定されたファ
5997 イルだが、 ディレクトリが指定された場合は、その内容になる。 ただし、ディ
5998 レクトリの内容のうち、名前が ‘.’ で始まるファイルは表示しない。
5999
6000 ‘-a’
6001 ‘--all’
6002      ディレクトリの内容を表示する際、‘.’ で始まるファイル名も無視しない
6003      。
6004
6005 ‘-A’
6006 ‘--almost-all’
6007      ディレクトリの内容を表示する際、‘.’ と ‘..’ は無視するが、 それ以外
6008      の ‘.’ で始まるいかなるファイル名も無視しない。‘--all’ (‘-a’) オプ
6009      ションは、このオプションに優先する。
6010
6011 ‘-B’
6012 ‘--ignore-backups’
6013      ディレクトリの内容表示において、‘~’ で終わるファイルを無視する。 こ
6014      のオプションは、‘--ignore='*~' --ignore='.*~'’ と同じである。
6015
6016 ‘-d’
6017 ‘--directory’
6018      ディレクトリについても、ディレクトリ内容の一覧ではなく、 他のタイプ
6019      のファイルの場合と同じように、名前だけを表示する。 また、
6020      ‘--dereference-command-line’ (‘-H’), ‘--dereference’ (‘-L’),
6021      ‘--dereference-command-line-symlink-to-dir’ といったオプションが指
6022      定されていないかぎり、 コマンドラインでシンボリックリンクが指定され
6023      ても、それをたどらない。
6024
6025 ‘-H’
6026 ‘--dereference-command-line’
6027      コマンドライン引数がシンボリックリンクを指定している場合、 リンクそ
6028      のものではなく、リンクが参照しているファイルの情報を表示する。
6029
6030 ‘--dereference-command-line-symlink-to-dir’
6031      原則としてシンボリックリンクの参照を行わないが、一つだけ例外がある
6032      。 すなわち、コマンドライン引数がシンボリックリンクを指定し、 それ
6033      がディレクトリを指している場合は、リンクそのものではなく、そのディ
6034      レクトリの情報を表示する。 この動作は、リンクの参照に関係する他のオ
6035      プションが全く指定されていないときの、 ‘ls’ のデフォルトの動作であ
6036      る (リンクの参照に関係する他のオプションには、 ‘--classify’ (‘-F’),
6037      ‘--directory’ (‘-d’), ‘-l’, ‘--dereference’ (‘-L’),
6038      ‘--dereference-command-line’ (‘-H’) がある)。
6039
6040 ‘--group-directories-first’
6041      すべてのディレクトリをまとめてファイルの前に置き、その上で、選択し
6042      たソート・キーを使って (‘--sort’ オプション参照)、ディレクトリとフ
6043      ァイルをそれぞれ別々にソートする。 別の言い方をすると、このオプショ
6044      ンはソートする際の主キーを設定し、 ‘--sort’ オプションが副キーを設
6045      定するということだ。ただし、 ‘--sort=none’ (‘-U’) を使ったりすると
6046      、このオプションは全く無効になる。
6047
6048 ‘--hide=PATTERN’
6049      ディレクトリの内容表示において、‘--all’ (‘-a’) や ‘--almost-all’
6050      (‘-A’) が同時に指定されていないかぎり、 シェルのパターン PATTERN に
6051      名前がマッチするファイルを無視する。 このオプションの動作は、
6052      ‘--ignore=PATTERN’ とほぼ同じだが、‘--all’ (‘-a’) や ‘--almost-all’
6053      (‘-A’) が併せて指定されていると、効果がないという点が違う。
6054
6055      このオプションは、シェルのエイリアスで使うと、便利かもしれない。 た
6056      とえば、‘lx’ が ‘ls --hide='*~'’ のエイリアスで、‘ly’ は ‘ls
6057      --ignore='*~'’ のエイリアスだとしよう。 その場合、‘lx -A’ というコ
6058      マンドは、ファイル ‘README~’ を表示するが、 ‘ly -A’ は表示しないこ
6059      とになる。
6060
6061 ‘-I PATTERN’
6062 ‘--ignore=PATTERN’
6063      ディレクトリの内容表示において、シェルのパターン (正規表現ではない)
6064      PATTERN に名前がマッチするファイルを無視する。 シェルの場合と同様、
6065      ファイル名の先頭にある ‘.’ は PATTERN の先頭のワイルドカードとマッ
6066      チしない。 このオプションを二度以上使うと、便利なことがある。たとえ
6067      ば、
6068
6069           $ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'
6070
6071      最初のオプションは ‘.’ で始まる 3 文字以上のファイル名を無視する。
6072      二番目のオプションは ‘.’ で始まる二文字のファイル名のうち、 ‘..’ を
6073      除くすべて無視し、三番目のオプションは ‘#’ で始まるファイル名を無視
6074      する。
6075
6076 ‘-L’
6077 ‘--dereference’
6078      シンボリックリンクについてファイル情報を表示する際、リンクそのもの
6079      ではなく、 リンクが参照しているファイルの情報を表示する。とは言え、
6080      このオプションを使用した場合でも、表示されるファイル名については、
6081      リンクそのものの名前のままであり、リンクが指しているファイルの名前
6082      にはならない。
6083
6084 ‘-R’
6085 ‘--recursive’
6086      すべてのディレクトリの内容を再帰的に一覧表示する。
6087
6088 \1f
6089 File: coreutils-ja.info,  Node: What information is listed,  Next: Sorting the output,  Prev: Which files are listed,  Up: ls invocation
6090
6091 10.1.2 表示する情報
6092 -------------------
6093
6094 以下のオプションは、‘ls’ がどんな情報を表示するかに関係している。 ‘ls’ が
6095 デフォルトで表示するのは、ファイル名だけである。
6096
6097 ‘--author’
6098      詳細形式でディレクトリ内容のリストを出力する際、各ファイルの作成者
6099      情報を表示する。 GNU/Hurd では、ファイルの作成者 (author) はファイ
6100      ルの所有者 (owner) と別人であることがあるが、他のオペレーティング・
6101      システムでは、両者は同一である。
6102
6103 ‘-D’
6104 ‘--dired’
6105      詳細表示形式 (‘-l’) と併せて使用すると、 出力本体の後ろに以下のよう
6106      な追加の行を表示する。
6107
6108           //DIRED// BEG1 END1 BEG2 END2 ...
6109
6110      BEGN や ENDN は符号なしの整数であり、 出力における各ファイル名の開
6111      始バイト位置と終了バイト位置を示している。このようにすることで、 フ
6112      ァイル名に空白や改行のような普段使わない文字が含まれている場合でも
6113      、手の込んだ検索をするまでもなく、 Emacs が簡単にファイル名を見つけ
6114      られるようにしているのである。
6115
6116      ディレクトリを再帰的にリストしている場合には (‘-R’)、 各サブディレ
6117      クトリ名のオフセットを記した同様の行も出力する。
6118
6119           //SUBDIRED// BEG1 END1 ...
6120
6121      そして最後に、次の形式の行を出力する。
6122
6123           //DIRED-OPTIONS// --quoting-style=WORD
6124
6125      ここで、WORD はクォートの方式である (*note Formatting the file
6126      names::)。
6127
6128      実例を挙げてみる。
6129
6130           $ mkdir -p a/sub/deeper a/sub2
6131           $ touch a/f1 a/f2
6132           $ touch a/sub/deeper/file
6133           $ ls -gloRF --dired a
6134             a:
6135             total 8
6136             -rw-r--r-- 1    0 Jun 10 12:27 f1
6137             -rw-r--r-- 1    0 Jun 10 12:27 f2
6138             drwxr-xr-x 3 4096 Jun 10 12:27 sub/
6139             drwxr-xr-x 2 4096 Jun 10 12:27 sub2/
6140
6141             a/sub:
6142             total 4
6143             drwxr-xr-x 2 4096 Jun 10 12:27 deeper/
6144
6145             a/sub/deeper:
6146             total 0
6147             -rw-r--r-- 1 0 Jun 10 12:27 file
6148
6149             a/sub2:
6150             total 0
6151           //DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
6152           //SUBDIRED// 2 3 167 172 228 240 290 296
6153           //DIRED-OPTIONS// --quoting-style=literal
6154
6155      上記 ‘//DIRED//’ 行の 2 個づつ組になっているオフセットは、次の 6 個
6156      の名前の区切りとなるバイト位置を示している (訳注: 別の言い方をする
6157      なら、出力の先頭からある名前の直前までのバイト数と、 その名前の最後
6158      の文字までのバイト数を示している)。6 個の名前とは、すなわち ‘f1’,
6159      ‘f2’, ‘sub’, ‘sub2’, ‘deeper’, ‘file’ である。 ‘//SUBDIRED//’ の行
6160      のオフセットが示しているのは、次のディレクトリ名の区切りである。
6161      ‘a’, ‘a/sub’, ‘a/sub/deeper’, ‘a/sub2’。
6162
6163      下記の例では、5 番目の項目の名前 ‘deeper’ を抜き出してみせている。
6164      この項目の名前は、217 と 223 のオフセットの組に対応している。
6165
6166           $ ls -gloRF --dired a > out
6167           $ dd bs=1 skip=217 count=6 < out 2>/dev/null; echo
6168           deeper
6169
6170      上記のファイル一覧表示では、‘deeper’ という項目の後ろにスラッシュが
6171      付いているが、 オフセットが名前として選択しているのは、後ろのスラッ
6172      シュを除いた部分であることに注目していただきたい。 しかしながら、
6173      ‘ls’ を ‘--dired’ とともに ‘--escape’ (短縮形は ‘-b’) のようなオプ
6174      ションを付けて実行し、 名前に特殊文字が入っているファイルを処理の対
6175      象にする場合には、 バックスラッシュがオフセットの示す範囲のうちに含
6176      まれることに注意しなければならない。
6177
6178           $ touch 'a b'
6179           $ ls -blog --dired 'a b'
6180             -rw-r--r-- 1 0 Jun 10 12:28 a\ b
6181           //DIRED// 30 34
6182           //DIRED-OPTIONS// --quoting-style=escape
6183
6184      引用符を付加するクォート方式を使用している場合には (たとえば、
6185      ‘--quoting-style=c’)、引用符もオフセットの示す範囲に含まれる。 そこ
6186      で、そうしたクォート方式が、環境変数 ‘QUOTING_STYLE’ によって選択さ
6187      れている可能性も考慮に入れておくべきだ。 すなわち、‘--dired’ を使用
6188      するアプリケーションでは、 コマンドラインで明示的に
6189      ‘--quoting-style=literal’ オプションを指定するか (‘-N’ や
6190      ‘--literal’ と指定しても同じことだ)、 あるいは、エスケープされた名
6191      前を解析できるするようにしておくか、 どちらかをするべきだということ
6192      である。
6193
6194 ‘--full-time’
6195      詳細形式でディレクトリ内容のリストを生成し、日時の情報を省略なしで
6196      表示する。 これは、‘--format=long’ を ‘--time-style=full-iso’ と一
6197      緒に使うのと同じである (*note Formatting file timestamps::)。
6198
6199 ‘-g’
6200      詳細形式でディレクトリ内容のリストを生成するが、所有者情報は表示し
6201      ない。
6202
6203 ‘-G’
6204 ‘--no-group’
6205      詳細形式でディレクトリ内容をリスト表示する際に、グループ情報を表示
6206      しない (GNU 版以外の ‘ls’ には、この動作がデフォルトのものがある。
6207      そこで、互換性のために、このオプションを用意している)。
6208
6209 ‘-h’
6210 ‘--human-readable’
6211      各サイズの後ろに、メビバイトなら ‘M’ といった、大きさを示す文字を付
6212      ける。 1000 ではなく、1024 の累乗が使われるので、‘M’ は 1,048,576 バ
6213      イトを表している。このオプションは、‘--block-size=human-readable’ と
6214      同じである。1000 の累乗が使いたければ、"‘--si’ オプションを使用すれ
6215      ばよい。
6216
6217 ‘-i’
6218 ‘--inode’
6219      ファイル名の左側にそのファイルの inode 番号を表示する (inode 番号は
6220      、ファイル連続番号とか、インデックスナンバーとも呼ばれる。 この番号
6221      は、ある特定のファイルシステムにある各ファイルを、一意に指し示す)。
6222
6223 ‘-l’
6224 ‘--format=long’
6225 ‘--format=verbose’
6226      各ファイルの名前のほかに、(訳注: 行頭から順に) ファイルのタイプ、フ
6227      ァイルのモードビット (訳注: 一般に「アクセス権」とか「許可属性」と
6228      言われるもの)、 ハードリンク数、所有者名、グループ名、サイズ、タイ
6229      ムスタンプを表示する (*note Formatting file timestamps::)。 タイム
6230      スタンプは、通常は更新日時 (訳注: いわゆる mtime) である。 特定する
6231      ことのできない情報については、疑問符を表示する。
6232
6233      通常、サイズは、桁を区切る記号を付けずに、バイト数で表示されるが、
6234      この表示法は変更することができる (*note Block size::)。たとえば、
6235      ‘-h’ オプションを指定すると、人間に読みやすい短縮表示になり、
6236      ‘--block-size="'1"’ を指定すると、現在のロケールの区切り記号で 3 桁
6237      ごとに区切ったバイト数が表示される。
6238
6239      ディレクトリの内容をリストする場合は、対象となるディレクトリごとに
6240      、ファイルのリストの前に ‘total BLOCKS’ という行を置く。ここで、
6241      BLOCKS は、 そのディレクトリにあるすべてのファイルに割り当てられた
6242      ディスク容量の合計である。 現在のところブロックサイズはデフォルトで
6243      は 1024 バイトであるが、 この値は変更することができる (*note Block
6244      size::)。 BLOCKS の計算では、各ハードリンクを別のものとして計算して
6245      いる。 これはバグだと言えないこともない。
6246
6247      ファイルタイプには、以下の文字の一つが使われる。
6248
6249      ‘-’
6250           通常ファイル
6251      ‘b’
6252           ブロック・スペシャルファイル
6253      ‘c’
6254           キャラクタ・スペシャルファイル
6255      ‘C’
6256           ハイパフォーマンス (“contiguous data”) ファイル
6257      ‘d’
6258           ディレクトリ
6259      ‘D’
6260           ドア (Solaris 2.5 以上)
6261      ‘l’
6262           シンボリックリンク
6263      ‘M’
6264           オフライン (“migrated”) ファイル (Cray DMF)
6265      ‘n’
6266           ネットワーク・スペシャルファイル (HP-UX)
6267      ‘p’
6268           FIFO (名前付きパイプ)
6269      ‘P’
6270           ポート (Solaris 10 以上)
6271      ‘s’
6272           ソケット
6273      ‘?’
6274           上記以外のファイルタイプ
6275
6276      ファイルのモードビットの表示は、アクセス権を設定する際のシンボリッ
6277      クモードの仕様とほぼ同じである (*note Symbolic Modes::)。 ただし、
6278      ‘ls’ は、以下のように、複数のモードビットを一つにまとめて、 アクセ
6279      ス権の各セットの 3 番目の文字で表現している。
6280
6281      ‘s’
6282           set-user-ID ビットまたは set-group-ID ビットと、対応する実行ビ
6283           ットの両方が立っている場合。
6284
6285      ‘S’
6286           set-user-ID ビットまたは set-group-ID ビットが立っているが、 対
6287           応する実行ビットは立っていない場合。
6288
6289      ‘t’
6290           削除制限フラグまたはスティキー・ビット (sticky bit) と、 その
6291           他のユーザ (other) の実行ビットの両方が立っている場合。 削除制
6292           限フラグは、スティッキー・ビットの別名である。 *Note Mode
6293           Structure::.
6294
6295      ‘T’
6296           削除制限フラグまたはスティキー・ビットが立っているが、 その他
6297           のユーザの実行ビットが立っていない場合。
6298
6299      ‘x’
6300           実行ビットが立っていて、上記のどれにも当てはまらない場合。
6301
6302      ‘-’
6303           それ以外。
6304
6305      ファイルのモードビットの後に続く 1 個の文字は、アクセス・コントロー
6306      ル・リスト (ACL) のような他のアクセス方式が、そのファイルに使われて
6307      いるかどうかを表している。 ファイルのモードビットに続く文字が空白の
6308      場合は、他のアクセス方式を使用していないということである。 表示文字
6309      が続く場合は、そうしたアクセス方式を使用しているということだ。
6310
6311      GNU の ‘ls’ は、SELinux セキュリティ・コンテキストを持つが、 それ以
6312      外に他のアクセス方式を使用していないファイルを示すのに、 ピリオド
6313      (‘.’) を使う。
6314
6315      それ以外で、ファイルが、標準以外のアクセス方式の何らかの組み合わせ
6316      を使用している場合には、 ‘+’ 文字が印として付く。
6317
6318 ‘-n’
6319 ‘--numeric-uid-gid’
6320      詳細形式でディレクトリの内容をリストするが、 所有者やグループの名前
6321      の代わりに、数字の user-ID や group-ID を表示する。
6322
6323 ‘-o’
6324      詳細形式でディレクトリの内容をリストするが、グループ情報を表示しな
6325      い。 これは、‘--format=long’ を ‘--no-group’ と併せて使うのと同じで
6326      ある。
6327
6328 ‘-s’
6329 ‘--size’
6330      各ファイルに対するディスク割り当て量をファイル名の左側に表示する。
6331      これはファイルが使用しているディスクスペースの量であり、 普通はファ
6332      イルのサイズより少し多いが、穴空きファイル (sparse file) の場合は、
6333      少ないこともある。
6334
6335      通常、ディスク割り当て量は 1024 バイトを単位として表示されるが、 こ
6336      れは変更することができる (*note Block size::)。
6337
6338      ファイルが HP-UX のシステムから BSD のシステムに NFS マウントされて
6339      いる場合、 このオプションで報告されるディスク使用量は、正確な値の半
6340      分である。 それに対して、HP-UX システムの場合は、BSD システムから
6341      NFS マウントされているファイルについて、このオプションは正確な値の
6342      2 倍の量を報告する。 これは、HP-UX システムにある欠陥のせいであり、
6343      HP-UX の ‘ls’ プログラムも、そのとばっちりを受けているのである。
6344
6345 ‘--si’
6346      各サイズにの後ろに、メガバイトなら ‘M’ といった、SI 形式の略号を付
6347      ける。 1024 ではなく、1000 の累乗が使用されるので、‘M’ は 1,000,000
6348      バイトを表している。このオプションは、‘--block-size=si’ と同じこと
6349      である。1024 の累乗が使いたければ、‘-h’ や ‘--human-readable’ を使
6350      用すればよい。
6351
6352 ‘-Z’
6353 ‘--context’
6354      SELinux セキュリティ・コンテキストを表示する。ない場合は、‘?’ を表
6355      示する。‘-l’ オプションと一緒に使った場合は、 サイズの左にセキュリ
6356      ティ・コンテキストを出力する。
6357
6358 \1f
6359 File: coreutils-ja.info,  Node: Sorting the output,  Next: Details about version sort,  Prev: What information is listed,  Up: ls invocation
6360
6361 10.1.3 出力のソート
6362 -------------------
6363
6364 以下のオプションは、‘ls’ が出力する情報を並べる際の順序を変更する。 デフ
6365 ォルトでは、情報は文字コードによってソートされる (たとえば ASCII コード
6366 順)。
6367
6368 ‘-c’
6369 ‘--time=ctime’
6370 ‘--time=status’
6371      詳細表示形式 (たとえば、‘-l’, ‘-o’) を使用しているときは、更新日時
6372      (modification time) の代わりに、ステータス変更日時 (status change
6373      time、inode の ‘ctime’) を表示する。 日時によって明示的にソートして
6374      いるときや (‘--sort=time’ あるいは ‘-t’)、詳細表示形式を使用してい
6375      ないときは、ステータス変更日時によってソートする。
6376
6377 ‘-f’
6378      主な働きは、‘-U’ と同じで、ソートしないことである。 すなわち、ファ
6379      イルをリストする際、ファイルがディレクトリにどんな順序で格納されて
6380      いようと、 そのままの順序で出力する。それだけでなく、‘-a’ (すべての
6381      ファイルをリストする) を有効にし、‘-l’, ‘--color’, ‘-s’ を (‘-f’ よ
6382      り前で指定されていたら) 無効にする働きもある。
6383
6384 ‘-r’
6385 ‘--reverse’
6386      どんな方法でソートされていようと、逆順にする。 たとえば、ファイルを
6387      並べる際に、アルファベットの後ろから並べる、 最新バージョンから先に
6388      並べる、サイズの小さいものから先に並べる、などなど。
6389
6390 ‘-S’
6391 ‘--sort=size’
6392      ファイルのサイズによってソートし、大きいものから順に並べる。
6393
6394 ‘-t’
6395 ‘--sort=time’
6396      更新日時 (modification time、inode の ‘mtime’) によってソートし、 新
6397      しいものから順に並べる。
6398
6399 ‘-u’
6400 ‘--time=atime’
6401 ‘--time=access’
6402 ‘--time=use’
6403      詳細表示形式 (たとえば、‘--format=long’) を使用しているときは、 最
6404      終アクセス日時 (last access time、inode の ‘atime’) を表示する。 日
6405      時によって明示的にソートしているときや (‘--sort=time’ あるいは
6406      ‘-t’)、詳細表示形式を使用していないときは、アクセス日時によってソー
6407      トする。
6408
6409 ‘-U’
6410 ‘--sort=none’
6411      ソートを行わない。すなわち、ファイルをリストする際、ファイルがディ
6412      レクトリにどんな順序で格納されていようと、 そのままの順序で出力する
6413      (‘-f’ が行う、ソートに無関係な他のことは、何もしない)。 このオプシ
6414      ョンは非常に大きなディレクトリを一覧表示するとき、ことのほか役に立
6415      つ。 ソートを全くしないことで、作業速度が著しく向上するからである。
6416
6417 ‘-v’
6418 ‘--sort=version’
6419      バージョン名とバージョン番号によってソートし、低いバージョンから順
6420      に並べる。 デフォルトのソート方法と動作が似ているが、 10 進数の数字
6421      が連続する各部分を、 インデックス番号やバージョン番号と見なし、(文
6422      字列としてではなく) 数値として取り扱う点が違う。 (*Note Details
6423      about version sort::.)
6424
6425 ‘-X’
6426 ‘--sort=extension’
6427      ディレクトリの内容をファイルの拡張子 (最後の ‘.’ の後に続く文字) に
6428      よってアルファベット順でソートする。拡張子のないファイルは、 最初に
6429      並べられる。
6430
6431 \1f
6432 File: coreutils-ja.info,  Node: Details about version sort,  Next: General output formatting,  Prev: Sorting the output,  Up: ls invocation
6433
6434 10.1.4 バージョン・ソートの詳細
6435 -------------------------------
6436
6437 ファイル名にはインデックス番号やバージョン番号が含まれていることがしばし
6438 ばあるが、 バージョン・ソートは、そうした状況に対処している。 通常のソー
6439 トでは、1 文字づつ文字の比較を行うので、結果がこちらの期待する順番になら
6440 ないことがよくあるのだ。 バージョン・ソートが特に役に立つのは、 インデッ
6441 クス番号やバージョン番号を名前に含むファイルがたくさんあるディレクトリを
6442 一覧するときである。
6443
6444      $ ls -1            $ ls -1v
6445      abc.zml-1.gz       abc.zml-1.gz
6446      abc.zml-12.gz      abc.zml-2.gz
6447      abc.zml-2.gz       abc.zml-12.gz
6448
6449    バージョン・ソートにおける文字列の比較は、次のように行われる。 VER1 と
6450 VER2 がバージョン番号で、PREFIX (前置部分) と SUFFIX (後置部分) が文字列
6451 だとしよう (SUFFIX は正規表現の ‘(\.[A-Za-z~][A-Za-z0-9~]*)*’ にマッチす
6452 るもの)。その場合、VER1 < VER2 ならば、“PREFIX VER1 SUFFIX” から構成され
6453 る名前は “PREFIX VER2 SUFFIX” より前に来る。
6454
6455    数字の部分の先行する 0 は無視されることにも注意していただきたい。
6456
6457      $ ls -1            $ ls -1v
6458      abc-1.007.tgz      abc-1.01a.tgz
6459      abc-1.012b.tgz     abc-1.007.tgz
6460      abc-1.01a.tgz      abc-1.012b.tgz
6461
6462    この機能は gnulib の ‘filevercmp’ 関数を使って実装されている。 そこで
6463 、知っておいた方がよい注意事項がいくつかある。
6464
6465    • ‘LC_COLLATE’ は無視される。そのため、‘ls -v’ や ‘sort -V’ は、 数値
6466      ではない PREFIX (前置部分) を、‘LC_COLLATE’ ロケール・カテゴリが
6467      ‘C’ に設定されているかのようにソートする。
6468    • SUFFIX (後置部分) に上記の正規表現がマッチしてくれないことがある。
6469      従って、以下の例は、期待通りの順序ではないかもしれない。
6470
6471           abc-1.2.3.4.7z
6472           abc-1.2.3.7z
6473
6474           abc-1.2.3.4.x86_64.rpm
6475           abc-1.2.3.x86_64.rpm
6476
6477 \1f
6478 File: coreutils-ja.info,  Node: General output formatting,  Next: Formatting file timestamps,  Prev: Details about version sort,  Up: ls invocation
6479
6480 10.1.5 出力全体の形式
6481 ---------------------
6482
6483 以下のオプションは出力全体の見かけに影響を及ぼす。
6484
6485 ‘-1’
6486 ‘--format=single-column’
6487      1 行 に 1 ファイルを表示する。標準出力が端末でないときの ‘ls’ のデ
6488      フォルトである。 ファイル名中に改行文字があっても、それをそのまま出
6489      力してしまわないようにするには、 ‘-b’ や ‘-q’ オプションも参照して
6490      いただきたい。
6491
6492      (訳注: ‘-1’ オプションを指定しても、標準出力が端末ならば、 ファイル
6493      名中の改行文字を ‘?’ 記号で表示するか、ファイル名を ‘shell-escape’
6494      スタイルでクォートするか、どちらかをやってくれるはずだ。 上の注意書
6495      きは、標準出力が端末でないときの話である。)
6496
6497 ‘-C’
6498 ‘--format=vertical’
6499      ファイルのリストを多段組みで (訳注: すなわち、1 行に複数ファイルの
6500      形式で) 表示し、ソートは縦方向に行う。これは、標準出力が端末のとき
6501      の ‘ls’ のデフォルトである。‘dir’ コマンドにとっては、 これが常にデ
6502      フォルトになる。GNU の ‘ls’ は、 できるだけ少ない行数でできるだけ多
6503      くのファイルを表示するために、段の幅を可変にしている。
6504
6505 ‘--color[=WHEN]’
6506      ファイルのタイプを区別するためにカラー表示を使用するかどうかを指定
6507      する。 WHEN は省略してもよく、以下の一つでもよい。
6508         • none カラー表示を全く使用しない。これがデフォルトである。
6509         • auto 標準出力が端末の場合のみ、カラー表示を使用する。
6510         • always 常にカラー表示を使用する。
6511      WHEN を付けずに ‘--color’ を指定するのは、"‘--color=always’ と同じ
6512      ことである。カラー表示にしたファイルのリストをパイプで ‘more’ や
6513      ‘less’ のようなページャに送ると、たいての場合、判読に苦しむ羽目にな
6514      る。 ただし、‘more -f’ を使うと、うまく行くようだ。(訳注: 訳者の手
6515      元では、 ‘less -R’ や ‘lv -c’ で一応問題なくカラー表示ができている
6516      ようだ。)
6517
6518      留意すべきは、‘--color’ オプションを使用すると、 大量のファイルがあ
6519      るディレクトリで ‘ls’ を実行したとき、 目に見えて動作速度が低下する
6520      かもしれないことである。 これは、カラー表示のデフォルトの設定では、
6521      ‘ls’ は、 リストするファイルを一つづつ ‘stat’ システムコールで調べ
6522      る必要があるからだ。 とは言え、ファイルタイプのカラー表示はおおむね
6523      使用したいけれど、 他の色付けオプションは使わなくてもよいこともある
6524      (たとえば、実行属性、リンク切れ、スティッキー・ビット、その他のユー
6525      ザの書き込み権限、 ケーパビリティなどは、色で表示しなくてもよい)。
6526      その場合は、こんなふうに、‘dircolors’ コマンドを使用して、環境変数
6527      ‘LS_COLORS’ を設定すればよい。
6528           eval $(dircolors -p | perl -pe \
6529             's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)
6530      そうすれば、‘dirent.d_type’ が使えるファイルシステムなら、 ‘ls’ は
6531      各コマンドライン引数に対してたった一回だけ ‘stat’ システムコールを
6532      行うだけですむようになる。
6533
6534 ‘-F’
6535 ‘--classify’
6536 ‘--indicator-style=classify’
6537      各ファイル名の後ろに、ファイルタイプを示す 1 文字を付ける。 通常フ
6538      ァイルの場合も、実行可能ファイルならば、‘*’ を後置する。 ファイルタ
6539      イプの指標は、ディレクトリならば ‘/’、シンボリックリンクならば ‘@’、
6540      FIFO ならば ‘|’、ソケットならば ‘=’、ドアならば ‘>’ であり、通常フ
6541      ァイルを表す指標はない。 なお、‘--dereference-command-line’ (‘-H’),
6542      ‘--dereference’ (‘-L’), ‘--dereference-command-line-symlink-to-dir’
6543      といったオプションが指定されていないかぎり、コマンドラインで指定さ
6544      れたシンボリックリンクをたどることはない。
6545
6546 ‘--file-type’
6547 ‘--indicator-style=file-type’
6548      各ファイル名の後ろに、ファイルタイプを示す 1 文字を付ける。 ‘-F’ に
6549      似ているが、こちらは、実行ファイルに指標を付けない。
6550
6551 ‘--indicator-style=WORD’
6552      ファイル名の後ろに指標文字を付けるとき、WORD というスタイルを使用す
6553      る。 WORD には次のものがある。
6554
6555      ‘none’
6556           指標文字を全く付けない。これがデフォルトである。
6557      ‘slash’
6558           ディレクトリの後ろに ‘/’ を付ける。これは、‘-p’ オプションと同
6559           じである。
6560      ‘file-type’
6561           ディレクトリ、シンボリックリンク、FIFO、ソケットの後ろに、 そ
6562           れぞれ ‘/’, ‘@’, ‘|’, ‘=’ を付け、 通常ファイルの後ろには何も
6563           付けない。これは、‘--file-type’ オプションと同じである。
6564      ‘classify’
6565           実行可能な通常ファイルの後ろに ‘*’ を付ける。それ以外は、
6566           ‘file-type’ の場合と同じ動作をする。これは、‘-F’ や
6567           ‘--classify’ オプションと同じである。
6568
6569 ‘-k’
6570 ‘--kibibytes’
6571      デフォルトのブロックサイズを標準の値の 1024 バイトに設定する。 その
6572      とき、環境変数でそれ以外のどんな値が設定されていても、 それを上書き
6573      する (*note Block size::)。このオプション自身も、 ‘--block-size’,
6574      ‘--human-readable’ (‘-h’), ‘--si’ オプションがあれば、それによって
6575      上書きされる。
6576
6577      ‘--kibibytes’ (‘-k’) オプションが影響を及ぼすのは、‘-l’ などのオプ
6578      ションが書き出すディレクトリごとのブロック数や、‘--size’ (‘-s’) オ
6579      プションが表示するディスク割り当て量に対してである。 ‘-l’ の表示す
6580      るファイルサイズには影響を及ぼさない。
6581
6582 ‘-m’
6583 ‘--format=commas’
6584      ファイルを横に並べ、各行に収まる範囲でできるだけ多くの項目を表示す
6585      る。 ファイル同士は ‘, ’ (コンマとスペース) で区切る。
6586
6587 ‘-p’
6588 ‘--indicator-style=slash’
6589      ディレクトリ名の後ろに ‘/’ を付ける。
6590
6591 ‘-x’
6592 ‘--format=across’
6593 ‘--format=horizontal’
6594      ファイルのリストを多段組みで (訳注: すなわち、1 行に複数ファイルの
6595      形式で) 表示し、ソートは横方向に行う。
6596
6597 ‘-T COLS’
6598 ‘--tabsize=COLS’
6599      タブ位置が COLS 桁ごとにあると想定する。デフォルトは 8 桁ごと。
6600      ‘ls’ は効率を考慮し、使えるときはタブを出力で使用する。 COLS が 0 の
6601      場合は、タブを使用しない。
6602
6603      端末エミュレータの中には、ASCII 以外のバイトが前にあると、 列をタブ
6604      位置の右にきちんと揃えてくれないものがあるかもしれない。 この問題を
6605      回避するには、‘-T0’ オプションを使うか、環境変数 ‘TABSIZE=0’ を設定
6606      するかして、列を揃えるのにタブではなく、 スペースを使うよう、‘ls’ に
6607      指示すればよい。
6608
6609 ‘-w COLS’
6610 ‘--width=COLS’
6611      スクリーンの横幅が COLS 桁だと想定する。デフォルトの値は、 可能なら
6612      ば端末の設定から取得する。取得できないときは、環境変数 ‘COLUMNS’ が
6613      設定されていれば、それを使用する。 それも設定されていないときのデフ
6614      ォルトの値は 80 である。 COLS の値を ‘0’ にすると、出力行の長さに制
6615      限がなくなる。 その場合、ただ一行の出力中で各項目を分離するのは、タ
6616      ブではなく、スペースになる。
6617
6618 \1f
6619 File: coreutils-ja.info,  Node: Formatting file timestamps,  Next: Formatting the file names,  Prev: General output formatting,  Up: ls invocation
6620
6621 10.1.6 タイムスタンプのフォーマット
6622 -----------------------------------
6623
6624 デフォルトでは、ファイルのタイムスタンプは短縮形式で表示される。 すなわ
6625 ち、最近のタイムスタンプ以外は、‘Mar 30  2002’ といった日付表示になり、
6626 最近のタイムスタンプは、‘Mar 30 23:45’ といった年度なしの日付と時刻の表
6627 示になる。この書式は、後で詳しく述べるように、 使用しているロケールによ
6628 っては違ったものになるかもしれない。
6629
6630    タイムスタンプは、ここ 6 ヶ月以内のもので、未来の日付が付いていなけれ
6631 ば、 最近 (“recent”) として扱われる。今日の日付のタイムスタンプが、 最近
6632 用の書式で表示されない場合、そのタイムスタンプは未来扱いされている。 そ
6633 れは、おそらく時計に狂いが生じているということであり、‘make’ のような、
6634 ファイルのタイムスタンプに頼っているプログラムは、まともに動かないかもし
6635 れない。
6636
6637    タイムスタンプは、タイムゾーンのルールに従って表示されるが、 そのルー
6638 ルを指定しているのは、環境変数 ‘TZ’ である。 ‘TZ’ が設定されていない場合
6639 は、システムのデフォルトのルールに従って表示される。 *Note Specifying
6640 the Time Zone with ‘TZ’: (libc)TZ Variable.
6641
6642    以下のオプションは、ファイルのタイムスタンプの表示方法を変更する。
6643
6644 ‘--time-style=STYLE’
6645      タイムスタンプを STYLE 形式で表示する。 STYLE は以下の一つでなけれ
6646      ばならない。
6647
6648      ‘+FORMAT’
6649           FORMAT を使って、タイムスタンプを表示する。 その場合、FORMAT は
6650           、‘date’ コマンドの書式引数と同じように解釈される (*note date
6651           invocation::)。 たとえば、‘--time-style="+%Y-%m-%d %H:%M:%S"’
6652           と指定すると、 ‘ls’ の表示するタイムスタンプは、‘2002-03-30
6653           23:45:56’ のようになる。‘date’ の場合と同様、FORMAT の解釈は、
6654           ‘LC_TIME’ ロケール・カテゴリの影響を受ける。
6655
6656           FORMAT に改行で分離された二つの書式文字列がある場合、 前半は最
6657           近のファイル以外に使用され、後半は最近のファイルに使用される。
6658           出力される列をきちんと揃えたければ、二つの書式のどちらかに、 空
6659           白をいくつか入れる必要があるかもしれない。
6660
6661      ‘full-iso’
6662           タイムスタンプを省略なしで表示する。 すなわち、ISO 8601 の日付
6663           、時刻、タイムゾーンという構成要素を nanosecond (10 億分の 1 秒
6664           ) の精度で使用するわけだ。 一例を挙げると、‘2002-03-30
6665           23:45:56.477817180 -0700’ といった表示になる。この形式は、
6666           ‘+%Y-%m-%d %H:%M:%S.%N %z’ と同じである。
6667
6668           これが有用なのは、タイムスタンプが、オペレーティング・システム
6669           から取得できる時間関係のすべての情報を含んでいるからである。 た
6670           とえば、GNU の ‘make’ は、あるファイルが古いかどうかを判定する
6671           のに、 省略なしのタイムスタンプを使用している。そのため、この
6672           情報が、‘make’ の動作を説明するために役立つことがあるのである
6673           。
6674
6675      ‘long-iso’
6676           ISO 8601 の日付と時刻の構成要素を分の単位まで表示する。たとえ
6677           ば、 ‘2002-03-30 23:45’。このタイムスタンプは、‘full-iso’ タイ
6678           ム スタンプより短く、日常作業にはたいてい十分である。この形式
6679           は ‘+%Y-%m-%d %H:%M’ と同じである。
6680
6681      ‘iso’
6682           最近以外のタイムスタンプでは、ISO 8601 の日付を表示し (たとえ
6683           ば ‘2002-03-30 ’)、最近のタイムスタンプでは、 ISO 8601 風の月
6684           ・日・時・分を表示する (たとえば ‘03-30 23:45’)。 この形式は、
6685           ‘long-iso’ の形式に比べて見かけがよくないが、 より狭いスペース
6686           でほぼ同量の情報を伝えており、また、簡潔なので ‘ls’ の出力を伝
6687           統的な 1 行 80 桁の出力行に納めるのに都合がよい。 ‘ls’ を実行
6688           する以下の二つの方法は、同じことである。
6689
6690                newline='
6691                '
6692                ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
6693                ls -l --time-style="iso"
6694
6695      ‘locale’
6696           タイムスタンプをロケール依存形式で表示する。たとえば、 フィン
6697           ランド語のロケールだと、最近以外のタイムスタンプを ‘maalis
6698           30  2002’ のように表示し、最近のタイムスタンプは ‘maalis 30
6699           23:45’ のように表示するかもしれない。 ロケール依存のタイムスタ
6700           ンプは、概して ‘iso’ のタイムスタンプより長くなるし、 ロケール
6701           ごとの規則の違いは非常に大きいので、プログラムによる解析がずっ
6702           と難しくなる。 だが、こちらの方がわかりやすい人も大勢いる。
6703
6704           タイムスタンプの書式を決めているのは、‘LC_TIME’ ロケール・カテ
6705           ゴリである。 デフォルトの POSIX ロケールでは、‘Mar 30  2002’ や
6706           ‘Mar 30 23:45’ といったタイムスタンプを使っている。 POSIX ロケ
6707           ールでは、‘ls’ を実行する次の二つの方法は、同じことである。
6708
6709                newline='
6710                '
6711                ls -l --time-style="+%b %e  %Y$newline%b %e %H:%M"
6712                ls -l --time-style="locale"
6713
6714           しかし、他のロケールでは動作が違う。たとえば、ドイツ語のロケー
6715           ルだと、 ‘--time-style="locale"’ は ‘--time-style="+%e. %b %Y
6716           $newline%e. %b %H:%M"’ とおそらく同じになり、‘30. Mär 2002 ’ や
6717           ‘30. Mär 23:45’ といったタイムスタンプを生成するだろう。
6718
6719      ‘posix-STYLE’
6720           ‘LC_TIME’ ロケール・カテゴリが POSIX なら、POSIX ロケールのタ
6721           イムスタンプを表示し、 それ以外なら、STYLE 形式のタイムスタン
6722           プを表示する。 たとえば、‘posix-long-iso’ という指定は、POSIX
6723           ロケールでは ‘Mar 30  2002’ や ‘Mar 30 23:45’ といったタイムス
6724           タンプを表示し、 それ以外のロケールでは ‘2002-03-30 23:45’ と
6725           いったタイムスタンプを表示する。
6726
6727    ‘--time-style’ オプションのデフォルト値は、環境変数 ‘TIME_STYLE’ を使
6728 って指定することができる。‘TIME_STYLE’ が設定されていない場合、 デフォル
6729 トの形式は ‘locale’ である。GNU Emacs のバージョン 21.3 以降では、‘ls’ の
6730 ‘--dired’ オプションを使用しており、 従って、どんな日付のフォーマットで
6731 も解析することができる。しかし、Emacs 21.1 や 21.2 を使っていて、POSIX 以
6732 外のロケールを指定している場合は、 ‘TIME_STYLE="posix-long-iso"’ を設定
6733 する必要があるかもしれない。
6734
6735    ある種のサービス不能化攻撃 (denial-of-service attacks) を回避するため
6736 、 1000 バイトより長くなりそうなタイムスタンプは、エラーとして処理される
6737 ことがある。
6738
6739 \1f
6740 File: coreutils-ja.info,  Node: Formatting the file names,  Prev: Formatting file timestamps,  Up: ls invocation
6741
6742 10.1.7 ファイル名のフォーマット
6743 -------------------------------
6744
6745 以下のオプションは、ファイル名の表示方法を変更する。
6746
6747 ‘-b’
6748 ‘--escape’
6749 ‘--quoting-style=escape’
6750      ファイル名中の非表示文字を、C 言語で使うような、バックスラッシュに
6751      アルファベットや 8 進数を続ける方法を使用して、クォートする (訳注:
6752      このオプションでは、タブや改行だけでなく、空白 (Ox20) もバックスラ
6753      ッシュでクォートされる)。
6754
6755 ‘-N’
6756 ‘--literal’
6757 ‘--quoting-style=literal’
6758      ファイル名をクォートしない。とは言え、‘ls’ では、出力先が端末の場合
6759      は、 ‘--show-control-chars’ が指定されていないかぎり、 非表示文字を
6760      疑問符として表示するぐらいのことは行う。
6761
6762 ‘-q’
6763 ‘--hide-control-chars’
6764      ファイル名中の非表示文字に代えて、疑問符を表示する。 この動作は、出
6765      力先が端末で、プログラムが ‘ls’ の場合のデフォルトである。
6766
6767      (訳注: このオプションの現在の動作は変わっているかもしれない。 すな
6768      わち、出力先が端末以外の場合は、上記の通り、非表示文字を疑問符で表
6769      示するが、 出力先が端末の場合は、非表示文字を疑問符ではなく、‘$''’
6770      という形で表示し、空白 (0x20) を含むファイル名はファイル名全体をシ
6771      ングルクォートで囲むかもしれない。 ‘--quoting-style’ の説明の末尾の
6772      訳注もご覧になっていただきたい。)
6773
6774 ‘-Q’
6775 ‘--quote-name’
6776 ‘--quoting-style=c’
6777      ファイル名をダブル・クォートで囲み、非表示文字を C 言語と同じやり方
6778      でクォートする。
6779
6780 ‘--quoting-style=WORD’
6781      ファイル名などの文字列には、通常使われない文字が含まれているかもし
6782      れない。 このオプションを指定すると、WORD というスタイルを使って、
6783      そうした文字列をクォートすることになる。 WORD は、以下に挙げるもの
6784      の一つでなければならない。
6785
6786      ‘literal’
6787           文字列に手を加えず、そのまま出力する。これは、‘-N’ や
6788           ‘--literal’ オプションと同じである。
6789      ‘shell’
6790           文字列にシェルのメタ文字がある場合や、出力が誤解を招くものにな
6791           りそうな場合に、 シェル向けのクォートを施す。このクォート方法
6792           は、‘bash’ のような POSIX 互換のシェルにはふさわしいものだが、
6793           ‘csh’ のような非互換のシェルでは、必ずしもうまく働くとはかぎら
6794           ない。
6795      ‘shell-always’
6796           普通ならクォートが不要な場合でも、文字列にシェル向けのクォート
6797           を施す。
6798      ‘shell-escape’
6799           ‘shell’ に似ているが、非表示文字のクォーティングに POSIX 提唱
6800           の ‘$''’ という書式を使用する。ほとんどのシェルに適している。
6801           (訳注: ファイル名中に空白 (0x20) がある場合は、ファイル名全体
6802           をシングルクォートで囲む。)
6803      ‘shell-escape-always’
6804           ‘shell-escape’ に似ているが、普通ならクォートが不要な場合でも
6805           、 文字列にクォートを施す。
6806      ‘c’
6807           C 言語の文字列リテラルをクォートするときのように、文字列をクォ
6808           ートする。 文字列をダブル・クォートで囲むことも行う。 これは、
6809           ‘-Q’ や ‘--quote-name’ オプションと同じである。
6810      ‘escape’
6811           C 言語の文字列リテラルをクォートするときのように、文字列をクォ
6812           ートする。 ただし、文字列をダブル・クォートで囲むことはしない
6813           。 これは、‘-b’ や ‘--escape’ と同じである。
6814      ‘clocale’
6815           C 言語の文字列リテラルをクォートするときのように、文字列をクォ
6816           ートする。 ただし、文字列を囲む引用符には、ロケールにふさわし
6817           いものを使う。
6818      ‘locale’
6819           C 言語の文字列リテラルをクォートするときのように、文字列をクォ
6820           ートする。 ただし、文字列を囲む引用符には、ロケールにふさわし
6821           いものを使い、 さらに、デフォルトの C ロケールで言うと、"like
6822           this" ではなく、 'like this' のようにクォートを行う。この方が
6823           見栄えのよいディスプレイが多い。
6824
6825      ‘--quoting-style’ オプションのデフォルト値は、環境変数
6826      ‘QUOTING_STYLE’ によって指定することができる。 この環境変数が設定さ
6827      れていない場合、デフォルトの値は、出力先が端末のときは
6828      ‘shell-escape’ であり、端末以外のときは ‘literal’ である。
6829
6830      (訳注: 上記の説明からは、デフォルトの端末に対する出力のスタイルは、
6831      ‘shell-escape’ であるように読める。しかし、‘--hide-control-chars’
6832      (‘-q’) の説明や、‘ls’ の章全体の冒頭では、 非表示文字を疑問符として
6833      表示するのが、デフォルトの端末に対する出力だと言っている。 info マ
6834      ニュアルの説明に少し混乱があり、部分的に古い記述が残っているらしい
6835      。実のところ、coreutils の開発元では、バージョン 8.25 あたりから、
6836      デフォルトの端末に対する出力を ‘--quoting-style=shell-escape’ にし
6837      ている。 たとえば、ファイル名にタブが含まれている場合、オプションな
6838      しの ‘ls’ は、‘aaa?bbb’ ではなく ‘'aaa'$'\t''bbb'’ のように端末に表
6839      示するのである。また、ファイル名中に空白がある場合は、 ファイル名全
6840      体をシングルクォートで囲って、‘'/misc/xxx yyy'’ のように表示する。
6841      しかし、ディストリビューションによっては、バージョン 8.26 でも、デ
6842      フォルトの端末に対する出力を ‘--quoting-style=literal’ にしているこ
6843      ともある。 その方が見やすいかもしれないので、それも一見識だと思う。
6844      端末に対するデフォルトの出力や ‘-q’ オプションの動作が、ご自分のと
6845      ころではどうなっているか、一度お確かめになっておくとよい。)
6846
6847 ‘--show-control-chars’
6848      ファイル名中の非表示文字に手を加えず、そのまま出力する。 この動作は
6849      、出力先が端末ではない場合や、プログラムが ‘ls’ ではない場合のデフ
6850      ォルトである。
6851
6852      (訳注: 開発元配布のバージョン 8.26 では、‘--show-contrls-chars’ を
6853      指定した場合も、出力先が端末だと、非表示文字を ‘$''’ の書式で表示し
6854      ている。 出力先が端末以外なら、上の説明どおり、非表示文字がそのまま
6855      出力される。 しかし、ディストリビューション配布の ‘ls’ では、出力先
6856      が端末の場合に上記説明通りの動作をするものもある。 これも、お手元で
6857      実際の動作を確かめておいていただきたい。)
6858
6859 \1f
6860 File: coreutils-ja.info,  Node: dir invocation,  Next: vdir invocation,  Prev: ls invocation,  Up: Directory listing
6861
6862 10.2 ‘dir’: ディレクトリの内容を簡潔に表示する
6863 ==============================================
6864
6865 ‘dir’ の動作は、‘ls -C -b’ と同じである。 すなわち、デフォルトでは、ファ
6866 イルのリストを多段組みで (訳注: 1 行に複数ファイルの形式で) 表示し、ソー
6867 トは縦方向に行う。 また、特殊文字は、バックスラッシュ・エスケープシーケ
6868 ンスを使って表示する。
6869
6870    *Note ‘ls’: ls invocation.
6871
6872 \1f
6873 File: coreutils-ja.info,  Node: vdir invocation,  Next: dircolors invocation,  Prev: dir invocation,  Up: Directory listing
6874
6875 10.3 ‘vdir’: ディレクトリの内容を詳細に表示する
6876 ===============================================
6877
6878 ‘vdir’ の動作は、‘ls -l -b’ と同じである。 すなわち、デフォルトでは、詳
6879 細形式でファイルをリストし、 特殊文字は、バックスラッシュ・エスケープシ
6880 ーケンスを使って表示する。
6881
6882    *Note ‘ls’: ls invocation.
6883
6884 \1f
6885 File: coreutils-ja.info,  Node: dircolors invocation,  Prev: vdir invocation,  Up: Directory listing
6886
6887 10.4 ‘dircolors’: ‘ls’ のカラー設定
6888 ===================================
6889
6890 ‘dircolors’ は、‘ls’ (や ‘dir’ など) でカラー出力をするのに必要な端末設
6891 定のためのシェルコマンドのシーケンスを出力する。 通常、次のような形で使
6892 用される。
6893
6894      eval "$(dircolors [OPTION]... [FILE])"
6895
6896    FILE が指定されていると、‘dircolors’ はそれを読み込んで、 どのファイ
6897 ルタイプや拡張子に対してどの色を使うかを決定する。 FILE が指定されていな
6898 い場合は、プログラムに埋め込まれているデータベースが使用される。 そうし
6899 た設定ファイルの書式について詳しいことを知りたかったら、 ‘dircolors
6900 --print-database’ を実行してみるとよい。
6901
6902    ファイル ‘~/.dircolors’ が存在していたら、‘dircolors’ がそれを読み込
6903 むようにするには、以下の行を自分の ‘~/.bashrc’ に書き込めばよい (お気に
6904 入りのシェルが bash でないなら、適切に書き直すこと)。
6905
6906      d=.dircolors
6907      test -r $d && eval "$(dircolors $d)"
6908
6909    ‘dircolors’ の出力は、環境変数 ‘LS_COLORS’ を設定するシェルコマンドで
6910 ある。どのシェルの文法にするかは、 コマンドラインで指定することができる
6911 。指定しない場合は、環境変数 ‘SHELL’ の値から ‘dircolors’ が推測する。
6912
6913    このプログラムでは以下のオプションが使用できる。参照: *note Common
6914 options::.
6915
6916 ‘-b’
6917 ‘--sh’
6918 ‘--bourne-shell’
6919      Bourne シェルのコマンドを出力する。これが、環境変数 ‘SHELL’ が設定
6920      されていて、その値が ‘csh’ や ‘tcsh’ で終わっていないときのデフォル
6921      トである。
6922
6923 ‘-c’
6924 ‘--csh’
6925 ‘--c-shell’
6926      C シェルのコマンドを出力する。これは、環境変数 ‘SHELL’ の値が、
6927      ‘csh’ や ‘tcsh’ で終わっているときのデフォルトである。
6928
6929 ‘-p’
6930 ‘--print-database’
6931      (プログラムに埋め込まれている) デフォルトのカラー設定データベースを
6932      出力する。 この出力は、それ自体有効な設定ファイルであり、どういう設
6933      定が可能かについてかなり詳しく説明している。
6934
6935    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
6936
6937 \1f
6938 File: coreutils-ja.info,  Node: Basic operations,  Next: Special file types,  Prev: Directory listing,  Up: Top
6939
6940 11 基本的なファイル操作
6941 ***********************
6942
6943 この章では、基本的なファイル操作のためのコマンドを説明する。 すなわち、
6944 コピー、移動 (名前の変更)、消去 (削除) といった操作である。
6945
6946 * Menu:
6947
6948 * cp invocation::            ファイルをコピーする。
6949 * dd invocation::            ファイルの変換とコピー。
6950 * install invocation::       ファイルをコピーし属性をセットする。
6951 * mv invocation::            ファイルの移動 (名前の変更) を行う。
6952 * rm invocation::            ファイルやディレクトリを削除する。
6953 * shred invocation::         セキュリティを向上させたファイルの削除。
6954
6955 \1f
6956 File: coreutils-ja.info,  Node: cp invocation,  Next: dd invocation,  Up: Basic operations
6957
6958 11.1 ‘cp’: ファイルやディレクトリをコピーする
6959 =============================================
6960
6961 ‘cp’ はファイルをコピーする (もしそうしたければ、ディレクトリのコピーも
6962 できる)。 コピーによって作られたファイルは、コピー元から全く独立したもの
6963 になる。 一つのファイルを別のファイルにコピーすることもできるし、 好きな
6964 だけたくさんのファイルをコピー先のディレクトリに一遍にコピーすることもで
6965 きる。
6966
6967    書式:
6968
6969      cp [OPTION]... [-T] SOURCE DEST
6970      cp [OPTION]... SOURCE... DIRECTORY
6971      cp [OPTION]... -t DIRECTORY SOURCE...
6972
6973    • ファイル名を二つ指定すると、‘cp’ は最初のファイルを 2 番目のファイ
6974      ルにコピーする。
6975
6976    • ‘--target-directory’ (‘-t’) オプションを指定した場合や、 あるいはそ
6977      れを指定しないでも、最後のファイルがディレクトリであり、しかも
6978      ‘--no-target-directory’ (‘-T’) オプションを指定していない場合は、
6979      ‘cp’ は、各コピー元 (SOURCE) ファイルを、指定されたディレクトリにコ
6980      ピー元 (SOURCE) と同じ名前でコピーする。
6981
6982    ほとんどの場合、ファイルは読み込まれたとおりに書き出される。 例外につ
6983 いては、後述の ‘--sparse’ オプションをご覧になっていただきたい。
6984
6985    デフォルトでは、‘cp’ はディレクトリをコピーしない。 ただし、‘-R’,
6986 ‘-a’, ‘-r’ オプションを指定すると、 ‘cp’ は再帰的なコピーを行う。 すなわ
6987 ち、コピー元のディレクトリを段階的に下って、対応するコピー先のディレクト
6988 リにファイルをコピーすることになる。
6989
6990    コピー元がシンボリックリンクの場合、‘cp’ がリンクをたどるのは (訳注:
6991 すなわち、リンクそのものではなく、参照先の実ファイルをコピーするのは)、
6992 通常では、再帰的なコピーをしていないときか、あるいは、‘--link’ (‘-l’) オ
6993 プションが使用されているときだけである。 このデフォルトの動作は、次に挙
6994 げるオプションによって変更することができる。 ‘--archive’ (‘-a’), ‘-d’,
6995 ‘--dereference’ (‘-L’), ‘--no-dereference’ (‘-P’), ‘-H’。 こうしたオプシ
6996 ョンを二つ以上指定すると、‘cp’ は警告を出さず、最後のオプションで他のも
6997 のを上書きする。
6998
6999    (訳注: 最近の ‘cp’ では ‘--link’ オプションの動作が変更されている。 コ
7000 ピー元がシンボリックリンクの場合、coreutils-8.21 までは、 デフォルトでは
7001 、シンボリックリンクのハードリンクを作っていたが、8.22 以後の ‘cp’ では
7002 参照先ファイルのハードリンクを作るようになっている。)
7003
7004    コピー先がシンボリックリンクの場合、‘cp’ がリンクをたどるのは (訳注:
7005 すなわち、コピー元ファイルで、リンクそのものではなく、参照先のファイルを
7006 上書きするのは)、 そのリンクが、存在する通常ファイルを指しているときだけ
7007 である。 それに対して、コピー先のシンボリックリンクがリンク切れしている
7008 場合は、‘cp’ は、デフォルトではコピーを拒否し、エラーメッセージを出して
7009 、実行に失敗する。 そうした操作は、本質的に危険だからである。 この動作は
7010 、伝統的な習慣や POSIX の仕様に反している。 たとえリスクがあろうとも、リ
7011 ンク切れしたシンボリックリンクの参照先を ‘cp’ が作成するようにしたいなら
7012 、環境変数 ‘POSIXLY_CORRECT’ を設定すればよい。なお ‘--backup’ や
7013 ‘--link’ といったオプションが、コピーする前にコピー先ファイルの名前変更
7014 や削除を行う場合、 ‘cp’ は、リンクが指しているファイルではなく、シンボリ
7015 ックリンクの名前変更や削除を行う。
7016
7017    デフォルトでは、‘cp’ がスペシャルファイルの内容をコピーするのは、 再
7018 帰的なコピーをしていないときだけである。このデフォルトの動作は、
7019 ‘--copy-contents’ によって変更できる。
7020
7021    ‘cp’ は通常、ファイルを自分自身にコピーすることを拒否するが、次の例外
7022 がある。 SOURCE と DEST が同一で、しかも、通常ファイルを指しているとき、
7023 ‘--force --backup’ オプションが指定されると、‘cp’ はバックアップファイル
7024 を作成することになる。バックアップファイルを標準のものにするか (訳注: フ
7025 ァイルの末尾にチルダ ‘~’ が 1 個付く)、番号付きのものにするかは、 いつも
7026 どおりの方法で指定できる (*note Backup options::)。 存在するファイルに変
7027 更を加える前に、そのバックアップをちょっと作っておきたい場合、この動作は
7028 便利である。
7029
7030    このプログラムでは以下のオプションが使用できる。参照: *note Common
7031 options::.
7032
7033 ‘-a’
7034 ‘--archive’
7035      コピー元ファイルの構造と属性をコピー先でもできるだけ維持する (ただ
7036      し、ディレクトリの内部構造を維持しようとはしない。そのため、コピー
7037      先で ‘ls -U’ を実行すると、コピー元とは違った順序でファイルがリスト
7038      されるかもしれない)。 SELinux コンテキストや拡張属性 (xattr) も維持
7039      しようとするが、 そうした操作に失敗しても無視し、その旨エラーメッセ
7040      ージを表示することはない。 エラーメッセージが少ないだけで、‘-dR
7041      --preserve=all’ と同じある。
7042
7043 ‘--attributes-only’
7044      コピー元ファイルの指定された属性のみを、コピー先にコピーする。 コピ
7045      ー先ファイルがすでに存在している場合、その内容を変更することはない
7046      。 属性のうち、何をコピーするかを決める方法については、‘--preserve’
7047      オプションの項を見ていただきたい。
7048
7049 ‘-b’
7050 ‘--backup[=METHOD]’
7051      *Note Backup options::. そのままでは、上書きされるか、消去されてし
7052      まう各ファイルのバックアップを作成する。 特殊な用法としては、次のも
7053      のがある。force と backup の両方のオプションが指定されているとき、
7054      コピー元 (SOURCE) とコピー先 (DEST) が同じ名前で、しかも実在する通
7055      常ファイルを指していると、 ‘cp’ はコピー元 (SOURCE) のバックアップ
7056      を作成する。 次のちょっとした Bourne シェルのスクリプトは、オプショ
7057      ンのこの組み合わせの応用だが、便利である。
7058
7059           #!/bin/sh
7060           # Usage: backup FILE...
7061           # リストされた各 FILE について GNU スタイルのバックアップを
7062           # 作成する
7063           fail=0
7064           for i; do
7065             cp --backup --force --preserve=all -- "$i" "$i" || fail=1
7066           done
7067           exit $fail
7068
7069 ‘--copy-contents’
7070      再帰的なコピーを行っている際に、スペシャルファイル (たとえば、FIFO
7071      やデバイスファイル) の内容を、操作対象が通常ファイルであるかのよう
7072      にコピーする。 要するに、コピー元の各ファイルからデータを読み込んで
7073      、それをコピー先に書き出そうとするわけである。 このオプションを使う
7074      のは、ほとんどの場合誤りである。なぜなら、 FIFO や、通常 ‘/dev’ デ
7075      ィレクトリにあるようなスペシャルファイルを対象にした場合、 望ましく
7076      ない結果を生ずることが珍しくないからだ。 ‘cp -R --copy-contents’ は
7077      、FIFO や ‘/dev/console’ のようなスペシャルファイルからデータを読み
7078      込もうとすると、 たいていの場合、いつまでも無反応になるだろうし、
7079      ‘/dev/zero’ をコピーしようとすれば、コピー先のディスクを溢れさせて
7080      しまうだろう。 このオプションは、再帰的なコピーをするとき以外、効果
7081      を持たない。 また、シンボリックリンクのコピーには影響しない。
7082
7083 ‘-d’
7084      シンボリックリンクをコピーする際、リンクが指しているファイルをコピ
7085      ーするのではなく、 シンボリックリンクをシンボリックリンクとしてコピ
7086      ーする。 また、コピー元において複数のファイルがハードリンクの関係に
7087      ある場合、 コピー先でもその関係を維持する。 ‘--no-dereference
7088      --preserve=links’ と同じである。
7089
7090 ‘-f’
7091 ‘--force’
7092      このオプションを付けずにコピーを行う場合、 コピー先ファイルがすでに
7093      存在し、しかも書き込みモードでオープンできないと、コピーに失敗する
7094      。 それに対して、‘--force’ を付けた場合は、コピー先ファイルがオープ
7095      ンできないと、 ‘cp’ は、まずそれを削除してから、再度オープンを試み
7096      る。 この動作は、‘--force’ と一緒に ‘--link’ や ‘--symbolic-link’ を
7097      使用した場合に行われる動作とは、違うことに注意していただきたい。 後
7098      者の場合は、すでに存在するコピー先ファイルは一度もオープンされず、
7099      むしろ無条件で削除されるのである。‘--remove-destination’ の説明も参
7100      照すること。
7101
7102      このオプションは、‘--interactive’ や ‘-i’ オプションとは無関係であ
7103      る。どちらも他方の効果を無効にすることはない。
7104
7105      ‘--no-clobber’ や ‘-n’ オプションを使用している場合、このオプション
7106      は無視される。
7107
7108 ‘-H’
7109      コマンドラインの引数がシンボリックリンクを指定している場合には、 シ
7110      ンボリックリンクそのものではなく、それが指しているファイルをコピー
7111      する。 とは言え、再帰的にディレクトリ・ツリーをたどっているときにシ
7112      ンボリックに出会った場合は、 そのまま (つまり、シンボリックリンクと
7113      して) コピーする。
7114
7115 ‘-i’
7116 ‘--interactive’
7117      ディレクトリ以外のファイルをコピーする際に、コピー先ファイルがすで
7118      に存在していると、 プロンプトを出して、ファイルを上書きしてよいかど
7119      うか、ユーザに問い合わせる。 ‘-i’ オプションは、‘-n’ オプションが前
7120      にあるとき、それを無効にする。
7121
7122 ‘-l’
7123 ‘--link’
7124      コピー元がディレクトリ以外の場合、コピーする代わりに、ハードリンク
7125      を作成する。
7126
7127 ‘-L’
7128 ‘--dereference’
7129      コピー元がシンボリックリンクの場合は、その参照先をコピーする。 また
7130      、このオプションを使った場合、‘cp’ はシンボリックリンクを作ることが
7131      できない。 たとえば、コピー元のディレクトリ・ツリー中に (通常ファイ
7132      ルに対する) シンボリックリンクがあると、コピー先のディレクトリ・ツ
7133      リーには、通常ファイルとしてコピーされることになる。
7134
7135 ‘-n’
7136 ‘--no-clobber’
7137      存在するファイルを上書きしない。‘-n’ オプションは、‘-i’ オプション
7138      が前にあるとき、それを無効にする。このオプションと ‘-b’
7139      (‘--backup’) オプションは、どちらか一方しか指定できない。
7140
7141 ‘-P’
7142 ‘--no-dereference’
7143      コピー元がシンボリックリンクの場合、それが指しているファイルをコピ
7144      ーするのではなく、 シンボリックリンクとしてコピーする。このオプショ
7145      ンが作用を及ぼすのは、 コピー元のシンボリックリンクに対してだけであ
7146      り、 コピー先に指定されたシンボリックリンクについては、可能なかぎり
7147      常に参照先がたどられる。
7148
7149 ‘-p’
7150 ‘--preserve[=ATTRIBUTE_LIST]’
7151      コピー元ファイルの属性のうち、指定されたものをコピー先でも維持する
7152      。 ATTRIBUTE_LIST を指定する場合は、一つ以上の以下の文字列をコンマ
7153      で区切ったリストでなければならない。
7154
7155      ‘mode’
7156           ファイルのモードビット (訳注: 一般にアクセス権とか、許可属性と
7157           言われるもの) やアクセス・コントロール・リストを維持する。
7158      ‘ownership’
7159           所有者とグループを維持する。ほとんどの最近のシステムでは、 フ
7160           ァイルの所有者を変更できるのは、しかるべき権限を持ったユーザだ
7161           けである。 また、一般ユーザがファイルのグループを維持できるの
7162           は、 維持しようとするグループに、たまたまそのユーザが属してい
7163           るときのみである。
7164      ‘timestamps’
7165           最終アクセス日時 (last access time) と最終更新日時 (last
7166           modification time) を、可能ならば、維持する。古いシステムでは
7167           、対象となるファイルがシンボリックリンクの場合、 そうした属性
7168           を維持することができない。 それに対して、最近のシステムでは、
7169           たいていのものが ‘utimensat’ 関数を用意しているので、シンボリ
7170           ックリンクの場合でも、日時関係の属性維持が可能である。
7171      ‘links’
7172           コピー元のファイル同士が (ハードリンクであれ、シンボリックリン
7173           クであれ) リンクの関係にあるとき、コピー先の対応するファイル同
7174           士でも、その関係を維持する。 ただし、‘-L’ や ‘-H’ と一緒に使っ
7175           た場合、 このオプションがシンボリックリンクをハードリンクに変
7176           更することがあるのに、 注意していただきたい。一例を挙げる。
7177                $ mkdir c; : > a; ln -s a b; cp -aH a b c; ls -i1 c
7178                74161745 a
7179                74161745 b
7180           コピー元に注目していただきたい。‘b’ は、通常ファイル ‘a’ を指
7181           すシンボリックリンクである。 ところが、コピー先ディレクトリ
7182           ‘c/’ の二つのファイルは、ハードリンクになっている。 ‘-a’ は
7183           ‘--no-dereference’ を意味するのだから、 シンボリックリンクがコ
7184           ピーされそうに思えるが、この場合は、後に続く ‘-H’ が、コマンド
7185           ライン引数の参照をたどるように ‘cp’ に命じているので、‘cp’ に
7186           は、同じ inode 番号を持った 2 個のファイルがコマンドラインで指
7187           定されているように見えるのである。 さらに、‘-a’ は
7188           ‘--preserve=links’ オプションを意味してもいるので、 この働きに
7189           よって、ハードリンクと認識された両ファイルの関係が、コピー先で
7190           も維持されることになるのである。
7191
7192           次のものは、‘cp’ の ‘-L’ を使った場合の類似例である。
7193                $ mkdir b c; (cd b; : > a; ln -s a b); cp -aL b c; ls -i1 c/b
7194                74163295 a
7195                74163295 b
7196
7197      ‘context’
7198           ファイルの SELinux セキュリティ・コンテキストを維持する。 それ
7199           ができないときは、詳細なエラーメッセージを出し、失敗のステータ
7200           スで終了する。
7201      ‘xattr’
7202           ファイルの拡張属性を維持する。それができないときは、詳細なエラ
7203           ーメッセージを出し、失敗のステータスで終了する。 ‘cp’ が xattr
7204           のサポートなしでビルドされている場合は、このオプションは無視さ
7205           れる。 SELinux コンテキスト、ACL、ケーパビリティなどを xattr を
7206           使って実装している場合には、 そうした属性もこのオプションによ
7207           って、明示的な指定がない場合でも維持される。 すなわち、
7208           ‘--preserve=mode’ や ‘--preserve=context’ を指定しないでも維持
7209           されるわけだ。
7210      ‘all’
7211           ファイルの属性をすべて維持する。上記のすべてを指定するのと同じ
7212           ことだが、 SELinux セキュリティ・コンテキストや拡張属性の維持
7213           に失敗しても、 ‘cp’ の終了ステータスが変わらないという点が異な
7214           っている。 ‘-a’ とは違って、‘Operation not supported’ 以外のす
7215           べての警告メッセージを出力する。
7216
7217      ATTRIBUTE_LIST なしで ‘--preserve’ を使用するのは、
7218      ‘--preserve=mode,ownership,timestamps’ と同じことである。
7219
7220      このオプションを使わない場合、コピー先ファイルがすでに存在している
7221      場合は、 その許可属性は変更されない。一方、新しくファイルが作成され
7222      る場合は、 対応するコピー元ファイルのモードを元にして、 そこから
7223      set-user-ID ビット、set-group-ID ビット、スティッキー・ビットを落と
7224      したものが、 各ファイルに付けられ、そしてさらに、オペレーティング・
7225      システムが umask なり、デフォルトの ACL なりを適用する。 結果はより
7226      厳しいファイルモードになるかもしれない。 *Note File permissions::.
7227
7228 ‘--no-preserve=ATTRIBUTE_LIST’
7229      指定された属性を維持しない。ATTRIBUTE_LIST の書式は、‘--preserve’ の
7230      場合と同じである。
7231
7232 ‘--parents’
7233      コピー先の各ファイル名を生成する際、出力先に指定されたディレクトリ
7234      の末尾にスラッシュを付け、 その後ろにコピー元として指定されたファイ
7235      ル名を付け足すことによってそれを行う。 ‘cp’ に渡す最後の引数は、実
7236      在するディレクトリの名前でなければならない。 一例を挙げる。
7237
7238           cp --parents a/b/c existing_dir
7239
7240      ファイル ‘a/b/c’ を上記のコマンドでコピーすると、ファイル
7241      ‘existing_dir/a/b/c’ が出来る。 途中のディレクトリが存在していなけ
7242      れば、それも作成される。
7243
7244 ‘-R’
7245 ‘-r’
7246 ‘--recursive’
7247      ディレクトリを再帰的にコピーする。デフォルトでは、‘--link’ (‘-l’) オ
7248      プションが同時に使われていないかぎり、コピー元にあるシンボリックリ
7249      ンクの参照をたどることをしない。 ‘--archive’ (‘-a’), ‘-d’,
7250      ‘--dereference’ (‘-L’), ‘--no-dereference’ (‘-P’), ‘-H’ などのオプ
7251      ションを参照。スペシャルファイルについては、 コピーする際に、コピー
7252      元ファイルと同じファイル型のコピー先ファイルを作成する。
7253      ‘--copy-contents’ を参照。シンボリックリンクやスペシャルファイルの
7254      コピーに ‘-r’ オプションを使用するのは、どのシステムでも通用するこ
7255      とではない。 GNU 以外のシステムの中には、歴史的な理由から ‘-r’ が、
7256      ‘-L’ と ‘--copy-contents’ を同時に指定するのと等価になっているもの
7257      もあるからだ。 また、シンボリックリンクをコピーするのに ‘-R’ を使用
7258      するのも、‘-P’ も併せて指定しないかぎり、どのシステムでも通用するこ
7259      とではない。 デフォルトでシンボリックリンクの参照先をたどる実装が、
7260      POSIX で認められているからである。
7261
7262 ‘--reflink[=WHEN]’
7263      ファイルシステムがサポートしていれば、軽便コピー、すなわち、 書き込
7264      み時コピー(copy-on-write (COW) copy) を行う。 留意すべきは、これが
7265      成功した場合、コピー元とコピー先のファイルは、 どちらかに対して変更
7266      が加えられるまで、ディスクの同じデータブロックを共有しているという
7267      ことである。 従って、ディスク I/O エラーが起きて、片方のファイルの
7268      データブロックが損傷を受ければ、 もう一方のファイルも同じ被害に会う
7269      。
7270
7271      WHEN の値には、次のうちの一つが使える。
7272
7273      ‘always’
7274           デフォルトの動作である。copy-on-write がサポートされていない場
7275           合は、 各ファイルについて失敗した旨を報告し、失敗を示すステー
7276           タスで終了する。
7277
7278      ‘auto’
7279           copy-on-write 操作がサポートされていない場合は、copy-on-write
7280           をあきらめて、標準のコピー動作を行う。
7281
7282      このオプションは、‘--link’, ‘--symbolic-link’ ‘--attributes-only’ オ
7283      プションによって無効になるので、データをコピーする際の ‘cp’ のデフ
7284      ォルト動作の設定に使用することができる。 たとえば、次のエイリアスを
7285      使うと、‘cp’ は、ファイルシステムがサポートする範囲で、 ディスクス
7286      ペースの使用を最少に留めるようになる。
7287
7288           alias cp='cp --reflink=auto --sparse=always'
7289
7290 ‘--remove-destination’
7291      コピー先ファイルがすでに存在する場合、その各々についてオープンを試
7292      みる前に、削除する (上述の ‘-f’ と比較すること)。
7293
7294 ‘--sparse=WHEN’
7295      穴空きファイル (“sparse file”) とは、穴 (“holes”) を含むファイルで
7296      ある。 穴というのは、物理的なディスクブロック上には存在しないゼロバ
7297      イトの連続で、 ‘read’ システムコールがそれを読む込むとき、ゼロの連
7298      続として扱うものである。 バイナリ・ファイルには、連続するゼロバイト
7299      がたくさん含まれていることが多いので、 この仕組みは、ディスクスペー
7300      スを大いに節約してくれるし、動作速度の向上をもたらしてもくれる。 デ
7301      フォルトで ‘cp’ は、かなり大雑把な発見的手法を使って、 コピー元ファ
7302      イルにある穴を検出し、対応するコピー先ファイルも穴空きファイルにす
7303      る。 なお、穴空きファイルにできるのは、通常ファイルだけである。
7304
7305      WHEN の値には、次のうちの一つが使える。
7306
7307      ‘auto’
7308           デフォルトの動作である。すなわち、コピー元が穴空きファイルなら
7309           、 コピー先も穴空きファイルにしようとする。 ただし、コピー先フ
7310           ァイルがすでに存在していても、通常ファイル以外を指している場合
7311           には、 それを穴空きにしようとはしない。
7312
7313      ‘always’
7314           たとえ、コピー元ファイルが穴空きファイルに見えなくても、十分に
7315           長いゼロバイトの連続があれば、 その各々に対応する穴をコピー先
7316           ファイルに設けようとする。この動作が役に立つのは、 コピー元フ
7317           ァイルが、穴空きファイルをサポートしていないファイルシステムに
7318           あるのに対し (たとえば、SGI IRIX 5.3 以前の ‘efs’ ファイルシス
7319           テム)、 コピー先ファイルは穴空きファイルをしっかりサポートする
7320           タイプのファイルシステムにある場合である。 穴を作ることができ
7321           るのは、通常ファイルだけなので、コピー先が通常ファイル以外なら
7322           、 ‘cp’ がそのファイルを穴空きにしようと試みることもない。
7323
7324      ‘never’
7325           コピー先ファイルを穴空きにしない。 これは、‘mkswap’ コマンドで
7326           使用するファイルを作成するときに役に立つ。 そうしたファイルに
7327           は、穴があってはならないからである。
7328
7329 ‘--strip-trailing-slashes’
7330      SOURCE 引数の後ろにスラッシュが付いていたら、それを削除する。 *Note
7331      Trailing slashes::.
7332
7333 ‘-s’
7334 ‘--symbolic-link’
7335      コピー元がディレクトリ以外の場合、コピーする代わりに、シンボリック
7336      リンクを作成する。 出力先ファイルをカレント・ディレクトリに作成する
7337      場合を除いて、 コピー元ファイルの名前は、すべて (‘/’ で始まる) 絶対
7338      パス表記でなければならない。 シンボリックリンクをサポートしていない
7339      システムでは、このオプションはエラーメッセージを出すだけである。
7340
7341 ‘-S SUFFIX’
7342 ‘--suffix=SUFFIX’
7343      ‘-b’ によって作られる各バックアップファイルの後ろに SUFFIX を付ける
7344      。 *Note Backup options::.
7345
7346 ‘-t DIRECTORY’
7347 ‘--target-directory=DIRECTORY’
7348      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
7349      directory::.
7350
7351 ‘-T’
7352 ‘--no-target-directory’
7353      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
7354      でも、それを特別扱いしない。 *Note Target directory::.
7355
7356 ‘-u’
7357 ‘--update’
7358      ディレクトリ以外のものをコピーする際、それがコピー先にも存在し、 し
7359      かもその更新日時 (modification time) がコピー元と同じか、より新しい
7360      場合、 コピーを行わない。コピー元からコピー先へタイムスタンプを引き
7361      継がせている場合には、 コピー元のタイムスタンプの精度を、コピー先の
7362      ファイルシステム、 及びタイプスタンプの更新に使われるシステムコール
7363      の精度に落とした上で、比較を行う。 これは、同じコピー元とコピー先の
7364      ファイルに対して ‘cp -pu’ コマンドを何回か実行する場合に、余計なコ
7365      ピー作業が起きるのを避けるためである。 ‘--preserve=links’ が一緒に
7366      指定されている場合は (たとえば、‘cp -au’ だとそうなる)、そちらが優
7367      先されることになる。 その結果、コピー元でファイルが処理される順番に
7368      よっては、 コピー元のハードリンクを反映させるために、コピー先のより
7369      新しいファイルが置き換えられることもある。
7370
7371 ‘-v’
7372 ‘--verbose’
7373      コピーを行う前に、コピーするファイル名を表示する。
7374
7375 ‘-x’
7376 ‘--one-file-system’
7377      あるファイルシステムでコピーを始めた場合、別のファイルシステムにあ
7378      るサブディレクトリをスキップする。 ただし、マウントポイントのディレ
7379      クトリはコピーされる。
7380
7381 ‘-Z’
7382 ‘--context[=CONTEXT]’
7383      CONTEXT が指定されていない場合は、出力するファイルの SELinux セキュ
7384      リティ・コンテキストを、出力先におけるシステムのデフォルトのタイプ
7385      に合わせて調整する。 これは、‘restorecon’ コマンドの動作に似ている
7386      。 このオプションの長い形式を使って、コンテキストを明示的に指定した
7387      場合、 そのコンテキストが設定されるのは、新しく作成されるファイルに
7388      対してのみである。 コンテキストを指定した場合に、SELinux と SMACK の
7389      どちらも無効になっていると、 警告メッセージを出す。 このオプション
7390      と ‘--preserve=context’ オプションは、どちらか一方しか指定できない
7391      。 また、このオプションは ‘--preserve=all’ や ‘-a’ オプションに優先
7392      する。
7393
7394    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7395
7396 \1f
7397 File: coreutils-ja.info,  Node: dd invocation,  Next: install invocation,  Prev: cp invocation,  Up: Basic operations
7398
7399 11.2 ‘dd’: ファイルの変換とコピー
7400 =================================
7401
7402 ‘dd’ はファイルをコピーする (デフォルトでは、標準入力から標準出力へコピ
7403 ーする)。 その際、入出力のブロックサイズを変更することができる。 また、
7404 データ形式の変換を行いつつコピーすることもできる。
7405
7406    書式:
7407
7408      dd [OPERAND]...
7409      dd OPTION
7410
7411    指定できるオプションは、‘--help’ と ‘--version’ だけである。 *Note
7412 Common options::.  ‘dd’ では、以下のオペランドが使える。 オペランドの書
7413 式の元になったのは、OS/360 の JCL (Job Control Language) の DD 文 (Data
7414 Definition statement) である。
7415
7416 ‘if=FILE’
7417      標準入力の代わりに、FILE から読み込む。
7418
7419 ‘of=FILE’
7420      標準出力の代わりに、FILE に書き出す。‘conv=notrunc’ が指定されてい
7421      ない場合、‘dd’ は、出力を開始する前に、FILE を 0 バイトに (あるいは
7422      、‘seek=’ で指定されたサイズに) 短縮する。
7423
7424 ‘ibs=BYTES’
7425      入力ブロックサイズを BYTES にする。‘dd’ が 1 ブロック BYTES バイト
7426      で読み込みを行うようになる。デフォルトは 512 バイトである。
7427
7428 ‘obs=BYTES’
7429      出力ブロックサイズを BYTES にする。‘dd’ が 1 ブロック BYTES バイト
7430      で書き出しを行うようになる。デフォルトは 512 バイトである。
7431
7432 ‘bs=BYTES’
7433      入力、出力、両方のブロックサイズを BYTES にする。‘dd’ が 1 ブロック
7434      BYTES バイトで読み書きを行うようになり、‘ibs’ や ‘obs’ の指定は、あ
7435      っても無効になる。なお、データ変換を行う ‘conv’ オプションが指定さ
7436      れていない場合は、入力は、それがブロックサイズより小さくても、 読み
7437      込まれるやいなや、出力にコピーされることになる。
7438
7439 ‘cbs=BYTES’
7440      変換ブロックサイズを BYTES にする。 可変長のレコードを固定長のレコ
7441      ードに変換するときや (‘conv=block’)、その逆を行うとき
7442      (‘conv=unblock’)、固定長レコードの長さとして BYTES の値を使用する。
7443
7444 ‘skip=N’
7445      入力ファイルで ‘ibs’ バイトのブロックを N 個読み飛ばしてから、 コピ
7446      ーを行う。‘iflag=skip_bytes’ が指定されている場合は、N はブロック数
7447      ではなく、バイト数と見なされる。
7448
7449 ‘seek=N’
7450      出力ファイルで ‘obs’ バイトのブロックを N 個スキップしてから、 コピ
7451      ーを行う。‘oflag=seek_bytes’ が指定されている場合は、 N はブロック
7452      数ではなく、バイト数と見なされる。
7453
7454 ‘count=N’
7455      入力ファイルの末尾まで全部ではなく、‘ibs’ バイトのブロックを N 個だ
7456      け入力ファイルからコピーする。‘iflag=count_bytes’ が指定されている
7457      場合は、N はブロック数ではなく、バイト数と見なされる。 なお、次のこ
7458      とに注意してほしい。パイプから読み込んでいる場合などに時おり起きる
7459      ことだが、 入力からの読み込みがブロックの大きさに足りないことがある
7460      。そうした場合に ‘iflag=fullblock’ が指定してあると、‘count=’ は、
7461      一杯になるまで読み込むブロックの個数を意味するようになる。 入力から
7462      読み込みを実行する回数という POSIX で規定されている伝統的な動作では
7463      なくなるのだ。
7464
7465 ‘status=LEVEL’
7466      通常では ‘INFO’ シグナルを受け取った時点や、‘dd’ が終了したときに、
7467      転送情報が標準エラーに出力される。 LEVEL の指定によって、表示する情
7468      報の量を調節することができる。 指定された LEVEL のうち、最後のもの
7469      が優先される。
7470
7471      ‘none’
7472           情報メッセージや警告メッセージを標準エラーに全く表示しない。 エ
7473           ラーメッセージは通常どおり出力する。
7474
7475      ‘noxfer’
7476           最終的な転送速度や転送量の統計を表示しない。通常は、そうした情
7477           報がステータス表示の最後の行になる。
7478
7479      ‘progress’
7480           各入力ブロックを処理するとき、転送速度と転送量の統計を標準エラ
7481           ーに表示する。 転送量の統計は 1 行に表示され、最も頻繁な場合、
7482           1 秒ごとに出力されるが、 I/O 待ちが起きると、更新が遅れること
7483           がある。
7484
7485 ‘conv=CONVERSION[,CONVERSION]...’
7486      CONVERSION 引数 (複数可) で指定されたようにファイルを変換する。 (コ
7487      ンマの前後にスペースを入れてはいけない。)
7488
7489      CONVERSION には次のものが指定できる:
7490
7491      ‘ascii’
7492           POSIX が規定している変換テーブルを使って、EBCDIC を ASCII に変
7493           換する。 変換テーブル中の 256 バイトのすべてについて、1 対 1 の
7494           変換が行われる。 このオプションを指定すると、‘conv=unblock’ も
7495           指定されることになる。 入力はまず ASCII に変換され、その後で末
7496           尾のスペースが除去される。
7497
7498      ‘ebcdic’
7499           ASCII を EBCDIC に変換する。これは ‘ascii’ 変換の逆の動作であ
7500           る。 このオプションを指定すると、‘conv=block’ も指定されること
7501           になる。 末尾にスペースが追加されてから、EBCDIC に変換される。
7502
7503      ‘ibm’
7504           この指定の動作は ‘conv=ebcdic’ に似ている。 ただし、POSIX が規
7505           定しているもう一つの変換テーブルを使って、変換する点が違う。 こ
7506           ちらは 1 対 1 の変換ではないが、‘~’, ‘[’, ‘]’ について、よく使
7507           われる伝統的な慣行を反映している。
7508
7509           ‘ascii’, ‘ebcdic’, ‘ibm’ は、どれか一つしか指定できない。 こう
7510           したオプションの一つを使う場合は、‘cbs=’ も指定すべきである。
7511
7512      ‘block’
7513           入力 1 行あたり、‘cbs’ バイトを出力する。 入力中の改行はスペー
7514           スに置き換え、‘cbs’ バイトに足りない分はスペースで埋める。
7515
7516      ‘unblock’
7517           ‘cbs’ バイトの大きさからなる各入力ブロックに対して、末尾にスペ
7518           ースがあれば、 それをすべて削除し、改行を追加する。
7519
7520           ‘block’ と ‘unblock’ は、どちらか一方しか指定できない。
7521
7522      ‘lcase’
7523           大文字を小文字に変換する。
7524
7525      ‘ucase’
7526           小文字を大文字に変換する。
7527
7528           ‘lcase’ と ‘ucase’ は、どちらか一方しか指定できない。
7529
7530      ‘sparse’
7531           出力ブロックが NUL のみからなっているとき、それを書き出さずに
7532           、seek を試みる。 穴空きファイル (sparse file) をサポートして
7533           いるシステムでは、 この動作は、出力ファイルを書き出していると
7534           きに、穴空きの出力を作成することになる。 このオプションを
7535           ‘conv=notrunc’ や ‘oflag=append’ と一緒に使う際は、気をつけな
7536           ければならない。‘conv=notrunc’ が付いていると、 入力中の NUL ブ
7537           ロックに対応する位置にある、出力ファイル中の存在するデータは、
7538           そのまま保持されることになる。‘oflag=append’ を付けた場合は、
7539           seek は行っても効果がない。なお、‘conv=sparse’ では、 出力先が
7540           ファイルではなく、デバイスの場合も、入力中の NUL ブロックはや
7541           はりコピーされない。 そんなわけで、このオプションが最も役に立
7542           つのは、仮想デバイスや、前もって 0 で初期化したデバイスに対し
7543           てである。
7544
7545      ‘swab’
7546           入力された全バイトを 2 個づつ組にして、前後を入れ替える。GNU の
7547           ‘dd’ は、他の ‘dd’ とは違って、読み込むバイトが奇数個でも動作
7548           する。 最後のバイトは (入れ替えるものがないので) そのままコピ
7549           ーするのである。
7550
7551      ‘sync’
7552           すべての入力ブロックに対して ‘ibs’ の大きさになるまで、末尾を
7553           ゼロバイトで埋める。 ‘block’ や ‘unblock’ と一緒に使用すると、
7554           ゼロバイトの代わりにスペースで埋める。
7555
7556      以下の CONVERSION は、実のところファイルの扱いに関するフラグなので
7557      、内的な処理には影響を及ぼさない。
7558
7559      ‘excl’
7560           出力ファイルがすでに存在する場合は、実行に失敗する。 言い換え
7561           れば、‘dd’ が出力ファイルを自分で作成しなければならないという
7562           ことである。
7563
7564      ‘nocreat’
7565           出力ファイルを作成しない。言い換えれば、出力ファイルは前もって
7566           存在していなければならないということだ。
7567
7568           ‘excl’ と ‘nocreat’ は、どちらか一方しか指定できない。
7569
7570      ‘notrunc’
7571           出力ファイルに対して短縮操作をしない (訳注: ‘of=FILE’ の項を参
7572           照)。
7573
7574      ‘noerror’
7575           読み込みエラーがあっても、作業を続行する。
7576
7577      ‘fdatasync’
7578           コマンドを終了する直前に、出力データを同期させる。 すなわち、
7579           出力データをディスクに実際に書き込む。
7580
7581      ‘fsync’
7582           コマンドを終了する直前に、出力データだけでなく、メタデータも同
7583           期させる。 すなわち、出力データとメタデータをディスクに実際に
7584           書き込む。
7585
7586 ‘iflag=FLAG[,FLAG]...’
7587      引数 FLAG によって指定されたフラグを使って、入力ファイルにアクセス
7588      する。 (コンマの前後にスペースを入れてはいけない。)
7589
7590 ‘oflag=FLAG[,FLAG]...’
7591      引数 FLAG によって指定されたフラグを使って、出力ファイルにアクセス
7592      する。 (コンマの前後にスペースを入れてはいけない。)
7593
7594      フラグには次のものがある。どのオペレーティング・システムでも、 すべ
7595      てのフラグが使えるわけではない。
7596
7597      ‘append’
7598           追加モードで書き込む。従って、何か別のプロセスが問題のファイル
7599           に書き出している場合でも、 ‘dd’ の書き込みは、書き込むたびに、
7600           そのファイルの今現在の内容に追加されることになる。 このフラグ
7601           は出力に対してしか意味がない。なお、このフラグを ‘of=FILE’ オ
7602           ペランドと組み合わせて使うのなら、 ‘conv=notrunc’ も一緒に指定
7603           した方がよい。 さもないと、出力ファイルは、追加書き込みが始ま
7604           る前に、短縮操作を受けることになる。
7605
7606      ‘cio’
7607           データに対してコンカレント I/O (CIO) モードを使用する。 このモ
7608           ードでは、ダイレクト I/O を行いつつ、同じファイルに対するすべ
7609           ての I/O は順番に行わなければならないという POSIX の要件は無視
7610           する。 一つのファイルを CIO モードと標準的な方法の両方で同時に
7611           オープンすることはできない。
7612
7613      ‘direct’
7614           データに対してダイレクト I/O を使用し、バッファ・キャッシュを
7615           介さないようにする。 カーネルが read バッファや write バッファ
7616           のサイズに制限をかけていることがあるのに注意していただきたい。
7617           たとえば、出力先のファイルシステムが ext4 で、カーネルが linux
7618           ベースの場合、出力バッファのサイズが 512 の倍数でなければ、
7619           ‘oflag=direct’ を指定すると、‘EINVAL’ で書き込みに失敗すること
7620           になる。
7621
7622      ‘directory’
7623
7624           ファイルがディレクトリでなければ、実行に失敗する。 ほとんどの
7625           オペレーティング・システムがディレクトリに対する I/O を許して
7626           いない。従って、このフラグが役に立つ機会はめったにない。
7627
7628      ‘dsync’
7629           データに対して同期 I/O を使用する。出力ファイルについては、 こ
7630           のフラグは、各書き込みごとに出力データをディスクに実際に書き込
7631           ませる。 入力ファイルについてこのフラグが意味を持つかもしれな
7632           いのは、 読み込んでいるのがリモートのファイルであり、 それが何
7633           か他のプロセスによって同期的に書き込まれているときである。 メ
7634           タデータ (たとえば、最終アクセス日時や最終更新日時) は、必ずし
7635           も同期されない。
7636
7637      ‘sync’
7638           データとメタデータに対して同期された I/O を使用する。
7639
7640      ‘nocache’
7641           システムの持つファイルのデータ・キャッシュを廃棄するよう要求す
7642           る。 count=0 の場合は、ファイルのキャッシュされたデータ全体を
7643           指定することになる。 それ以外の場合は、ファイルのキャッシュの
7644           うち、処理の対象になった部分だけが捨てられる。 また、count=0 の
7645           とき、キャッシュの廃棄に失敗すると、 その旨メッセージが表示さ
7646           れ、終了ステータスに反映する。
7647
7648           念のために言っておくと、 ストレージへの書き込みがまだ終了して
7649           いないデータが、キャッシュから捨てられることはない。 そこで、
7650           下記の用例で “sync” オプションを使っていることに注目していただ
7651           きたい。 ‘nocache’ フラグの効率を最大にするために使用している
7652           のである。
7653
7654           用例をいくつか挙げておく。
7655
7656                # ファイル全体のキャッシュを捨てるように指示する。
7657                dd if=ifile iflag=nocache count=0
7658
7659                # ファイル全体のキャッシュを確実に捨てる。
7660                dd of=ofile oflag=nocache conv=notrunc,fdatasync count=0
7661
7662                # ファイル中の一部分のキャッシュを捨てる。
7663                dd if=ifile iflag=nocache skip=10 count=10 of=/dev/null
7664
7665                # read-ahead キャッシュのみを使って、データを転送する。
7666                # ‘direct’ フラグの項も参照すること。
7667                dd if=ifile of=ofile iflag=nocache oflag=nocache,sync
7668
7669      ‘nonblock’
7670           ノンブロッキング I/O を使用する。
7671
7672      ‘noatime’
7673           ファイルのアクセス日時を更新しない。古いシステムの中には、 エ
7674           ラーや警告も出さずに、このフラグを無視するものがある。 そこで
7675           、このフラグを使用する前に、有効かどうか、お手元のファイルで試
7676           してみるとよい。
7677
7678      ‘noctty’
7679           入力 (または、出力) ファイルを ‘dd’ の制御端末にしない。 この
7680           フラグは、そのファイルが端末でなければ、効果がない。 このフラ
7681           グが全く効果を持たないホストが、たくさんある (たとえば、
7682           GNU/Linux ホストがそうである)。
7683
7684      ‘nofollow’
7685           シンボリックリンクをたどらない。
7686
7687      ‘nolinks’
7688           ファイルに複数のハードリンクがあれば、実行に失敗する。
7689
7690      ‘binary’
7691           バイナリ I/O を使用する。このフラグは、バイナリ I/O とテキスト
7692           I/O を区別する非標準的なプラットフォームでしか効果がない。
7693
7694      ‘text’
7695           テキスト I/O を使用する。このフラグが標準的なプラットフォーム
7696           で効果がないのは、 ‘binary’ と同様である。
7697
7698      ‘fullblock’
7699           各ブロックが一杯になるまで入力から読み込む。‘read’ システムコ
7700           ールは、 入力がブロックの分量に足りない場合、早めに戻ってくる
7701           ことがある。 そうした場合に、‘read’ の呼び出しを繰り返して、ブ
7702           ロックの残りを埋めようとする。 このフラグは、‘iflag’ でのみ使
7703           用できる。 このフラグが役に立つのは、たとえばパイプと組み合わ
7704           せて使うときである。 パイプとの組み合わせでは、入力からの読み
7705           込みがブロックの大きさに足りないことがあるからだ。 そうした場
7706           合に、‘count=’ の引数が、読み込み動作の回数ではなく、 読み込む
7707           ブロック数だと確実に解釈されるようにするには、このフラグが必要
7708           になる。
7709
7710      ‘count_bytes’
7711           ‘count=’ オペランドをブロック数ではなく、バイト数の指定と見な
7712           す。 そうすることで、I/O ブロックサイズの倍数ではない長さが、
7713           指定できるようになるわけだ。 このフラグは ‘iflag’ でしか使用で
7714           きない。
7715
7716      ‘skip_bytes’
7717           ‘skip=’ オペランドをブロック数ではなく、バイト数の指定と見なす
7718           。 そうすることで、I/O ブロックサイズの倍数ではないオフセット
7719           が、指定できるようになるわけだ。 このフラグは ‘iflag’ でしか使
7720           用できない。
7721
7722      ‘seek_bytes’
7723           ‘seek=’ オペランドをブロック数ではなく、バイト数の指定と見なす
7724           。 そうすることで、I/O ブロックサイズの倍数ではないオフセット
7725           が、指定できるようになるわけだ。 このフラグは ‘oflag’ でしか使
7726           用できない。
7727
7728      以上のフラグは、すべてのシステムでサポートされているわけではなく、
7729      サポートされていないシステムで使用しようとすると、‘dd’ に拒否される
7730      。 標準入力から読み込んでいる場合や、標準出力に書き出している場合は
7731      、 ‘nofollow’ や ‘noctty’ フラグは指定するべきではない。 また、他の
7732      フラグ (たとえば ‘nonblock’) は、 対象となるファイルのファイル・デ
7733      ィスクリプタに対する他のプロセスの動作に、‘dd’ が終了した後までも、
7734      影響を及ぼすかもしれない。
7735
7736    上記中の数値を表す文字列 (N や BYTES) には、乗数を示す文字を後ろに付
7737 けることができる。 すなわち、‘b’=512, ‘c’=1, ‘w’=2, ‘xM’=M といった文字
7738 である (訳注: 最後のものは、10xM という表記は 10M と書くのと同じだという
7739 こと)。 あるいは、‘k’=1024 のような、ブロックサイズに付ける標準の接尾辞
7740 の一つを続けてもよい (*note Block size::)。
7741
7742    ‘bs=’, ‘ibs=’, ‘obs=’, "‘cbs=’ を使って指定するブロックサイズは、 大
7743 きすぎない方がよい。数メガバイトを越える値は、一般的に言って無駄だし、
7744 (ギガバイト ... エクサバイトを使ったときのように) 全く逆効果だったり、 エ
7745 ラーの元になったりする。
7746
7747    データのオフセット位置やサイズが I/O ブロックサイズの倍数ではない場合
7748 に、 そうしたデータを処理するには、‘skip_bytes’, ‘seek_bytes’,
7749 ‘count_bytes’ といったフラグを使用すればよい。あるいは、‘dd’ を別々に呼
7750 び出すという伝統的な手法を使用することもできる。 一例を挙げると、以下の
7751 シェルコマンドは、1 ブロック を 512 KiB にして、ディスクとテープの間でデ
7752 ータをコピーしている。 ただし、ディスクの先頭にある 4 KiB のラベルについ
7753 ては、保存も復元も行っていない。
7754
7755      disk=/dev/rdsk/c0t1d0s2
7756      tape=/dev/rmt/0
7757
7758      # ラベル以外のすべてをディスクからテープへコピーする。
7759      (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
7760
7761      # テープからディスクへ書き戻す。ただし、ディスクのラベルには手を
7762      # 付けない。
7763      (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
7764
7765    壊れかけたディスクについては、様々なおまけ機能が付いたツールが他にあ
7766 り、 そうしたものを使えば、ディスクが本当にダメになってしまう前に、でき
7767 るだけ多くのデータを救済することが容易になる。 たとえば、GNU ‘ddrescue’
7768 がその一つだ (http://www.gnu.org/software/ddrescue/)。 しかしながら、場
7769 合によっては、そうしたツールが使えないこともあるし、 管理者にとって ‘dd’
7770 を操作する方が安心できるということもある。 そうした場合は、簡単なレスキ
7771 ュー方法として、‘dd’ を以下の例で示すように実行すればよい。
7772 ‘conv=noerror,sync’ オプションを使っているのは、リードエラーがあっても続
7773 行し、 読み込めなかった部分 (bad read) を NUL で埋めるためである。 また
7774 、‘iflag=fullblock’ は、ショートリードに対する用心だ (そうしたことが磁気
7775 ディスクを使っているデバイスで起きたことは、これまでにないけれど)。
7776
7777      # 壊れかけたディスクのパーティションから (マウントしていない
7778      # パーティションだ!) データを救済する。
7779      dd conv=noerror,sync iflag=fullblock </dev/sda1 > /mnt/rescue.img
7780
7781    実行中の ‘dd’ のプロセスに ‘INFO’ シグナルを送ると (それが使えないシ
7782 ステムでは、‘USR1’ シグナルを送る)、 ‘dd’ は入出力の統計情報を標準エラー
7783 に書き出し、それからコピー作業を続行する。 以下の例では、‘dd’ をバックグ
7784 ラウンドで実行し 5GB のデータのコピーを行っている。‘kill’ コマンドが実行
7785 されると、 ‘dd’ は実行途中の入出力統計を表示する。 そして、正常に作業を
7786 完了するか、‘SIGINT’ シグナルによって中断されたとき、 最終的な統計情報を
7787 出力する。
7788
7789      # シェルが子プロセスである dd をうっかり終了させてしまうことが
7790      # 絶対にないように、USR1 シグナルを「無視する」にしておく。
7791      # なお、SIGINFO が利用できる場合は、これをやる必要はない。
7792      trap '' USR1
7793
7794      # シグナルを受けることが引き鉄になって、ショートリードが起きるかも
7795      # しれない。それを避けるために、dd を iflag=fullblock で実行する。
7796      dd iflag=fullblock if=/dev/zero of=/dev/null count=5000000 bs=1000 & pid=$!
7797
7798      # 1 秒ごとに統計情報を出力する。
7799      while kill -s USR1 $pid 2>/dev/null; do sleep 1; done
7800
7801    上記のスクリプトの出力は、次のようなフォーマットになる。
7802
7803      3441325+0 records in
7804      3441325+0 records out
7805      3441325000 bytes (3.4 GB, 3.2 GiB) copied, 1.00036 s, 3.4 GB/s
7806      5000000+0 records in
7807      5000000+0 records out
7808      5000000000 bytes (5.0 GB, 4.7 GiB) copied, 1.44433 s, 3.5 GB/s
7809
7810    ‘status=progress’ オプションを付けると、転送統計を表す上記の最後の行
7811 が定期的に更新される。
7812
7813    ‘INFO’ シグナルが存在しないシステムでは、 環境変数 ‘POSIXLY_CORRECT’
7814 が設定されていないかぎり、‘dd’ は ‘INFO’ の代わりに ‘USR1’ に反応する。
7815
7816    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7817
7818 \1f
7819 File: coreutils-ja.info,  Node: install invocation,  Next: mv invocation,  Prev: dd invocation,  Up: Basic operations
7820
7821 11.3 ‘install’: ファイルをコピーし属性をセットする
7822 ==================================================
7823
7824 ‘install’ はファイルをコピーするとき、ファイルのモードビット (訳注: 一般
7825 にアクセス権とか、許可属性と言われるもの) をセットし、可能ならば、 所有
7826 者やグループも設定する。
7827
7828    書式:
7829
7830      install [OPTION]... [-T] SOURCE DEST
7831      install [OPTION]... SOURCE... DIRECTORY
7832      install [OPTION]... -t DIRECTORY SOURCE...
7833      install [OPTION]... -d DIRECTORY...
7834
7835    • ファイル名を二つ指定すると、‘install’ は最初のファイルを 2 番目のフ
7836      ァイルにコピーする。
7837
7838    • ‘--target-directory’ (‘-t’) オプションを指定した場合や、 あるいはそ
7839      れを指定しないでも、最後のファイルがディレクトリであり、しかも
7840      ‘--no-target-directory’ (‘-T’) オプションを指定していない場合は、
7841      ‘install’ は各 SOURCE ファイルを指定されたディレクトリに、SOURCE の
7842      名前でコピーする。
7843
7844    • ‘--directory’ (‘-d’) を指定すると、‘install’ は各 DIRECTORY を作成
7845      する。 このとき、親ディレクトリが存在しなければ、それも作成する。 作
7846      成される親ディレクトリのモードは、‘-m’ オプションの指定や現在の
7847      umask にかかわりなく、‘u=rwx,go=rx’ (755) になる。 親ディレクトリの
7848      set-user-ID ビットや set-group-ID ビットの継承については、 次の節を
7849      参照していただきたい。*Note Directory Setuid and Setgid::.
7850
7851    ‘install’ は ‘cp’ に似ているが、コピー先ファイルの属性を自由に設定で
7852 きる点が違う。 ‘install’ は通常、Makefile の中で、プログラムを目標のディ
7853 レクトリにコピーするために使用される。 ‘install’ では、ファイルをそれ自
7854 身にコピーすることはできない。
7855
7856    ‘install’ が拡張属性 (xattr) を保存することはない。
7857
7858    このプログラムでは以下のオプションが使用できる。参照: *note Common
7859 options::.
7860
7861 ‘-b’
7862 ‘--backup[=METHOD]’
7863      *Note Backup options::.  そのままでは、上書きされるか、消去されてし
7864      まう各ファイルのバックアップを作成する。
7865
7866 ‘-C’
7867 ‘--compare’
7868      インストール元とインストール先の対応するファイルを比較し、 インスト
7869      ール先にあるファイルがインストール元と内容が同じで、 しかも、所有者
7870      、グループ、許可属性、場合によっては SELinux コンテキストについて、
7871      そのどれもが指定されているものと同一であるときは、 インストール先フ
7872      ァイルを全く変更しない。 このオプションは、‘--user’, ‘--group’,
7873      ‘--mode’ オプションと併せて使うのが最善である。そういうものを指定し
7874      ない場合、 ‘install’ コマンドが、(たとえば、ディレクトリに setgid が
7875      付いていることや、POSIX のデフォルトの ACL を顧慮しないせいで)、 イ
7876      ンストールされるファイルがデフォルトで持つはずの属性を不正確に決め
7877      てしまうかもしれないのだ。 そんなことがあると、無駄なコピーが行われ
7878      たり、 属性が正しいデフォルト値に設定されなかったりといった不都合が
7879      生じかねない。
7880
7881 ‘-c’
7882      無視する。Unix の古いバージョンの ‘install’ との互換性のために ある
7883      。
7884
7885 ‘-D’
7886      DEST の指定中に存在していない親ディレクトリがあれば、 それを作成し
7887      てから、SOURCE を DEST にコピーする。 ‘-D’ とともに明示的に
7888      ‘--target-directory=DIR’ を指定した場合も、やはり出力先のディレクト
7889      リ階層が確実に存在するようになる。
7890
7891 ‘-d’
7892 ‘--directory’
7893      まず、存在していない親ディレクトリがあれば作成し、それにデフォルト
7894      の属性を与える。 それから、指定された各ディレクトリを作成し、所有者
7895      、グループ、許可属性を、 コマンドラインで指定されたとおりに、または
7896      デフォルトの値に設定する。
7897
7898 ‘-g GROUP’
7899 ‘--group=GROUP’
7900      インストールするファイルやディレクトリの所有グループを GROUP にする
7901      。 デフォルトでは、プロセスの現在のグループになる。 GROUP は、グル
7902      ープ名でも、グループの ID 番号でもよい。
7903
7904 ‘-m MODE’
7905 ‘--mode=MODE’
7906      インストールするファイルやディレクトリのモードビットを MODE にする
7907      。 MODE の指定は、‘a=’ (誰にもアクセスを許さない) を基点として行い
7908      、 8 進数でも、‘chmod’ で使うようなシンボリックモードでもよい
7909      (*note File permissions::)。デフォルトのモードは、
7910      ‘u=rwx,go=rx,a-s’ である。すなわち、所有者には読み、書き、実行を許
7911      可し、 グループとその他のユーザには読みと実行のみを許可、
7912      set-user-ID と set-group-ID は無効にする。このデフォルトは、‘755’ と
7913      全く同じではない。なぜなら、デフォルトの方は、ディレクトリについて
7914      set-user-ID や set-group-ID を引き継がず、無効にしているからである
7915      。 *Note Directory Setuid and Setgid::.
7916
7917 ‘-o OWNER’
7918 ‘--owner=OWNER’
7919      ‘install’ が適切な権限を持っている場合に (つまり、root 権限で実行さ
7920      れている場合に)、インストールするファイルやディレクトリの所有者を
7921      OWNER にする。デフォルトでは ‘root’ になる。OWNER の指定は、ユーザ
7922      名でも、ユーザの ID 番号でもよい。
7923
7924 ‘--preserve-context’
7925      ファイルやディレクトリの SElinux セキュリティ・コンテキストを引き継
7926      ぐ。 ファイルやディレクトリすべてのセキュリティ・コンテキストを引き
7927      継げなかった場合は、 終了ステータスが 1 になる。SElinux が無効にな
7928      っているときは、警告を出し、 このオプションを無視する。
7929
7930 ‘-p’
7931 ‘--preserve-timestamps’
7932      インストール先各ファイルの最終アクセス日時 (last access time) と最
7933      終更新日時 (last modification time) を、対応するインストール元各フ
7934      ァイルのそれぞれの日時に合わせる。 このオプションを付けずにインスト
7935      ールした場合、各ファイルの最終アクセス日時と最終更新日時は、 両方と
7936      もインストールした日時になる。インストール先ファイルの最終更新日時
7937      を、 最後にインストールした日付ではなく、最後にビルドした日付の記録
7938      として使用したい場合、 このオプションは便利である。
7939
7940 ‘-s’
7941 ‘--strip’
7942      インストールされるバイナリの実行ファイルからシンボル・テーブルを取
7943      り除く。
7944
7945 ‘--strip-program=PROGRAM’
7946      バイナリからシンボル・テーブルを取り除くために使用するプログラムを
7947      指定する。
7948
7949 ‘-S SUFFIX’
7950 ‘--suffix=SUFFIX’
7951      ‘-b’ によって作られる各バックアップファイルの後ろに SUFFIX を付ける
7952      。 *Note Backup options::.
7953
7954 ‘-t DIRECTORY’
7955 ‘--target-directory=DIRECTORY’
7956      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
7957      directory::.  ‘-D’ オプションも指定すると、 ディレクトリの存在が保
7958      証される。
7959
7960 ‘-T’
7961 ‘--no-target-directory’
7962      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
7963      でも、それを特別扱いしない。 *Note Target directory::.
7964
7965 ‘-v’
7966 ‘--verbose’
7967      コピーを行う前に、コピーするファイル名を表示する。
7968
7969 ‘-Z’
7970 ‘--context[=CONTEXT]’
7971      CONTEXT が指定されていない場合は、出力するファイルの SELinux セキュ
7972      リティ・コンテキストを、出力先におけるシステムのデフォルトのタイプ
7973      に合わせて調整する。 これは、‘restorecon’ コマンドの動作に似ている
7974      。 このオプションの長い形式を使って、コンテキストを明示的に指定した
7975      場合、 そのコンテキストが設定されるのは、新しく作成されるファイルに
7976      対してのみである。 コンテキストを指定した場合に、SELinux と SMACK の
7977      どちらも無効になっていると、 警告メッセージを出す。 このオプション
7978      と ‘--preserve-context’ オプションは、どちらか一方しか指定できない
7979      。 (CONTEXT を省略できるのは、coreutils-8.22 から)
7980
7981    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7982
7983 \1f
7984 File: coreutils-ja.info,  Node: mv invocation,  Next: rm invocation,  Prev: install invocation,  Up: Basic operations
7985
7986 11.4 ‘mv’: ファイルの移動 (名前の変更) を行う
7987 =============================================
7988
7989 ‘mv’ は、ファイル (やディレクトリ) の移動、または名前の変更を行う。
7990
7991    書式:
7992
7993      mv [OPTION]... [-T] SOURCE DEST
7994      mv [OPTION]... SOURCE... DIRECTORY
7995      mv [OPTION]... -t DIRECTORY SOURCE...
7996
7997    • ファイル名を二つ指定すると、‘mv’ は最初のファイルを 2 番目のファイ
7998      ルに移動する。
7999
8000    • ‘--target-directory’ (‘-t’) オプションを指定した場合や、 あるいはそ
8001      れを指定しないでも、最後のファイルがディレクトリであり、しかも
8002      ‘--no-target-directory’ (‘-T’) オプションを指定していない場合は、
8003      ‘mv’ は各 SOURCE ファイルを指定されたディレクトリに、SOURCE の名前
8004      で移動する。
8005
8006    ‘mv’ はいかなるタイプのファイルでも、 一つのファイルシステムから別の
8007 ファイルシステムへ移動させることができる。 fileutils パッケージのバージ
8008 ョン ‘4.0’ 以前では、‘mv’ がファイルシステム間を移動させることができたの
8009 は、通常ファイルだけだった。 それに対して、現在の ‘mv’ では、 たとえば、
8010 スペシャル・デバイスファイルを含むディレクトリ階層の全体を、 あるパーテ
8011 ィションから別のパーティションへ移動させることが可能になっている。 ‘mv’
8012 は、まず ‘cp -a’ が使用するのと同じコードを使って、 指定されたディレクト
8013 リやファイルをコピーし、その後で (コピーに成功した場合は) コピー元を削除
8014 する。 コピーに失敗した場合は、移動先のパーティションにすでにコピーした
8015 部分を消去することになる。 仮に、あるパーティションから別のパーティショ
8016 ンに、3 個のディレクトリをコピーしようとして、 最初のディレクトリのコピ
8017 ーには成功したものの、2 番目のディレクトリのコピーに失敗したとしよう。 そ
8018 の場合、最初のディレクトリは、移動先のパーティションに残るが、2 番目と 3
8019 番目のディレクトリは、元のパーティションに残ることになる。
8020
8021    ‘mv’ は拡張属性 (xattr) を常にコピーしようとする。 この拡張属性は、
8022 SELinux コンテキストや ACL、ケーパビリティであってもよい。 拡張属性のコ
8023 ピーに失敗したときは、‘Operation not supported’ 以外のすべての警告が出力
8024 される。
8025
8026    移動先ファイルがすでに存在し、それが普通なら書き込みのできないもので
8027 ある場合、 標準入力が端末であり、‘-f’ や ‘--force’ オプションが指定され
8028 ていなければ、 ‘mv’ はプロンプトを出して、ファイルを置き換えるかどうか、
8029 ユーザに問い合わせる (ファイルの書き込み権限がなくても、自分がそのファイ
8030 ルの所有者であったり、 そのディレクトリの書き込み権限を持っていたりする
8031 ことは、ありえることである)。 答えが肯定でなければ、そのファイルはスキッ
8032 プされる。
8033
8034    警告: 名前変更の対象 (または、移動元) がディレクトリへのシンボリック
8035 リンクかもしれないときは、 その名前を指定する際に、末尾にスラッシュを付
8036 けてはいけない。 さもないと、‘mv’ の動作は内部で使っている rename システ
8037 ムコール次第なので、全く予想外のことが起きるかもしれないのだ。 Linux ベ
8038 ースの最近のカーネルを使っているシステムでは、‘errno=ENOTDIR’ で実行に失
8039 敗する。しかし、他のシステムでは (少なくとも、FreeBSD 6.1 や Solaris 10
8040 では)、シンボリックリンクではなく、リンクが参照しているディレクトリの名
8041 前の方を、 警告なしで変更するのである。 *Note Trailing slashes::.
8042
8043    注意: ‘mv’ が移動先にあるディレクトリを置き換えるのは、そのディレクト
8044 リが空のときだけである。 移動先にある名前の衝突する (訳注: 要するに移動
8045 元ディレクトリと同名の) ディレクトリにファイルがあるときは、 「ディレク
8046 トリが空ではない」旨のメッセージを出して、そのディレクトリをスキップする
8047
8048
8049    このプログラムでは以下のオプションが使用できる。参照: *note Common
8050 options::.
8051
8052 ‘-b’
8053 ‘--backup[=METHOD]’
8054      *Note Backup options::.  そのままでは、上書きされるか、消去されてし
8055      まう各ファイルのバックアップを作成する。
8056
8057 ‘-f’
8058 ‘--force’
8059      移動先のファイルを消去する前に、プロンプトを出してユーザに問い合わ
8060      せることをしない。 ‘-i’, ‘-f’, ‘-n’ オプションを同時に指定している
8061      場合は、 最後に指定したもののみが効果を持つ。
8062
8063 ‘-i’
8064 ‘--interactive’
8065      ファイルの許可属性に関係なく、存在する各移動先ファイルを上書きする
8066      かどうかを、プロンプトを出してユーザに問い合わせる。 答えが肯定でな
8067      ければ、そのファイルをスキップする。‘-i’, ‘-f’, ‘-n’ オプションを同
8068      時に指定している場合は、 最後に指定したもののみが効果を持つ。
8069
8070 ‘-n’
8071 ‘--no-clobber’
8072      存在するファイルを上書きしない。‘-i’, ‘-f’, ‘-n’ オプションを同時に
8073      指定している場合は、 最後に指定したもののみが効果を持つ。 このオプ
8074      ションは、‘-b’ や ‘--backup’ オプションと一緒には使えない。
8075
8076 ‘-u’
8077 ‘--update’
8078      ディレクトリ以外のものを移動する際、それが移動先にも存在し、しかも
8079      その更新日時 (modification time) が移動元と同じか、より新しい場合に
8080      は、移動を行わない。 移動が別のファイルシステムに向かって行われる場
8081      合、 タイムスタンプの比較は、移動元のタイムスタンプを移動先のファイ
8082      ルシステム、 及びタイムスタンプの更新に使われるシステムコールの精度
8083      に落とした上で行われる。 これは、同じ移動元と移動先に対して、‘mv
8084      -u’ コマンドが何回か実行される場合に、 コピー作業が繰り返されるのを
8085      避けるためである。
8086
8087 ‘-v’
8088 ‘--verbose’
8089      移動する前に各ファイルの名前を表示する。
8090
8091 ‘--strip-trailing-slashes’
8092      SOURCE 引数の後ろにスラッシュが付いていたら、それを削除する。 *Note
8093      Trailing slashes::.
8094
8095 ‘-S SUFFIX’
8096 ‘--suffix=SUFFIX’
8097      ‘-b’ によって作られる各バックアップファイルの後ろに SUFFIX を付ける
8098      。 *Note Backup options::.
8099
8100 ‘-t DIRECTORY’
8101 ‘--target-directory=DIRECTORY’
8102      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8103      directory::.
8104
8105 ‘-T’
8106 ‘--no-target-directory’
8107      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8108      でも、それを特別扱いしない。 *Note Target directory::.
8109
8110 ‘-Z’
8111 ‘--context’
8112      このオプションは ‘restorecon’ と似た働きをする。 すなわち、移動先に
8113      おける SELinux セキュリティ・コンテキストを、 移動先のファイルやそ
8114      こに作られる各ディレクトリに対する、システムのデフォルトのタイプに
8115      合わせて調整する。
8116
8117    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8118
8119 \1f
8120 File: coreutils-ja.info,  Node: rm invocation,  Next: shred invocation,  Prev: mv invocation,  Up: Basic operations
8121
8122 11.5 ‘rm’: ファイルやディレクトリを削除する
8123 ===========================================
8124
8125 ‘rm’ は、指定された各ファイルを削除する。 デフォルトでは、ディレクトリの
8126 削除は行わない。
8127
8128    書式:
8129
8130      rm [OPTION]... [FILE]...
8131
8132    ‘-I’ または ‘--interactive=once’ オプションが指定されている場合に、 削
8133 除するファイルが 4 個以上あるか、あるいは ‘-r’, ‘-R’, ‘--recursive’ など
8134 のオプションが指定されていると、‘rm’ はプロンプトを出して、作業を最後ま
8135 で行うかどうか、ユーザに問い合わせる。 答えが肯定でなければ、コマンド全
8136 体が中止になる。
8137
8138    それ以外の場合でも、削除するファイルが書き込み不可で、標準入力が端末
8139 、しかも ‘--force’ (‘-f’) オプションが指定されていない場合や、‘-i’ また
8140 は ‘--interactive=always’ オプションが指定されている場合には、‘rm’ はプ
8141 ロンプトを出して、そのファイルを削除するかどうか、ユーザに問い合わせる。
8142 答えが肯定でなければ、そのファイルをスキップする。
8143
8144    ファイル名の最後の構成要素 (訳注: ファイル名 (いわゆるパス名) の最後
8145 の / より後ろの部分) が ‘.’ や ‘..’ であるファイルを削除しようとしても、
8146 ‘rm’ はそれを実行せず、ユーザに問い合わせることもない。これは POSIX が要
8147 求している動作である。
8148
8149    警告: ‘rm’ を使って、ファイルを削除しても、たいていの場合、そのファイ
8150 ルの内容を復元することが可能である。 ファイルの内容が間違いなく復元不可
8151 能であるとの、より一層の保証が欲しいのなら、 ‘shred’ コマンドの使用をお
8152 考えになるとよい。
8153
8154    このプログラムでは以下のオプションが使用できる。参照: *note Common
8155 options::.
8156
8157 ‘-d’
8158 ‘--dir’
8159      指定されたディレクトリが空ならば、それを削除する。
8160
8161 ‘-f’
8162 ‘--force’
8163      指定したファイルが存在しなかったり、削除の対象を一つも指定しなかっ
8164      たりしても、 問題にしない (訳注: 言い換えれば、エラーにならない)。
8165      また、ユーザに対する問い合わせも全く行わない。 ‘--interactive’
8166      (‘-i’) オプションが前にあっても、それを無視する。
8167
8168 ‘-i’
8169      プロンプトを出して、各ファイルを削除するかどうか、ユーザに問い合わ
8170      せる。 答えが肯定でなければ、そのファイルをスキップする。 ‘--force’
8171      (‘-f’) オプションが前にあっても、それを無視する。
8172
8173 ‘-I’
8174      4 個以上のファイルが指定された場合や、再帰的な削除が要求された場合
8175      に、 プロンプトを出して、コマンドを続行するかどうか、ユーザに一度だ
8176      け尋ねる。 ‘--force’ (‘-f’) オプションが前にあっても、それを無視す
8177      る。 ‘--interactive=once’ と同じである。
8178
8179 ‘--interactive [=WHEN]’
8180      問い合わせのプロンプトをいつ出すかを指定する。WHEN には以下の一つを
8181      指定できるが、なくてもよい。
8182         • never - 問い合わせを全くしない。
8183         • once - 4 個以上のファイルが指定された場合や、再帰的な削除が要
8184           求された場合に、 一度だけ問い合わせをする。‘-I’ と同じ。
8185         • always - 削除されるすべてのファイルに対して問い合わせをする。
8186           ‘-i’ と同じ。
8187      ‘--interactive’ に WHEN を指定しないのは、‘--interactive=always’ と
8188      同じである。
8189
8190 ‘--one-file-system’
8191      ディレクトリ階層を再帰的に削除する際に、 コマンドラインで引数として
8192      指定したディレクトリが存在するファイルシステムとは別のファイルシス
8193      テム上にある、 いかなるディレクトリも削除しない。
8194
8195      このオプションが役に立つのは、ビルド用の “chroot” ディレクトリ階層
8196      を削除する場合である。 通常、そうしたディレクトリ階層に重要なデータ
8197      は含まれていない。 しかしながら、普段使っているスタートアップ・ファ
8198      イルを利用しやすくするために、 そうしたディレクトリ階層に ‘/home’ を
8199      bind-mount するのは、珍しいことではない。 問題は、‘/home’ のアンマ
8200      ウントを忘れやすいことである。 アンマウントをやり忘れたまま、‘rm
8201      -rf’ を使って、通常使い捨てにする chroot 環境を削除しようとすると、
8202      ‘/home’ 以下にあるすべてまで削除してしまうことになる。
8203      ‘--one-file-system’ オプションを使えば、‘rm’ は警告を出した上で、 他
8204      のファイルシステムにあるディレクトリをスキップしてくれる。 当然なが
8205      ら、‘/home’ と chroot 環境が同じファイルシステムにある場合は、 この
8206      オプションを使っても、‘/home’ が助かるわけではない。
8207
8208 ‘--preserve-root’
8209      ‘--recursive’ オプションと一緒に使った場合、ルートディレクトリ
8210      (‘/’) を削除しようとした時点で、実行に失敗する。これがデフォルトの
8211      動作である。 *Note Treating / specially::.
8212
8213      (訳注: 確かに ‘--preserve-root’ が有効になっていれば、‘rm -rf /’ と
8214      した場合に、ルートディレクトリが保護されることになる。 だが、‘rm
8215      -rf /*’ とした場合には、あまり役に立たない。なぜなら、‘/*’ は、
8216      ‘/bin’, ‘/usr’, ‘/home’ などに展開されるが、そうしたディレクトリの
8217      消去は、‘--preserve-root’ によっては止められないからである。)
8218
8219 ‘--no-preserve-root’
8220      再帰的に削除を行う際、‘/’ を特別扱いしない。 コンピュータ上にあるす
8221      べてのファイルを本当に削除したい場合以外、 このオプションの使用はお
8222      勧めできない。 *Note Treating / specially::.
8223
8224 ‘-r’
8225 ‘-R’
8226 ‘--recursive’
8227      コマンドラインにリストされたディレクトリとその中身を再帰的に削除す
8228      る。
8229
8230 ‘-v’
8231 ‘--verbose’
8232      削除を行う前に、各ファイルの名前を表示する。
8233
8234    よくある質問の一つに、名前が ‘-’ で始まるファイルを削除するには、どう
8235 したらよいか、 というものがある。GNU の ‘rm’ では、‘getopt’ を使用して引
8236 数の解析を行っているあらゆるプログラムと同様、‘--’ オプションを使って、
8237 以下の引数はすべてオプションではない、と示すことが可能になっている。 カ
8238 レントディレクトリにある ‘-f’ というファイルを削除するには、 次のどちら
8239 かをタイプすればよい。
8240
8241      rm -- -f
8242
8243 あるいは、
8244
8245      rm ./-f
8246
8247    Unix の ‘rm’ プログラムが、この用途に ‘-’ を 1 個だけ使っていたのは、
8248 ‘getopt’ の標準シンタックスが開発される以前のことである。
8249
8250    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8251
8252 \1f
8253 File: coreutils-ja.info,  Node: shred invocation,  Prev: rm invocation,  Up: Basic operations
8254
8255 11.6 ‘shred’: セキュリティを向上させたファイルの削除
8256 ====================================================
8257
8258 ‘shred’ はデバイスやファイルを上書きして、 非常に高価な装置を使用しても
8259 、データの復元ができないようにする。
8260
8261    通常、ファイルを削除しても (*note rm invocation::)、データが実際に消
8262 去されるわけではない。 単に、ファイルが格納されている場所をリストしたイ
8263 ンデックスが破棄されるだけであり、 そうすることで、そのデータの格納場所
8264 が再利用可能になるのである。 世の中には、インデックスの再構築を試みる復
8265 元ソフト (undelete utilities) というものが存在する。そうしたものは、ファ
8266 イルの存在したスペースが再利用されていなければ、 ファイルを復元すること
8267 ができるのだ。
8268
8269    頻繁に使われているシステムで、ディスクがほとんど一杯になっている場合
8270 、 スペースは数秒のうちに再利用されるかもしれない。だが、それを確実に知
8271 る方法は全くない。 また、他人に見られては困るデータがあったところで、 見
8272 られても構わないデータでそのファイルを上書きしてしまえば、 復元は絶対不
8273 可能だと考えたいかもしれない。
8274
8275    しかしながら、そういうことをした後でも、ディスクを研究所に持ち込んで
8276 、 高感度の (そして高価な) 装置を山ほど使用すれば、 上書きされたデータの
8277 下にある元のデータのかすかな「痕跡 (echoes)」を検出することが可能なのだ
8278 。 もし、データがたった一回しか上書きされていなかったら、それはさほど難
8279 しいことでもない。
8280
8281    データを復元できないように消去する最善の方法は、 それが載っているメデ
8282 ィアを酸で破壊するとか、熱で溶かすとかすることである。 フロッピーディス
8283 クのような廉価なリムーバブル・メディアの場合、それがよく使われる方法だ。
8284 だが、ハードディスクは高価だし、熱で溶かすのも難しい。 そこで、‘shred’ ユ
8285 ーティリティは、物質的な破壊以外の方法で、 同様の効果を実現しようとする
8286 のである。
8287
8288    そのためには、元のデータに与える損傷を最大にするように選ばれたデータ
8289 パターンで繰り返し上書きするという方法が採られる。 この方法は、フロッピ
8290 ーディスクにも効果があるものの、パターンはハードディスクで最も効果を上げ
8291 るように工夫されたものだ。 詳細については、ソースコードや、第 6 回
8292 USENIX セキュリティ・シンポジウム (San Jose, California, July 22–25,
8293 1996) の議事録にある Peter Gutmann の次の論文をご覧になっていただきたい
8294
8295 ‘Secure Deletion of Data from Magnetic and Solid-State Memory’
8296 (http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html)
8297
8298    ここで心に銘記してしていただきたいのは、‘shred’ には非常に重要な前提
8299 があるということである。 すなわち、ファイルシステムはデータを、それが存
8300 在する場所で上書きするものでなければならない。 それは、こうした操作を行
8301 うときの伝統的な方法であるが、 最近のファイルシステムの設計には、この前
8302 提を満たさないものが多い。 そうした例外には、次のようなものがある。
8303
8304    • ログ構造化 (log-structured) ファイルシステムや、ジャーナル化
8305      (journaled) ファイルシステム。たとえば、ATX や Solaris で提供されて
8306      いるもの。JFS, ReiserFS, XFS, Ext3 (‘data=journal’ モードの場合),
8307      BFS, NTFS などが、「データ」のジャーナリングをするように設定されて
8308      いる場合もこれに当たる。
8309
8310    • データを冗長化して書き込んだり、一部の書き込みに失敗することがあっ
8311      ても、 動作し続けるファイルシステム。たとえば、RAID ベースのファイ
8312      ルシステム。
8313
8314    • Network Appliance の NFS サーバのように、スナップショットを作成する
8315      ファイルシステム。
8316
8317    • NFS バージョン 3 のクライアントのように、一時領域にキャッシュを作る
8318      ファイルシステム。
8319
8320    • 圧縮ファイルシステム。
8321
8322    特に ext3 ファイルシステムについて言うと、上記の例外に当てはまるのは
8323 (その結果、‘shred’ が限定された効果しか持たないのは)、‘data=journal’ モ
8324 ードの場合だけである。これは、メタデータだけでなく、 ファイルデータもジ
8325 ャーナリングするモードだ。‘data=ordered’ (デフォルト) と
8326 ‘data=writeback’ の両モードでは、‘shred’ は通常どおり役に立つ。 ext3 の
8327 ジャーナリング・モードを変更するには、mount のマニュアルに書いてあるよう
8328 に (man mount)、‘/etc/fstab’ ファイルで問題のファイルシステムのマウント
8329 オプションに ‘data=something’ オプションを追加すればよい。
8330
8331    ファイルシステムがどういう動作をしているか、よくわからない場合は、 デ
8332 ータをそれが存在する場所で上書きしていないと考えておいた方がよい。 すな
8333 わち、そのファイルシステムでは、通常ファイルに対する ‘shred’ の動作は、
8334 信頼できないということである。
8335
8336    一般的に言って、‘shred’ は、ファイルよりデバイスに対して使った方が信
8337 頼できる。 そうすれば、上に述べたファイルシステムの設計の問題を回避でき
8338 るからだ。 しかしながら、‘shred’ のデバイスに対する使用も、必ずしも全面
8339 的に信頼できるわけではない。 たとえば、ほとんどのディスクが、バッドセク
8340 ターを使用に割り当てる領域から外して、 アプリケーションから見えないよう
8341 にしている。 そこで、バッドセクターに他人に見られたくないデータがある場
8342 合、‘shred’ はそれを破壊できないことになる。
8343
8344    ‘shred’ は、バックアップに対して何の対処も行おうとしないが、 バッドセ
8345 クターの問題についても全く同様で、検知しようともしないし、通知しようとも
8346 しない。 それでも、‘shred’ はファイルに対して行うより、デバイスに対して
8347 行う方が信頼できるので、 デフォルトでは、出力ファイルをサイズ 0 に短縮し
8348 たり、削除したりしないようになっている。 このデフォルトは、ファイルより
8349 デバイスに適した動作だ。 デバイスは一般に短縮できないし、削除するべきで
8350 もないからである。
8351
8352    最後になったが、バックアップやミラーの持つリスクも考慮した方がよい。
8353 削除することのできないファイルのコピーが、ファイルシステムのバックアップ
8354 やリモートのミラーに残っているかもしれないのだ。 そして、そうしたものが
8355 残っていれば、‘shred’ で破壊したファイルを後日復元することが可能になる。
8356 だから、後で ‘shred’ を使って破棄したくなりそうなデータがある場合には、
8357 そのバックアップやミラーがないことを確認すべきなのである。
8358
8359      shred [OPTION]... FILE[...]
8360
8361    このプログラムでは以下のオプションが使用できる。参照: *note Common
8362 options::.
8363
8364 ‘-f’
8365 ‘--force’
8366      必要ならば、ファイルの許可属性を無視して、上書きできるようにする。
8367
8368 ‘-n NUMBER’
8369 ‘--iterations=NUMBER’
8370      デフォルトで ‘shred’ は、上書きを 3 回する。 時間を節約するために、
8371      回数を減らすこともできるし、 その方がよいと思えば、回数を増やすこと
8372      もできる。 25 回上書きすると、プログラムが内部に持っている上書き用
8373      のパターンのすべてが、 少なくとも一回は使われたことになる。
8374
8375 ‘--random-source=FILE’
8376      上書きに使用するランダムデータのソースとして FILE を使用する。 また
8377      、このランダムデータは、上書きパターンの順番を決めるのにも使用され
8378      る。
8379
8380 ‘-s BYTES’
8381 ‘--size=BYTES’
8382      ファイルの最初の BYTES バイトを shred 処理する。デフォルトは、 ファ
8383      イル全体の shred である。BYTES の後ろには、その何倍かを示すために
8384      ‘K’, ‘M’, ‘G’ といった、サイズの指定を付けることができる。 *Note
8385      Block size::.
8386
8387 ‘-u’
8388 ‘--remove[=HOW]’
8389      shred 処理したファイルを (可能ならば) サイズ 0 に短縮し (truncate)、
8390      その上で削除する。ファイルが複数のリンクを持っている場合に、 削除さ
8391      れるのは名前を指定されたリンクだけである。 ファイルの名前は、ファイ
8392      ルの内容ほど秘密性を必要としないことも多い。 そうした場合は、長い書
8393      式のオプションでサポートされている HOW パラメータを付けることで、各
8394      ディレクトリエントリのより効率的な削除法を指定することができる。
8395      HOW パラメータに ‘unlink’ を指定した場合は、標準の unlink 呼び出し
8396      をするだけだが、 ‘wipe’ を指定すると、unlink する前にファイル名を構
8397      成するバイトの難読化を行う。 ‘wipesync’ を指定した場合は、ファイル
8398      名を難読化するだけでなく、 それを 1 バイトづつディスクに sync する
8399      ことまで行う。 留意していただきたいのは、‘wipesync’ はデフォルトの
8400      方法だが、 すべてのファイル名のすべての文字ごとに sync を行うことに
8401      なるので、 負荷が重くなるかもしれないということである。 ファイル数
8402      が多い場合には、無視できない負荷になるかもしれない。 また、使用して
8403      いるシステムがメタデータの同期アップデートを提供している場合には、
8404      やらないでもよいことかもしれない。
8405
8406 ‘-v’
8407 ‘--verbose’
8408      shred 処理が進行する間、更新される進行状態の情報のすべてを標準エラ
8409      ーに表示する。
8410
8411 ‘-x’
8412 ‘--exact’
8413      デフォルトでは、‘shred’ は、 通常ファイルのサイズを、ファイルシステ
8414      ムのブロックサイズの倍数に切り上げて、 ファイルの最後のブロックの不
8415      使用領域まで完全に抹消する。 この領域には、システムによっては、たと
8416      えば、現在のシステムメモリの一部が入っているかもしれない。 この動作
8417      を抑制するには、‘--exact’ オプションを使用すればよい。 すなわち、デ
8418      フォルトでは、1 ブロック 512 バイトのシステムで 10 バイトの通常ファ
8419      イルを shred すると、結果として 512 バイトのファイルが出来上がる。
8420      だが、このオプションを使えば、shred はファイルの見かけのサイズを増
8421      加させないのだ。
8422
8423 ‘-z’
8424 ‘--zero’
8425      通常、‘shred’ は、最後の 1 回でもランダムデータを書き込む。 そんな
8426      ファイルがハードディスクにあると、(たとえば、暗号化されたデータに見
8427      えて) 目立ってしまうのではないかと思うのなら、あるいは、単にそっち
8428      の方がもっとすっきりしていると思うのなら、 ‘--zero’ オプションを指
8429      定して、もう一回、 すべて 0 ビットで上書きさせればよい。 これは、
8430      ‘--iterations’ オプションで指定した上書き回数のほかに、もう一回とい
8431      うことである。
8432
8433    第 1 ドライブのフロッピーディスクに作成したファイルシステムを跡形もな
8434 く消し去るには、 次のコマンドを使えばよいだろう。このコマンドで “1.44MB”
8435 (実際には 1440 KiB) のフロッピーを消去するには、約 20 分かかる。
8436
8437      shred --verbose /dev/fd0
8438
8439    同様に、ハードディスクの選択したパーティションからすべてのデータを消
8440 去するには、 以下のコマンドを打ち込めばよい。
8441
8442      shred --verbose /dev/sda5
8443
8444    最近のディスクでは、1 回の書き込みで十分なはずだ。 それならば、書き込
8445 みを 3 回行うデフォルトの 3 分の 1 の時間ですむ。
8446
8447      # 擬似ランダムデータを 1 回書き込む。デフォルトより 3 倍速い。
8448      shred --verbose -n1 /dev/sda5
8449
8450    念のため、少なくとも 1 回は擬似ランダムデータで上書きをした方がよい。
8451 言い換えると、つい使いたくなっても、‘-n0 --zero’ を使ってはいけない。 デ
8452 ィスク・コントローラの中には、すべてが 0 のブロックを書き込む際に、処理
8453 の最適化を行っているものがあり、 そのため、ブロック中のバイトすべてがク
8454 リアされない恐れがあるからである。 SSD の中には、まさにそういうことをす
8455 るものがある。
8456
8457    ‘-’ という FILE は、標準出力を表している。 これの使い道は、削除したテ
8458 ンポラリ・ファイルを shred することである。 たとえば、次のようにだ。
8459
8460      i=$(mktemp)
8461      exec 3<>"$i"
8462      rm -- "$i"
8463      echo "Hello, world" >&3
8464      shred - >&3
8465      exec 3>&-
8466
8467    しかしながら、‘shred - >file’ というコマンドを使っても、ファイルの内
8468 容を shred することにはならない。なぜなら、シェルは ‘shred’ を呼び出す前
8469 に、ファイルをサイズ 0 に短縮 (truncate) してしまうからである。 ‘shred
8470 file’、あるいは (Bourne 互換シェルをお使いなら) ‘shred - 1<>file’ という
8471 コマンドを、代わりに使った方がよい。
8472
8473    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8474
8475 \1f
8476 File: coreutils-ja.info,  Node: Special file types,  Next: Changing file attributes,  Prev: Basic operations,  Up: Top
8477
8478 12 特殊なファイル型
8479 *******************
8480
8481 この章では、特殊なタイプのファイルを作成するコマンドの説明を行う (さらに
8482 ‘rmdir’ の説明もするが、これはディレクトリという特殊なファイル型の一つを
8483 削除するコマンドである)。
8484
8485    Unix 系統のオペレーティング・システムでは、ほかのオペレーティング・シ
8486 ステムと比べて、 特殊なファイル型というものが著しく少ないが、それでも普
8487 通のファイル (“normal files”) がそうであるような、のっぺらぼうなバイトス
8488 トリームとして、 何でもかんでも扱えさえすればよいというものではない。 た
8489 とえば、ファイルを作成したり、削除したりするとき、 システムはその情報を
8490 記録しなければならないが、それはディレクトリ (“directory”) — これも特殊
8491 なタイプのファイルである — に書き込まれる。 もし興味があれば、ディレクト
8492 リを普通のファイルのように読むこともできるが、 システムがシステムとして
8493 の役割を果たすためには、 ディレクトリはそのファイル内容であるバイトに、
8494 構造というか、何らかの秩序を持っていなければならない。 そういう意味で、
8495 ディレクトリは、「特殊な」タイプのファイルなのである。
8496
8497    ディレクトリ以外の特殊なファイル型としては、名前付きパイプ (FIFO)、 シ
8498 ンボリックリンク、ソケット、それに、いわゆるスペシャルファイル (“special
8499 files”) がある。
8500
8501 * Menu:
8502
8503 * link invocation::     システムコール link を使って、ハードリンクを作成する
8504 * ln invocation::       ファイル間のリンクを作成する
8505 * mkdir invocation::    ディレクトリを作成する
8506 * mkfifo invocation::   FIFO (名前付きパイプ) を作成する
8507 * mknod invocation::    ブロック型やキャラクタ型のスペシャルファイルを作成する
8508 * readlink invocation:: シムリンクの値、または正規化されたファイル名を表示する
8509 * rmdir invocation::    空のディレクトリを削除する
8510 * unlink invocation::   システムコール unlink を使って、ファイルを削除する
8511
8512 \1f
8513 File: coreutils-ja.info,  Node: link invocation,  Next: ln invocation,  Up: Special file types
8514
8515 12.1 ‘link’: システムコール link を使って、ハードリンクを作成する
8516 =================================================================
8517
8518 ‘link’ は、一度に 1 個のハードリンクを作成する。 これは、システムが提供
8519 する ‘link’ 関数への必要最小のインターフェースである。 *Note (libc)Hard
8520 Links::. 従って、より一般に使われる ‘ln’ コマンドのような、様々な付加機
8521 能をあえて備えていない (*note ln invocation::)。
8522
8523    書式:
8524
8525      link FILENAME LINKNAME
8526
8527    FILENAME は、実在するファイルを指していなければならない。また、
8528 LINKNAME は、実在するディレクトリ中の実在しないファイルを指していなけれ
8529 ばならない。 ‘link’ は、リンクを作成するために、‘link (FILENAME,
8530 LINKNAME)’ をコールするだけである。
8531
8532    GNU のシステムでは、このコマンドは、‘ln --directory
8533 --no-target-directory FILENAME LINKNAME’ と同様に振る舞う。 しかし、
8534 ‘--directory’ や ‘--no-target-directory’ は、POSIX の規格にあるオプショ
8535 ンではないので、‘link’ の方が、実用上より可搬性がある。
8536
8537    FILENAME がシンボリックリンクの場合、 LINKNAME がシンボリックリンクへ
8538 のハードリンクになるか、 シンボリックリンクの参照先へのハードリンクにな
8539 るかは、規定されていない。 どちらの動作を望むかをはっきり指定したければ
8540 、‘ln -P’ や ‘ln -L’ を使用するべきである。
8541
8542    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8543
8544 \1f
8545 File: coreutils-ja.info,  Node: ln invocation,  Next: mkdir invocation,  Prev: link invocation,  Up: Special file types
8546
8547 12.2 ‘ln’: ファイル間のリンクを作成する
8548 =======================================
8549
8550 ‘ln’ はファイル間のリンクを作成する。デフォルトではハードリンクを作成す
8551 るが、 ‘-s’ オプションを指定すると、シンボリックリンク (“soft” linkとも
8552 言う) を作ることになる。
8553
8554    書式:
8555
8556      ln [OPTION]... [-T] TARGET LINKNAME
8557      ln [OPTION]... TARGET
8558      ln [OPTION]... TARGET... DIRECTORY
8559      ln [OPTION]... -t DIRECTORY TARGET...
8560
8561    • ファイル名を二つ指定すると、‘ln’ は 1 番目に対するリンクを 2 番目の
8562      名前で作成する。
8563
8564    • TARGET のみを指定すると、‘ln’ はそのファイルに対するリンクをカレン
8565      トディレクトリに作成する。
8566
8567    • ‘--target-directory’ (‘-t’) オプションを指定した場合や、 あるいはそ
8568      れを指定しないでも、最後のファイルがディレクトリであり、しかも
8569      ‘--no-target-directory’ (‘-T’) オプションを指定していない場合は、
8570      ‘ln’ は各 TARGET ファイルに対するリンクを、 指定されたディレクトリ
8571      に TARGET の名前で作成する。
8572
8573    通常 ‘ln’ は存在するファイルを削除しない。 既存のファイルを無条件で削
8574 除するには、‘--force’ (‘-f’) オプションを使う。 また、ユーザに問い合わせ
8575 た上で削除するには、‘--interactive’ (‘-i’) オプションを使う。既存のファ
8576 イルを、名前を変更して残すには、‘--backup’ (‘-b’) オプションを使用する。
8577 (訳注: ここで述べているのは、 存在するファイルの名前をリンクファイル名と
8578 して使う場合の話である。)
8579
8580    ハードリンク (“hard link”) というのは、存在するファイルが持つ別の名前
8581 である。 だから、リンクとオリジナルは、区別ができない。専門的な言い方を
8582 すると、両者は同じ inode を共有するものである。inode には、ファイルに関
8583 する情報がすべて含まれているので、 全くのところ、inode こそファイルであ
8584 ると言っても、過言ではないほどだ。 たいていのシステムでは、ディレクトリ
8585 に対するハードリンクの作成は禁じられている。 許可されているシステムでも
8586 、それができるのは、スーパーユーザだけである (その場合でも、ファイルシス
8587 テムにループが生じると、 ほかの様々なユーティリティ・プログラムで問題が
8588 起きるので、慎重に行わなければならない)。 なお、ハードリンクは、ファイル
8589 システムの境界を越えることができない。 (もっとも、ハードリンクに対するこ
8590 うした制限は、POSIX で規定されているわけではない。)
8591
8592    それに対して、シンボリックリンク (“symbolic link”、略称はシムリンク
8593 “symlink”) は、特殊なファイル型の一つである (すべてのカーネルがサポート
8594 しているわけではない。たとえば、System V release 3 やそれ以前のシステム
8595 にはシムリンクが存在しない)。 このファイル型では、リンクファイルは、実際
8596 には別のファイルを、名前を使って参照している。 ほとんどのファイル操作で
8597 は (ファイルのオープン、読み込み、書き出しなど)、 シンボリックリンク・フ
8598 ァイルが渡されると、カーネルが自動的にリンクの参照を読み解いて
8599 (“dereference”)、リンクの参照先を操作の対象にする。ただし、操作によって
8600 は (たとえば、ファイルの削除)、参照先ではなく、リンクファイルそのものを
8601 対象にするものもある。 シムリンクの所有者やグループは、リンクを通して行
8602 われるファイルアクセスに対して意味を持たないが、 削除制限ビットが立って
8603 いるディレクトリからシンボリックリンクを削除する際には、かかわりを持って
8604 くる。 GNU のシステムでは、シムリンクのモードには意味がなく、変更するこ
8605 ともできない。 だが、BSD システムの中には、モードが変更でき、ファイル名
8606 の解決においてシムリンクをたどるかどうかに影響するものもある。 *Note
8607 (libc)Symbolic Links::.
8608
8609    シンボリックリンクの中身には、どんな文字列が含まれていてもよい。 シン
8610 ボリックリンクに含まれる文字列が、実在するファイルの名前になっていないと
8611 きは、 リンク切れ (“dangling symlink”) が生ずる。 リンク切れのシンボリッ
8612 クリンクを作成することは、禁止されているわけではない。 シムリンクの作成
8613 に絶対パスを使うか、相対パスを使うかには、それぞれ一長一短がある。 絶対
8614 パスのシムリンクは、リンクファイルの存在するディレクトリが移動しても、常
8615 に同じファイルを指す。 もっとも、そのシムリンクが複数のマシンから見える
8616 ような場合には (たとえば、ネットワークでつながったファイルシステムにある
8617 ような場合には)、 リンクが指しているファイルは、必ずしも同じではないかも
8618 しれない。 相対パスのシンボリックリンクの方は、それが存在しているディレ
8619 クトリからの相対パスで参照先が決まる。 そこで、リンクファイルがネットワ
8620 ークでつながっているマシンからアクセスされることがある場合に、 リンクと
8621 同じデバイス上に存在するファイルを、そのデバイスのマウントポイントが何と
8622 いう名前かを気にせずに指示することができて、 便利であることが多い。
8623
8624    相対パスのシムリンクをカレントディレクトリ以外の場所に作成すると、 そ
8625 のシムリンクが実際に指しているファイルは、 同じ文字列がカレントディレク
8626 トリを基点として指しているファイルとは別のものになる。 そのため、ユーザ
8627 の多くが、まずカレントディレクトリを変更して、 相対パスのシムリンクを作
8628 成する場所へ移動することを好んでいる。 そうすれば、タブ補完などのファイ
8629 ル名参照方法を用いて、 シムリンクに格納する参照先の適切な相対パスを見つ
8630 けることができるからである。
8631
8632    このプログラムでは以下のオプションが使用できる。参照: *note Common
8633 options::.
8634
8635 ‘-b’
8636 ‘--backup[=METHOD]’
8637      *Note Backup options::.  そのままでは、上書きされるか、消去されてし
8638      まう各ファイルのバックアップを作成する。
8639
8640 ‘-d’
8641 ‘-F’
8642 ‘--directory’
8643      ユーザが適切な権限を持っていれば、 ディレクトリに対するハードリンク
8644      を作成しようとしても許可する。 とは言え、たぶんシステムによって禁止
8645      されているので、 たとえスパーユーザでも作成に失敗するだろう。
8646
8647 ‘-f’
8648 ‘--force’
8649      リンクの作成先に、作成するリンクファイルと同名のファイルがすでに存
8650      在していたら、それを削除する。
8651
8652 ‘-i’
8653 ‘--interactive’
8654      リンクの作成先に、作成するリンクファイルと同名のファイルがすでに存
8655      在していたら、 削除するかどうか、ユーザに問い合わせる。
8656
8657 ‘-L’
8658 ‘--logical’
8659      ‘-s’ オプションが有効になっていないとき、リンク対象として指定された
8660      ファイル (訳注: 上記書式の TARGET) がシンボリックリンクならば、 シ
8661      ンボリックリンクそのものではなく、シンボリックリンクが参照している
8662      ファイルへのハードリンクを作成する。
8663
8664 ‘-n’
8665 ‘--no-dereference’
8666      最後のオペランドがディレクトリに対するシンボリックリンクであるとき
8667      、それをディレクトリとして特別扱いしない (訳注: すなわち、ディレク
8668      トリ内に TARGET と同名でリンクを作ることはしない)。 むしろ、普通の
8669      ファイルであるかのように扱う。
8670
8671      リンクの作成先として指定されたのが (ディレクトリに対するシムリンク
8672      ではなく) 本物のディレクトリならば、曖昧なところは全くない。 そのデ
8673      ィレクトリ内にリンクを作るだけの話だ。ところが、指定された作成先が
8674      、 ディレクトリに対するシムリンクの場合は、ユーザの要求を処理するの
8675      に、二つの行き方がある。 ‘ln’ は、通常のディレクトリを扱う場合と全
8676      く同じように作成先を扱って、 そこにリンクを作成することができる。 あ
8677      るいは、作成先をディレクトリではないもの、すなわち、他ならぬシムリ
8678      ンクと見なすことも可能だ。 後者の場合、‘ln’ は、新しいリンクを作成
8679      する前に、 そのシムリンクを消去するなり、バックアップするなりしなけ
8680      ればならない。 ‘ln’ のデフォルトは、作成先がディレクトリに対するシ
8681      ムリンクであっても、 ディレクトリと全く同様に扱うことである。
8682
8683      このオプションは、‘--no-target-directory’ (‘-T’) の弱いバージョンで
8684      ある。従って、両方のオプションを指定した場合、こちらは効果がない。
8685
8686 ‘-P’
8687 ‘--physical’
8688      ‘-s’ オプションが有効になっていないとき、リンク対象として指定された
8689      ファイル (訳注: 上記書式の TARGET) がシンボリックリンクならば、 シ
8690      ンボリックリンクそのものへのハードリンクを作成する。 そういった動作
8691      をカーネルがサポートしていないプラットホームでは、このオプションを
8692      指定すると、 リンク対象のシンボリックリンクと全く同じ内容を持つシン
8693      ボリックリンクが作成される。 このとき、シンボリックリンクの内容に手
8694      が加えられることは決してないので、 どちらのシンボリックリンクを使っ
8695      て行われるファイル名の解決も、 シンボリックリンクへのハードリンクが
8696      作成された場合と結局同じになる。
8697
8698 ‘-r’
8699 ‘--relative’
8700      リンクファイルを置く場所を基点とする相対パスのシンボリックリンクを
8701      作成する。
8702
8703      用例:
8704
8705           ln -srv /a/file /tmp
8706           '/tmp/file' -> '../a/file'
8707
8708      相対パスのシンボリックリンクは、 それを置くディレクトリと参照先のフ
8709      ァイル名を正規化した上で、それに基づいて作成される。 すなわち、そう
8710      したファイル名中にあるすべてのシンボリックリンクは、実体に還元され
8711      ることになるわけだ。 なお、‘realpath’ コマンドを使用すれば、 以下の
8712      例に示すように、相対パスを生成する際にもっと融通が利く (訳注: たと
8713      えば、‘realpath’ を使うと、 ファイル名中のシンボリックリンクをシン
8714      ボリックリンクのままにしておくこともできる)。 *Note realpath
8715      invocation::.
8716
8717           ln--relative() {
8718             test "$1" = --no-symlinks && { nosym=$1; shift; }
8719             target="$1";
8720             test -d "$2" && link="$2/." || link="$2"
8721             rtarget="$(realpath $nosym -m "$target" \
8722                         --relative-to "$(dirname "$link")")"
8723             ln -s -v "$rtarget" "$link"
8724           }
8725
8726 ‘-s’
8727 ‘--symbolic’
8728      ハードリンクではなく、シンボリックリンクを作る。 このオプションは、
8729      シンボリックリンクをサポートしていないシステムでは、 エラー・メッセ
8730      ージを表示するだけである。
8731
8732 ‘-S SUFFIX’
8733 ‘--suffix=SUFFIX’
8734      ‘-b’ によって作られる各バックアップファイルの後ろに SUFFIX を付ける
8735      。 *Note Backup options::.
8736
8737 ‘-t DIRECTORY’
8738 ‘--target-directory=DIRECTORY’
8739      DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8740      directory::.
8741
8742 ‘-T’
8743 ‘--no-target-directory’
8744      最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8745      でも、それを特別扱いしない。 *Note Target directory::.
8746
8747 ‘-v’
8748 ‘--verbose’
8749      リンクの作成に成功した後で、各ファイルの名前を表示する。
8750
8751    ‘-L’ と ‘-P’ の両方を指定すると、最後に指定したものが効果を持つ。 さ
8752 らに ‘-s’ も指定した場合は、エラーや警告は出ないが、‘-L’ や ‘-P’ は無視
8753 される。‘-L’ と ‘-P’ のどちらのオプションも指定しない場合、‘ln’ のこの実
8754 装では、システムの ‘link’ 関数がシンボリックリンクに対するハードリンクを
8755 サポートしていれば (たとえば、GNU のシステム)、デフォルトの動作は ‘-P’ に
8756 なる。 ‘link’ 関数がシンボリックリンクをたどるものならば (たとえば、
8757 BSD)、デフォルトの動作は ‘-L’ である。
8758
8759    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8760
8761    用例:
8762
8763      悪い例:
8764
8765      # カレントディレクトリにあるファイル a を指す ../a というリンクを
8766      # 作成する。実のところ役に立たない。../a が自分自身を指すリンクに
8767      # なってしまうからだ。
8768      ln -s a ..
8769
8770      よりよい例:
8771
8772      # 頭がこんがらかってしまわないように、シムリンクを作成する前に、
8773      # リンクを作るディレクトリに移動する。
8774      cd ..
8775      ln -s adir/a .
8776
8777      悪い例:
8778
8779      # 絶対パスによるリンク対象の指定は、リンク対象の位置が変わると、
8780      # 役に立たない。
8781      ln -s $(pwd)/a /some/dir/
8782
8783      よりよい例:
8784
8785      # 相対パスによるリンク対象の指定は、リンクやその対象を含む
8786      # ディレクトリが移動しても、両者の相対的な位置関係が変わらない
8787      # かぎり、問題がない。また、ネットワークでつながったファイル
8788      # システム間でも通用する。
8789      ln -s afile anotherfile
8790      ln -s ../adir/afile yetanotherfile
8791
8792 \1f
8793 File: coreutils-ja.info,  Node: mkdir invocation,  Next: mkfifo invocation,  Prev: ln invocation,  Up: Special file types
8794
8795 12.3 ‘mkdir’: ディレクトリを作成する
8796 ====================================
8797
8798 ‘mkdir’ は、指定された名前でディレクトリを作成する。
8799
8800    書式:
8801
8802      mkdir [OPTION]... NAME...
8803
8804    ‘mkdir’ は、NAME で指定された各ディレクトリを、指定された順番で作成す
8805 る。 NAME がすでに存在していると、エラーになり、その旨メッセージを出すが
8806 、 NAME がすでに存在していても、‘-p’ オプションが指定され、NAME がディレ
8807 クトリの場合は、エラーにならない。
8808
8809    このプログラムでは以下のオプションが使用できる。参照: *note Common
8810 options::.
8811
8812 ‘-m MODE’
8813 ‘--mode=MODE’
8814      作成するディレクトリの許可属性ビットを MODE に設定する。MODE には
8815      ‘chmod’ と同じ書式を使用し、‘a=rwx’ (すべてのユーザに、読み、書き、
8816      実行を許可する) を基点とする。*Note File permissions::.
8817
8818      通常、ディレクトリには、作成された時点で、要求したとおりのファイル
8819      ・モードビットが付く。 GNU の拡張として、MODE で特殊モードビットも
8820      指定できるが、 その場合は、ディレクトリは存在しているが、特殊モード
8821      ビットは要求どおりではないという、時間の隙間が生じるかもしれない。
8822      ディレクトリの set-user-ID ビットと set-group-ID ビットが、 このオ
8823      プションを使って変更しない場合にどのように継承されるかについては、
8824      次の節を参照していただきたい。*Note Directory Setuid and Setgid::.
8825
8826 ‘-p’
8827 ‘--parents’
8828      各引数について、存在していない親ディレクトリがあれば、それを作成し
8829      、 その許可属性ビットを umask を基にして ‘u+wx’ になるように設定す
8830      る。 親ディレクトリがすでに存在している場合は、このオプションは何も
8831      せず、 その許可属性ビットを変更することもない。
8832
8833      新たに作成するいかなる親ディレクトリの許可属性ビットも、‘u+wx’ を含
8834      むある一定の値に設定するには、‘mkdir’ を実行する前に、umask を設定
8835      すればよい。たとえば、‘(umask u=rwx,go=rx; mkdir -p P/Q)’ というシ
8836      ェルコマンドで ‘P’ という親ディレクトリを作れば、その許可属性ビット
8837      は ‘u=rwx,go=rx’ になる。また、親ディレクトリに特殊モードビットも設
8838      定するには、 ‘chmod’ を ‘mkdir’ の後で実行すればよい。 新たに作成さ
8839      れる親ディレクトリの set-user-ID ビットと set-group-ID ビットがどの
8840      ように継承されるかについては、 次の節を参照していただきたい。 *Note
8841      Directory Setuid and Setgid::.
8842
8843 ‘-v’
8844 ‘--verbose’
8845      ディレクトリを作成するごとに、メッセージを表示する。‘--parents’ と
8846      併せて使うと、大変便利である。
8847
8848 ‘-Z’
8849 ‘--context[=CONTEXT]’
8850      CONTEXT が指定されていない場合は、出力するファイルの SELinux セキュ
8851      リティ・コンテキストを、出力先におけるシステムのデフォルトのタイプ
8852      に合わせて調整する。 これは、‘restorecon’ コマンドの動作に似ている
8853      。 このオプションの長い形式を使って、コンテキストを明示的に指定した
8854      場合、 そのコンテキストが設定されるのは、新しく作成されるファイルに
8855      対してのみである。 コンテキストを指定した場合に、SELinux と SMACK の
8856      どちらも無効になっていると、 警告メッセージを出す。 (CONTEXT を省略
8857      できるのは、coreutils-8.22 から)
8858
8859    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8860
8861 \1f
8862 File: coreutils-ja.info,  Node: mkfifo invocation,  Next: mknod invocation,  Prev: mkdir invocation,  Up: Special file types
8863
8864 12.4 ‘mkfifo’: FIFO (名前付きパイプ) を作成する
8865 ===============================================
8866
8867 ‘mkfifo’ は、指定された名前で FIFO (名前付きパイプ “named pipes” とも言
8868 う) を作成する。
8869
8870    書式:
8871
8872      mkfifo [OPTION] NAME...
8873
8874    “FIFO” は特殊なファイル型の一つであり、 これを利用すると、独立したプ
8875 ロセスの間でデータのやりとりが可能になる。 片方のプロセスが FIFO を書き
8876 出し用にオープンし、もう一方のプロセスが読み込み用にオープンする。 そう
8877 すると、シェルなどにある普通の名前のない (anonymous) パイプを使ったとき
8878 のように、 データを一方から他方へ流すことができるのである。
8879
8880    このプログラムでは以下のオプションが使用できる。参照: *note Common
8881 options::.
8882
8883 ‘-m MODE’
8884 ‘--mode=MODE’
8885      作成する FIFO の許可属性を MODE にする。MODE は ‘chmod’ で使用する
8886      のと同じシンボル表記であり、‘a=rw’ (すべてのユーザに、 読み、書きを
8887      許可する) を基点として使う。MODE で指定するのは、 ファイルの許可属
8888      性ビットのみにするべきである。 *Note File permissions::.
8889
8890 ‘-Z’
8891 ‘--context[=CONTEXT]’
8892      CONTEXT が指定されていない場合は、出力するファイルの SELinux セキュ
8893      リティ・コンテキストを、出力先におけるシステムのデフォルトのタイプ
8894      に合わせて調整する。 これは、‘restorecon’ コマンドの動作に似ている
8895      。 このオプションの長い形式を使って、コンテキストを明示的に指定した
8896      場合、 そのコンテキストが設定されるのは、新しく作成されるファイルに
8897      対してのみである。 コンテキストを指定した場合に、SELinux と SMACK の
8898      どちらも無効になっていると、 警告メッセージを出す。 (CONTEXT を省略
8899      できるのは、coreutils-8.22 から)
8900
8901    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8902
8903 \1f
8904 File: coreutils-ja.info,  Node: mknod invocation,  Next: readlink invocation,  Prev: mkfifo invocation,  Up: Special file types
8905
8906 12.5 ‘mknod’: ブロック型やキャラクタ型のスペシャルファイルを作成する。
8907 ======================================================================
8908
8909 ‘mknod’ は、指定された名前で FIFO、キャラクター・スペシャルファイル、 ブ
8910 ロック・スペシャルファイルを作成する。
8911
8912    書式:
8913
8914      mknod [OPTION]... NAME TYPE [MAJOR MINOR]
8915
8916    これまでに使ってきた「特殊なファイル型 (“special file type”)」という
8917 言い回しとは違って、 「スペシャルファイル (“special file”)」という用語に
8918 は、Unix では技術的な意味が存在する。 すなわち、それは、データを生成した
8919 り、受け取ったりできるもののことである。 たいていの場合、それはハードウ
8920 ェアという物理的なものを指し、 たとえば、プリンタやディスクがそれに当た
8921 る。(なお、そうしたスペシャルファイルは、 通常、システムの設定時に作られ
8922 る。) ‘mknod’ は、 このタイプのファイルを作成するコマンドである。そうし
8923 たデバイスには、そこから一度に 1 文字 (a character) づつしか読むことので
8924 きないものもあれば、一度に 1 ブロックを (すなわち、たくさんの character
8925 を) 読み込むことのできるものもある。 それ故、スペシャルファイルには、ブ
8926 ロック・スペシャルファイル (“block special” files) とキャラクタ・スペシ
8927 ャルファイル (“character special” files) があると言われるのである。
8928
8929    シェルの組み込み機能の ‘mknod’ やエイリアスのために、 ‘mknod’ に何の
8930 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作が
8931 ここで述べているものとは違うことがあるかもしれない。 シェルによる干渉を
8932 避けるためには、‘env’ 経由で ‘mknod’ を起動すればよい (すなわち、‘env
8933 mknod ...’ のようにだ)。
8934
8935    NAME に続く引数では、作成するファイルのタイプを指定する。
8936
8937 ‘p’
8938      FIFO を作成する
8939
8940 ‘b’
8941      ブロック・スペシャルファイルを作成する
8942
8943 ‘c’
8944      キャラクタ・スペシャルファイルを作成する
8945
8946    ブロック型やキャラクタ型のスペシャルファイルを作成する際には、 ファイ
8947 ルタイプに続いて、メージャー・デバイス番号とマイナー・デバイス番号を指定
8948 する必要がある。 メージャーやマイナーのデバイス番号が ‘0x’ や ‘0X’ で始
8949 まっていれば、 番号は 16 進数と見なされる。‘0’ で始まっていれば 8 進数、
8950 それ以外の場合は 10 進数である。
8951
8952    このプログラムでは以下のオプションが使用できる。参照: *note Common
8953 options::.
8954
8955 ‘-m MODE’
8956 ‘--mode=MODE’
8957      作成するファイルの許可属性を MODE にする。MODE は ‘chmod’ で使用す
8958      るのと同じシンボル表記であり、‘a=rw’ を基点として使う。 MODE で指定
8959      するのは、ファイルの許可属性ビットのみにするべきである。 *Note File
8960      permissions::.
8961
8962 ‘-Z’
8963 ‘--context[=CONTEXT]’
8964      CONTEXT が指定されていない場合は、出力するファイルの SELinux セキュ
8965      リティ・コンテキストを、出力先におけるシステムのデフォルトのタイプ
8966      に合わせて調整する。 これは、‘restorecon’ コマンドの動作に似ている
8967      。 このオプションの長い形式を使って、コンテキストを明示的に指定した
8968      場合、 そのコンテキストが設定されるのは、新しく作成されるファイルに
8969      対してのみである。 コンテキストを指定した場合に、SELinux と SMACK の
8970      どちらも無効になっていると、 警告メッセージを出す。 (CONTEXT を省略
8971      できるのは、coreutils-8.22 から)
8972
8973    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8974
8975 \1f
8976 File: coreutils-ja.info,  Node: readlink invocation,  Next: rmdir invocation,  Prev: mknod invocation,  Up: Special file types
8977
8978 12.6 ‘readlink’: シムリンクの値、または正規化されたファイル名を表示する
8979 =======================================================================
8980
8981 ‘readlink’ には、二つの動作モードがある。
8982
8983 ‘Readlink モード’
8984
8985      このモードでは、‘readlink’ は、指定されたシンボリックリンクの値を表
8986      示する。 引数がシンボリックの名前以外だったときは、何も出力せず、0
8987      以外の終了コードで終了する。
8988
8989 ‘Canonicalize (正規化) モード’
8990
8991      このモードでは、‘readlink’ は、指定されたファイルの絶対パスによる名
8992      前を表示する。 その絶対パスには、‘.’ や ‘..’ といった構成要素や重複
8993      するパスの区切り (‘/’)、シンボリックリンクは含まれない。
8994
8995      readlink [OPTION]... FILE...
8996
8997    デフォルトでは、‘readlink’ は readlink モードで動作する。
8998
8999    このプログラムでは以下のオプションが使用できる。参照: *note Common
9000 options::.
9001
9002 ‘-f’
9003 ‘--canonicalize’
9004      canonicalize モードで動かす。ファイル名を構成する要素のうち、 最後
9005      の要素以外のどれかが、存在しなかったり、利用できなかったりすると、
9006      ‘readlink’ は何も出力せず、0 以外の終了コードで終了する。 引数の末
9007      尾のスラッシュは無視される。
9008
9009 ‘-e’
9010 ‘--canonicalize-existing’
9011      canonicalize モードで動かす。ファイル名を構成する要素に、 存在しな
9012      かったり、利用できなかったりするものがあれば、‘readlink’ は何も出力
9013      せず、 0 以外の終了コードで終了する。 ファイル名のの末尾にスラッシ
9014      ュを付けると、その名前はディレクトリであるという指定になる。
9015
9016 ‘-m’
9017 ‘--canonicalize-missing’
9018      canonicalize モードで動かす。ファイル名を構成する要素に、 存在しな
9019      かったり、利用できなかったりするものがあれば、‘readlink’ はそれをデ
9020      ィレクトリと見なす。
9021
9022 ‘-n’
9023 ‘--no-newline’
9024      FILE が 1 個しか指定されなかったときは、出力の区切り文字 (訳注: 通
9025      常は改行) を表示しない。複数の FILE とともに、このオプションが指定
9026      されたときは、警告メッセージを出す。
9027
9028 ‘-s’
9029 ‘-q’
9030 ‘--silent’
9031 ‘--quiet’
9032      ほとんどのエラーメッセージを出さないようにする。デフォルトで ON に
9033      なっている。
9034
9035 ‘-v’
9036 ‘--verbose’
9037      エラーメッセージを表示する。
9038
9039 ‘-z’
9040 ‘--zero’
9041      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
9042      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
9043      他のプログラムがその出力を解析できるようになる。
9044
9045    ‘readlink’ ユーティリティが初めて登場したのは、OpenBSD 2.1 だった。
9046
9047    ‘realpath’ コマンドをオプションなしで使うと、canonicalize モードの
9048 ‘readlink’ と同じ動作をする。
9049
9050    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9051
9052 \1f
9053 File: coreutils-ja.info,  Node: rmdir invocation,  Next: unlink invocation,  Prev: readlink invocation,  Up: Special file types
9054
9055 12.7 ‘rmdir’: 空のディレクトリを削除する
9056 ========================================
9057
9058 ‘rmdir’ は、空のディレクトリを削除する。
9059
9060    書式:
9061
9062      rmdir [OPTION]... DIRECTORY...
9063
9064    引数 DIRECTORY が実在する空のディレクトリを指していない場合、エラーに
9065 なる。
9066
9067    このプログラムでは以下のオプションが使用できる。参照: *note Common
9068 options::.
9069
9070 ‘--ignore-fail-on-non-empty’
9071      ディレクトリの削除に失敗しても、その理由が単にディレクトリが空では
9072      ないせいならば、 その失敗を無視する。
9073
9074 ‘-p’
9075 ‘--parents’
9076      DIRECTORY を削除するとき、DIRECTORY を構成する各要素の削除を試みる
9077      。 そこで、たとえば、‘rmdir -p a/b/c’ は、‘rmdir a/b/c a/b a’ と同
9078      じになる。 従って、そうしたディレクトリのどれかが空ではないことが判
9079      明すると、動作に失敗する。 動作に失敗しても、エラーメッセージを出し
9080      て失敗のステータスで終了しないようにするには、
9081      ‘--ignore-fail-on-non-empty’ オプションを使えばよい。
9082
9083 ‘-v’
9084 ‘--verbose’
9085      DIRECTORY の削除に成功するごとに、その旨メッセージを出す。
9086
9087    空ではないディレクトリを (再帰的に) 削除する方法については、‘rm’ コマ
9088 ンドの説明を参照していただきたい。*Note rm invocation::.
9089
9090    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9091
9092 \1f
9093 File: coreutils-ja.info,  Node: unlink invocation,  Prev: rmdir invocation,  Up: Special file types
9094
9095 12.8 ‘unlink’: システムコール unlink を使って、ファイルを削除する
9096 =================================================================
9097
9098 ‘unlink’ は、指定された 1 個のファイル名の削除を行う。 これは、システム
9099 が提供する ‘unlink’ 関数への必要最小のインターフェースである。 *Note
9100 (libc)Deleting Files::. 従って、より一般に使われる ‘rm’ コマンドのような
9101 、様々な付加機能をあえて備えていない (*note rm invocation::)。
9102
9103    書式:
9104
9105      unlink FILENAME
9106
9107    システムによっては、‘unlink’ を使って、ディレクトリの名前を削除できる
9108 ものもある。 また、それができるのは、特権を持ったユーザだけであるシステ
9109 ムもある。 GNU のシステムでは、‘unlink’ は、ディレクトリの名前を全く削除
9110 できない。
9111
9112    ‘unlink’ コマンドは、‘--help’ と ‘--version’ オプションを認識する。 名
9113 前が ‘-’ で始まるファイルを削除するには、名前の前に ‘./’ を付ければよい
9114 。 たとえば、‘unlink ./--help’ のようにだ。
9115
9116    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9117
9118 \1f
9119 File: coreutils-ja.info,  Node: Changing file attributes,  Next: Disk usage,  Prev: Special file types,  Up: Top
9120
9121 13 ファイルの属性変更
9122 *********************
9123
9124 ファイルについては、内容と名前とファイル型 (*note Special file types::)
9125 で、すべてが尽くされるわけではない。ファイルには、他の情報も存在する。 た
9126 とえば、所有者 (ユーザ ID)、グループ (グループ ID)、アクセス権 (そのファ
9127 イルに対して、所有者、グループに属するユーザ、それ以外の一般ユーザは、 そ
9128 れぞれ何ができるのか)、様々なタイムスタンプ、といった情報も存在するので
9129 ある。 そうしたものは、一まとめにして、ファイルの属性 (“attributes”) と
9130 呼ばれている。
9131
9132    以下のコマンドは、ファイルの属性を変更する。
9133
9134 * Menu:
9135
9136 * chown invocation::         ファイルの所有者やグループを変更する。
9137 * chgrp invocation::         ファイルのグループを変更する。
9138 * chmod invocation::         アクセス権を変更する。
9139 * touch invocation::         ファイルのタイムスタンプを変更する。
9140
9141 \1f
9142 File: coreutils-ja.info,  Node: chown invocation,  Next: chgrp invocation,  Up: Changing file attributes
9143
9144 13.1 ‘chown’: ファイルの所有者やグループを変更する
9145 ==================================================
9146
9147 ‘chown’ は、指定された各 FILE の所有者や所有グループを NEW-OWNER に変更
9148 する。所有者とグループを、存在する参照用ファイル (reference file) のそれ
9149 と同じものに変更することもできる。
9150
9151    書式:
9152
9153      chown [OPTION]... {NEW-OWNER | --reference=REF_FILE} FILE...
9154
9155    NEW-OWNER では、新しい所有者やグループを以下のような形で指定する (‘:’
9156 の前後に空白を入れてはいけない)。
9157
9158      [OWNER] [ : [GROUP] ]
9159
9160    細かく説明しよう。
9161
9162 OWNER
9163      OWNER (ユーザ名、またはユーザ ID 番号) だけが指定されている場合は、
9164      そのユーザが指定された各ファイルの所有者になる。ファイルのグループ
9165      は変化しない。
9166
9167 OWNER‘:’GROUP
9168      OWNER の後に、コロンと GROUP (グループ名、またはグループ ID 番号) が
9169      、間に空白をはさまずに続く場合は、ファイルの所有グループも (GROUP に
9170      ) 変更される。
9171
9172 OWNER‘:’
9173      OWNER の後ろにコロンがあるのみで、グループ名が続かない場合は、 その
9174      ユーザがファイルの所有者になり、ファイルのグループは、OWNER のログ
9175      イン・グループに変更される。
9176
9177 ‘:’GROUP
9178      コロンとそれに続く GROUP のみが指定され、所有者が省略されている場合
9179      は、 ファイルのグループだけが変更される。この場合、‘chown’ は、
9180      ‘chgrp’ と同じ動作をするわけだ。
9181
9182 ‘:’
9183      コロンのみが指定されている場合や、NEW-OWNER に何も指定されていない
9184      場合は、 所有者もグループも変更されない。
9185
9186    OWNER や GROUP にユーザ ID 番号やグループ ID 番号を使用する場合は、 番
9187 号の頭に ‘+’ を付ければ、ID 番号だと明示することができる。 *Note
9188 Disambiguating names and IDs::.
9189
9190    古めのスクリプトの中には、区切りの印として ‘:’ ではなく、‘.’ を今だに
9191 使っているものがあるかもしれない。POSIX 1003.1-2001 (*note Standards
9192 conformance::) では、これに対するサポートを要求していないが、 後方互換の
9193 ために、GNU の ‘chown’ では、曖昧さが生じないかぎり、‘.’ の使用をサポー
9194 トしている。とは言え、新しく書くスクリプトでは、‘.’ の使用を避けるべきで
9195 ある。他のシステムでも使えるとはかぎらないし、 また、OWNER‘.’GROUP とい
9196 う全体が、名前に ‘.’ を含むユーザを指していたりすると、不都合が生じるか
9197 らだ。
9198
9199    ユーザがグループを任意のものに変更できるか、それとも、 グループの設定
9200 はユーザがその一員であるグループにのみ制限されるという、 より可搬性のあ
9201 る動作になっているかは、システム次第である。
9202
9203    ‘chown’ コマンドを実行すると、set-user-ID ビットや set-group-ID ビッ
9204 トが消えてしまうことがある。そうしたことが起きるかどうかは、 裏で動いて
9205 いる ‘chown’ システムコールのポリシーや機能次第であり、 従って、システム
9206 によるファイルモードの変更が、‘chown’ コマンドのコントロール外になること
9207 があるのだ。 しかるべき特権を持ったユーザが実行した場合や、問題のビット
9208 が実行権とは関係のない何か別の機能 (たとえば、強制ロック) を表している場
9209 合などでは、‘chown’ コマンドを実行しても、そうしたビットが変わらないかも
9210 しれない。 どうなるかよくわからない場合は、裏で動いているシステムの動作
9211 を調べるとよい。
9212
9213    このプログラムでは以下のオプションが使用できる。参照: *note Common
9214 options::.
9215
9216 ‘-c’
9217 ‘--changes’
9218      所有者の変更が実際に行われた各 FILE について、何を実行したかを詳し
9219      く表示する。
9220
9221 ‘-f’
9222 ‘--silent’
9223 ‘--quiet’
9224      所有者を変更できないファイルがあっても、エラーメッセージを出さない
9225      。
9226
9227 ‘--from=OLD-OWNER’
9228      FILE が OLD-OWNER で指定された属性を現在持っているときにのみ、 その
9229      所有者を変更する。OLD-OWNER の書式は、上記の NEW-OWNER と同じである
9230      。 このオプションは、ファイルの不正使用が可能になる時間を大幅に狭め
9231      るという点で、 主としてセキュリティの見地から役に立つ。 一例を挙げ
9232      ると、この種のオプションを使わない場合、ユーザの ID 番号の変更を、
9233      そのユーザのファイルに反映させるために、‘root’ は次のようなコマンド
9234      を実行するかもしれない。
9235
9236           find / -user OLDUSER -print0 | xargs -0 chown -h NEWUSER
9237
9238      しかし、これは危険なことである。なぜなら、‘find’ が存在するファイル
9239      の所有者を検査するときと、‘chown’ が実際に実行されるときとの間に時
9240      間差があり、それはかなり大きいかもしれないからだ。 この時間差を小さ
9241      くする方法の一つは、ファイルが見つかるごとに、‘chown’ を実行するこ
9242      とだろう。
9243
9244           find / -user OLDUSER -exec chown -h NEWUSER {} \;
9245
9246      しかし、動作の対象になるファイルがたくさんあると、この方法は非常に
9247      時間がかかる。 ‘--from=OLD-OWNER’ オプションを使う方が、 万全とまで
9248      は言えないにしても、より安全である (時間差がさらに小さくなるので)。
9249
9250           chown -h -R --from=OLDUSER NEWUSER /
9251
9252 ‘--dereference’
9253      シンボリックリンクそのものを動作の対象とせず、リンクが指しているも
9254      のを動作の対象にする。 これがデフォルトである。
9255
9256 ‘-h’
9257 ‘--no-dereference’
9258      シンボリックリンクが指しているものではなく、シンボリックリンクその
9259      ものを動作の対象にする。 このモードは、システムコール ‘lchown’ に依
9260      存している。 システムコール ‘lchown’ を提供していないシステムでは、
9261      コマンドラインで指定されたファイルがシンボリックリンクだと、‘chown’
9262      は実行に失敗する。 なお、再帰的にディレクトリ階層をたどっている際に
9263      シンボリックリンクに出会っても、 デフォルトでは診断メッセージを表示
9264      しない。ただし、‘--verbose’ を指定している場合は別なので、そちらの
9265      説明も参照していただきたい。
9266
9267 ‘--preserve-root’
9268      ルートディレクトリ (‘/’) を再帰的に変更しようとした時点で、実行に失
9269      敗する。 ‘--recursive’ オプションを指定していない場合、このオプショ
9270      ンは効果がない。 *Note Treating / specially::.
9271
9272 ‘--no-preserve-root’
9273      ‘--preserve-root’ オプションが前にあれば、その効果を無効にする。
9274      *Note Treating / specially::.
9275
9276 ‘--reference=REF_FILE’
9277      各 FILE の所有者とグループを REF_FILE のそれと同じものに変更する。
9278      REF_FILE がシンボリックリンクの場合は、シンボリックリンクの所有者と
9279      グループではなく、 リンクが指しているファイルの所有者とグループを使
9280      用する。
9281
9282 ‘-v’
9283 ‘--verbose’
9284      処理したすべてのファイルについてメッセージを表示する。システムコー
9285      ル ‘lchown’ を持っていないシステムで、再帰的にディレクトリ階層をた
9286      どっている際にシンボリックリンクに出会った場合、 ‘--no-dereference’
9287      が有効になっていれば、 「シンボリックリンクもその参照先も変更しない
9288      」というメッセージを出す。
9289
9290 ‘-R’
9291 ‘--recursive’
9292      ディレクトリとその中身の所有者を再帰的に変更する。
9293
9294 ‘-H’
9295      ‘--recursive’ (‘-R’) オプションが指定されている場合に、 コマンドラ
9296      インで指定された引数がディレクトリへのシンボリックリンクならば、そ
9297      れをたどる。 *Note Traversing symlinks::.
9298
9299 ‘-L’
9300      ディレクトリ階層を再帰的にたどっている際に、 ディレクトリへのシンボ
9301      リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
9302      symlinks::.
9303
9304 ‘-P’
9305      シンボリックリンクを一切たどらない。これが、‘-H’, ‘-L’, ‘-P’ のどれ
9306      も指定されていないときの、デフォルトである。 *Note Traversing
9307      symlinks::.
9308
9309    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9310
9311    用例:
9312
9313      # /u の所有者を "root" に変更する。
9314      chown root /u
9315
9316      # 同様だが、グループも "staff" に変更する。
9317      chown root:staff /u
9318
9319      # /u 及び、それ以下にあるファイルの所有者を "root" に変更する。
9320      chown -hR root /u
9321
9322 \1f
9323 File: coreutils-ja.info,  Node: chgrp invocation,  Next: chmod invocation,  Prev: chown invocation,  Up: Changing file attributes
9324
9325 13.2 ‘chgrp’: ファイルの所有グループを変更する
9326 ==============================================
9327
9328 ‘chgrp’ は、指定された各 FILE の所有グループを GROUP に変更する (GROUP は
9329 、グループ名でもグループ ID 番号でもよい)。 所有グループを、存在する参照
9330 用ファイル (reference file) のグループと同じものに変更することもできる。
9331 *Note chown invocation::.
9332
9333    書式:
9334
9335      chgrp [OPTION]... {GROUP | --reference=REF_FILE} FILE...
9336
9337    GROUP にグループ ID 番号を使用する場合は、番号の頭に ‘+’ を付ければ、
9338 ID 番号だと明示することができる。 *Note Disambiguating names and IDs::.
9339
9340    ユーザがグループを任意のものに変更できるか、それとも、 グループの設定
9341 はユーザがその一員であるグループにのみ制限されるという、 より可搬性のあ
9342 る動作になっているかは、システム次第である。
9343
9344    このプログラムでは以下のオプションが使用できる。参照: *note Common
9345 options::.
9346
9347 ‘-c’
9348 ‘--changes’
9349      グループの変更が実際に行われた各 FILE について、何を実行したかを詳
9350      しく表示する。
9351
9352 ‘-f’
9353 ‘--silent’
9354 ‘--quiet’
9355      グループを変更できないファイルがあっても、エラーメッセージを出さな
9356      い。
9357
9358 ‘--dereference’
9359      シンボリックリンクそのものを動作の対象とせず、リンクが指しているも
9360      のを動作の対象にする。 これがデフォルトである。
9361
9362 ‘-h’
9363 ‘--no-dereference’
9364      シンボリックリンクが指しているものではなく、シンボリックリンクその
9365      ものを動作の対象にする。 このモードは、システムコール ‘lchown’ に依
9366      存している。 システムコール ‘lchown’ を提供していないシステムでは、
9367      コマンドラインで指定されたファイルがシンボリックリンクだと、‘chgrp’
9368      は実行に失敗する。 なお、再帰的にディレクトリ階層をたどっている際に
9369      シンボリックリンクに出会っても、 デフォルトでは診断メッセージを表示
9370      しない。ただし、‘--verbose’ を指定している場合は別なので、そちらの
9371      説明も参照していただきたい。
9372
9373 ‘--preserve-root’
9374      ルートディレクトリ (‘/’) を再帰的に変更しようとした時点で、実行に失
9375      敗する。 ‘--recursive’ オプションを指定していない場合、このオプショ
9376      ンは効果がない。 *Note Treating / specially::.
9377
9378 ‘--no-preserve-root’
9379      ‘--preserve-root’ オプションが前にあれば、その効果を無効にする。
9380      *Note Treating / specially::.
9381
9382 ‘--reference=REF_FILE’
9383      各 FILE のグループを REF_FILE のグループと同じものに変更する。
9384      REF_FILE がシンボリックリンクの場合は、 シンボリックリンクのグルー
9385      プではなく、リンクが指しているファイルのグループを使用する。
9386
9387 ‘-v’
9388 ‘--verbose’
9389      処理したすべてのファイルについてメッセージを表示する。システムコー
9390      ル ‘lchown’ を持っていないシステムで、再帰的にディレクトリ階層をた
9391      どっている際にシンボリックリンクに出会った場合、 ‘--no-dereference’
9392      が有効になっていれば、 「シンボリックリンクもその参照先も変更しない
9393      」というメッセージを出す。
9394
9395 ‘-R’
9396 ‘--recursive’
9397      ディレクトリとその中身の所有グループを再帰的に変更する。
9398
9399 ‘-H’
9400      ‘--recursive’ (‘-R’) オプションが指定されている場合に、 コマンドラ
9401      インで指定された引数がディレクトリへのシンボリックリンクならば、そ
9402      れをたどる。 *Note Traversing symlinks::.
9403
9404 ‘-L’
9405      ディレクトリ階層を再帰的にたどっている際に、 ディレクトリへのシンボ
9406      リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
9407      symlinks::.
9408
9409 ‘-P’
9410      シンボリックリンクを一切たどらない。これが、‘-H’, ‘-L’, ‘-P’ のどれ
9411      も指定されていないときの、デフォルトである。 *Note Traversing
9412      symlinks::.
9413
9414    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9415
9416    用例:
9417
9418      # /u のグループを "staff" に変更する。
9419      chgrp staff /u
9420
9421      # /u 及び、それ以下にあるファイルのグループを "staff" に変更する。
9422      chgrp -hR staff /u
9423
9424 \1f
9425 File: coreutils-ja.info,  Node: chmod invocation,  Next: touch invocation,  Prev: chgrp invocation,  Up: Changing file attributes
9426
9427 13.3 ‘chmod’: アクセス権を変更する
9428 ==================================
9429
9430 ‘chmod’ は、名前を指定したファイルのアクセス権を変更する。
9431
9432    書式:
9433
9434      chmod [OPTION]... {MODE | --reference=REF_FILE} FILE...
9435
9436    ‘chmod’ コマンドがシンボリックリンクのアクセス権を変更することはない
9437 。 ‘chmod’ システムコールがシンボリックリンクのアクセス権を変更できない
9438 からである。 シンボリックリンクのアクセス権が利用されることは全くないの
9439 で、この制限は問題にならない。 とは言え、コマンドラインで指定された FILE
9440 が、シンボリックリンクだということはあるだろうが、そうした場合、‘chmod’
9441 は、指定された各シンボリックリンクが参照しているファイルのアクセス権を変
9442 更する。 それに対して、ディレクトリを再帰的にたどっている最中にシンボリ
9443 ックリンクに出会った場合は、 ‘chmod’ はそれを無視することになる。
9444
9445    ‘chmod’ の実行に成功したとき、通常ファイルの set-group-ID ビットが消
9446 えることがあるが、 それは、ファイルのグループ ID が、‘chmod’ を実行した
9447 ユーザの実効グループ ID や、補助グループ ID の一つに一致しなかった場合で
9448 ある。 もっとも、そのユーザがしかるべき特権を持っている場合には、
9449 set-group-ID ビットが消えることはない。また、制限事項が他にも存在して、
9450 指定した MODE 中や REF_FILE の、set-user-ID ビットや set-group-ID ビット
9451 が無視されることもある。そうした動作は、裏で動いている ‘chmod’ システム
9452 コールのポリシーや機能次第なのだ。どうなるかよくわからない場合には、 裏
9453 で動いているシステムの動作を調べればよい。
9454
9455    MODE には、ファイルの新しいモードビット (訳注: すなわち、アクセス権)
9456 を指定する。詳細については、「ファイルの許可属性」の章を参照していただき
9457 たい (*note File permissions::)。MODE を指定するとき、MODE をどうしても
9458 ‘-’ で始めたいのなら、前に ‘--’ を置いた方がよい。 たとえば、‘chmod --
9459 -w file’ のようにだ。 とは言え、たいていの場合、‘chmod a-w file’ の方が
9460 望ましい。 なお、‘chmod -w file’ (‘--’ がない) が ‘chmod a-w file’ と別
9461 の動作になる場合には、警告が出る。
9462
9463    このプログラムでは以下のオプションが使用できる。参照: *note Common
9464 options::.
9465
9466 ‘-c’
9467 ‘--changes’
9468      アクセス権の変更が実際に行われた各 FILE について、何を実行したかを
9469      詳しく表示する。
9470
9471 ‘-f’
9472 ‘--silent’
9473 ‘--quiet’
9474      アクセス権が変更できないファイルがあっても、エラーメッセージを出さ
9475      ない。
9476
9477 ‘--preserve-root’
9478      ルートディレクトリ (‘/’) を再帰的に変更しようとした時点で、実行に失
9479      敗する。 ‘--recursive’ オプションを指定していない場合、このオプショ
9480      ンは効果がない。 *Note Treating / specially::.
9481
9482 ‘--no-preserve-root’
9483      ‘--preserve-root’ オプションが前にあれば、その効果を無効にする。
9484      *Note Treating / specially::.
9485
9486 ‘-v’
9487 ‘--verbose’
9488      すべての FILE について、何を実行し、何を実行しなかったかを詳しく 表
9489      示する。
9490
9491 ‘--reference=REF_FILE’
9492      各 FILE のモードを REF_FILE のそれと同じものに変更する。 *Note File
9493      permissions::.  REF_FILE がシンボリックリンクの場合は、 シンボリッ
9494      クリンクのモードではなく、リンクが参照しているファイルのモードを使
9495      用する。
9496
9497 ‘-R’
9498 ‘--recursive’
9499      ディレクトリとその中身のアクセス権を再帰的に変更する。
9500
9501    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9502
9503 \1f
9504 File: coreutils-ja.info,  Node: touch invocation,  Prev: chmod invocation,  Up: Changing file attributes
9505
9506 13.4 ‘touch’: ファイルのタイムスタンプを変更する
9507 ================================================
9508
9509 ‘touch’ は指定されたファイルのアクセス日時 (access time) や更新日時
9510 (modification time) を変更する。
9511
9512    書式:
9513
9514      touch [OPTION]... FILE...
9515
9516    引数 FILE に存在しないファイルを指定すると、空のファイルが作成される
9517 。 ただし、‘--no-create’ (‘-c’) や ‘--no-dereference’ (‘-h’) が有効な場
9518 合は、ファイルは作成されない。
9519
9520    引数 FILE が ‘-’ という文字列の場合は、特別な扱いをする。‘touch’ は、
9521 標準出力に結びついているファイルの日時を変更するのである。
9522
9523    ‘touch’ は、デフォルトではファイルのタイムスタンプを現在の日時にセッ
9524 トする。 ‘touch’ はオペランドを左から右へと順番に処理するので、 生成され
9525 たタイムスタンプが、前後のオペランドで一致しないこともある。 また、「現
9526 在」とはいつかを決めるのは、プラットフォーム次第である。 ネットワーク・
9527 ファイルシステムを使用しているプラットフォームでは、 オペレーティング・
9528 システムとファイルシステムとで別のクロックを使用していることも珍しくない
9529 。 ‘touch’ は通常、デフォルトではファイルシステムのクロックを使用するの
9530 で、 クロックのずれのために、生成されたファイルのタイムスタンプが、 ある
9531 プログラムにとっては「未来」に見えたり、「過去」に見えたりすることがある
9532
9533
9534    ‘touch’ コマンドは、ファイルのタイムスタンプを、 ユーザが指定した日時
9535 よりも精度が高くならない範囲で、表現できる最も精密な値にセットする。 こ
9536 の値がユーザが指定した日時と違うことがあるが、それにはいくつかの理由があ
9537 る。 第一に、ユーザが指定した日時が、サポートされている精度を越えている
9538 ことがある。 第二に、ファイルシステムが、日時のタイプによって別の精度を
9539 使っていることがある。 第三に、ファイルのタイムスタンプが、オペレーティ
9540 ング・システムのタイムスタンプとは別の精度を使っていることがある。 第四
9541 に、オペレーティング・システムでタイムスタンプの更新に使用される基本デー
9542 タ型が、 さらに違う精度を採用していることがある。そんなわけで、理屈の上
9543 では、 たとえば、ファイルシステムでは、アクセス日時には 10 マイクロ秒の
9544 精度を、更新日時には 100 ナノ秒の精度を使用し、オペレーティング・システ
9545 ムの方では、現在の時刻にはナノ秒の精度を、 ‘touch’ がファイルのタイムス
9546 タンプを任意の値に設定するために使う基本データ型には、 マイクロ秒の精度
9547 を使用している、そういうこともありえるのである。
9548
9549    タイムスタンプを現在の時刻にセットする場合には、 ユーザが所有していな
9550 いファイルでも、書き込み権限さえ持っていれば、‘touch’ はそのタイムスタン
9551 プを変更することができる。 しかし、現在の時刻以外にセットするには、ユー
9552 ザはそのファイルを所有していなければならない。 古いシステムの中には、制
9553 限がさらに厳しいものもある。 たとえば、アクセス日時と更新日時の両方を現
9554 在の時刻にセットするとき以外、 対象となるファイルを所有していなければな
9555 らないといった具合だ。
9556
9557    ‘touch’ が提供するオプションを使えば、ファイルの 2 種類の日時 — 最終
9558 アクセス日時と最終更新日時 — を変更することができるが、 標準の日時には、
9559 実はそのほかに 3 番目のものがある。すなわち、inode の変更日時 (inode
9560 change time) だ。これは、ファイルの ‘ctime’ と呼ばれることが多い。 inode
9561 の変更日時は、ファイルのメタ情報が最後に変更された日時を表している。 メ
9562 タ情報の変更のよくある例の一つは、ファイルのアクセス権の変更である。 ア
9563 クセス権の変更では、ファイルにアクセスするわけではないので、atime (アク
9564 セス日時) は変化しないし、またファイルの内容を変更するわけでもないので、
9565 mtime (更新日時) も変化しない。しかし、ファイルそのものに関する何ものか
9566 が変化しているわけであり、 それはどこかに記録されなければならない。まさ
9567 にそれが、inode の ctime フィールドの役割なのだ。 たとえば、バックアップ
9568 ・プログラムが、ファイルのアクセス権に変更があった場合も含めて、 ファイ
9569 ルのコピーを最新に保つことができるようにするには、ctime が不可欠である。
9570 ファイルの ctime は変更するが、他の日時には影響を及ぼさない別の操作には
9571 、ファイル名の変更がある。 なお、いかなる場合であれ、通常の操作では、ユ
9572 ーザが ctime フィールドを自分で指定する値に変更することはできない。 オペ
9573 レーティングシステムやファイルシステムの中には、4 番目の日時をサポートし
9574 ているものもある。 すなわち、作成日時 (birth time) であり、ファイルが最
9575 初に作られた日時だ。 名前からして当然だが、このタイムスタンプが変更され
9576 ることはない。
9577
9578    タイムスタンプは、タイムゾーンのルールに従うが、そのルールを指定して
9579 いるのは、環境変数 ‘TZ’ である。 ‘TZ’ が設定されていない場合は、システム
9580 のデフォルトのルールに従う。 *Note Specifying the Time Zone with ‘TZ’:
9581 (libc)TZ Variable. なお、UTC のタイムスタンプを使えば、夏 (冬) 時間への
9582 移行時の曖昧さを避けることができる。
9583
9584    このプログラムでは以下のオプションが使用できる。参照: *note Common
9585 options::.
9586
9587 ‘-a’
9588 ‘--time=atime’
9589 ‘--time=access’
9590 ‘--time=use’
9591      アクセス日時のみ変更する。
9592
9593 ‘-c’
9594 ‘--no-create’
9595      存在しないファイルについて警告を出さず、ファイルの作成もしない。
9596
9597 ‘-d TIME’
9598 ‘--date=TIME’
9599      現在の日時の代わりに TIME を使用する。TIME には、月の名前、 タイム
9600      ゾーン、‘am’ や ‘pm’、‘yesterday’ なども使うことができる。 たとえば
9601      、‘--date="2004-02-27 14:19:13.489392193 +0530"’ とすると、 UTC よ
9602      り 5 時間 30 分東のタイムゾーンで、2004 年 2 月 27 日 午後 2 時 19
9603      分 13 秒 から 489,392,193 ナノ秒経過した瞬間を指定することになる。
9604      *Note Date input formats::.  精度の高いタイムスタンプをサポートして
9605      いないファイルシステムでは、 精度の超過分は単に無視される。
9606
9607 ‘-f’
9608      何もしない。BSD 版の ‘touch’ との互換性のためにある。
9609
9610 ‘-h’
9611 ‘--no-dereference’
9612      シンボリックリンクが参照しているファイルではなく、シンボリックリン
9613      クのタイムスタンプの変更を試みる。 このオプションを使用した場合、空
9614      のファイルは作成されないが、 ファイルが存在しないという警告まで出な
9615      いようにするには、‘-c’ オプションも併せて使用する必要がある。 すべ
9616      てのシステムが、シンボリックリンクのタイムスタンプの変更をサポート
9617      しているわけではない。 なぜならば、POSIX 2008 までは、下層で動いて
9618      いるシステムに対して、 そうした動作のサポートを要求していなかったか
9619      らだ。 また、システムによっては、シンボリックリンクは、調べるだけで
9620      アクセス日時が変わってしまうので、 変更の結果が後々まで残って観察で
9621      きるのは、更新日時だけだというものもある。 なお、このオプションを
9622      ‘-r’ オプションと一緒に使用すると、 参照するタイムスタンプが、リン
9623      クが指しているファイルからではなく、 シンボリックリンクから取得され
9624      る。
9625
9626 ‘-m’
9627 ‘--time=mtime’
9628 ‘--time=modify’
9629      更新日時 (modification time) のみ変更する。
9630
9631 ‘-r FILE’
9632 ‘--reference=FILE’
9633      現在の日時の代わりに、参照ファイル FILE の日時を使用する。 このオプ
9634      ションを ‘--date=TIME’ (‘-d TIME’) オプションと組み合わせて使うと、
9635      TIME が相対時間で指定されている場合は、参照ファイル FILE の日時がそ
9636      の基点となるが、それ以外の場合は、FILE の日時は無視される。 たとえ
9637      ば、‘-r foo -d '-5 seconds'’ は、‘foo’ のタイムスタンプより 5 秒前
9638      のタイムスタンプを指定している。 FILE がシンボリックリンクの場合は
9639      、‘-h’ が同時に有効になっていないかぎり、 参照するタイムスタンプは
9640      、シンボリックリンクの参照先から取得される。
9641
9642 ‘-t [[CC]YY]MMDDHHMM[.SS]’
9643      現在の日時の代わりに、‘-t’ オプションの引数を使用する (引数の構成は
9644      、4 桁または 2 桁の年 (省略可)、月、日、時、分、秒 (秒も省略可) で
9645      ある)。年が 2 桁のみ指定された場合、0 ... 68 の範囲の年ならば、 CC
9646      は 20 であり、69 ... 99 の範囲の年では、CC は 19 である。 年が全く
9647      指定されない場合は、引数は今年の日付だと解釈される。 閏秒に対応して
9648      いる例外的なシステムでは、SS が ‘60’ のこともありえる。
9649
9650    POSIX 1003.1-2001 以前のシステムでは、‘touch’ は次のような旧式の書式
9651 をサポートしている。すなわち、‘-d’, ‘-r’, ‘-t’ オプションのいづれによっ
9652 てもタイムスタンプが指定されていず、しかも、2 個以上の FILE が指定されて
9653 いて、最初の FILE が ‘MMDDHHMM[YY]’ の形を持ち、それが (YY が存在するな
9654 ら、それを先頭に移せば) ‘-t’ オプションに対する有効な引数と見なすことが
9655 できる場合に、その引数の表している年度が 1969–1999 の範囲にあるならば、
9656 その引数をファイル名ではなく、 他のファイルに適用する日時と解釈する、と
9657 いうものである。 この旧式の動作は、環境変数 ‘_POSIX2_VERSION’ によってコ
9658 ントロールすることができるが (*note Standards conformance::)、移植を考慮
9659 したスクリプトでは、 動作がこの環境変数に依存するコマンドの使用は避ける
9660 べきである。 たとえば、二通りの解釈ができる ‘touch 12312359 main.c’ を使
9661 うより、‘touch ./12312359 main.c’ や ‘touch -t 12312359 main.c’ を使用し
9662 た方がよい。
9663
9664    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9665
9666 \1f
9667 File: coreutils-ja.info,  Node: Disk usage,  Next: Printing text,  Prev: Changing file attributes,  Up: Top
9668
9669 14 ディスク使用量
9670 *****************
9671
9672 データをいくらでも無限に入れることのできるディスクはない。 この章で説明
9673 するコマンドには、使用しているディスク容量や利用可能なディスク容量を報告
9674 するもの、 それ以外のファイル情報やファイルステータス情報を報告するもの
9675 、 それに、バッファの内容をディスクに書き込むものがある。
9676
9677 * Menu:
9678
9679 * df invocation::            ファイルシステムのディスク使用量を報告する。
9680 * du invocation::            ファイルのディスク使用量を概算する。
9681 * stat invocation::          ファイルやファイルシステムのステータスを報告する。
9682 * sync invocation::          キャッシュされた書き込みを永続的な記憶装置に同期する。
9683 * truncate invocation::      ファイルサイズの短縮・伸長を行う。
9684
9685 \1f
9686 File: coreutils-ja.info,  Node: df invocation,  Next: du invocation,  Up: Disk usage
9687
9688 14.1 ‘df’: ファイルシステムのディスク使用状態を報告する
9689 =======================================================
9690
9691 ‘df’ は、ファイルシステムごとに、使用されているディスク容量と利用可能な
9692 ディスクス容量を報告する。
9693
9694    書式:
9695
9696      df [OPTION]... [FILE]...
9697
9698    引数を指定しないと、‘df’ は、現在マウントされているすべてのファイルシ
9699 ステム (ファイルシステムのタイプを問わない) について、使用されているディ
9700 スク容量と、利用可能なディスク容量を報告する。 引数が指定されている場合
9701 は、引数として指定された各 FILE が存在するファイルシステムについて報告す
9702 る。
9703
9704    通常、ディスク容量は 1024 バイトを 1 単位として表示するが、この動作は
9705 変更することができる (*note Block size::)。なお、小数点以下は切り上げて
9706 整数にする。
9707
9708    bind マウントについては、引数が指定されていない場合に ‘df’ が表示する
9709 のは、 そのデバイスに関する統計情報のうち、ファイルシステムのリスト中で
9710 (すなわち、MTAB 中で) マウントポイントの名前が最も短いものに関する情報の
9711 みである。 すなわち、‘-a’ オプションが指定されていないときは、情報が重複
9712 するエントリは表示しない。
9713
9714    同じ理屈で、ダミーの擬似デバイスについては、 そのマウントポイントに対
9715 する別のマウントエントリが存在し、 それが実在のブロックデバイスのもので
9716 あり、しかもデバイス番号が同じ場合、 ‘df’ は擬似デバイスのマウントエント
9717 リの方は省略する。 たとえば、ブート初期に作成される擬似ファイルシステム
9718 の ‘rootfs’ は、 実際のルートデバイスがすでにマウントされていれば、デフ
9719 ォルトでは表示されない。
9720
9721    引数 FILE がスペシャルファイルに還元され、 そのスペシャルファイル上に
9722 存在するファイルシステムが現在マウントされている場合、 ‘df’ が表示するの
9723 は、そのファイルシステムの利用可能な容量であって、 デバイス・ノードが存
9724 在するファイルシステムの利用可能な容量ではない。また、GNU の ‘df’ は、マ
9725 ウントされていないファイルシステムのディスク使用量を測定しようとはしない
9726 。 なぜなら、ほとんどのファイルシステムにおいて、そういうことを行うには
9727 、 ファイルシステムの構造について他と全く共通性のない詳しい情報が必要だ
9728 からである。
9729
9730    このプログラムでは以下のオプションが使用できる。参照: *note Common
9731 options::.
9732
9733 ‘-a’
9734 ‘--all’
9735      一覧表示に、ダミーのファイルシステム、重複するファイルシステム、ア
9736      クセスできないファイルシステムも含める。 そうしたものは、デフォルト
9737      では省略されるのである。 ダミーのファイルシステムというのは、
9738      ‘/proc’ のような特殊用途の擬似ファイルシステムがその典型であり、 ス
9739      トレージと結びついていないものだ。 重複するファイルシステムとは、ロ
9740      ーカルやリモートのファイルシステムで、 ローカルのファイル階層の別の
9741      場所にもマウントされているものや、bind マウントされたものである。 ア
9742      クセスできないファイルシステムとは、マウントされているが、 その後そ
9743      のマウントポイントに他のファイルシステムが二重にマウントされたもの
9744      や、 あるいは、マウントポイントのパーミッションなど、他の理由でアク
9745      セスできなくなっているものを言う。
9746
9747 ‘-B SIZE’
9748 ‘--block-size=SIZE’
9749      SIZE によって単位の大きさを変更してから、サイズを表示する (*note
9750      Block size::)。 たとえば、‘-BG’ と指定すれば、1,073,741,824 バイト
9751      を 1 単位として、サイズを表示する。
9752
9753 ‘-h’
9754 ‘--human-readable’
9755      各サイズの後ろに、メビバイトなら ‘M’ といった、大きさを示す文字を付
9756      ける。 1000 ではなく、1024 の累乗が使われるので、‘M’ は 1,048,576 バ
9757      イトを表している。このオプションは、‘--block-size=human-readable’ と
9758      同じである。1000 の累乗が使いたければ、"‘--si’ オプションを使用すれ
9759      ばよい。
9760
9761 ‘-H’
9762      ‘--si’ オプションと同じである。
9763
9764 ‘-i’
9765 ‘--inodes’
9766      ブロックの使用量ではなく、inode の使用情報を一覧表示する。 inode
9767      (index node の略称) には、ファイルの所有者、許可属性、タイムスタン
9768      プ、 ディスク上の位置といった、ファイルに関する情報が含まれている。
9769
9770 ‘-k’
9771      デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024 バ
9772      イトでサイズを表示する (*note Block size::)。このオプションは
9773      ‘--block-size=1K’ に等しい。
9774
9775 ‘-l’
9776 ‘--local’
9777      一覧表示するのをローカルのファイルシステムに限定する。 デフォルトで
9778      は、リモートのファイルシステムも表示される。
9779
9780 ‘--no-sync’
9781      使用量に関するデータを取得する前に ‘sync’ システムコールを実行しな
9782      い。 そのため、多数のディスクを搭載しているシステムでは、‘df’ の実
9783      行速度が目に見えて向上するが、システムによっては (特に SunOS では
9784      )、出力結果がほんの少し古いものになるかもしれない。 これがデフォル
9785      トの動作である。
9786
9787 ‘--output’
9788 ‘--output[=FIELD_LIST]’
9789      FIELD_LIST で定義した出力フォーマットを使用する。FIELD_LIST を省略
9790      した場合は、すべてのフィールドを表示する。 後者の場合、列の順序は、
9791      以下に挙げているフィールドの説明の順序と同じである。
9792
9793      ‘--output’ オプションは、‘-i’, ‘-P’, ‘-T’ のどのオプションとも一緒
9794      に使うことができない。
9795
9796      FIELD_LIST は、‘df’ の出力に含まれることになる、コンマで区切った列
9797      のリストであり、 このリストによって出力する列の順序を制御することが
9798      できる。 従って、各フィールドは任意の場所に置くことができるが、一度
9799      しか使うことができない。
9800
9801      FIELD_LIST で使える有効なフィールドの名前は、次のものである。
9802      ‘source’
9803           マウントポイントにマウントする対象。たいていはデバイス。
9804      ‘fstype’
9805           ファイルシステムのタイプ。
9806
9807      ‘itotal’
9808           inode の総数。
9809      ‘iused’
9810           使用 inode 数。
9811      ‘iavail’
9812           使用可能な inode 数。
9813      ‘ipcent’
9814           IUSED を ITOTAL で割ったパーセント表示。
9815
9816      ‘size’
9817           ブロックの総数。
9818      ‘used’
9819           使用ブロック数。
9820      ‘avail’
9821           使用可能なブロック数。
9822      ‘pcent’
9823           USED を SIZE で割ったパーセント表示。
9824
9825      ‘file’
9826           ファイル名をコマンドラインで指定した場合、そのファイル名。
9827      ‘target’
9828           マウントポイント。
9829
9830      ブロックや inode の統計情報を表すフィールドは、他の場合と同じく、
9831      ‘-h’ のような数値の大きさを調整するオプションの影響を受ける。
9832
9833      FIELD_LIST の定義は、複数の ‘--output’ オプションを使用して、分割し
9834      ても構わない。
9835
9836           #!/bin/sh
9837           # TARGET (すなわち、マウントポイント) に続けて、そのブロックや
9838           # inode の使用状態をパーセントで表示する。
9839           df --out=target --output=pcent,ipcent
9840
9841           # 表示できるすべてのフィールドを表示する。
9842           df --o
9843
9844 ‘-P’
9845 ‘--portability’
9846      POSIX の出力形式を使用する。デフォルトの形式に似ているが、次の点で
9847      異なっている。
9848
9849        1. 各ファイルシステムついての情報が、常にぴったり 1 行で表示され
9850           、 マウントされるデバイスが、それのみで 1 行を占めることがない
9851           。 そのため、マウントされるデバイスの名前の長さが 20 字を越え
9852           ると (たとえば、ネットワーク・マウントの場合にそういうことがあ
9853           りそうだ)、 各項目の列がずれることになる。
9854
9855        2. ヘッダ行の項目名が、POSIX に準拠したものになる。
9856
9857        3. デフォルトのブロックサイズや出力の書式が、環境変数
9858           ‘DF_BLOCK_SIZE’, ‘BLOCK_SIZE’, ‘BLOCKSIZE’ の影響を受けなくな
9859           る。 とは言え、デフォルトのブロックサイズについては、
9860           ‘POSIXLY_CORRECT’ の影響だけは、やはり受ける。すなわち、
9861           ‘POSIXLY_CORRECT’ が設定されていれば、ブロックサイズは 512 バ
9862           イトであり、さもなければ 1024 バイトである。 *Note Block
9863           size::.
9864
9865 ‘--si’
9866      各サイズにの後ろに、メガバイトなら ‘M’ といった、SI 形式の略号を付
9867      ける。 1024 ではなく、1000 の累乗が使用されるので、‘M’ は 1,000,000
9868      バイトを表している。このオプションは、‘--block-size=si’ と同じこと
9869      である。1024 の累乗が使いたければ、‘-h’ や ‘--human-readable’ を使
9870      用すればよい。
9871
9872 ‘--sync’
9873      使用量に関するデータを取得する前に ‘sync’ システムコールを実行する
9874      。 システムによっては (特に SunOS では)、そうすることでより最近の結
9875      果が得られるが、 一般的に言って、このオプションを使用すると、‘df’ の
9876      実行速度がかなり低下する。 ファイルシステムをたくさんマウントしてい
9877      る場合や、 作業が頻繁に行われているファイルシステムでは、とりわけ遅
9878      くなる。
9879
9880 ‘--total’
9881      すべての引数を処理した後で、全引数についての総計を表示する。 このオ
9882      プションを使用すれば、ディスクの容量、使用した量、使用可能な量につ
9883      いて、 リストされているすべてのデバイスを合わせた合計を知ることがで
9884      きる。 引数が一つも指定されていない場合は、‘df’ は使用可能な容量の
9885      合計に無関係なファイルシステムを除外しようとして、できるだけのこと
9886      をする。 重複するリモート・ファイルシステムを計算に入れないといった
9887      ことをするのである。
9888
9889      総計の行において ‘df’ は SOURCE の列に ‘"total"’ と表示し、 TARGET
9890      の列に ‘"-"’ という文字を表示する (訳注: SOURCE, TARGET などの列に
9891      ついては、‘--output’ の説明を参照していただきたい)。 SOURCE の列が
9892      存在しない場合は、TARGET の列が存在すれば、 ‘df’ は TARGET の列に
9893      ‘"total"’ と表示する。
9894
9895 ‘-t FSTYPE’
9896 ‘--type=FSTYPE’
9897      一覧表示するファイルシステムを FSTYPE というタイプに限定する。 ‘-t’
9898      オプションを複数回使うことによって、複数のタイプのファイルシステム
9899      を指定することができる。 デフォルトでは、いかなるタイプのファイルシ
9900      ステムも除外しない。
9901
9902 ‘-T’
9903 ‘--print-type’
9904      各ファイルシステムのタイプを表示する。このとき表示されるタイプは、
9905      ‘-t’ や ‘-x’ オプションを使って、一覧表示に含めたり、 一覧表示から
9906      除外したりできるタイプと同じものである。 すなわち、表示されるタイプ
9907      は何であれ、システムによってサポートされているということだ。 以下に
9908      、よく見受けられるタイプの名前をいくつか挙げておく (当然ながら、こ
9909      こに挙げるものがすべてではない)。
9910
9911      ‘nfs’
9912           NFS ファイルシステム。すなわち、ネットワーク越しにほかのマシン
9913           からマウントしているファイルシステム。 このタイプ名は、あらゆ
9914           るシステムで共通して使われているようである。
9915
9916      ‘ext2, ext3, ext4, xfs, btrfs...’
9917           ローカルでマウントしているハードディスクのファイルシステム。
9918           (ローカルのマウントでは、システムが複数のタイプをサポートして
9919           いることもある。 たとえば、Linux がそうだ。)
9920
9921      ‘iso9660, cdfs’
9922           CD や DVD ドライブのファイルシステム。HP-UX は ‘cdfs’ を使用し
9923           、 ほかのシステムのほとんどは ‘iso9660’ を使用している。
9924
9925      ‘ntfs,fat’
9926           MS-Windows や MS-DOS で使用されるファイルシステム。
9927
9928 ‘-x FSTYPE’
9929 ‘--exclude-type=FSTYPE’
9930      一覧表示するファイルシステムを FSTYPE というタイプ以外のものに限定
9931      する。 ‘-x’ オプションを複数回使うことによって、複数のタイプのファ
9932      イルシステムを除外することができる。 デフォルトでは、いかなるタイプ
9933      のファイルシステムも除外しない。
9934
9935 ‘-v’
9936      無視される。System V 版の ‘df’ との互換のためにある。
9937
9938    ‘df’ がインストールされるのは、利用可能なマウントテーブルを持つシステ
9939 ムだけである。 従って、移植を考慮したスクリプトは、その存在を当てにしな
9940 い方がよい。
9941
9942    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。 実行に失敗し
9943 ても、全く何も出力されないこともある。 そういうときに、たとえば、ディレ
9944 クトリ DIR が ‘ext3’ や ‘reiserfs’ というタイプのファイルシステム上にあ
9945 るかどうかを調べるには、 ‘df -t ext3 -t reiserfs DIR’ といったコマンドを
9946 実行して、 終了ステータスを検査すればよい。
9947
9948    ファイルシステムのタイプを判断するには、ファイルシステムのリスト
9949 (MTAB) が必要になる。従って、実行の失敗には、 ファイルシステムのリストを
9950 読み込むことができないときに、ファイル名を示す引数とともに ‘-a’, ‘-l’,
9951 ‘-t’, ‘-x’ といったオプションが一つ以上使われた場合が含まれる。
9952
9953 \1f
9954 File: coreutils-ja.info,  Node: du invocation,  Next: stat invocation,  Prev: df invocation,  Up: Disk usage
9955
9956 14.2 ‘du’: ファイルのディスク使用量を概算する
9957 =============================================
9958
9959 ‘du’ は、指定した一連のファイルのディスク使用量を報告する。 引数がディレ
9960 クトリの場合は、サブディレクトリごとのディスク使用量も報告する。
9961
9962    書式:
9963
9964      du [OPTION]... [FILE]...
9965
9966    引数を指定しないと、‘du’ は、カレントディレクトリのディスク使用量を報
9967 告する。 通常、ディスク使用量は 1024 バイトを 1 単位として表示するが、 こ
9968 の動作は変更することができる (*note Block size::)。 なお、小数点以下は、
9969 切り上げて整数にする。
9970
9971    2 個以上のハードリンクが同一のファイルを指している場合は、そのうちの
9972 1 個のみが計算の対象になる。引数 FILE の順番によって、どのリンクが計算の
9973 対象になるかが変わってくるので、 引数の順番を変更すると、‘du’ が出力する
9974 数値や項目が変化するかもしれない。
9975
9976    このプログラムでは以下のオプションが使用できる。参照: *note Common
9977 options::.
9978
9979 ‘-0’
9980 ‘--null’
9981      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
9982      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
9983      他のプログラムがその出力を解析できるようになる。
9984
9985 ‘-a’
9986 ‘--all’
9987      ディレクトリだけでなく、すべてのファイルについて使用量を表示する。
9988
9989 ‘--apparent-size’
9990      ディスクの使用量ではなく、見かけのサイズを表示する。 ファイルの見か
9991      けのサイズとは、通常ファイルに対して ‘wc -c’、 あるいは、もっと普通
9992      に ‘ls -l --block-size=1’ や ‘stat --format=%s’ を実行したときに返
9993      されるバイト数である。 たとえば、‘zoo’ という単語を改行を付けずに書
9994      き込んだファイルなら、 当然ながら、見かけのサイズは 3 になる。 だが
9995      、そうした小さなファイルも、そのファイルが存在するファイルシステム
9996      のタイプと設定次第で、 0 から 16 KiB、あるいは、それ以上のディスク
9997      スペースを占有するかもしれないのだ。 もっとも、穴空きファイル
9998      (sparse file) の場合は事情が別である。たとえば、
9999
10000           dd bs=1 seek=2GiB if=/dev/null of=big
10001
10002      上記のコマンドで作成した穴空きファイルは、見かけのサイズこそ 2 GiB
10003      だが、最近のほとんどのシステムでは、実際に使用するディスクスペース
10004      は、 ほとんど 0 である。
10005
10006 ‘-B SIZE’
10007 ‘--block-size=SIZE’
10008      SIZE によって単位の大きさを変更してから、サイズを表示する (*note
10009      Block size::)。 たとえば、‘-BG’ と指定すれば、1,073,741,824 バイト
10010      を 1 単位として、サイズを表示する。
10011
10012 ‘-b’
10013 ‘--bytes’
10014      ‘--apparent-size --block-size=1’ と同じ。
10015
10016 ‘-c’
10017 ‘--total’
10018      すべての引数を処理した後で、全引数からなる総計を表示する。 このオプ
10019      ションを使用すれば、指定したファイルやディレクトリについてディスク
10020      使用量の合計を知ることができる。
10021
10022 ‘-D’
10023 ‘--dereference-args’
10024      コマンドラインで引数に指定されたシンボリックリンクの参照を行う。 コ
10025      マンドライン引数以外のシンボリックリンクには影響がない。 このオプシ
10026      ョンは、‘/usr/tmp’ のような、 シンボリックリンクであることが多いデ
10027      ィレクトリのディスク使用量を調べるときに、重宝である。
10028
10029 ‘-d DEPTH’
10030 ‘--max-depth=DEPTH’
10031      ディレクトリ階層の基点 (訳注: 要するに、コマンドラインで指定された
10032      ディレクトリ) から最大 DEPTH 段階下がったところまでにある各ディレク
10033      トリについて、 ディスク使用量の合計を表示する (‘--all’ オプションが
10034      付いているときは、ファイルについても表示する)。 基点自体は段階 0 な
10035      ので、‘du --max-depth=0’ は ‘du -s’ と同じことになる。
10036
10037 ‘--files0-from=FILE’
10038      コマンドラインで名前を指定されたファイルの処理を行わない。その代わ
10039      りに、 ファイル FILE に名前が書き込まれているファイルの処理を行う。
10040      なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL) で
10041      終端されていなければならない。このオプションは、ファイル名のリスト
10042      が長すぎて、 コマンドライン長の上限を超過してしまいそうなときに、 便
10043      利である。そうした場合、‘du’ を ‘xargs’ 経由で実行するのは、望まし
10044      くない。 なぜなら、‘xargs’ はファイルのリストをいくつかの部分に分割
10045      して ‘du’ に渡すので、‘du’ はリスト全体の ‘--total’ (‘-c’) オプショ
10046      ンを使用した結果ではなく、 部分リストごとの ‘--total’ (‘-c’) オプシ
10047      ョンを使用した結果を表示してしまうからである。 ASCII NUL で終端され
10048      たファイル名のリストを得る方法の一つは、 GNU ‘find’ に ‘-print0’ を
10049      付けて使うことである。 FILE に ‘-’ を指定すれば、 ASCII NUL で終端
10050      されたファイル名を標準入力から読み込むことができる。
10051
10052 ‘-H’
10053      ‘--dereference-args’ (‘-D’) と同じである。
10054
10055 ‘-h’
10056 ‘--human-readable’
10057      各サイズの後ろに、メビバイトなら ‘M’ といった、大きさを示す文字を付
10058      ける。 1000 ではなく、1024 の累乗が使われるので、‘M’ は 1,048,576 バ
10059      イトを表している。このオプションは、‘--block-size=human-readable’ と
10060      同じである。1000 の累乗が使いたければ、"‘--si’ オプションを使用すれ
10061      ばよい。
10062
10063 ‘--inodes’
10064      ブロックの使用状態ではなく、inode の使用状態をリストする。 このオプ
10065      ションが役に立つのは、多くのファイルを収納しているために、 ファイル
10066      システムの inode スペースを大量に消費しているディレクトリを探すとき
10067      である (‘df’ の ‘--inodes’ オプションも参照すること)。 このオプショ
10068      ンは、‘-a’, ‘-c’, ‘-h’, ‘-l’, ‘-s’, ‘-S’, ‘-t’, ‘-x’ といったオプシ
10069      ョンと組み合わせて使ってもよい。 しかし、ブロックサイズ関係の他のオ
10070      プション、たとえば、‘-b’, ‘-m’, ‘--apparent-size’ などを渡しても、
10071      無視される。
10072
10073 ‘-k’
10074      デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024 バ
10075      イトでサイズを表示する (*note Block size::)。このオプションは
10076      ‘--block-size=1K’ に等しい。
10077
10078 ‘-L’
10079 ‘--dereference’
10080      シンボリックリンクの参照を行う (リンク自体のディスク使用量ではなく
10081      、 リンクが指しているファイルやディレクトリの使用量を表示する)。
10082
10083 ‘-l’
10084 ‘--count-links’
10085      すべてのファイルを計算に入れる。 すなわち、(ハードリンクとして) 前
10086      に現れたことがあっても、計算に入れる。
10087
10088 ‘-m’
10089      デフォルトのブロックサイズを変更し、1 ブロック 1,048,576 バイトのブ
10090      ロック数でサイズを表示する (*note Block size::)。 このオプションは
10091      、‘--block-size=1M’ と同じである。
10092
10093 ‘-P’
10094 ‘--no-dereference’
10095      ‘du’ が出会った各シンボリックリンクについて、シンボリック自体の使用
10096      ディスクスペースを計算する。
10097
10098 ‘-S’
10099 ‘--separate-dirs’
10100      通常、(‘--summarize’ オプションを使用しない場合の) ‘du’ の出力にお
10101      いて、D というディレクトリ名の隣に表示されるサイズは、 D 以下にある
10102      すべてのエントリのサイズの合計に、 D 自体のサイズを加えたものである
10103      。それに対して、‘--separate-dirs’ オプションを指定すると、D という
10104      ディレクトリ名に対して報告されるサイズは、 いかなるサブディレクトリ
10105      のサイズも含まないものになる。
10106
10107 ‘--si’
10108      各サイズにの後ろに、メガバイトなら ‘M’ といった、SI 形式の略号を付
10109      ける。 1024 ではなく、1000 の累乗が使用されるので、‘M’ は 1,000,000
10110      バイトを表している。このオプションは、‘--block-size=si’ と同じこと
10111      である。1024 の累乗が使いたければ、‘-h’ や ‘--human-readable’ を使
10112      用すればよい。
10113
10114 ‘-s’
10115 ‘--summarize’
10116      各引数についてその合計ディスク使用量のみを表示する (訳注: すなわち
10117      、 引数がディレクトリの場合、そのサブディレクトリごとの情報まで表示
10118      しない)。
10119
10120 ‘-t SIZE’
10121 ‘--threshold=SIZE’
10122      指定された SIZE を目安にして、表示する対象を取捨する。SIZE は、 通
10123      常モードではディスク使用量を指し (*note Block size::)、‘--inodes’ オ
10124      プションと組み合わせた場合は inode 使用数を指す。 (訳注: ディスク使
10125      用量の目安として使う場合、SIZE の単位は、デフォルトではバイトである
10126      。 もちろん、K, M, G などの接尾辞を付けることもできる。)
10127
10128      SIZE が正の数ならば、‘du’ はサイズがそれ以上である対象のみを表示す
10129      る。
10130
10131      SIZE が負の数ならば、‘du’ はサイズがそれ以下である対象のみを表示す
10132      る。
10133
10134      GNU の ‘find’ を使えば、特定のサイズのファイルを見つけることができ
10135      る。 それに対して、‘du’ の ‘--threshold’ を使うと、 ディレクトリも
10136      指定サイズに基づいて篩い分けることができるのである。
10137
10138      ‘--threshold’ オプションは、‘--apparent-size’ オプションと組み合わ
10139      せることができるのに留意していただきたい。 その場合は、見かけのサイ
10140      ズに基づいて表示対象を絞り込むことになる。
10141
10142      ‘--threshold’ オプションは、‘--inodes’ オプションと組み合わせること
10143      もできる。 その場合は、inode 数に基づいて表示対象を絞り込むことにな
10144      る。
10145
10146      200 メガバイト以上のサイズを持つディレクトリを捜すには、
10147      ‘--threshold’ オプションを次のように使えばよいだろう。
10148
10149           du --threshold=200MB
10150
10151      見かけのサイズが 500 バイト以下のディレクトリやファイルを捜すには
10152      (‘-a’ を使っていることに注意)、‘--threshold’ を次のように使えばよい
10153      。
10154
10155           du -a -t -500 --apparent-size
10156
10157      ルートファイルシステム上にあるディレクトリで、20000 以上の inode を
10158      使用しているものを、/ 以下のディレクトリ階層で捜すには、
10159      ‘--threshold’ を次のように使えばよい。
10160
10161           du --inodes -x --threshold=20000 /
10162
10163 ‘--time’
10164      ディレクトリやそのサブディレクトリに存在するファイルについて表示す
10165      る際に、 その最終更新日時 (modification time) も表示する。
10166
10167      (訳注: 一つ留意していただきたいことがある。ディレクトリのタイムスタ
10168      ンプについては、 そのディレクトリ以下にあるファイルのうち (そのディ
10169      レクトリ直下のファイルとはかぎらない)、 最終更新日時がもっとも新し
10170      いファイルのタイムスタンプと同一のものが表示される。 すなわち、ディ
10171      レクトリのタイムスタンプは、‘ls -l’ で表示されるものとは違うことが
10172      あるわけだ。 このオプションや、そのバリエーションである次の二つのオ
10173      プションは、 あるディレクトリ以下を最後に使用したのはいつかを知るの
10174      に便利である。)
10175
10176 ‘--time=ctime’
10177 ‘--time=status’
10178 ‘--time=use’
10179      ディレクトリ以下にあるファイルについて表示する際に、最終更新日時で
10180      はなく、 最終ステータス変更日時 (inode 中の ‘ctime’) を表示する。
10181
10182      (訳注: 原文でもこの三つのオプションを等価なものとして並べているが、
10183      訳者としては、‘--time=use’ と等価なのは、‘--time=ctime’ ではなく、
10184      ‘--time=atime’ ではないかと思う。ご自分で確かめていただきたい。)
10185
10186 ‘--time=atime’
10187 ‘--time=access’
10188      ディレクトリ以下にあるファイルについて表示する際に、最終更新日時で
10189      はなく、 最終アクセス日時 (inode 中の ‘atime’) を表示する。
10190
10191 ‘--time-style=STYLE’
10192      タイムスタンプを STYLE 形式で表示する。このオプションは、‘--time’ オ
10193      プションと併せて指定したときにのみ効果がある。STYLE は以下の一つで
10194      なければならない。
10195
10196      ‘+FORMAT’
10197           FORMAT を使って、タイムスタンプを表示する。その場合、FORMAT は
10198           、‘date’ コマンドの書式引数と同じように解釈される (*note date
10199           invocation::)。 たとえば、‘--time-style="+%Y-%m-%d %H:%M:%S"’
10200           と指定すると、 ‘du’ の表示するタイムスタンプは、 ‘2002-03-30
10201           23:45:56’ のようになる。‘date’ の場合と同様、 FORMAT の解釈は
10202           、‘LC_TIME’ ロケール・カテゴリの影響を受ける。
10203
10204      ‘full-iso’
10205           タイムスタンプを省略なしで表示する。 すなわち、ISO 8601 の日付
10206           、時刻、タイムゾーンという構成要素を nanosecond (10 億分の 1 秒
10207           ) の精度で使用するわけだ。 一例を挙げると、‘2002-03-30
10208           23:45:56.477817180 -0700’ といった表示になる。この形式は、
10209           ‘+%Y-%m-%d %H:%M:%S.%N %z’ と同じである。
10210
10211      ‘long-iso’
10212           ISO 8601 の日付と時刻の構成要素を分の単位まで表示する。たとえ
10213           ば、 ‘2002-03-30 23:45’。このタイムスタンプは、‘full-iso’ タイ
10214           ム スタンプより短く、日常作業にはたいてい十分である。この形式
10215           は ‘+%Y-%m-%d %H:%M’ と同じである。
10216
10217      ‘iso’
10218           タイムスタンプに ISO 8601 書式の日付を表示する。たとえば、
10219           ‘2002-03-30’ といった具合である。この形式は、‘+%Y-%m-%d’ と同
10220           じである。
10221
10222      ‘--time-style’ オプションのデフォルト値は、 環境変数 ‘TIME_STYLE’ を
10223      使って指定することができる。 ‘TIME_STYLE’ が設定されていない場合、
10224      デフォルトの形式は ‘long-iso’ である。 ‘ls’ と共通の ‘TIME_STYLE’ を
10225      使えるようにするため、 ‘+’ で始まる ‘TIME_STYLE’ の値が、改行を含ん
10226      でいる場合は、 改行以後の文字は無視されることになる。 また、
10227      ‘TIME_STYLE’ の値が ‘posix-’ で始まる場合、‘posix-’ は無視される。
10228      さらに、‘TIME_STYLE’ の値が ‘locale’ の場合、‘TIME_STYLE’ は無視さ
10229      れる。
10230
10231 ‘-X FILE’
10232 ‘--exclude-from=FILE’
10233      ‘--exclude’ に似ているが、除外するパターンを FILE から 1 行につき 1
10234      パターン読み込む点が違う。FILE が ‘-’ なら、パターンを標準入力から
10235      読み込む。
10236
10237 ‘--exclude=PATTERN’
10238      再帰的な処理を行っているとき、PATTERN にマッチするサブディレクトリ
10239      やファイルをスキップする。 たとえば、‘du --exclude='*.o'’ と指定す
10240      ると、名前が ‘.o’ で終わるファイルを除外することになる。
10241
10242 ‘-x’
10243 ‘--one-file-system’
10244      処理される引数が存在するファイルシステムとは別のファイルシステムに
10245      あるディレクトリをスキップする。
10246
10247    BSD システムでは、HP-UX システムから NFS マウントしているファイルにつ
10248 いて、 ‘du’ は正確な値の半分のサイズを報告する。逆に、HP-UX システムでは
10249 、 BSD システムから NFS マウントしているファイルについて、‘du’ は正確な
10250 値の 2 倍のサイズを報告する。これは HP-UX にある欠陥のせいであり、 HP-UX
10251 の ‘du’ プログラムも、そのとばっちりを受けているのである。
10252
10253    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10254
10255 \1f
10256 File: coreutils-ja.info,  Node: stat invocation,  Next: sync invocation,  Prev: du invocation,  Up: Disk usage
10257
10258 14.3 ‘stat’: ファイルやファイルシステムの状態を報告する
10259 =======================================================
10260
10261 ‘stat’ は指定されたファイルに関する情報を表示する。
10262
10263    書式:
10264
10265      stat [OPTION]... [FILE]...
10266
10267    オプションなしで実行すると、‘stat’ は指定されたファイルについてすべて
10268 の情報を報告する。また、‘stat’ を使って、指定されたファイルが存在してい
10269 るファイルシステムの情報を報告させることもできる。 ファイルがリンクの場
10270 合は、リンクが指しているファイルについて情報を提供させることも可能だ。
10271
10272    シェルの組み込み機能の ‘stat’ やエイリアスのために、 ‘stat’ に何の修
10273 飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がこ
10274 こで述べているものとは違うことがあるかもしれない。 シェルによる干渉を避
10275 けるためには、‘env’ 経由で ‘stat’ を起動すればよい (すなわち、‘env stat
10276 ...’ のようにだ)。
10277
10278 ‘-L’
10279 ‘--dereference’
10280      ‘stat’ がシンボリックリンクを処理する方法を変更する。 このオプショ
10281      ンを付けると、‘stat’ は、引数中の各シンボリックリンクが参照している
10282      ファイルを操作の対象にする。 このオプションがないと、‘stat’ が対象
10283      にするのは、引数のシンボリックリンクそのものになる。
10284
10285 ‘-f’
10286 ‘--file-system’
10287      指定されたファイルそのものについての情報ではなく、 そのファイルが存
10288      在しているファイルシステムについての情報を報告する。 このオプション
10289      を指定すると、自動的に ‘-L’ オプションも指定される。
10290
10291 ‘-c’
10292 ‘--format=FORMAT’
10293      デフォルトの書式の代わりに、FORMAT を使用する。 FORMAT の末尾には自
10294      動的に改行が付けられるので、 下記のようなコマンドを 2 個以上の FILE
10295      オペランドに対して実行すると、 各オペランドあたり 1 行の出力を生じ
10296      ることになる。
10297           $ stat --format=%d:%i / /usr
10298           2050:2
10299           2057:2
10300
10301 ‘--printf=FORMAT’
10302      デフォルトの書式の代わりに、FORMAT を使用する。‘--format’ に似てい
10303      るが、バックスラッシュ・エスケープを解釈して変換する。 また、行末に
10304      自動的に改行を付けることもしない。そこで、改行がしたければ、 FORMAT
10305      中で ‘\n’ を指定する必要がある。 ‘--printf’ を使って ‘/’ と ‘/usr’
10306      のデバイス番号と inode 番号を表示するには、こんなふうにする。
10307           $ stat --printf='%d:%i\n' / /usr
10308           2050:2
10309           2057:2
10310
10311 ‘-t’
10312 ‘--terse’
10313      情報を簡潔な形式で表示する。他のプログラムで解析するときに都合がよ
10314      い。
10315
10316      下記の二つのコマンドの出力は全く同じである。また、下記の ‘--format’
10317      は、デフォルトの出力書式が (もっと詳細な形で) 表示する項目とほぼ同
10318      じものを指定している。 もっとも、SELinux セキュリティ・コンテキスト
10319      が有効になっている場合には、 このフォーマット文字列の末尾に、もう一
10320      つ ‘%C’ を付け加えることになるだろうが。
10321           $ stat --format="%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o" ...
10322           $ stat --terse ...
10323
10324      ‘--file-system’ モードのときの簡潔形式の出力を上と同じように説明的
10325      に表現すると、
10326           $ stat -f --format="%n %i %l %t %s %S %b %f %a %c %d" ...
10327           $ stat -f --terse ...
10328
10329    ‘--format’ や ‘--printf’ の FORMAT 中で、 ファイルに対して使用できる
10330 書式指定子には以下のものがある。
10331
10332    • %a - 8 進数で表現したアクセス権 (printf のフラグ ‘#’ と ‘0’ に留意)
10333    • %A - 人間にわかりやすい形式で表現したアクセス権
10334    • %b - 割り当てられているブロック数 (‘%B’ を参照)
10335    • %B - ‘%b’ の報告で使われる 1 ブロックのバイト数
10336    • %C - ファイルの SELinux セキュリティ・コンテキスト (取得できる場合)
10337    • %d - 10 進数で表現したデバイス番号
10338    • %D - 16 進数で表現したデバイス番号
10339    • %f - 16 進数で表現した Raw モード
10340    • %F - ファイルの種類
10341    • %g - 所有グループの ID 番号
10342    • %G - 所有グループ名
10343    • %h - ハードリンク数
10344    • %i - Inode 番号
10345    • %m - マウントポイント (下記の説明を参照)
10346    • %n - ファイル名
10347    • %N - 引用符で囲んだファイル名。シンボリックリンクなら、参照先も表示
10348      (下記参照)
10349    • %o - I/O 転送サイズの最適値の提案
10350    • %s - ファイル全体の大きさ。サイズはバイト数
10351    • %t - 16 進数で表現したメジャー・デバイス番号 (下記参照)
10352    • %T - 16 進数で表現したマイナー・デバイス番号 (下記参照)
10353    • %u - 所有者のユーザ ID 番号
10354    • %U - 所有者のユーザ名
10355    • %w - ファイルの作成日時 (the birth time)。不明の場合は ‘-’ を表示
10356    • %W - Unix 紀元からの秒数で表したファイルの作成日時、または ‘0’
10357    • %x - 最終アクセス日時 (atime)
10358    • %X - Unix 紀元からの秒数で表した最終アクセス日時
10359    • %y - 最終データ更新日時 (mtime)
10360    • %Y - Unix 紀元からの秒数で表した最終データ更新日時
10361    • %z - 最終ステータス変更日時 (ctime)
10362    • %Z - Unix 紀元からの秒数で表した最終ステータス変更日時
10363
10364    ‘%a’ という書式はファイルのモードを 8 進数で表示するので、 printf の
10365 ‘#’ と ‘0’ フラグを使って、出力の先頭のゼロ埋めをコントロールするとよい
10366 。 たとえば、先頭を 0 で埋めて、表示を少なくとも 3 桁にし、それより大き
10367 い数値も、 8 進数であることをはっきりさせるには、‘%#03a’ を使えばよい。
10368
10369    ‘%N’ の書式は、環境変数 ‘QUOTING_STYLE’ によって設定することができる
10370 。 その環境変数が設定されていない場合、デフォルトの値は、‘shell-escape’
10371 である。使用できるクォーティングスタイルには、以下のものがある。
10372 ‘literal’
10373      文字列に手を加えず、そのまま出力する。これは、‘-N’ や ‘--literal’ オ
10374      プションと同じである。
10375 ‘shell’
10376      文字列にシェルのメタ文字がある場合や、出力が誤解を招くものになりそ
10377      うな場合に、 シェル向けのクォートを施す。このクォート方法は、‘bash’
10378      のような POSIX 互換のシェルにはふさわしいものだが、 ‘csh’ のような
10379      非互換のシェルでは、必ずしもうまく働くとはかぎらない。
10380 ‘shell-always’
10381      普通ならクォートが不要な場合でも、文字列にシェル向けのクォートを施
10382      す。
10383 ‘shell-escape’
10384      ‘shell’ に似ているが、非表示文字のクォーティングに POSIX 提唱の
10385      ‘$''’ という書式を使用する。ほとんどのシェルに適している。 (訳注: フ
10386      ァイル名中に空白 (0x20) がある場合は、ファイル名全体をシングルクォ
10387      ートで囲む。)
10388 ‘shell-escape-always’
10389      ‘shell-escape’ に似ているが、普通ならクォートが不要な場合でも、 文
10390      字列にクォートを施す。
10391 ‘c’
10392      C 言語の文字列リテラルをクォートするときのように、文字列をクォート
10393      する。 文字列をダブル・クォートで囲むことも行う。 これは、‘-Q’ や
10394      ‘--quote-name’ オプションと同じである。
10395 ‘escape’
10396      C 言語の文字列リテラルをクォートするときのように、文字列をクォート
10397      する。 ただし、文字列をダブル・クォートで囲むことはしない。 これは
10398      、‘-b’ や ‘--escape’ と同じである。
10399 ‘clocale’
10400      C 言語の文字列リテラルをクォートするときのように、文字列をクォート
10401      する。 ただし、文字列を囲む引用符には、ロケールにふさわしいものを使
10402      う。
10403 ‘locale’
10404      C 言語の文字列リテラルをクォートするときのように、文字列をクォート
10405      する。 ただし、文字列を囲む引用符には、ロケールにふさわしいものを使
10406      い、 さらに、デフォルトの C ロケールで言うと、"like this" ではなく
10407      、 'like this' のようにクォートを行う。この方が見栄えのよいディスプ
10408      レイが多い。
10409
10410    ‘%t’ や ‘%T’ という書式指定子は、stat(2) 構造体の st_rdev メンバ に対
10411 応するものであり、従って、キャラクタ・スペシャルファイルや ブロック・ス
10412 ペシャルファイルに対してしか動作が定義されていない。 システムやファイル
10413 タイプによっては、st_rdev が他のものを表現する ために使われていることも
10414 ありえる。
10415
10416    ‘%W’, ‘%X’, ‘%Y’, ‘%Z’ では、ピリオドに続けて精度を書くことで、 小数
10417 点以下何桁まで表示するかを指定することができる。たとえば、‘%.3X’ と指定
10418 すると、最終アクセス日時がミリ秒の精度で出力される。ピリオド だけ指定し
10419 て、精度を省略すると、‘stat’ は 9 桁を使用する。従って、 ‘%.X’ は ‘%.9X’
10420 と同じことになるわけだ。なお、余分な精度を捨てる際、 タイムスタンプは負
10421 の無限大方向に切り下げられる (訳注: 平たく言うと、 タイムスタンプのよう
10422 な正の数値の場合、指定された桁数より下の部分は切り捨てられるということ。
10423 以下の例を参照)。
10424
10425      0 で埋める:
10426        $ stat -c '[%015Y]' /usr
10427        [000001288929712]
10428      スペースで位置を揃える:
10429        $ stat -c '[%15Y]' /usr
10430        [     1288929712]
10431        $ stat -c '[%-15Y]' /usr
10432        [1288929712     ]
10433      精度指定:
10434        $ stat -c '[%.3Y]' /usr
10435        [1288929712.114]
10436        $ stat -c '[%.Y]' /usr
10437        [1288929712.114951834]
10438
10439    ‘%m’ によって表示されるマウントポイントは、‘df’ によるマウントポイン
10440 トの出力とほぼ同じである。ただし、以下の点で異なっている。
10441    • stat はデフォルトでは、シムリンクの参照を行わない (そのためには、
10442      ‘-L’ を指定する必要がある)。
10443    • 引数としてデバイスノードが指定された場合、 stat はファイルシステム
10444      のリスト中にそのノードを捜し求めたりはせず、 デバイスノードそのもの
10445      を動作の対象にする (訳注: すなわち、そのデバイス上に存在するファイ
10446      ルシステムのマウントポイントではなく、 デバイスノードそのもののマウ
10447      ントポイントを表示する)。
10448    • bind マウントされているファイルについては、 stat はそのファイルが載
10449      っているデバイスの最初のマウントポイントではなく、 bind マウントで
10450      指定された別名 (訳注: 原文は alias。‘mount --bind olddir newdir’ に
10451      おける newdir のことか) の方を出力する。出力に変化がなくなるまで、
10452      再帰的に stat を呼び出せば、現在ベースになっているマウントポイント
10453      を知ることができる。
10454
10455      (訳注: 訳者には意味不明。「現在ベースになっているマウントポイント
10456      (the current base mount point)」が、上記訳注の newdir のことなら、
10457      stat を再帰的に呼び出すまでもない。‘stat -c "%m" newdir/FILE’ は、
10458      newdir を表示する。また the current base mount point が「根底にある
10459      (すなわち、デバイスを最初にマウントした) マウントポイント」のことな
10460      ら、 stat を再帰的に呼び出しても、それを突き止めることはできない。
10461      ひょっとすると、書式指定子に ‘%m’ が追加された coreutils-8.6 から
10462      coreutils-8.20 あたりまでの stat を linux-2.6 時代の古いカーネルと
10463      組み合わせて使ったときの動作を言っているのかもしれない。 その場合は
10464      、‘stat -c "%m" newdir/FILE’ は上記の olddir を出力するようだ。 従
10465      って、そうした組み合わせでは、stat を再帰的に実行することで、 最初
10466      にデバイスをマウントしたときのマウントポイントを知ることができる。)
10467
10468    ファイルシステムの情報をリストする際には (すなわち、‘--file-system’
10469 (‘-f’) 使用時には)、書式指定子の別の一群を使わなければならない。
10470
10471    • %a - スーパーユーザ以外にも利用できる未使用ブロック数
10472    • %b - ファイルシステムの総データブロック数。
10473    • %c - ファイルシステムの総 inode 数
10474    • %d - ファイルシステムの未使用 inode 数
10475    • %f - ファイルシステムの未使用ブロック数
10476    • %i - 16 進数で表現したファイルシステム ID
10477    • %l - ファイル名の最大長
10478    • %n - ファイル名
10479    • %s - ブロックサイズ (高速転送用)
10480    • %S - 基本ブロックサイズ (ブロック計算用)
10481    • %t - 16 進数で表現したファイルシステムのタイプ
10482    • %T - 人間にわかりやすい形式で表現したファイルシステムのタイプ
10483
10484    タイムスタンプは、タイムゾーンのルールに従って表示されるが、 そのルー
10485 ルを指定しているのは、環境変数 ‘TZ’ である。 ‘TZ’ が設定されていない場合
10486 は、システムのデフォルトのルールに従って表示される。 *Note Specifying
10487 the Time Zone with ‘TZ’: (libc)TZ Variable.
10488
10489    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10490
10491 \1f
10492 File: coreutils-ja.info,  Node: sync invocation,  Next: truncate invocation,  Prev: stat invocation,  Up: Disk usage
10493
10494 14.4 ‘sync’: キャッシュされた書き込みを永続的な記憶装置に同期する
10495 =================================================================
10496
10497 ‘sync’ は、メモリ中のファイルやファイルシステムを永続的な記憶装置に同期
10498 する。
10499
10500    書式:
10501
10502      sync [OPTION] [FILE]...
10503
10504    ‘sync’ は、メモリ中にバッファされているデータがあれば、それをディスク
10505 に書き出す。 そうした書き出しには、スーパーブロックの変更、inode の変更
10506 、遅延読み書きを含むことができる (が、それだけに止まらない)。 この機能は
10507 カーネルによって実装されていなければならない。‘sync’ プログラムは、シス
10508 テムコールの ‘sync’, ‘syncfs’, ‘fsync’, ‘fdatasync’ を実行する以外、何も
10509 しないのである。
10510
10511    カーネルは、(比較的遅い) ディスクの読み書きをできるだけしないで済ます
10512 ために、 メモリにデータを保持している。このことによって、動作速度が向上
10513 するが、 コンピュータがクラッシュした場合、データが失われたり、 ファイル
10514 システムが壊れたりという結果が生じかねない。‘sync’ コマンドは、 カーネル
10515 に命じて、メモリ上にあるデータを永続的な記憶装置に書き出させるのである。
10516
10517    引数を指定すると、デフォルトでは指定されたファイルのみが fsync(2) シ
10518 ステムコールを使って同期されることになる。
10519
10520    1 個以上のファイルを指定した場合は、以下のオプションを使って同期方法
10521 を変更することができる。 使用できるオプションについては、次の章も参照し
10522 ていただきたい。 *note Common options::.
10523
10524 ‘-d’
10525 ‘--data’
10526      fdatasync(2) を使用して、ファイルのデータと、ファイルシステムの整合
10527      性を維持するのに必要なメタデータのみを同期する。
10528
10529 ‘-f’
10530 ‘--file-system’
10531      指定したファイルが存在するファイルシステムに対して I/O 待ちになって
10532      いるすべてのデータを syncfs(2) システムコールを使用して、同期する。
10533      注意していただきたいが、たとえば ‘/dev/sda’ といったデバイスノード
10534      を引数として渡すときは、 このオプションを普通は指定しないはずである
10535      。 そんなことをすると、‘/dev/sda’ で参照されるファイルシステムでは
10536      なく、 デバイスノードが存在するファイルシステムの同期が行われてしま
10537      うからだ。 また、システムによっては、個々のデバイスノードやファイル
10538      を引数として渡すのと、全く引数を使用しないのとでは、 同期のあり方が
10539      違うかもしれないことにも気をつけていただきたい。 すなわち、fsync(2)
10540      に渡される引数がある場合は、書き込みバリア (write barrier) が使われ
10541      ることによって、引数を指定しなかったときに使用されるグローバルな
10542      sync(2) よりも、 より確実な保証をもたらすかもしれないのである。
10543
10544    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10545
10546 \1f
10547 File: coreutils-ja.info,  Node: truncate invocation,  Prev: sync invocation,  Up: Disk usage
10548
10549 14.5 ‘truncate’: ファイルサイズの短縮・伸長を行う
10550 =================================================
10551
10552 ‘truncate’ は、各 FILE のサイズを指定したサイズにまで短縮したり、引き伸
10553 ばしたりする。
10554
10555    書式:
10556
10557      truncate OPTION... FILE...
10558
10559    FILE が存在していないときは、作成する。
10560
10561    FILE が指定したサイズより大きい場合は、データのサイズを越える部分は失
10562 われる。 FILE が指定したサイズより小さい場合は、ファイルは引き伸ばされ、
10563 引き伸ばされた部分は、ゼロバイト (ASCII NUL) の連続に見えるようになる (引
10564 き伸ばされた部分は、穴空きファイル (sparse file) の穴になる)。
10565
10566    このプログラムでは以下のオプションが使用できる。参照: *note Common
10567 options::.
10568
10569 ‘-c’
10570 ‘--no-create’
10571      ファイルが存在しない場合は、作成しない。
10572
10573 ‘-o’
10574 ‘--io-blocks’
10575      SIZE をバイト数ではなく、FILE を構成する I/O ブロック数と見なす。
10576
10577 ‘-r RFILE’
10578 ‘--reference=RFILE’
10579      RFILE のサイズを基準に、各 FILE のサイズを揃える。
10580
10581 ‘-s SIZE’
10582 ‘--size=SIZE’
10583      各 FILE のサイズを SIZE にする。‘--io-blocks’ が指定されていない場
10584      合、SIZE はバイト数である。 SIZE は、整数であり、 以下に挙げるよう
10585      な何倍かを示す接尾辞を後ろに付けることもできる。接尾辞だけ指定して
10586      もよい (訳注: その場合は、1 が前にあるものと見なされる)。
10587           ‘KB’ =>           1000 (KiloBytes)
10588           ‘K’  =>           1024 (KibiBytes)
10589           ‘MB’ =>      1000*1000 (MegaBytes)
10590           ‘M’  =>      1024*1024 (MebiBytes)
10591           ‘GB’ => 1000*1000*1000 (GigaBytes)
10592           ‘G’  => 1024*1024*1024 (GibiBytes)
10593      ‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。
10594
10595      SIZE の前に以下の記号の一つを置くと、現在のサイズを元にして、各
10596      FILE のサイズを調節することができる。
10597           ‘+’  => SIZE だけ増やす
10598           ‘-’  => SIZE だけ減らす
10599           ‘<’  => 最大でも SIZE までにする
10600           ‘>’  => 最小でも SIZE はあるようにする
10601           ‘/’  => SIZE の倍数に切り下げる
10602           ‘%’  => SIZE の倍数に切り上げる
10603
10604    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10605
10606 \1f
10607 File: coreutils-ja.info,  Node: Printing text,  Next: Conditions,  Prev: Disk usage,  Up: Top
10608
10609 15 テキストの表示
10610 *****************
10611
10612 この章では、テキスト文字列を表示するコマンドについて説明する。
10613
10614 * Menu:
10615
10616 * echo invocation::          テキストを 1 行表示する。
10617 * printf invocation::        データを整形して表示する。
10618 * yes invocation::           中断されるまで文字列を表示する。
10619
10620 \1f
10621 File: coreutils-ja.info,  Node: echo invocation,  Next: printf invocation,  Up: Printing text
10622
10623 15.1 ‘echo’: テキストを 1 行表示する
10624 ====================================
10625
10626 ‘echo’ は、指定された STRING を標準出力に書き出す。その際、各 STRING の
10627 間に 1 個のスペースを置き、行末に改行を付け加える。
10628
10629    書式:
10630
10631      echo [OPTION]... [STRING]...
10632
10633    シェルの組み込み機能の ‘echo’ やエイリアスのために、 ‘echo’ に何の修
10634 飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がこ
10635 こで述べているものとは違うことがあるかもしれない。 シェルによる干渉を避
10636 けるためには、‘env’ 経由で ‘echo’ を起動すればよい (すなわち、‘env echo
10637 ...’ のようにだ)。
10638
10639    このプログラムでは、以下のオプションが使える。参照: *note Common
10640 options::. オプションはオペランドの前に置かなければならない。 また、通常
10641 は特別な引数として使われる ‘--’ は、特別な意味を持たず、 他のいかなる
10642 STRING とも同じように扱われる。
10643
10644 ‘-n’
10645      出力の末尾に改行を付けない。
10646
10647 ‘-e’
10648      各 "STRING の中に以下に挙げるバックスラッシュでエスケープした文字が
10649      あると、 それを解釈して変換する。
10650
10651      ‘\a’
10652           警告 (ベル)
10653      ‘\b’
10654           バックスペース
10655      ‘\c’
10656           この位置より後を出力しない
10657      ‘\e’
10658           エスケープ
10659      ‘\f’
10660           フォームフィード (form feed)
10661      ‘\n’
10662           改行 (newline)
10663      ‘\r’
10664           復帰 (carriage return)
10665      ‘\t’
10666           水平タブ
10667      ‘\v’
10668           垂直タブ
10669      ‘\\’
10670           バックスラッシュ
10671      ‘\0NNN’
10672           8 進数 NNN (0 桁から 3 桁までの 8 進数) で表される 8 ビットの
10673           値に対応する文字。NNN が 9 ビットの値だと、9 ビット目 (最上位
10674           ビット) は無視される。
10675      ‘\NNN’
10676           8 進数 NNN (1 桁から 3 桁までの 8 進数) で表される 8 ビットの
10677           値に対応する文字。NNN が 9 ビットの値だと、9 ビット目 (最上位
10678           ビット) は無視される。
10679      ‘\xHH’
10680           16 進数 HH (1 または 2 桁の 16 進数) で表される 8 ビットの値に
10681           対応する文字。
10682
10683 ‘-E’
10684      各 STRING の中にあるバックスラッシュ・エスケープの解釈をしない。 こ
10685      れがデフォルトである。‘-e’ と ‘-E’ の両方が指定されている場合は、後
10686      で指定した方が効果を持つ。
10687
10688    環境変数 ‘POSIXLY_CORRECT’ が指定されている場合に、‘echo’ の最初の引
10689 数が (単独の) ‘-n’ 以外だと、‘echo’ はそうした引数をオプションとして扱わ
10690 ずに、形がオプションに似た引数として出力する。 たとえば、‘echo -ne
10691 hello’ は、単なる ‘hello’ ではなく、‘-ne hello’ を出力する。
10692
10693    POSIX では、いかなるオプションのサポートも要求していない。また、
10694 POSIX では、STRING がバックスラッシュを含む場合や、最初の引数が ‘-n’ の
10695 場合に、‘echo’ がどう振る舞うかは、実装側で決めることになっている。 従っ
10696 て、他のシステムで使うことも考慮したプログラムで、行末の改行を省略したり
10697 、 制御文字やバックスラッシュ・エスケープを出力したりする必要があるのな
10698 らば、 ‘echo’ の代わりに ‘printf’ コマンドを使用することを考えてもよい。
10699 *Note printf invocation::.
10700
10701    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10702
10703 \1f
10704 File: coreutils-ja.info,  Node: printf invocation,  Next: yes invocation,  Prev: echo invocation,  Up: Printing text
10705
10706 15.2 ‘printf’: データを整形して表示する
10707 =======================================
10708
10709 ‘printf’ は、テキストを整形して表示する。
10710
10711    書式:
10712
10713      printf FORMAT [ARGUMENT]...
10714
10715    ‘printf’ は、文字列 FORMAT を表示する。 その際、C の ‘printf’ 関数と
10716 ほとんど同じやり方で、‘%’ 書式指定子と ‘\’ エスケープシーケンスを解釈し
10717 て、数値や文字列の引数 (上記書式の ARGUMENT) を整形する。詳細については
10718 、次の項目を参照すること。 *Note ‘printf’ format directives:
10719 (libc)Output Conversion Syntax.  C の関数との相違点については、以下の箇
10720 条書きのとおりである。
10721
10722    シェルの組み込み機能の ‘printf’ やエイリアスのために、 ‘printf’ に何
10723 の修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作
10724 がここで述べているものとは違うことがあるかもしれない。 シェルによる干渉
10725 を避けるためには、‘env’ 経由で ‘printf’ を起動すればよい (すなわち、‘env
10726 printf ...’ のようにだ)。
10727
10728    • FORMAT 引数は、指定された ARGUMENT のすべてを変換するのに必要なだけ
10729      、繰り返し使用される。 たとえば、‘printf %s a b’ というコマンドは、
10730      ‘ab’ を出力する。
10731
10732    • ARGUMENT の指定がない場合は、文脈が文字列と数値のどちらを期待してい
10733      るかによって、 空文字列、または 0 を指定したものと見なされる。 たと
10734      えば、‘printf %sx%d’ というコマンドは、‘x0’ を表示する。
10735
10736    • ‘\c’ というエスケープシーケンスが追加されている。‘\c’ より後の部分
10737      を、 ‘printf’ は出力しない。たとえば、‘printf 'A%sC\cD%sF' B E’ と
10738      いうコマンドは、‘ABC’ を表示する。
10739
10740    • 16 進数エスケープシーケンス ‘\xHH’ は、最大でも 2 桁である。 桁数に
10741      制限のない C と、その点が違う。たとえば、‘printf '\x07e'’ というコ
10742      マンドは、2 バイトを表示するが (訳注: \x07 (ベル) と e)、 C の
10743      ‘printf ("\x07e")’ という文の方は、1 バイトしか表示しない。
10744
10745    • 追加された書式指定子 ‘%b’ は、対応する引数文字列中に ‘\’ エスケープ
10746      シーケンスがある場合、それを FORMAT 文字列中にあるときと同じように
10747      解釈・変換して、引数文字列を表示する。 ただし、引数中の 8 進数エス
10748      ケープシーケンスは ‘\0OOO’ の形を取る。 OOO は 0 から 3 桁の 8 進数
10749      である。‘\OOO’ が 9 ビットの値ならば、9 ビット目 (訳注: すなわち最
10750      上位ビット) は無視される。 ‘%b’ に精度も指定すると、変換した文字列
10751      の先頭から何バイトを表示するかが、それによって決まる。
10752
10753    • 追加された書式指定子 ‘%q’ は、対応する引数文字列を、 たいていのシェ
10754      ルで入力として再利用できる形で表示する。 非表示文字は POSIX が提唱
10755      している ‘$''’ の書式でエスケープされ、 シェルのメタ文字は適切にク
10756      ォートされる。これは、‘ls --quoting=shell-escape’ の出力と同じ書式
10757      である。
10758
10759    • 数値の引数は、単独の C の定数でなければならない。前に ‘+’ や ‘-’ が
10760      付いていてもよい。たとえば、‘printf %.4d -3’ は、‘-0003’ を出力する
10761      。
10762
10763    • 数値が期待される引数の先頭文字が ‘"’ や ‘'’ である場合、 その引数の
10764      値は、引用符の直後に来る文字の数値である (訳注: すなわち、一般には
10765      、その文字の ASCII コードが出力される)。 その後にさらに文字が続く場
10766      合は、環境変数 ‘POSIXLY_CORRECT’ が設定されていれば、ただ単に無視さ
10767      れ、設定されていなければ、警告が出される。 一例を挙げておくと、
10768      ‘printf "%d" "'a"’ は、ASCII 文字セットを使用しているホストでは、
10769      ‘97’ を出力する。 ASCII における ‘a’ の数値は、10 進数表記で 97 だ
10770      からだ。
10771
10772    引数が浮動小数点数の場合は、小数部の前にはピリオドを置かなければなら
10773 ない。 ただし、表示は、現在のロケールの ‘LC_NUMERIC’ カテゴリのルールに
10774 合わせたものになる。 たとえば、小数点を表す文字がコンマのロケールでは、
10775 ‘printf %g 3.14’ というコマンドは、‘3,14’ を出力するが、‘printf %g 3,14’
10776 というコマンドはエラーになる。 *Note Floating point::.
10777
10778    ‘printf’ は、FORMAT 中の ‘\OOO’ を (OOO が 1 から 3 桁の 8 進数ならば
10779 ) 表示すべき 1 バイトを指定している 8 進数と見なす。また、‘\xHH’ を (HH
10780 が 1 から 2 桁の 16 進数ならば) 表示すべき 1 文字を指定している 16 進数
10781 だと解釈する。 ただし、注意していただきたいが、‘\OOO’ が 255 より大きな
10782 10 進数に相当するときは、‘printf’ は 9 ビット目を無視する。 従って、たと
10783 えば、‘printf '\400'’ は ‘printf '\0'’ と同じである。
10784
10785    ‘printf’ は、ISO C 99 で導入された 2 種類のキャラクタ・シンタクス (訳
10786 注: ここでは、コードポイントによる文字の指定法) を解釈することができる。
10787 一つは、Unicode (ISO/IEC 10646) の文字を 16 ビットで表すための ‘\u’ であ
10788 り、4 桁の 16 進数 HHHH で指定する。もう一つは、Unicode の文字を 32 ビッ
10789 トで表すための ‘\U’ で、こちらは 8 桁の 16 進数 HHHHHHHH で指定する。
10790 ‘printf’ は Unicode の文字を出力するに当たって、 ‘LC_CTYPE’ のロケールに
10791 従う。なお、U+0000...U+009F と U+D800...U+DFFF の範囲にある Unicode の文
10792 字は、U+0024 ($), U+0040 (@), U+0060 (‘) を除いて、このシンタクスでは指
10793 定することができない。
10794
10795    ‘\u’ や ‘\U’ を処理するには、フル装備の ‘iconv’ の能力が必要である。
10796 glibc 2.2 以降を採用しているシステムでは、そうした能力は使えるようになっ
10797 ている。 coreutils パッケージをインストールする前に、‘libiconv’ をインス
10798 トールしている場合も同様だ。どちらにも当てはまらない場合は、‘\u’ や ‘\U’
10799 は、変換されずに、そのままの形で表示される。
10800
10801    オプションとして指定できるのは、単独の ‘--help’ か ‘--version’ だけで
10802 ある。 *Note Common options::.  オプションはオペランドの前に置かなければ
10803 ならない。
10804
10805    Unicode のキャラクタ・シンタクスを使えば、 ロケールに縛られないやり方
10806 で文字列が書けて、便利である。 たとえば、次のようにすれば、
10807
10808      $ env printf '\u20AC 14.95'
10809
10810 ユーロ通貨記号を含む文字列が、ユーロ記号をサポートするすべてのロケール
10811 (ISO-8859-15, UTF-8 など) で正しく出力されることになる。同様に、
10812
10813      $ env printf '\u4e2d\u6587'
10814
10815 とすれば、漢字の文字列が、すべての中国語のロケール (GB2312, BIG5, UTF-8
10816 など) で正しく表示される。
10817
10818    上記の例では、‘printf’ コマンドを ‘env’ 経由で呼び出していることに注
10819 目していただきたい。 これは、シェルのエイリアスや組み込み関数ではなく、
10820 シェルのサーチパスを使って見つけたプログラムを、確実に実行するためである
10821
10822
10823    文字列がもっと長い場合でも、各文字に対応する 16 進数コードを一つ一つ
10824 捜す必要はない。 ASCII 文字に \u エスケープ・シーケンスを混ぜる書き方は
10825 、JAVA のソースファイルで使用されるエンコーディング (JAVA source file
10826 encoding) としても知られているが、GNU の recode コマンド 3.5c 以降を使用
10827 すれば、任意の文字列をこのエンコーディングに変換することができるのだ。 以
10828 下に示すのは、1 個の短文を、ロケールの如何に縛られずにその短文を出力する
10829 シェルスクリプトに変換する方法である。
10830
10831      $ LC_CTYPE=zh_TW.big5 /usr/local/bin/printf \
10832          '\u4e2d\u6587\n' > sample.txt
10833        #
10834        # 訳注: もちろん、漢字入力の可能な LANG=zh_TW.big5 (あるいは、
10835        #       ja_JP.eucJP や ja_JP.utf8) の環境なら、コマンドラインで
10836        #       直接 printf '中文\n' と打ち込んでもよい。その方が、
10837        #       「各文字に対応する 16 進数コードを一つ一つ捜す必要はない」
10838        #       という上記の説明に、例としてはふさわしいだろう。
10839        #       LANG=ja_JP.eucJP の場合、下のコマンドは、当然ながら、
10840        #       recode eucJP..JAVA になる。LANG=ja_JP.utf8 なら、
10841        #       recode UTF8..JAVA だ。
10842        #
10843      $ recode BIG5..JAVA < sample.txt \
10844          | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
10845          > sample.sh
10846
10847    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10848
10849 \1f
10850 File: coreutils-ja.info,  Node: yes invocation,  Prev: printf invocation,  Up: Printing text
10851
10852 15.3 ‘yes’: 中断されるまで文字列を表示する
10853 ==========================================
10854
10855 ‘yes’ は、コマンドラインで指定された引数を、空白で区切り、 末尾に改行を
10856 付けて、意図的に中断されるまで (訳注: たとえば ‘CTRL-C’ で中断されるまで
10857 ) 延々と表示する。引数が指定されていない場合は、‘y’ の後ろに改行を付けて
10858 、中断されるまで延々と表示する。
10859
10860    書き込みエラーがあると、‘yes’ はステータス ‘1’ で終了する。
10861
10862    指定できるオプションは、単独の ‘--help’ か ‘--version’ だけである。
10863 ‘-’ で始まる引数を出力するには、その引数の前に ‘--’ を置けばよい。 たと
10864 えば、‘yes -- --help’ というようにだ。*Note Common options::.
10865
10866 \1f
10867 File: coreutils-ja.info,  Node: Conditions,  Next: Redirection,  Prev: Printing text,  Up: Top
10868
10869 16 条件
10870 *******
10871
10872 この章で説明するのは、その出力よりも終了ステータスの方が主として役に立つ
10873 コマンドである。 従って、こうしたコマンドは、シェルの ‘if’ 文の条件とし
10874 て、 あるいは、パイプラインの最後のコマンドとして使用されることが多い。
10875
10876 * Menu:
10877
10878 * false invocation::         何もせず、実行失敗のステータスを返す。
10879 * true invocation::          何もせず、正常終了する。
10880 * test invocation::          ファイルタイプのチェックや値の比較を行う。
10881 * expr invocation::          式を評価する。
10882
10883 \1f
10884 File: coreutils-ja.info,  Node: false invocation,  Next: true invocation,  Up: Conditions
10885
10886 16.1 ‘false’: 何もせず、実行失敗のステータスを返す
10887 ==================================================
10888
10889 ‘false’ は、実行に失敗したこと (“failure”) を示す終了ステータス 1 を返す
10890 以外、何もしない。 従って、シェルスクリプト中の、実行に失敗するコマンド
10891 が必要な場所で、 仮のコマンドとして使用することができる。 最近のほとんど
10892 のシェルでは、‘false’ は組み込みコマンドになっているので、 スクリプト中
10893 で ‘false’ を使う際に使用しているのは、ここで説明している ‘false’ ではな
10894 く、たぶん組み込みコマンドの方である。
10895
10896    ‘false’ は、‘--help’ と ‘--version’ オプションを認識する。
10897
10898    このバージョンの ‘false’ は、C のプログラムとして実装されている。 従
10899 って、シェルスクリプトによる実装より安全かつ高速であり、 アカウントを無
10900 効化するための安全なダミー・シェルとして使用することができる。
10901
10902    注意していただきたいが、‘false’ は、‘--help’ や ‘--version’ を付けて
10903 実行した場合でも (このマニュアルで説明している他のすべてのプログラムとは
10904 違って)、 実行失敗のステータスで終了する。
10905
10906    移植を考慮したプログラムでは、‘false’ の終了ステータスを 1 だと決めて
10907 かからない方がよい。GNU 以外のホストでは、終了ステータスが 1 より大きい
10908 こともあるからだ。
10909
10910 \1f
10911 File: coreutils-ja.info,  Node: true invocation,  Next: test invocation,  Prev: false invocation,  Up: Conditions
10912
10913 16.2 ‘true’: 何もせず、正常終了する
10914 ===================================
10915
10916 ‘true’ は、実行に成功したこと (“success”) を示す終了ステータス 0 を返す
10917 以外、何もしない。 従って、シェルスクリプト中の、実行に成功するコマンド
10918 が必要な場所で、 仮のコマンドとして使用することができる。とは言え、シェ
10919 ルの組み込みコマンド ‘:’ (コロン) の方が、同じことをより高速に実行してく
10920 れるかもしれない。 最近のほとんどのシェルでは、‘true’ は組み込みコマンド
10921 になっているので、 スクリプト中で ‘true’ を使う際に使用しているのは、こ
10922 こで説明している ‘true’ ではなく、たぶん組み込みコマンドの方である。
10923
10924    ‘true’ は、‘--help’ と ‘--version’ オプションを認識する。
10925
10926    もっとも、‘true’ を 0 以外のステータスで終了させることも可能だという
10927 ことも、 心に留めておいていただきたい。‘--help’ や ‘--version’ を使用し
10928 たとき、標準出力がすでにクローズされていたり、 I/O エラーを引き起こすよ
10929 うなファイルにリダイレクトしたりすると、そういうことが起きる。 たとえば
10930 、Bourne 互換のシェルを使用して、次のようにするときだ。
10931
10932      $ ./true --version >&-
10933      ./true: write error: Bad file number
10934      $ ./true --version > /dev/full
10935      ./true: write error: No space left on device
10936
10937    このバージョンの ‘true’ は、C のプログラムとして実装されている。 従っ
10938 て、シェルスクリプトによる実装より安全かつ高速であり、 アカウントを無効
10939 化するための安全なダミー・シェルとして使用することができる。
10940
10941 \1f
10942 File: coreutils-ja.info,  Node: test invocation,  Next: expr invocation,  Prev: true invocation,  Up: Conditions
10943
10944 16.3 ‘test’: ファイルタイプのチェックや値の比較を行う
10945 =====================================================
10946
10947 ‘test’ は、条件式 EXPRESSION の評価次第で、0 (真) または 1 (偽) のステー
10948 タスを返す。式を構成する各部分は、独立した引数でなければならない。
10949
10950    ‘test’ は、ファイルのステータスを検査することができる。 また、文字列
10951 を扱う演算子や、数値を比較するための演算子も備えている。
10952
10953    ‘test’ には、‘test’ で始める書式のほかに、一対の角カッコを使用するも
10954 う一つの書式がある。 たとえば、‘test -d /’ の代わりに、‘[ -d / ]’ と書い
10955 てもよい。角カッコは、独立した引数でなければならない (訳注: すなわち、他
10956 の引数と空白で分離されていなければならない)。 だから、たとえば、‘[-d /]’
10957 では、望みの結果を得られないことになる。 ‘test EXPRESSION’ と ‘[
10958 EXPRESSION ]’ は、同じ意味なので、以下では前者の書式についてのみ解説する
10959
10960
10961    書式:
10962
10963      test EXPRESSION
10964      test
10965      [ EXPRESSION ]
10966      [ ]
10967      [ OPTION
10968
10969    シェルの組み込み機能の ‘test’ やエイリアスのために、 ‘test’ に何の修
10970 飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がこ
10971 こで述べているものとは違うことがあるかもしれない。 シェルによる干渉を避
10972 けるためには、‘env’ 経由で ‘test’ を起動すればよい (すなわち、‘env test
10973 ...’ のようにだ)。
10974
10975    EXPRESSION を省略した場合、‘test’ は、偽を返す。 EXPRESSION が引数 1
10976 個だけだった場合、‘test’ は、その引数が空 (null) ならば、偽を返し、さも
10977 なければ、真を返す。 引数には、‘-d’, ‘-1’, ‘--’, ‘--help’, ‘--version’ と
10978 いった、他のほとんどのプログラムでなら、オプションとして扱われるものも含
10979 めて、 どんな文字列でも指定することができる。そこで、ヘルプやバージョン
10980 情報を取得するには、 ‘[ --help’ や ‘[ --version’ という形でコマンドを実
10981 行する必要がある。 この場合、いつもと違って、閉じカッコは付けない。
10982 *Note Common options::.
10983
10984    終了ステータス:
10985
10986      0: 式が真の場合。
10987      1: 式が偽の場合。
10988      2: エラーが起きた場合。
10989
10990 * Menu:
10991
10992 * File type tests::          ファイルタイプのテスト (-[gkruwxOG])。
10993 * Access permission tests::  アクセス許可のテスト (-[gkruwxOG])。
10994 * File characteristic tests::  ファイル特性のテスト (-e -s -nt -ot -ef)。
10995 * String tests::             文字列のテスト (-z -n = == !=)。
10996 * Numeric tests::            数値のテスト (-eq -ne -lt -le -gt -ge)。
10997 * Connectives for test::     ‘test’ の論理結合演算子 (! -a -o)。
10998
10999 \1f
11000 File: coreutils-ja.info,  Node: File type tests,  Next: Access permission tests,  Up: test invocation
11001
11002 16.3.1 ファイルタイプのテスト
11003 -----------------------------
11004
11005 以下のオプションは、ある特定のファイルタイプか否かの検査を行う。 (Unix で
11006 は、あらゆるものがファイルだ。だが、ファイルならみんな同じだというわけで
11007 はない!)
11008
11009 ‘-b FILE’
11010      FILE が存在し、ブロック・スペシャルデバイスならば、真。
11011
11012 ‘-c FILE’
11013      FILE が存在し、キャラクタ・スペシャルデバイスならば、真。
11014
11015 ‘-d FILE’
11016      FILE が存在し、ディレクトリならば、真。
11017
11018 ‘-f FILE’
11019      FILE が存在し、通常ファイルならば、真。
11020
11021 ‘-h FILE’
11022 ‘-L FILE’
11023      FILE が存在し、シンボリックリンクならば、真。 ファイル関係の他のす
11024      べてのテストとは違って、このテストでは、FILE がシンボリックリンクの
11025      場合、リンクの参照を行わない。
11026
11027 ‘-p FILE’
11028      FILE が存在し、名前付きパイプならば、真。
11029
11030 ‘-S FILE’
11031      FILE が存在し、ソケットならば、真。
11032
11033 ‘-t FD’
11034      FD が端末と結びついているファイルディスクリプタならば、真。
11035
11036 \1f
11037 File: coreutils-ja.info,  Node: Access permission tests,  Next: File characteristic tests,  Prev: File type tests,  Up: test invocation
11038
11039 16.3.2 アクセス許可のテスト
11040 ---------------------------
11041
11042 以下のオプションは、特定のアクセス許可について検査をする。
11043
11044 ‘-g FILE’
11045      FILE が存在し、set-group-ID ビットが立っていれば、真。
11046
11047 ‘-k FILE’
11048      FILE が存在し、“sticky” ビットが立っていれば、真
11049
11050 ‘-r FILE’
11051      FILE が存在し、読み出しが許可されていれば、真。
11052
11053 ‘-u FILE’
11054      FILE が存在し、set-user-ID ビットが立っていれば、真。
11055
11056 ‘-w FILE’
11057      FILE が存在し、書き込みが許可されていれば、真。
11058
11059 ‘-x FILE’
11060      FILE が存在し、実行が許可されていれば (ディレクトリの場合は、検索が
11061      許可されていれば)、真。
11062
11063 ‘-O FILE’
11064      FILE が存在し、その所有者が test コマンド実行者の実効ユーザ ID と同
11065      じならば、真。
11066
11067 ‘-G FILE’
11068      FILE が存在し、そのグループが test コマンド実行者の実効グループ ID
11069      と同じならば、真。
11070
11071 \1f
11072 File: coreutils-ja.info,  Node: File characteristic tests,  Next: String tests,  Prev: Access permission tests,  Up: test invocation
11073
11074 16.3.3 ファイル特性のテスト
11075 ---------------------------
11076
11077 以下のオプションは、ファイルの他の特性を検査する。
11078
11079 ‘-e FILE’
11080      FILE が存在すれば、真。
11081
11082 ‘-s FILE’
11083      FILE が存在し、サイズが 0 よりも大きければ、真。
11084
11085 ‘FILE1 -nt FILE2’
11086      FILE1 が FILE2 より (更新日時 (modification date) で比較して) 新し
11087      いか、あるいは、FILE1 が存在して、FILE2 が存在しなければ、真。
11088
11089 ‘FILE1 -ot FILE2’
11090      FILE1 が FILE2 より (更新日時で比較して) 古いか、あるいは、FILE2 が
11091      存在して、FILE1 が存在しなければ、真。
11092
11093 ‘FILE1 -ef FILE2’
11094      FILE1 と FILE2 が同じデバイス番号と同じ inode 番号を持っていれば、
11095      言い換えれば、両者が互いのハードリンクならば、真。
11096
11097 \1f
11098 File: coreutils-ja.info,  Node: String tests,  Next: Numeric tests,  Prev: File characteristic tests,  Up: test invocation
11099
11100 16.3.4 文字列のテスト
11101 ---------------------
11102
11103 以下のオプションは、文字列の特性を検査する。シェルに対して引数 STRING を
11104 引用符で保護する必要があるかもしれない。たとえば、こんなふうにだ。
11105
11106      test -n "$V"
11107
11108    こうした引用符は、‘$V’ が空だったり、特殊文字を含んでいたりする場合に
11109 、 意図に反した引数が ‘test’ に渡ることを防いでいる。
11110
11111 ‘-z STRING’
11112      STRING の長さが 0 ならば、真。
11113
11114 ‘-n STRING’
11115 ‘STRING’
11116      STRING の長さが 0 でなければ、真。
11117
11118 ‘STRING1 = STRING2’
11119      両文字列が等しければ、真。
11120
11121 ‘STRING1 == STRING2’
11122      両文字列が等しければ、真 (= と同じ意味)。
11123
11124 ‘STRING1 != STRING2’
11125      両文字列が等しくなければ、真。
11126
11127 \1f
11128 File: coreutils-ja.info,  Node: Numeric tests,  Next: Connectives for test,  Prev: String tests,  Up: test invocation
11129
11130 16.3.5 数値のテスト
11131 -------------------
11132
11133 数値間の関係を調べる演算子を挙げる。引数は、数字のみで表現される整数か
11134 (負数も使用できる)、‘-l STRING’ という特別な式でなければならない。 後者
11135 は STRING の長さとして評価される。
11136
11137    (訳注: 要するに、普通は 10 進数の整数を引数として取るということ。
11138 ‘expr’ コマンドとは違って、‘test’ では ‘+2’ といった表現も可能だ。)
11139
11140 ‘ARG1 -eq ARG2’
11141 ‘ARG1 -ne ARG2’
11142 ‘ARG1 -lt ARG2’
11143 ‘ARG1 -le ARG2’
11144 ‘ARG1 -gt ARG2’
11145 ‘ARG1 -ge ARG2’
11146      こうした二項算術演算子は、それぞれ次の場合に真を返す。上から順に、
11147      ARG1 が ARG2 と比べて、等しい場合、等しくない場合、より小さい場合、
11148      より小さいか等しい場合、より大きい場合、より大きいか等しい場合。
11149
11150    例を挙げる。
11151
11152      test -1 -gt -2 && echo yes
11153      ⇒ yes
11154      test -l abc -gt 1 && echo yes
11155      ⇒ yes
11156      test 0x100 -eq 1
11157      error→ test: integer expression expected before -eq
11158
11159 \1f
11160 File: coreutils-ja.info,  Node: Connectives for test,  Prev: Numeric tests,  Up: test invocation
11161
11162 16.3.6 ‘test’ の論理結合演算子
11163 ------------------------------
11164
11165 ‘test’ 内蔵のこうした論理結合演算子より、 シェルの論理基本演算子を使用し
11166 た方がよいことに留意していただきたい。 と言うのは、式が、パラメータの展
11167 開によっては、曖昧になることがあるからである。
11168
11169    たとえば、次の式は、‘$1’ が ‘'!'’ であり、‘$2’ が空文字列 ‘''’ だと、
11170 曖昧になる (訳注: ’!’ が文字列か否定演算子か、曖昧だということだろう)。
11171
11172      test "$1" -a "$2"
11173
11174    だから、以下のように書いた方がよい。
11175
11176      test "$1" && test "$2"
11177
11178    シェルの論理基本演算子では、作業の簡略化による利益も得られる。 それは
11179 、ファイルの属性のテストを何度もやる場合には、かなりのものになるかもしれ
11180 ない。
11181
11182 ‘! EXPR’
11183      EXPR が偽ならば、真。‘!’ は EXPR のどの部分よりも優先順位が低い。
11184      ‘!’ は二項式の左に指定する必要があることに注意していただきたい。 す
11185      なわち、‘1 '!' -gt 2’ ではなく、‘'!' 1 -gt 2’ である。 なお、‘!’ は
11186      シェルの特殊文字であることが多いので、クォートした方が間違いがない
11187      。
11188
11189 ‘EXPR1 -a EXPR2’
11190      EXPR1 と EXPR2 の両方が真ならば、真。 ‘-a’ は左結合であり、‘-o’ よ
11191      りも優先順位が高い。
11192
11193 ‘EXPR1 -o EXPR2’
11194      EXPR1 と EXPR2 のどちらかが真ならば、真。 ‘-o’ は左結合である。
11195
11196 \1f
11197 File: coreutils-ja.info,  Node: expr invocation,  Prev: test invocation,  Up: Conditions
11198
11199 16.4 ‘expr’: 式を評価する
11200 =========================
11201
11202 ‘expr’ は、式を評価して、結果を標準出力に書き出す。式の各構成要素
11203 (token) は、独立した引数でなければならない。
11204
11205    オペランド (演算対象) は、整数か文字列である。整数は、1 個以上の 10 進
11206 数の数字から構成され、先頭に ‘-’ が付いていてもよい。‘expr’ は、 オペラ
11207 ンドの位置にあるものが何であれ、それを整数、または、文字列に変換する。 ど
11208 ちらになるかは、それに対して行われる演算次第である。
11209
11210    ‘expr’ そのものに対しては、文字列をクォートする必要がない。 だが、シ
11211 ェルにとって特別な意味がある、たとえば空白のような文字を保護するためには
11212 、 文字列を引用符で囲むなどの方法でクォートする必要があるかもしれない。
11213 とは言え、クォートされているかどうかに関わりなく、文字列のオペランドは、
11214 丸カッコ 1 個であってはならないし、‘+’ のような ‘expr’ の演算子の一つで
11215 あるべきでもない。すなわち、シェルに対してクォートするだけでは、 エラー
11216 を引き起こすことなく、任意の文字列 ‘$str’ を ‘expr’ に渡すことはできない
11217 のだ。この問題を回避する方法の一つは、GNU の拡張である ‘+’ 演算子 (訳注:
11218 この ‘+’ は、算術演算子の ‘+’ ではなく、直後に来る引数が文字列であること
11219 を示す文字列演算子である) を使用することだ (たとえば、‘+ "$str" = foo’ と
11220 いった具合に)。もっと移植性のある方法は、 ‘" $str"’ という先頭に空白を入
11221 れた表現を使用し、 式の残りの部分でもそれに合わせて、先頭のスペースを考
11222 慮に入れるようにすることである (たとえば、‘" $str" = " foo"’ のように)。
11223
11224    負の整数や、‘-’ で始まる文字列を ‘expr’ の 1 番目の引数として渡すべき
11225 ではない。オプションと間違われかねないからだ。 それを避けるためには、カ
11226 ッコでくくればよい (訳注: たとえば、 ‘expr \( -1 + 1 \)’)。また、移植を
11227 考慮したスクリプトでは、 文字列のオペランドに、形が整数と同じになってし
11228 まうものを使うべきではない。 こちらは、先頭にスペースを入れる上記の方法
11229 で回避できる。
11230
11231    演算子には、記号としてオペランドとオペランドの間に置くものもあれば、
11232 キーワードとしてオペランドの前に付けるものもある。 丸カッコは、おなじみ
11233 のやり方で、グループ化に使用できる。 ただし、丸カッコや、演算子の多くは
11234 、シェルによって評価されないように、 クォートしなければならない。
11235
11236    GNU MP ライブラリ対応でビルドされた場合、‘expr’ は任意精度演算を使用
11237 する。そうでない場合は、ネイティブな算術型を使用するので、 算術オーバー
11238 フローのために実行に失敗することがあるかもしれない。
11239
11240    指定できるオプションは、‘--help’ と ‘--version’ だけである。 *Note
11241 Common options::.  オプションはオペランドの前に置かなければならない。
11242
11243    終了ステータス:
11244
11245      0: 式が null でも 0 でもない場合。
11246      1: 式が null または 0 の場合。
11247      2: 式が無効な場合。
11248      3: 内部エラーが起きた場合 (例: 算術オーバーフロー)。
11249
11250 * Menu:
11251
11252 * String expressions::       文字列式 (+ : match substr index length)。
11253 * Numeric expressions::      数式 (+ - * / %)。
11254 * Relations for expr::       論理結合と関係表現 (| & < <= = == != >= >)。
11255 * Examples of expr::         用例。
11256
11257 \1f
11258 File: coreutils-ja.info,  Node: String expressions,  Next: Numeric expressions,  Up: expr invocation
11259
11260 16.4.1 文字列式
11261 ---------------
11262
11263 ‘expr’ は、パターンマッチなどの文字列演算子をサポートしている。 文字列演
11264 算子の優先順位は、算術演算子や関係演算子よりも高い (算術/関係演算子につ
11265 いては後述する)。
11266
11267 ‘STRING : REGEX’
11268      パターンマッチを行う。まず、左右の項を文字列に変換し、右項を、先頭
11269      に ‘^’ が暗黙のうちに付いている正規表現と見なす (‘grep’ 風の基本正
11270      規表現)。それから、その正規表現と左項がマッチするかどうかを調べる。
11271
11272      マッチが成功した場合、REGEX 中でカッコ (‘\(’ と ‘\)’) を使用してい
11273      れば、‘:’ 演算子は、そのカッコ内の部分表現にマッチした STRING 中の
11274      部分文字列を返す。カッコを使っていなければ、返すのはマッチした文字
11275      数である。
11276
11277      マッチに失敗した場合、‘:’ 演算子は、REGEX 中でカッコ (‘\(’ と ‘\)’)
11278      を使用していれば、空文字列を、さもなければ、0 を返す。
11279
11280      最初の ‘\( ... \)’ のペアだけが、返り値に関係する。 二番目以降のカ
11281      ッコのペアには、正規表現の演算子をグループ化する働きしかない。
11282
11283      正規表現では、‘\+’, ‘\?’, ‘\|’ は演算子であり、それぞれ、 1 個以上
11284      にマッチする、あってもなくてもよい、候補のうちのどちらか、を意味し
11285      ている。 ところが、SunOS などの ‘expr’ では、こうした記号を通常の文
11286      字として扱っている (POSIX は、どちらの動作も認めている)。正規表現の
11287      文法については次のものが詳しい。 *Note Regular Expression Library:
11288      (regex)Top. 実例をいくつか、「‘expr’ の使用例」に挙げておいた。
11289      *note Examples of expr::.
11290
11291 ‘match STRING REGEX’
11292      パターンマッチを行う別の方法。これは、‘STRING : REGEX’ と同じ であ
11293      る。
11294
11295 ‘substr STRING POSITION LENGTH’
11296      STRING の部分文字列を返す。部分文字列は、POSITION の位置から始まり
11297      、最長でも LENGTH の長さである。POSITION と LENGTH のどちらかが、負
11298      数や 0 だったり、数値以外だったりする場合は、空文字列を返す。
11299
11300 ‘index STRING CHARSET’
11301      CHARSET 中の文字が最初に見つかった STRING 中の位置を返す。 STRING 中
11302      に CHARSET 中のどの文字も見つからなかった場合は、0 を返す。
11303
11304 ‘length STRING’
11305      STRING の長さを返す。
11306
11307 ‘+ TOKEN’
11308      たとえ、TOKEN が ‘match’ のようなキーワードや、 ‘/’ のような演算子
11309      であっても、TOKEN を文字列として解釈する。 これを使用すると、‘expr
11310      length + "$x"’ や ‘expr + "$x" : '.*/\(.\)'’ を実行したとき、‘$x’ の
11311      値が (たとえば) たまたま ‘/’ や ‘index’ であっても、適切な動作をさ
11312      せることができる。 この演算子は、GNU の拡張である。移植を考慮したシ
11313      ェルスクリプトでは、 ‘+ "$token"’ ではなく、‘" $token" : ' \(.*\)'’
11314      を使うべきである。
11315
11316    ‘expr’ にキーワードを文字列として解釈させるためには、クォート演算子
11317 (訳注: 上で述べている ‘+’ 演算子) を使用しなければならない。
11318
11319 \1f
11320 File: coreutils-ja.info,  Node: Numeric expressions,  Next: Relations for expr,  Prev: String expressions,  Up: expr invocation
11321
11322 16.4.2 数式
11323 -----------
11324
11325 ‘expr’ は、以下に挙げる通常の算術演算子を、昇順の優先順位で、サポートし
11326 ている。 こうした算術演算子は、前節で述べた文字列演算子より優先順位が低
11327 く、 次節で述べる関係演算子より優先順位が高い。
11328
11329 ‘+ -’
11330      加算と減算。左右の項は両方とも整数に変換される。整数に変換できない
11331      場合は、エラーになる。
11332
11333 ‘* / %’
11334      乗算、除算、剰余演算。左右の項は両方とも整数に変換される。整数に変
11335      換できない場合は、エラーになる。
11336
11337 \1f
11338 File: coreutils-ja.info,  Node: Relations for expr,  Next: Examples of expr,  Prev: Numeric expressions,  Up: expr invocation
11339
11340 16.4.3 ‘expr’ の関係表現
11341 ------------------------
11342
11343 ‘expr’ は、通常の論理結合や関係表現をサポートしている。 そうした演算子は
11344 、前の節で述べた文字列演算子や算術演算子より優先順位が低い。 論理結合や
11345 関係表現の演算子を、優先順位の低いものから高いものへ順に並べておく。
11346
11347 ‘|’
11348      左項が null でも 0 でもなければ、左項を返す。左項が null または 0 の
11349      場合は、右項が null でも 0 でもなければ、右項を返す。両項とも null
11350      または 0 の場合は、0 を返す。左項が null でも 0 でもない場合、 右項
11351      の評価は行われない。
11352
11353 ‘&’
11354      両項とも null でも 0 でもなければ、左項を返し、それ以外の場合は、0
11355      を返す。左項が null または 0 の場合、右項の評価は行われない。
11356
11357 ‘< <= = == != >= >’
11358      両項を比較し、関係が真ならば、1 を返し、偽の場合は、0 を返す。 ‘==’
11359      は ‘=’ と同じ意味である。‘expr’ は、まず両項を整数に変換し、 数値と
11360      しての比較を試みる。左右どちらかの項の変換に失敗した場合は、
11361      ‘LC_COLLATE’ のロケールで指定されている、文字の照合順を使用して、 辞
11362      書的な比較を行う。
11363
11364 \1f
11365 File: coreutils-ja.info,  Node: Examples of expr,  Prev: Relations for expr,  Up: expr invocation
11366
11367 16.4.4 ‘expr’ の使用例
11368 ----------------------
11369
11370 シェルのメタ文字をクオートする例も含めて、用例をいくつか挙げておく。
11371
11372    Bourne 互換シェルで、シェル変数 ‘foo’ に 1 を加える。
11373
11374      foo=$(expr $foo + 1)
11375
11376    変数 ‘$fname’ に格納されているファイル名から、ディレクトリではない部
11377 分を取り出して、表示する。 ‘$fname’ に ‘/’ が含まれていなくてもよい。
11378
11379      expr $fname : '.*/\(.*\)' '|' $fname
11380
11381    次の例で ‘\+’ は演算子である (訳注: 細かいことを言うと、‘grep’ 流の基
11382 本正規表現の演算子。ちなみに、最後の例の ‘+’ は、‘expr’ の文字列演算子で
11383 ある)。
11384
11385      expr aaa : 'a\+'
11386      ⇒ 3
11387
11388      expr abc : 'a\(.\)c'
11389      ⇒ b
11390      expr index abcdef cz
11391      ⇒ 3
11392      expr index index a
11393      error→ expr: syntax error
11394      expr index + index a
11395      ⇒ 0
11396
11397 \1f
11398 File: coreutils-ja.info,  Node: Redirection,  Next: File name manipulation,  Prev: Conditions,  Up: Top
11399
11400 17 リダイレクション
11401 *******************
11402
11403 Unix のシェルは、いくつかの形式のリダイレクション (“redirection”) — コマ
11404 ンドの入力元や出力先を変更する手段 — をたいてい用意している。 しかし、あ
11405 る一つの便利なリダイレクションは、シェルではなく、独立したコマンドによっ
11406 て行われる。 この章では、そのコマンドについて説明する。
11407
11408 * Menu:
11409
11410 * tee invocation::           出力を複数のファイルやプロセスにリダイレクトする。
11411
11412 \1f
11413 File: coreutils-ja.info,  Node: tee invocation,  Up: Redirection
11414
11415 17.1 ‘tee’: 出力を複数のファイルやプロセスにリダイレクトする
11416 ============================================================
11417
11418 ‘tee’ コマンドは、標準入力を標準出力にコピーするとともに、 引数として指
11419 定されたファイル (複数可) にもコピーする。 これは、あるデータをパイプに
11420 送るだけでなく、同時にそのコピーを保存したい場合に、便利である。
11421
11422    書式:
11423
11424      tee [OPTION]... [FILE]...
11425
11426    書き出し先のファイルがまだ存在していなければ、作成する。 書き出し先の
11427 ファイルがすでに存在している場合は、‘-a’ オプションを使用しないかぎり、
11428 ファイルに前からあったデータは上書きされる。
11429
11430    GNU coreutils の従来のバージョンでは (v5.3.0 - v8.23)、 FILE として
11431 ‘-’ を指定すると、‘tee’ は入力のコピーをもう一つ標準出力に書き出していた
11432 。 しかし、二重になった出力は、あまり役に立つものではなかったので、 現在
11433 では POSIX の規格に従い、そこではっきりと規定されているように、 ‘-’ をそ
11434 ういう名前のファイルとして取り扱うようになっている。
11435
11436    このプログラムでは以下のオプションが使用できる。参照: *note Common
11437 options::.
11438
11439 ‘-a’
11440 ‘--append’
11441      指定されたファイルの末尾に標準入力を追加する。すなわち、ファイルを
11442      上書きしない。
11443
11444 ‘-i’
11445 ‘--ignore-interrupts’
11446      割り込みシグナルを無視する。
11447
11448 ‘-p’
11449 ‘--output-error[=MODE]’
11450      出力にエラーがあったときの動作を調整する。 長い形式のオプションを使
11451      えば、下記の MODE から動作を選択することができる。
11452
11453      ‘warn’
11454           パイプを含めて、出力のオープンや書き出しでエラーが起きると、警
11455           告メッセージを出す。 エラー発生後もまだオープンされているファ
11456           イルやパイプがあれば、それに対する書き込みは続行される。 出力
11457           のいづれかにエラーがあれば、終了ステータスは失敗を示す。
11458
11459      ‘warn-nopipe’
11460           これが、MODE が指定されないときや、短い形式の ‘-p’ が使用され
11461           たときのデフォルトの MODE である。 パイプ以外について、出力の
11462           オープンや書き出しでエラーが起きると、警告メッセージを出す。 エ
11463           ラー発生後もまだオープンされているファイルやパイプがあれば、そ
11464           れに対する書き込みは続行される。 パイプ以外の出力にエラーがあ
11465           れば、終了ステータスは失敗を示す。
11466
11467      ‘exit’
11468           パイプを含めて、出力のオープンや書き出しでエラーが起きると、終
11469           了する。
11470
11471      ‘exit-nopipe’
11472           パイプ以外について、出力のオープンや書き出しでエラーが起きると
11473           、終了する。
11474
11475    大量のデータの転送を行いながら、同時にそのデータのサマライズも行いた
11476 い、 改めてデータを読み直すようなことはしたくない。‘tee’ は、そういうと
11477 きに便利である。 たとえば、DVD イメージをダウンロードしているとき、 その
11478 場ですぐ、署名やチェックサムを確認したくなることがよくある。 単に次のよ
11479 うにするのは、効率が悪い。
11480
11481      wget http://example.com/some.iso && sha1sum some.iso
11482
11483    上記コマンドの問題点の一つは、ただでさえ時間のかかる SHA1 の計算に取
11484 りかかる前に、 ダウンロードが完了するのを待たなければならないことだ。 た
11485 ぶん、さらに問題なのは、上記のやり方では、 DVD イメージを改めて読み直さ
11486 なければならないことだろう (一度目の読み込みは、ネットワークから)。
11487
11488    こうした作業を行う効率的な方法は、ダウンロードと SHA1 の計算を同時に
11489 、 交互に実行することである。そうすれば、プロセス全体が平行してスムーズ
11490 に進むので、 無駄な時間を使わずに、チェックサムが手に入る。
11491
11492      # ちょっと凝った方法。プロセス置換の実例をご覧に入れるため。
11493      wget -O - http://example.com/dvd.iso \
11494        | tee >(sha1sum > dvd.sha1) > dvd.iso
11495
11496    こうすれば、‘tee’ は、出力を目当てのファイルに書き出すだけでなく、パ
11497 イプにも書き出す。 そして、後者では、‘sha1sum’ を実行し、最終的なチェッ
11498 クサムを ‘dvd.sha1’ という名前のファイルに保存することになる。
11499
11500    しかし、気をつけていただきたい。上記の例は、プロセス置換 (“process
11501 substitution”) と呼ばれる最近のシェルの機能を当てにしている (上記の
11502 ‘>(command)’ という構文のことである。*Note Process Substitution:
11503 (bash)Process Substitution.)。 そのため、‘zsh’, ‘bash’, ‘ksh’ ではうまく
11504 動作するが、‘/bin/sh’ では動作しない。 従って、こうしたコードをシェルス
11505 クリプトで使用するときは、スクリプトの先頭に ‘#!/bin/bash’ などと書くこ
11506 とを忘れてはいけない。
11507
11508    次のことにも気をつけていただきたい。プロセス置換のいづれかが (あるい
11509 は、パイプに渡された標準出力が)、 データをすべて処理し尽くす前に終了して
11510 しまうことがあるかもしれない。 そうした場合に、‘tee’ が入力の処理を続行
11511 して、 それを残っている出力先に渡すことができるようにするには、 ‘-p’ オ
11512 プションが必要になる。
11513
11514    上記の例は、書き出しを 1 個のファイルと 1 個のプロセスに行っているだ
11515 けだ。 その程度なら、もっと普通の、もっと移植性のある使い方をした方がず
11516 っとよい。
11517
11518      wget -O - http://example.com/dvd.iso \
11519        | tee dvd.iso | sha1sum > dvd.sha1
11520
11521    ‘tee’ が二つのプロセスに書き込むように、この例を拡張して、MD5 と SHA1
11522 のチェックサムを平行して計算させることもできる。 その場合は、プロセス置
11523 換が必要になる。
11524
11525      wget -O - http://example.com/dvd.iso \
11526        | tee >(sha1sum > dvd.sha1) \
11527              >(md5sum > dvd.md5) \
11528        > dvd.iso
11529
11530    このテクニックは、パイプから入ってくるデータの圧縮したコピーを作りた
11531 いときにも、役に立つ。 ‘du -ak’ の出力するディスク使用量のデータを要約し
11532 て、 グラフィカルに表示するツールを考えていただきたい。 ディレクトリ階層
11533 が膨大だと、‘du -ak’ は実行に長い時間がかかるだろうし、 いともたやすくテ
11534 ラバイトのデータを作成してくれるだろう。 そこで、‘du’ コマンドをむやみに
11535 再実行することはやりたくない。 また、圧縮されていない出力を保存しておき
11536 たくもない。
11537
11538    これを効率の悪い方法でやると、‘du’ の出力全部の圧縮を済ませるまで、
11539 GUI ツールを起動することすらできない。
11540
11541      du -ak | gzip -9 > /tmp/du.gz
11542      gzip -dc /tmp/du.gz | xdiskusage -a
11543
11544    ‘tee’ とプロセス置換を使えば、GUI ツールを直ちに起動できるし、 圧縮フ
11545 ァイルの展開も全くやらないですむ。
11546
11547      du -ak | tee >(gzip -9 > /tmp/du.gz) | xdiskusage -a
11548
11549    最後にもう一つ。常に 2 種類以上の圧縮した tar アーカイブ (tarball) を
11550 一度に作ることにしている場合は、より効率のよいやり方ができるかもしれない
11551 。 たとえば、‘make dist’ が ‘gzip’ と ‘bzip2’ の両方で圧縮した tar アー
11552 カイブを作成するような場合だ。‘automake’ が生成する ‘Makefile’ のルール
11553 は、たいてい、こんなふうにコマンドを連続して実行することで、 圧縮した
11554 tar アーカイブを二つ作成している (少し単純化してある)。
11555
11556      tardir=your-pkg-M.N
11557      tar chof - "$tardir" | gzip  -9 -c > your-pkg-M.N.tar.gz
11558      tar chof - "$tardir" | bzip2 -9 -c > your-pkg-M.N.tar.bz2
11559
11560    しかしながら、アーカイブの作成・圧縮の対象になっているディレクトリ階
11561 層が、 数メガバイトより大きい場合は — 使用しているシステムがマルチプロセ
11562 ッサを搭載し、 メモリがふんだんにある場合はなおさらそうだが — ディレクト
11563 リの中身を 1 回だけ読み込み、 圧縮プログラムを平行して走らせることで、ず
11564 っと効率のよい仕事ができる。
11565
11566      tardir=your-pkg-M.N
11567      tar chof - "$tardir" \
11568        | tee >(gzip -9 -c > your-pkg-M.N.tar.gz) \
11569        | bzip2 -9 -c > your-pkg-M.N.tar.bz2
11570
11571    プロセス置換が表示する出力をさらに処理したいとしよう。 もし、そうした
11572 プロセスがアトミックな書き出しをしているならば (すなわち、一度の書き出し
11573 が、システムの PIPE_BUF サイズよりも小さければ)、 そういうことも次のよう
11574 な構文で可能である。
11575
11576      tardir=your-pkg-M.N
11577      tar chof - "$tardir" \
11578        | tee >(md5sum --tag) > >(sha256sum --tag) \
11579        | sort | gpg --clearsign > your-pkg-M.N.tar.sig
11580
11581    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11582
11583 \1f
11584 File: coreutils-ja.info,  Node: File name manipulation,  Next: Working context,  Prev: Redirection,  Up: Top
11585
11586 18 ファイル名操作
11587 *****************
11588
11589 この章では、ファイル名操作に使うコマンドについて説明する。
11590
11591 * Menu:
11592
11593 * basename invocation::      ファイル名からディレクトリと接尾辞を取り除く。
11594 * dirname invocation::       ファイル名から最後の要素を取り除く。
11595 * pathchk invocation::       ファイル名の有効性や可搬性を検査する。
11596 * mktemp invocation::        テンポラリファイルやディレクトリを作成する。
11597 * realpath invocation::      ファイル名を展開して表示する。
11598
11599 \1f
11600 File: coreutils-ja.info,  Node: basename invocation,  Next: dirname invocation,  Up: File name manipulation
11601
11602 18.1 ‘basename’: ファイル名からディレクトリと接尾辞を取り除く
11603 =============================================================
11604
11605 ‘basename’ は、NAME の先頭にディレクトリ部分があれば、それを取り除く。
11606
11607    書式:
11608
11609      basename NAME [SUFFIX]
11610      basename OPTION... NAME...
11611
11612    SUFFIX が指定されていて、それが NAME の末尾と同一ならば、 SUFFIX の部
11613 分も NAME から取り除かれる。 気をつけていただきたいが、ファイル名の末尾
11614 のスラッシュは、接尾辞のマッチングに先立って除去されるので、 SUFFIX にス
11615 ラッシュが含まれていると、指定に効果がないことになる。 ‘basename’ は、結
11616 果を標準出力に表示する。
11617
11618    ‘basename’ と ‘dirname’ は合わせて設計されており、もし ‘ls "$name"’ が
11619 成功するならば、‘cd "$(dirname "$name")"; ls "$(basename "$name")"’ とい
11620 うコマンドの連続も成功するようになっている。 これは、ファイル名の末尾に
11621 改行が付いている場合を除いて、あらゆる場合にうまく行く。
11622
11623    POSIX によれば、NAME が空の場合や ‘//’ の場合に、結果がどうなるかは、
11624 実装側で決めてよいことになっている。前者の場合、GNU の ‘basename’ は、空
11625 文字列を返す。 後者の場合、// と / とが別のものであるプラットフォームで
11626 は、結果は ‘//’ になり、全く区別しないプラットフォームでは、結果は ‘/’ に
11627 なる。
11628
11629    このプログラムでは以下のオプションが使用できる。参照: *note Common
11630 options::. オプションはオペランドの前に置かなければならない。
11631
11632 ‘-a’
11633 ‘--multiple’
11634      複数の引数を受け付ける。すべての引数は NAME として処理される。 この
11635      オプションを使用する場合、SUFFIX を指定するならば、‘-s’ オプション
11636      を使わなければならない。
11637
11638 ‘-s SUFFIX’
11639 ‘--suffix=SUFFIX’
11640      末尾にある SUFFIX を除去する。このオプションを指定すると ‘-a’ オプ
11641      ションも指定したことになる。
11642
11643 ‘-z’
11644 ‘--zero’
11645      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
11646      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
11647      他のプログラムがその出力を解析できるようになる。
11648
11649    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11650
11651    用例:
11652
11653      # "sort" を出力する。
11654      basename /usr/bin/sort
11655
11656      # "stdio" を出力する。
11657      basename include/stdio.h .h
11658
11659      # "stdio" を出力する。
11660      basename -s .h include/stdio.h
11661
11662      # "stdio", "stdlib" の順に出力する。
11663      basename -a -s .h include/stdio.h include/stdlib.h
11664
11665 \1f
11666 File: coreutils-ja.info,  Node: dirname invocation,  Next: pathchk invocation,  Prev: basename invocation,  Up: File name manipulation
11667
11668 18.2 ‘dirname’: ファイル名から最後の要素を取り除く
11669 ==================================================
11670
11671 ‘dirname’ は、各 NAME からスラッシュで区切られた最後の要素を取り除いて、
11672 残りのすべてを表示する。その際、最後の要素の左右どちらにあるスラッシュも
11673 除去される。 NAME を構成する文字列にスラッシュが一つも含まれない場合、
11674 ‘dirname’ は (カレントディレクトリを意味する) ‘.’ を表示する。
11675
11676    書式:
11677
11678      dirname [OPTION] NAME...
11679
11680    NAME は実在するファイル名でなくても構わないが、実在するファイル名なら
11681 ば、 この操作によって、最後の要素それ自体がディレクトリである場合も含め
11682 て、 最後の要素が存在するディレクトリが、利用できる形で表示される。
11683
11684    ‘basename’ と ‘dirname’ は合わせて設計されており、もし ‘ls "$name"’ が
11685 成功するならば、‘cd "$(dirname "$name")"; ls "$(basename "$name")"’ とい
11686 うコマンドの連続も成功するようになっている。 これは、ファイル名の末尾に
11687 改行が付いている場合を除いて、あらゆる場合にうまく行く。
11688
11689    POSIX によれば、NAME が ‘//’ の場合に、結果がどうなるかは、 実装側で
11690 決めてよいことになっている。 GNU の ‘dirname’ について言うと、// と / と
11691 が別のものであるプラットフォームでは、結果は ‘//’ になり、 全く区別しな
11692 いプラットフォームでは、結果は ‘/’ になる。
11693
11694    このプログラムでは、以下のオプションが使える。参照: *note Common
11695 options::.
11696
11697 ‘-z’
11698 ‘--zero’
11699      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
11700      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
11701      他のプログラムがその出力を解析できるようになる。
11702
11703    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11704
11705    用例:
11706
11707      # "/usr/bin" を出力する。
11708      dirname /usr/bin/sort
11709      dirname /usr/bin//.//
11710
11711      # "dir1", "dir2" の順に出力する。
11712      dirname dir1/str dir2/str
11713
11714      # "." を出力する。
11715      dirname stdio.h
11716
11717 \1f
11718 File: coreutils-ja.info,  Node: pathchk invocation,  Next: mktemp invocation,  Prev: dirname invocation,  Up: File name manipulation
11719
11720 18.3 ‘pathchk’: ファイル名の有効性や可搬性を検査する
11721 ====================================================
11722
11723 ‘pathchk’ は、ファイル名が有効かどうか、可搬性があるかどうかを検査する。
11724
11725    書式:
11726
11727      pathchk [OPTION]... NAME...
11728
11729    ‘pathchk’ は各 NAME に対して、以下の条件のどれかが真ならば、 エラーメ
11730 ッセージを出す。
11731
11732   1. NAME 中の実在するディレクトリの一つが、検索 (実行) 許可を持っていな
11733      い。
11734   2. NAME の長さが、オペレーティング・システムによってサポートされている
11735      最大長を越えている。
11736   3. NAME の構成要素の一つの長さが、 それが存在することになるファイルシ
11737      ステムによってサポートされている最大長を越えている。
11738
11739    実在しないファイル名を指定しても、エラーにはならない。 その名前のファ
11740 イルが、上記の条件内で作成可能であればよい。
11741
11742    このプログラムでは以下のオプションが使用できる。参照: *note Common
11743 options::. オプションはオペランドの前に置かなければならない。
11744
11745 ‘-p’
11746      実際に使用しているファイルシステムに基づいて検査を行うのではなく、
11747      以下の条件を調べて、そのどれかが真ならば、エラーメッセージを出す。
11748
11749        1. ファイル名が空である。
11750
11751        2. ファイル名に、どのシステムでもファイル名に使用できる文字として
11752           POSIX が規定している文字セット以外の文字が含まれている。 すな
11753           わち、ASCII 英数字、‘.’、‘_’、‘-’、‘/’ 以外の文字が使用されて
11754           いる。
11755
11756        3. ファイル名の長さや、その構成要素の一つの長さが、 POSIX の規格
11757           で可搬性のために最小限サポートしなければならないとされている長
11758           さを越えている。
11759
11760 ‘-P’
11761      ファイル名が空だったり、‘-’ で始まる構成要素を含んでいたりすると、
11762      エラーメッセージを出す。
11763
11764 ‘--portability’
11765      ファイル名が POSIX に準拠しているすべてのホストで使えるものでなけれ
11766      ば、エラーメッセージを出す。 このオプションは、‘-p -P’ と同じことで
11767      ある。
11768
11769    終了ステータス:
11770
11771      0: 指定されたすべてのファイル名が検査のすべてにパスした場合。
11772      1: それ以外。
11773
11774 \1f
11775 File: coreutils-ja.info,  Node: mktemp invocation,  Next: realpath invocation,  Prev: pathchk invocation,  Up: File name manipulation
11776
11777 18.4 ‘mktemp’: テンポラリファイルやディレクトリを作成する
11778 =========================================================
11779
11780 ‘mktemp’ は、テンポラリファイルやテンポラリディレクトリの作成を行う。
11781
11782    書式:
11783
11784      mktemp [OPTION]... [TEMPLATE]
11785
11786    ‘mktemp’ は、TEMPLATE を基にして、 安全なテンポラリファイルやディレク
11787 トリを作成し、その名前を表示する。 TEMPLATE を指定する場合、その最後の構
11788 成部分に少なくとも 3 個の連続する ‘X’ が含まれていなければならない。
11789 TEMPLATE を省略した場合は、‘tmp.XXXXXXXXXX’ というテンプレートが使用され
11790 、 ‘--tmpdir’ オプションが暗黙のうちに指定されることになる。 TEMPLATE 中
11791 の ‘X’ が連続する最後の部分は、英数字で置き換えられる。 従って、大文字小
11792 文字を区別するファイルシステムなら、テンプレートに連続する N 個の ‘X’ が
11793 含まれていると、作成されるファイル名には、 62 の N 乗とおりの可能性があ
11794 ることになる。
11795
11796    昔のスクリプトでは、テンポラリファイルを作成する際、そのプログラム名
11797 にプロセス ID (‘$$’) を拡張子として付けで済ますのが習慣だった。 しかし、
11798 この命名法は、名前の推測が容易であり、従って、競合状態を起こしやすいとい
11799 う弱点がある。 攻撃者としては、テンポラリファイルに使われそうな名前でシ
11800 ンボリックリンクを作っておけばよい。 そうすれば、スクリプトが未使用のフ
11801 ァイルだと考えて、テンポラリファイルのファイルハンドルを開いたとき、 実
11802 際にはすでに存在しているファイルの更新をしているということになる。 同じ
11803 命名法を使ってディレクトリを作成するのは、もう少し安全である。 作成しよ
11804 うとするディレクトリがすでに存在していると、‘mkdir’ は実行に失敗するから
11805 だ。とは言え、こちらもサービス不能化攻撃 (denial of service attacks) を
11806 可能にしてしまうわけで、やはり良策とは言えない。 それ故、新しいスクリプ
11807 トでは ‘mktemp’ コマンドを使用するべきである。 そうすれば、生成されるフ
11808 ァイル名が確実に予測不可能になるので、 実行中のスクリプトがテンポラリフ
11809 ァイルの名前を知っているというまさにその事実が、 ファイルを作成したのは
11810 そのスクリプトであり、他のユーザによってそのファイルが変更されることはあ
11811 りえないと、間違いなく示すことになる。
11812
11813    ファイルを作成する場合、作成されるファイルには現在のユーザに対する読
11814 み込みと書き出しの許可が付くが、 グループやその他のユーザに対しては、い
11815 かなる許可も付かない。 現在の umask がより厳格な場合、付けられる許可はさ
11816 らに厳しくなる。
11817
11818    用例をいくつか挙げてみる (ただし、注意していただきたいが、 お手元でこ
11819 の通り実行しても、おそらくファイル名は違ったものになるはずだ)。
11820
11821    • カレントディレクトリにテンポラリファイルを作成する。
11822           $ mktemp file.XXXX
11823           file.H47c
11824
11825    • 一般的な拡張子を付けて、テンポラリファイルを作成する。
11826           $ mktemp --suffix=.txt file-XXXX
11827           file-H08W.txt
11828           $ mktemp file-XXXX-XXXX.txt
11829           file-XXXX-eI9L.txt
11830
11831    • ユーザが環境変数 ‘TMPDIR’ で指定しているディレクトリを基点として、
11832      その下に安全な FIFO を作成する。‘TMPDIR’ が設定されていない場合は、
11833      ‘/tmp’ ではなく、カレントディレクトリを基点として使用する。 肝腎な
11834      点は、‘mktemp’ は FIFO を作成しないが、FIFO を置くことができる安全
11835      なディレクトリなら作成できるということである。 ディレクトリや FIFO
11836      を作成することができなかったときは、シェルを終了する。
11837           $ dir=$(mktemp -p "${TMPDIR:-.}" -d dir-XXXX) || exit 1
11838           $ fifo=$dir/fifo
11839           $ mkfifo "$fifo" || { rmdir "$dir"; exit 1; }
11840
11841    • 可能ならば、テンポラリファイルを作成して使用するが、作成に失敗して
11842      も、 エラーメッセージを出さない。ファイルは、環境変数 ‘TMPDIR’ が設
11843      定されていれば、そこで指名されているディレクトリに作られるが、 設定
11844      されていなければ、‘/tmp’ に作られる。
11845           $ file=$(mktemp -q) && {
11846           >   # $file をこのブロックの内側でのみ使用することにすれば、
11847           >   # 安全である。$file を引用符で囲んでいるのは、$TMPDIR が、
11848           >   # 従って、$file が、ホワイトスペースを含んでいるかも
11849           >   # しれないからだ。
11850           >   echo ... > "$file"
11851           >   rm "$file"
11852           > }
11853
11854    • 擬似ランダム文字発生装置として動作する (カレントディレクトリの内容
11855      によって影響を受けるので、完全にランダムではない)。 セキュリティホ
11856      ールを避けたいならば、生成された名前を使って、ファイルを作ってはい
11857      けない。
11858           $ mktemp -u XXX
11859           Gb9
11860           $ mktemp -u XXX
11861           nzC
11862
11863    このプログラムでは以下のオプションが使用できる。参照: *note Common
11864 options::.
11865
11866 ‘-d’
11867 ‘--directory’
11868      ファイルではなく、ディレクトリを作成する。 作成されるディレクトリに
11869      は現在のユーザに対して、読み、書き、検索の許可が付くが、 グループや
11870      その他のユーザに対しては、いかなる許可も付かない。 現在の umask が
11871      より厳格な場合、付けられる許可はさらに厳しくなる。
11872
11873 ‘-q’
11874 ‘--quiet’
11875      ファイルやディレクトリの作成に失敗しても、エラーメッセージを出さな
11876      い。 終了ステータスは、ファイルが作成されたかどうかをやはり反映する
11877      。
11878
11879 ‘-u’
11880 ‘--dry-run’
11881      既存のファイルの名前と重ならないテンポラリファイル用の名前を生成す
11882      るが、 ファイルシステムの内容を変更することはない (訳注: 要するに、
11883      テンポラリファイル名を生成表示するだけで、実際にファイルを作成する
11884      ことはないということ)。 このコマンドの出力を使って、新しいファイル
11885      を作るのは、本質的に安全ではない。 名前の生成とその使用との間には、
11886      時間差があり、 その間に他のプロセスが同じ名前でオブジェクトを作成す
11887      ることもありえるからである。
11888
11889 ‘-p DIR’
11890 ‘--tmpdir[=DIR]’
11891      TEMPLATE をディレクトリ DIR を基点とする相対パスとして扱う。 DIR が
11892      指定されていない場合や (ロングオプションの ‘--tmpdir’ でのみ可能)、
11893      空文字列の場合は、環境変数 ‘TMPDIR’ が設定されていれば、 その値を使
11894      用し、設定されていなければ、‘/tmp’ を使用する。 このオプションを指
11895      定する場合、 TEMPLATE は絶対パスであってはならない。 とは言え、
11896      TEMPLATE にスラッシュが含まれていても構わないが、 その場合、途中に
11897      あるディレクトリはすでに存在していなければならない。
11898
11899 ‘--suffix=SUFFIX’
11900      TEMPLATE の末尾に SUFFIX を追加する。SUFFIX はスラッシュを含んでい
11901      てはならない。‘--suffix’ を指定する場合、 TEMPLATE は ‘X’ で終わっ
11902      ていなければならない。 ‘--suffix’ が指定されていない場合は、
11903      TEMPLATE 中の最後の ‘X’ の位置を調べることで、SUFFIX としてふさわし
11904      いものを推測する。 このオプションが存在するのは、デフォルトの
11905      TEMPLATE を使用しているとき、 ‘X’ で始まる SUFFIX を付けられるよう
11906      にするためである。
11907
11908 ‘-t’
11909      TEMPLATE を、環境変数 ‘TMPDIR’ が設定されていれば、 その値であるデ
11910      ィレクトリ直下の 1 個のファイルとして扱う。 ‘TMPDIR’ が設定されてい
11911      なければ、‘-p’ で指定されるディレクトリ直下、 それ以外の場合は、
11912      ‘/tmp’ 直下になる。なお、TEMPLATE にスラッシュが含まれていてはなら
11913      ない。このオプションは非推奨である。 ‘-t’ なしで ‘-p’ を使う方が
11914      (‘TMPDIR’ よりコマンドラインの指定を優先するという点で) デフォルト
11915      の動作として優れているし、 (途中のディレクトリも指定できるという点
11916      で) 柔軟性も上だからである。
11917
11918    終了ステータス:
11919
11920      0: ファイルが作成された場合。
11921      1: それ以外。
11922
11923 \1f
11924 File: coreutils-ja.info,  Node: realpath invocation,  Prev: mktemp invocation,  Up: File name manipulation
11925
11926 18.5 ‘realpath’: ファイル名を展開して表示する
11927 =============================================
11928
11929 ‘realpath’ は、すべてのシンボリックリンクを展開し、 ‘/./’ や ‘/../’ に対
11930 する参照を解決する。 さらに、余分な ‘/’ 文字の削除も行う。デフォルトでは
11931 、 指定したファイル名のうち、最後の要素以外のすべての要素が実在していな
11932 ければならない。
11933
11934    書式:
11935
11936      realpath [OPTION]... FILE...
11937
11938    このプログラムでは以下のオプションが使用できる。参照: *note Common
11939 options::.
11940
11941 ‘-e’
11942 ‘--canonicalize-existing’
11943      指定されたファイル名中のすべての構成要素が実在することを確認する。
11944      存在しなかったり、利用できなかったりする要素があると、‘-q’ オプショ
11945      ンが指定されていないかぎり、‘realpath’ はエラーメッセージを出し、0
11946      以外の終了コードで終了する。 ファイル名の末尾にスラッシュを付けると
11947      、その名前はディレクトリであるという指定になる。
11948
11949 ‘-m’
11950 ‘--canonicalize-missing’
11951      指定されたファイル名中に存在しなかったり、使用できなかったりする構
11952      成要素があれば、 それをディレクトリとして処理する。
11953
11954 ‘-L’
11955 ‘--logical’
11956      指定されたファイル名中にあるシンボリックリンクの展開を行うが、 シン
11957      ボリックリンクに ‘..’ という要素が後続している場合は、 シンボリック
11958      リンクを展開するより前に、そちらを先に処理する。 (訳注: 例を挙げた
11959      方が、わかりやすいだろう。‘symlink-directory/../..’ といったファイ
11960      ル名が与えられた場合、symlink-directory というシンボリックリンクそ
11961      のものの親ディレクトリの親ディレクトリに展開するということ。 次項の
11962      注と比較していただきたい。)
11963
11964 ‘-P’
11965 ‘--physical’
11966      指定されたファイル名中にあるシンボリックリンの展開を行う際、 シンボ
11967      リックリンクに ‘..’ という要素が後続している場合も、 シンボリックリ
11968      ンクを展開してから、‘..’ の処理を行う。 こちらがデフォルトの動作モ
11969      ードである。(訳注: すなわち、 ‘symlink-directory/../..’ といったフ
11970      ァイル名が与えられた場合、 シンボリックリンクの参照先の親ディレクト
11971      リの親ディレクトリに展開する。)
11972
11973 ‘-q’
11974 ‘--quiet’
11975      指定されたファイル名についてエラーメッセージを出力しない。
11976
11977 ‘--relative-to=FILE’
11978      オプション引数に指定したファイルを基点とする相対パスとして、 ファイ
11979      ル名を展開する。このオプションは、ファイルの存在に関して ‘-m’ や
11980      ‘-e’ オプションを認識することに注意していただきたい。
11981
11982 ‘--relative-base=BASE’
11983      このオプションは ‘--relative-to’ と一緒に使うこともでき、 その場合
11984      は、操作対象の FILE が BASE 以下のディレクトリに存在するときにのみ
11985      、 相対パス名を表示するように、‘--relative-to’ の出力に制限を課す。
11986      FILE が BASE 以下のディレクトリに存在しないときは、 出力は絶対パス
11987      のファイル名になる。‘--relative-to’ を指定しなかった場合、 BASE 以
11988      下のディレクトリに存在するファイルは、BASE を基点とする相対パスで表
11989      示される。‘--relative-to’ も指定するなら、 そのディレクトリは BASE
11990      の下位ディレクトリでなければならず、 さもないと、このオプションは効
11991      果を持たない。このオプションは、ファイルの存在に関して ‘-m’ や ‘-e’
11992      オプションを認識することに注意していただきたい。 例を挙げよう。
11993
11994           realpath --relative-to=/usr /tmp /usr/bin
11995           ⇒ ../tmp
11996           ⇒ bin
11997           realpath --relative-base=/usr /tmp /usr/bin
11998           ⇒ /tmp
11999           ⇒ bin
12000
12001 ‘-s’
12002 ‘--strip’
12003 ‘--no-symlinks’
12004      シンボリックリンクの展開を行わない。すなわち、‘/./’ や ‘/../’ の参
12005      照の解決と、余分な ‘/’ 文字の削除だけを行う。 ‘-m’ オプションと組み
12006      合わせた場合、‘realpath’ は与えられたファイル名に対して操作を行うだ
12007      けであり、 その各要素が存在しているかどうか、実在のファイルに当たっ
12008      てみることはない。
12009
12010 ‘-z’
12011 ‘--zero’
12012      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
12013      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
12014      他のプログラムがその出力を解析できるようになる。
12015
12016    終了ステータス:
12017
12018      0: すべてのファイル名が問題なく表示できた場合。
12019      1: それ以外。
12020
12021 \1f
12022 File: coreutils-ja.info,  Node: Working context,  Next: User information,  Prev: File name manipulation,  Up: Top
12023
12024 19 作業環境
12025 ***********
12026
12027 この章では、現在作業中の環境を表示したり、変更したりするコマンドを説明す
12028 る。 ここで環境というのは、カレントディレクトリ、端末の設定などである。
12029 次章で取り上げるユーザ関係のコマンドも参照していただきたい。
12030
12031 * Menu:
12032
12033 * pwd invocation::           現在作業中のディレクトリを表示する。
12034 * stty invocation::          端末の諸特性を表示・変更する。
12035 * printenv invocation::      環境変数を表示する。
12036 * tty invocation::           標準入力に接続している端末のファイル名を表示する。
12037
12038 \1f
12039 File: coreutils-ja.info,  Node: pwd invocation,  Next: stty invocation,  Up: Working context
12040
12041 19.1 ‘pwd’: 現在作業中のディレクトリを表示する
12042 ==============================================
12043
12044 ‘pwd’ は、カレントディレクトリの名前を表示する。
12045
12046    書式:
12047
12048      pwd [OPTION]...
12049
12050    このプログラムでは以下のオプションが使用できる。参照: *note Common
12051 options::.
12052
12053 ‘-L’
12054 ‘--logical’
12055      環境変数 ‘PWD’ の値が、‘.’ や ‘..’ を含まないカレントディレクトリの
12056      絶対パス名であっても、 シンボリックリンクは含んでいるかもしれない。
12057      その場合は、その値をそのまま出力する。それ以外の場合は、デフォルト
12058      の ‘-P’ オプションと同じ処理を行う。
12059
12060 ‘-P’
12061 ‘--physical’
12062      カレントディレクトリについて、参照を完全に解決した名前を表示する。
12063      すなわち、表示される名前のすべての要素が、本物のディレクトリの名前
12064      になり、 シンボリックリンクは一つも含まれない。
12065
12066    ‘-L’ と ‘-P’ のオプションが両方とも指定されている場合は、 最後に指定
12067 された方が優先される。どちらのオプションも指定されない場合は、 環境変数
12068 ‘POSIXLY_CORRECT’ が設定されていないかぎり、この実装では、 ‘-P’ がデフォ
12069 ルトとして使用される。
12070
12071    シェルの組み込み機能の ‘pwd’ やエイリアスのために、 ‘pwd’ に何の修飾
12072 も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がここ
12073 で述べているものとは違うことがあるかもしれない。 シェルによる干渉を避け
12074 るためには、‘env’ 経由で ‘pwd’ を起動すればよい (すなわち、‘env pwd ...’
12075 のようにだ)。
12076
12077    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12078
12079 \1f
12080 File: coreutils-ja.info,  Node: stty invocation,  Next: printenv invocation,  Prev: pwd invocation,  Up: Working context
12081
12082 19.2 ‘stty’: 端末の諸特性を表示・変更する
12083 =========================================
12084
12085 ‘stty’ は、たとえばボーレート (baud rate) のような、端末の諸特性を表示、
12086 または変更する。
12087
12088    書式:
12089
12090      stty [OPTION] [SETTING]...
12091      stty [OPTION]
12092
12093    tty ラインの設定 (訳注: 上記書式の SETTING) を一つも指定しない場合、
12094 ‘stty’ は、ボーレートと (それをサポートしているシステムでは) ライン制御
12095 規則番号 (line discipline number)、それに、ライン設定のうち ‘stty sane’
12096 によって設定される値から変更のあるものを表示する。 デフォルトでは、モー
12097 ドの取得や設定は、標準入力に結びついている tty ラインに対して行うが、 こ
12098 れは ‘--file’ オプションによって変更することができる。
12099
12100    ‘stty’ では、以下で述べるように、オプションではないたくさんの引数が使
12101 える。 そうした引数は、端末ライン運用の様々な面を変更する。
12102
12103    このプログラムでは以下のオプションが使用できる。参照: *note Common
12104 options::.
12105
12106 ‘-a’
12107 ‘--all’
12108      現在のすべての設定を人間に読みやすい形で表示する。 このオプションを
12109      指定したときには、ラインの設定はできない。
12110
12111 ‘-F DEVICE’
12112 ‘--file=DEVICE’
12113      標準入力に結びついている tty ラインを操作の対象にする代わりに、
12114      DEVICE で指定されたファイル名を使ってオープンするラインを操作の対象
12115      にする。 このオプションが必要なのは、POSIX 準拠の tty をオープンす
12116      るには、 ‘O_NONDELAY’ フラグを使う必要があるからだ。 そうしないと、
12117      POSIX 準拠の tty は、‘clocal’ フラグがセットされていない場合に、 キ
12118      ャリア検出線 (carrier detect line) が活発化するまで、ブロッキングを
12119      起こす。 そんなわけで、デバイスのオープンは、いつも通りのやり方で
12120      (訳注: たとえば、‘stty < /dev/ttyS1’ といった形で) シェルにやらせて
12121      おけばよい、というわけには必ずしも行かないのである。
12122
12123 ‘-g’
12124 ‘--save’
12125      現在の設定を別の ‘stty’ コマンドを使って再現する際に、 その引数とし
12126      て使えるような形で、現在のすべての設定を表示する。 このオプションを
12127      指定したときには、ラインの設定はできない。
12128
12129    設定の多くは、前に ‘-’ を付けることで OFF にすることができる。 以下で
12130 は、そうした引数については、説明中に「無効化できる」と記しておいた。 説
12131 明そのものは、有効にする場合について、すなわち、‘-’ で OFF にしない場合
12132 について述べている (「無効にした場合」とはっきりことわっている場合は、も
12133 ちろん別である)。
12134
12135    設定の中には、すべての POSIX 準拠システムで利用できるとはかぎらないも
12136 のもある。 そうしたものは、拡張機能を使用しているからだ。 以下では、そう
12137 した引数については、説明中に「非 POSIX」と記しておいた。 非 POSIX のシス
12138 テムであっても、そうした設定が使えないことがあるかもしれないが、 あらゆ
12139 る場合について書いておくことは、不可能である。とりあえず、試してみていた
12140 だきたい。
12141
12142    ‘stty’ がインストールされるのは、POSIX ターミナルインターフェースを備
12143 えたシステムだけである。 従って、移植を考慮したスクリプトでは、非 POSIX
12144 システムに ‘stty’ コマンドが存在することを当てにしない方がよい。
12145
12146    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12147
12148 * Menu:
12149
12150 * Control::                  制御関係の設定
12151 * Input::                    入力に関する設定
12152 * Output::                   出力に関する設定
12153 * Local::                    ローカル設定
12154 * Combination::              組み合わせ設定
12155 * Characters::               特殊文字
12156 * Special::                  特殊設定
12157
12158 \1f
12159 File: coreutils-ja.info,  Node: Control,  Next: Input,  Up: stty invocation
12160
12161 19.2.1 制御関係の設定
12162 ---------------------
12163
12164 制御関係の設定:
12165
12166 ‘parenb’
12167      出力にパリティビットを生成し、入力にもパリティビットがあるものと期
12168      待する。 無効化できる。
12169
12170 ‘parodd’
12171      パリティを奇数に設定する。無効化できる (この設定の場合、‘-’ の前置
12172      は偶数パリティを意味する)。
12173
12174 ‘cmspar’
12175      "stick" (mark/space) パリティを使用する。 parodd が設定されている場
12176      合、このパリティビットは常に 1 である。 parodd が設定されていない場
12177      合、このパリティビットは常に 0 だ。 非 POSIX。無効化できる。
12178
12179 ‘cs5’
12180 ‘cs6’
12181 ‘cs7’
12182 ‘cs8’
12183      キャラクタ・サイズを 5, 6, 7, 8 ビットにする。
12184
12185 ‘hup’
12186 ‘hupcl’
12187      最後のプロセスが tty をクローズするとき、ハングアップ・シグナルを送
12188      る。 無効化できる。
12189
12190 ‘cstopb’
12191      1 キャラクタにつき 2 個のストップビットを使用する。無効化できる (こ
12192      の設定の場合、‘-’ の前置は 1 個のストップビット使用を意味する)。
12193
12194 ‘cread’
12195      入力の受信を許可する。無効化できる。
12196
12197 ‘clocal’
12198      モデムのコントロール・シグナルを無効にする。無効化できる。
12199
12200 ‘crtscts’
12201      RTS/CTS フロー制御を有効にする。非 POSIX。無効化できる。
12202
12203 ‘cdtrdsr’
12204      DTR/DSR フロー制御を有効にする。非 POSIX。無効化できる。
12205
12206 \1f
12207 File: coreutils-ja.info,  Node: Input,  Next: Output,  Prev: Control,  Up: stty invocation
12208
12209 19.2.2 入力に関する設定
12210 -----------------------
12211
12212 以下の設定は、端末から受け取るデータに対する操作を制御する。
12213
12214 ‘ignbrk’
12215      ブレーク (break) 文字を無視する。無効化できる。
12216
12217 ‘brkint’
12218      ブレークが割り込みシグナルを発生するようにする。無効化できる。
12219
12220 ‘ignpar’
12221      パリティエラーのある文字を無視する。無効化できる。
12222
12223 ‘parmrk’
12224      パリティエラーをマークする (その印として 255, 0 (0xFF, 0x00) という
12225      2 文字の連続を使う)。無効化できる。
12226
12227 ‘inpck’
12228      入力のパリティチェックを有効にする。無効化できる。
12229
12230 ‘istrip’
12231      入力文字の高位ビット (8 番目のビット) をクリアする。無効化できる。
12232
12233 ‘inlcr’
12234      改行文字 (newline) を復帰文字 (carriage return) に変換する。無効化
12235      できる。
12236
12237 ‘igncr’
12238      復帰文字を無視する。無効化できる。
12239
12240 ‘icrnl’
12241      復帰文字を改行文字に変換する。無効化できる。
12242
12243 ‘iutf8’
12244      入力文字が UTF-8 で符号化されていると見なす。無効化できる。
12245
12246 ‘ixon’
12247      XON/XOFF フロー制御を有効にする (すなわち、‘Ctrl-S’/‘Ctrl-Q’ を有効
12248      にする)。無効化できる。
12249
12250 ‘ixoff’
12251 ‘tandem’
12252      システムの入力バッファが一杯になりかけたら、‘stop’ 文字を送り、 バ
12253      ッファがほぼ空に戻ったら、‘start’ 文字を送るようにする。 無効化でき
12254      る。
12255
12256 ‘iuclc’
12257      大文字を小文字に変換する。非 POSIX。無効化できる。 ilcuc は実装され
12258      ていないことに注意していただきたい。 そんなものを有効にしたら、ほと
12259      んどの (小文字である) Unix のコマンドが、 打ち込めなくなってしまう
12260      からだ。
12261
12262 ‘ixany’
12263      どんな文字でも出力を再開できるようにする (これを無効にすると、start
12264      文字のみが出力を再開する)。非 POSIX。無効化できる。
12265
12266 ‘imaxbel’
12267      入力バッファが一杯のとき、文字を受け取ると、入力バッファをフラッシ
12268      ュせずに、 ビープ音を鳴らすようにする。非 POSIX。無効化できる。
12269
12270 \1f
12271 File: coreutils-ja.info,  Node: Output,  Next: Local,  Prev: Input,  Up: stty invocation
12272
12273 19.2.3 出力に関する設定
12274 -----------------------
12275
12276 以下の設定は、端末に送るデータに対する操作を制御する。
12277
12278 ‘opost’
12279      出力に対して後処理 (postprocess) を行う (訳注: すなわち、以下に列挙
12280      するようなことをする)。無効化できる。
12281
12282 ‘olcuc’
12283      小文字を大文字に変換する。非 POSIX。無効化できる。 (ouclc は現在の
12284      ところ、実装されていないことに注意。)
12285
12286 ‘ocrnl’
12287      復帰文字 (carriage return) を改行文字 (newline) に変換する。 非
12288      POSIX。無効化できる。
12289
12290 ‘onlcr’
12291      改行文字を復帰文字 + 改行文字に変換する。非 POSIX。無効化できる。
12292
12293 ‘onocr’
12294      行頭に復帰文字を出力しない。非 POSIX。無効化できる。
12295
12296 ‘onlret’
12297      改行が復帰として動作する。非 POSIX。無効化できる。
12298
12299 ‘ofill’
12300      時間で間合いを計る代りに、充填文字 (埋め草文字) を何字か送ることで
12301      、遅延を行う。 非 POSIX。無効化できる。(訳注: 遅延というのは、端末
12302      側の処理が済むまで、データの送出を遅らせること)。
12303
12304 ‘ofdel’
12305      充填文字として ASCII NUL 文字ではなく、ASCII DEL 文字を使う。 非
12306      POSIX。無効化できる。
12307
12308 ‘nl1’
12309 ‘nl0’
12310      改行 (newline) 用の遅延方式。非 POSIX。
12311
12312 ‘cr3’
12313 ‘cr2’
12314 ‘cr1’
12315 ‘cr0’
12316      復帰 (carriage return) 用の遅延方式。非 POSIX。
12317
12318 ‘tab3’
12319 ‘tab2’
12320 ‘tab1’
12321 ‘tab0’
12322      水平タブ用の遅延方式。非 POSIX。
12323
12324 ‘bs1’
12325 ‘bs0’
12326      バックスペース用の遅延方式。非 POSIX。
12327
12328 ‘vt1’
12329 ‘vt0’
12330      垂直タブ用の遅延方式。非 POSIX。
12331
12332 ‘ff1’
12333 ‘ff0’
12334      改ページ (form feed) 用の遅延方式。非 POSIX。
12335
12336 \1f
12337 File: coreutils-ja.info,  Node: Local,  Next: Combination,  Prev: Output,  Up: stty invocation
12338
12339 19.2.4 ローカル設定
12340 -------------------
12341
12342 ‘isig’
12343      特殊文字 ‘interrupt’, ‘quit’, ‘suspend’ を有効にする。無効化できる
12344      。
12345
12346 ‘icanon’
12347      特殊文字 ‘erase’, ‘kill’, ‘werase’, ‘rprnt’ を有効にする。無効化で
12348      きる。
12349
12350 ‘iexten’
12351      POSIX にない特殊文字を有効にする。無効化できる。
12352
12353 ‘echo’
12354      入力した文字をエコーする。無効化できる。
12355
12356 ‘echoe’
12357 ‘crterase’
12358      ‘erase’ 文字を「バックスペース、スペース、バックスペース」としてエ
12359      コーする。無効化できる。
12360
12361 ‘echok’
12362      ‘kill’ 文字に続けて、改行文字をエコーする。無効化できる。
12363
12364 ‘echonl’
12365      他の文字のエコーを行わないない場合でも、改行文字はエコーする。 無効
12366      化できる。
12367
12368 ‘noflsh’
12369      特殊文字 ‘interrupt’ や ‘quit’ の後で、フラッシュを行わない。無効化
12370      できる。
12371
12372 ‘xcase’
12373      ‘icanon’ が設定されているとき、小文字を表す文字の頭に ‘\’ を付ける
12374      ことで、大文字の入出力を可能にする。非 POSIX。無効化できる。 (訳注:
12375      たとえば、大文字しか使えない端末で、ただの ‘A’ なら小文字の a を意
12376      味し、‘\A’ なら大文字の A を意味するようにすること。 次節「組み合わ
12377      せ設定」の lcase と termios(3) の XCASE の説明を参照。)
12378
12379 ‘tostop’
12380      端末に書き込もうとしているバックグラウンドジョブを止める。 非
12381      POSIX。無効化できる。
12382
12383 ‘echoprt’
12384 ‘prterase’
12385      削除した文字を ‘\’ と ‘/’ で囲んで、逆順にエコーする。非 POSIX。 無
12386      効化できる。(訳注: プリンタ端末で使用する設定らしい。)
12387
12388 ‘echoctl’
12389 ‘ctlecho’
12390      制御文字をそのまま表示するのではなく、ハット記法 (‘^C’) でエコーす
12391      る。 非 POSIX。無効化できる。
12392
12393 ‘echoke’
12394 ‘crtkill’
12395      行上の各文字を削除することで、特殊文字 ‘kill’ のエコーを行う際、
12396      ‘echoctl’ や ‘echok’ の設定ではなく、‘echoprt’ や ‘echoe’ の設定が
12397      指示するところに従う。非 POSIX。無効化できる。
12398
12399 ‘extproc’
12400      ‘LINEMODE’ を有効にする。‘LINEMODE’ を使用すれば、各文字のエコーを
12401      遅延の大きいリンクを通して行わないで済む。 Internet RFC 1116
12402      (ftp://ftp.rfc-editor.org/in-notes/rfc1116.txt) も参照していただき
12403      たい。非 POSIX。無効化できる。
12404
12405 ‘flusho’
12406      出力を破棄する。この設定は、現在のところ GNU/Linux システムでは無視
12407      されることに注意。 非 POSIX。無効にできる。
12408
12409 \1f
12410 File: coreutils-ja.info,  Node: Combination,  Next: Characters,  Prev: Local,  Up: stty invocation
12411
12412 19.2.5 組み合わせ設定
12413 ---------------------
12414
12415 組み合わせ設定:
12416
12417 ‘evenp’
12418 ‘parity’
12419      ‘parenb -parodd cs7’ に相当する。無効化できる。無効化した場合、
12420      ‘-parenb cs8’ と同じになる。
12421
12422 ‘oddp’
12423      ‘parenb parodd cs7’ に相当する。無効化できる。無効化した場合、
12424      ‘-parenb cs8’ と同じになる。
12425
12426 ‘nl’
12427      ‘-icrnl -onlcr’ に相当する。無効化できる。無効化した場合、‘icrnl
12428      -inlcr -igncr onlcr -ocrnl -onlret’ と同じになる。
12429
12430 ‘ek’
12431      特殊文字 ‘erase’ と ‘kill’ をデフォルトの値に戻す。
12432
12433 ‘sane’
12434      以下の設定に相当する。
12435
12436           cread -ignbrk brkint -inlcr -igncr icrnl
12437           icanon iexten echo echoe echok -echonl -noflsh
12438           -ixoff -iutf8 -iuclc -ixany imaxbel -xcase -olcuc -ocrnl
12439           opost -ofill onlcr -onocr -onlret nl0 cr0 tab0 bs0 vt0 ff0
12440           isig -tostop -ofdel -echoprt echoctl echoke -extproc
12441
12442      さらに、すべての特殊文字をそのデフォルトの値に設定する。
12443
12444 ‘cooked’
12445      ‘brkint ignpar istrip icrnl ixon opost isig icanon’ に相当する。 さ
12446      らに、特殊文字 ‘eof’ と ‘eol’ が ‘min’ 及び ‘time’ と同じ文字になっ
12447      ていれば、‘eof’ と ‘eol’ をデフォルトの値に設定する。 無効化できる
12448      。無効化した場合は、‘raw’ と同じになる。
12449
12450 ‘raw’
12451      以下の設定に相当する。
12452
12453           -ignbrk -brkint -ignpar -parmrk -inpck -istrip
12454           -inlcr -igncr -icrnl -ixon -ixoff -icanon -opost
12455           -isig -iuclc -ixany -imaxbel -xcase min 1 time 0
12456
12457      無効化できる。無効化した場合は、‘cooked’ と同じになる。
12458
12459 ‘cbreak’
12460      ‘-icanon’ と同じである。無効化できる。 無効化した場合は、‘icanon’ と
12461      同じになる。
12462
12463 ‘pass8’
12464      ‘-parenb -istrip cs8’ に相当する。無効化できる。無効化した場合は、
12465      ‘parenb istrip cs7’ と同じになる。
12466
12467 ‘litout’
12468      ‘-parenb -istrip -opost cs8’ に相当する。無効化できる。 無効化した
12469      場合は、‘parenb istrip opost cs7’ と同じになる。
12470
12471 ‘decctlq’
12472      ‘-ixany’ と同じである。非 POSIX。無効化できる。
12473
12474 ‘tabs’
12475      ‘tab0’ と同じである。非 POSIX。無効化できる。無効化した場合は、
12476      ‘tab3’ と同じになる。
12477
12478 ‘lcase’
12479 ‘LCASE’
12480      ‘xcase iuclc olcuc’ に相当する。非 POSIX。無効化できる。 (この設定
12481      は、大文字しか扱えない端末で使用する。)
12482
12483 ‘crt’
12484      ‘echoe echoctl echoke’ に相当する。
12485
12486 ‘dec’
12487      ‘echoe echoctl echoke -ixany intr ^C erase ^? kill ^U’ に相当する。
12488
12489 \1f
12490 File: coreutils-ja.info,  Node: Characters,  Next: Special,  Prev: Combination,  Up: stty invocation
12491
12492 19.2.6 特殊文字
12493 ---------------
12494
12495 特殊文字のデフォルトの値は、システムによって様々である。 特殊文字を設定
12496 するには、‘name value’ という書式を用いる。 この name に何が指定できるか
12497 は、以下に列挙するが、value には、文字そのもの、 ハット記法 (‘^C’)、整数
12498 のいづれかを指定することができる。 整数は、‘0x’ で始まっていれば 16 進数
12499 、‘0’ で始まっていれば 8 進数、それ以外の数字なら 10 進数と見なされる。
12500
12501    GNU の stty では、値に ‘^-’ や ‘undef’ を指定すると、 その特殊文字を
12502 無効にする。(これは、Ultrix の ‘stty’ と互換性がない。そこでは、特殊文字
12503 を無効にするには ‘u’ という値が使用されるのだ。GNU の ‘stty’ は、‘u’ と
12504 いう値を特別扱いしない。すなわち、その特殊文字として <U> を設定するだけ
12505 である。)
12506
12507 ‘intr’
12508      割り込み (interrupt) シグナルを送る。
12509
12510 ‘quit’
12511      中止 (quit) シグナルを送る。
12512
12513 ‘erase’
12514      直前にタイプした文字を削除する。
12515
12516 ‘kill’
12517      現在行を削除する。
12518
12519 ‘eof’
12520      ファイル終端 (end of file) 文字を送る (入力を終了する)。
12521
12522 ‘eol’
12523      行を終端する。
12524
12525 ‘eol2’
12526      行を終端する別の文字。非 POSIX。
12527
12528 ‘discard’
12529      出力を廃棄するか否かをトグルで切り替える文字。非 POSIX。
12530
12531 ‘swtch’
12532      シェルの別の層 (a different shell layer) に切り換える。非 POSIX。
12533
12534 ‘status’
12535      info シグナルを送る。現在のところ Linux ではサポートされていない。
12536      非 POSIX。
12537
12538 ‘start’
12539      停止している出力を再開する。
12540
12541 ‘stop’
12542      出力を停止する。
12543
12544 ‘susp’
12545      端末からの停止シグナル (terminal stop signal, SIGTSTP) を送る。
12546
12547 ‘dsusp’
12548      入力をフラッシュしてから、端末からの停止シグナルを送る。非 POSIX。
12549
12550 ‘rprnt’
12551      現在行を表示し直す。非 POSIX。
12552
12553 ‘werase’
12554      直前にタイプした単語 (word) を削除する。非 POSIX。
12555
12556 ‘lnext’
12557      次にタイプする文字が特殊文字であっても、タイプしたとおりの文字とし
12558      て入力する。 非 POSIX。(訳注: たとえば、lnext が ^V の場合、^V^D と
12559      続けてタイプすると、^D を入力終了の印としてではなく、^D という文字
12560      そのものとして入力できるということ。)
12561
12562 \1f
12563 File: coreutils-ja.info,  Node: Special,  Prev: Characters,  Up: stty invocation
12564
12565 19.2.7 特殊設定
12566 ---------------
12567
12568 ‘min N’
12569      ‘-icanon’ が設定されている際、time の値として指定されている時間が経
12570      過するまでの間に、 1 回分の読み込みの条件を満たす最少限の文字数を設
12571      定する。
12572
12573 ‘time N’
12574      ‘-icanon’ が設定されている際、最小限の文字数が読み込まれなかった場
12575      合に、 読み込みが時間切れになるまでの時間を 10 分の 1 秒単位で設定
12576      する。
12577
12578 ‘ispeed N’
12579      入力速度を N に設定する。
12580
12581 ‘ospeed N’
12582      出力速度を N に設定する。
12583
12584 ‘rows N’
12585      端末の行数は N 行だと、tty カーネルドライバに伝える。非 POSIX。
12586
12587 ‘cols N’
12588 ‘columns N’
12589      端末の横幅は N 桁だと、カーネルに伝える。非 POSIX。
12590
12591 ‘drain’
12592      保留になっている出力が送出されるのを待ち、その後で設定を適用する。
12593      GNU の ‘stty’ では、デフォルトで有効になっている。 システムが、シリ
12594      アルな伝送ができない状態になっているかもしれない場合には、 このオプ
12595      ションを無効にするとよい。 たとえば、‘ixon’ (ソフトウェアによるフロ
12596      ー制御) が有効になっている場合に、システムが ‘DC3’ 文字を受け取って
12597      いたりすると (訳注: ‘DC3’ は device control 3、すなわち ASCII 0x13、
12598      ‘^S’)、 ‘-drain’ の指定なしでは、‘stty’ はブロッキングを起こすだろ
12599      う。 無効化できる。非 POSIX。
12600
12601 ‘size’
12602      端末の行数と桁数を表示する。これは、端末が持っていると、カーネルが
12603      考えている行数と桁数である。 (カーネルで行数や桁数をサポートしてい
12604      ないシステムでは、通常その代わりに、環境変数 ‘LINES’ や ‘COLUMNS’ が
12605      使用される。 それに対して、GNU の ‘stty’ は、そうした環境変数につい
12606      て何も知らない。) 非 POSIX。
12607
12608 ‘line N’
12609      ライン制御規則 (line discipline) N を使用する。非 POSIX。
12610
12611 ‘speed’
12612      端末速度を表示する。
12613
12614 ‘N’
12615      入出力の速度を N に設定する。N には次の一つが使える。0 50 75 110
12616      134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200 38400
12617      ‘exta’ ‘extb’。‘exta’ は 19200 と同じであり、‘extb’ は 38400 と同じ
12618      である。GNU/Linux を含む多くのシステムが、もっと早い速度をサポート
12619      している。 ‘stty’ は、システムがサポートしているならという条件で、
12620      次の速度もサポートしている。 57600 115200 230400 460800 500000
12621      576000 921600 1000000 1152000 1500000 2000000 2500000 3000000
12622      3500000 4000000。 なお、0 は、‘-clocal’ が設定されている場合に、ラ
12623      インを切断する。
12624
12625 \1f
12626 File: coreutils-ja.info,  Node: printenv invocation,  Next: tty invocation,  Prev: stty invocation,  Up: Working context
12627
12628 19.3 ‘printenv’: 環境変数のすべて、あるいは一部を表示する
12629 =========================================================
12630
12631 ‘printenv’ は、環境変数の値を表示する。
12632
12633    書式:
12634
12635      printenv [OPTION] [VARIABLE]...
12636
12637    VARIABLE が一つも指定されていない場合、‘printenv’ はすべての環境変数
12638 の値を表示する。VARIABLE が指定されている場合は、 その変数それぞれについ
12639 て、設定されていれば値を表示し、設定されていなければ何も表示しない。
12640
12641    このプログラムでは、以下のオプションが使える。参照: *note Common
12642 options::.
12643
12644 ‘-0’
12645 ‘--null’
12646      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
12647      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
12648      他のプログラムがその出力を解析できるようになる。
12649
12650    終了ステータス:
12651
12652      0: 指定されているすべての変数が見つかった。
12653      1: 指定されている変数のうちに、見つからなかったものがある。
12654      2: 書き込みエラーが生じた。
12655
12656 \1f
12657 File: coreutils-ja.info,  Node: tty invocation,  Prev: printenv invocation,  Up: Working context
12658
12659 19.4 ‘tty’: 標準入力に接続している端末のファイル名を表示する
12660 ============================================================
12661
12662 ‘tty’ は、自分の標準入力に接続している端末のファイル名を表示する。 標準
12663 入力が端末ではない場合は、‘not a tty’ というメッセージを出す。
12664
12665    書式:
12666
12667      tty [OPTION]...
12668
12669    このプログラムでは、以下のオプションが使える。参照: *note Common
12670 options::.
12671
12672 ‘-s’
12673 ‘--silent’
12674 ‘--quiet’
12675      何も表示しない。終了ステータスを返すだけ。
12676
12677    終了ステータス:
12678
12679      0: 標準入力が端末である。
12680      1: 標準入力が端末ではない。
12681      2: 指定した引数が正しくない。
12682      3: 書き込みエラーが生じた。
12683
12684 \1f
12685 File: coreutils-ja.info,  Node: User information,  Next: System context,  Prev: Working context,  Up: Top
12686
12687 20 ユーザ情報
12688 *************
12689
12690 この章では、ユーザ関係の情報を表示するコマンドの説明をする。 誰がログイ
12691 ンしているか、どんなグループに所属しているか、などである。
12692
12693 * Menu:
12694
12695 * id invocation::        ユーザの ID を表示する。
12696 * logname invocation::   現在のログイン名を表示する。
12697 * whoami invocation::    実効ユーザ ID を表示する。
12698 * groups invocation::    ユーザが所属しているグループ名を表示する。
12699 * users invocation::     現在ログインしている全ユーザのログイン名を表示する。
12700 * who invocation::       現在誰がログインしているかを表示する。
12701
12702
12703 \1f
12704 File: coreutils-ja.info,  Node: id invocation,  Next: logname invocation,  Up: User information
12705
12706 20.1 ‘id’: ユーザの ID を表示する
12707 =================================
12708
12709 ‘id’ は、指定されたユーザについて情報を表示する。 ユーザが指定されていな
12710 い場合は、‘id’ を実行しているプロセスについて情報を表示する。
12711
12712    書式:
12713
12714      id [OPTION]... [USER]
12715
12716    USER にはユーザ ID (番号) とユーザ名のどちらも使えるが、ID が頭に ‘+’
12717 を付けて指定されていないかぎり、まずユーザ名として検索が行われる。 *Note
12718 Disambiguating names and IDs::.
12719
12720    デフォルトで表示するのは、実ユーザ ID、実グループ ID、実効ユーザ ID
12721 (実ユーザ ID と違う場合)、実効グループ ID (実グループID と違う場合)、 そ
12722 れに、補助 (supplemental) グループ ID である。 さらに、SELinux が有効に
12723 なっていて、環境変数 ‘POSIXLY_CORRECT’ が設定されていない場合は、
12724 ‘context=C’ も表示する。 この C はセキュリティ・コンテキストである。
12725
12726    表示される各数値には、それが何であるかを示す文字列が前に付き、 対応す
12727 るユーザ名やグループ名がカッコで囲まれて後ろに続く。
12728
12729    オプションを指定すると、‘id’ は上で述べた情報のうち、一部のみを表示す
12730 る。 参照: *note Common options::.
12731
12732 ‘-g’
12733 ‘--group’
12734      グループ ID のみ表示する。
12735
12736 ‘-G’
12737 ‘--groups’
12738      グループ ID と補助グループ ID のみ表示する。
12739
12740 ‘-n’
12741 ‘--name’
12742      ID 番号の代りに、ユーザ名やグループ名を表示する。‘-u’, ‘-g’, ‘-G’ の
12743      一つを指定する必要がある。
12744
12745 ‘-r’
12746 ‘--real’
12747      実効ユーザや実効グループの ID ではなく、実ユーザや実グループの ID を
12748      表示する。 ‘-u’, ‘-g’, ‘-G’ のどれか一つを指定する必要がある。
12749
12750 ‘-u’
12751 ‘--user’
12752      ユーザ ID のみ表示する。
12753
12754 ‘-Z’
12755 ‘--context’
12756      現プロセスのセキュリティ・コンテキストのみを表示する。 たいていの場
12757      合、それは、親プロセスから継承したユーザのセキュリティ・コンテキス
12758      トである。 SELinux と SMACK のどちらも有効になっていない場合は、 警
12759      告メッセージを出し、終了ステータスを 1 にする。
12760
12761 ‘-z’
12762 ‘--zero’
12763      出力する項目を NUL 文字で区切る。 このオプションは、デフォルトのフ
12764      ォーマットを使用しているときは、使うことができない。
12765
12766      用例:
12767           $ id -Gn --zero
12768           users <NUL> devs <NUL>
12769
12770    プロセスの基本 (primary) グループや 補助 (supplementary) グループは、
12771 通常その親プロセスから継承され、ログイン後ずっと変わらないのが普通だ。 従
12772 って、ログイン後にグループ・データベースを変更しても、 現在のログインセ
12773 ッションが続いている間は、‘id’ コマンドはその変更を反映しない。 しかし、
12774 引数にユーザの名前を指定して ‘id’ を実行した場合は、 ユーザ・データベー
12775 スやグループ・データベースの参照が改めて行われるので、 変更した結果が表
12776 示されることになる。
12777
12778    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12779
12780 \1f
12781 File: coreutils-ja.info,  Node: logname invocation,  Next: whoami invocation,  Prev: id invocation,  Up: User information
12782
12783 20.2 ‘logname’: 現在のログイン名を表示する
12784 ==========================================
12785
12786 ‘logname’ は、自分を呼び出しているユーザの名前を、システムが管理している
12787 ファイル (たいていは ‘/var/run/utmp’ か ‘/etc/utmp’) で調べて表示し、ス
12788 テータス 0 で終了する。 自分を呼び出しているプロセスのエントリが存在しな
12789 い場合は、 エラーメッセージを出し、ステータス 1 で終了する。
12790
12791    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
12792 options::.
12793
12794    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12795
12796 \1f
12797 File: coreutils-ja.info,  Node: whoami invocation,  Next: groups invocation,  Prev: logname invocation,  Up: User information
12798
12799 20.3 ‘whoami’: 実効ユーザ ID を表示する
12800 =======================================
12801
12802 ‘whoami’ は、現在の実効ユーザ ID に対応するユーザ名を表示する。 ‘id -un’
12803 コマンドと同じことである。
12804
12805    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
12806 options::.
12807
12808    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12809
12810 \1f
12811 File: coreutils-ja.info,  Node: groups invocation,  Next: users invocation,  Prev: whoami invocation,  Up: User information
12812
12813 20.4 ‘groups’: ユーザが所属しているグループ名を表示する
12814 =======================================================
12815
12816 ‘groups’ は、USERNAME が指定されていれば、指定された各ユーザの基本
12817 (primary) グループ名と補助 (supplementary) グループ名を表示し、 ユーザ名
12818 が指定されていなければ、現在のプロセスの基本グループ名と補助グループ名を
12819 表示する。 複数の名前が指定されている場合は、 各ユーザの名前がグループの
12820 リストの前に置かれ、両者の間はコロンで区切られる。
12821
12822    書式:
12823
12824      groups [USERNAME]...
12825
12826    グループのリストは、‘id -Gn’ コマンドの出力と同じである。
12827
12828    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
12829 options::.
12830
12831    プロセスの基本 (primary) グループや 補助 (supplementary) グループは、
12832 通常その親プロセスから継承され、ログイン後ずっと変わらないのが普通だ。 従
12833 って、ログイン後にグループ・データベースを変更しても、 現在のログインセ
12834 ッションが続いている間は、‘groups’ コマンドはその変更を反映しない。 しか
12835 し、ユーザのリストを指定して ‘groups’ を実行した場合は、 ユーザ・データ
12836 ベースやグループ・データベースの参照が改めて行われるので、 変更した結果
12837 が表示されることになる。
12838
12839    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12840
12841 \1f
12842 File: coreutils-ja.info,  Node: users invocation,  Next: who invocation,  Prev: groups invocation,  Up: User information
12843
12844 20.5 ‘users’: 現在ログインしている全ユーザのログイン名を表示する
12845 ================================================================
12846
12847 ‘users’ は、目下使用しているホストに現在ログインしている全ユーザのユーザ
12848 名のリストを、 空白で区切って 1 行に表示する。 ユーザ名はログインセッシ
12849 ョンごとに表示されるので、 あるユーザが複数のログインセッションを行って
12850 いれば、 そのユーザの名前はログインセッションの数だけ出力に現れることに
12851 なる。
12852
12853    書式:
12854
12855      users [FILE]
12856
12857    引数 FILE の指定がない場合、‘users’ はシステムが管理するファイル (た
12858 いていは ‘/var/run/utmp’ か ‘/etc/utmp’) からログインしているユーザの情
12859 報を引き出す。引数 FILE が指定されている場合は、代りにそのファイルを使用
12860 する。‘/var/log/wtmp’ が使われることが多い。
12861
12862    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
12863 options::.
12864
12865    ‘users’ コマンドがインストールされるのは、POSIX 準拠の ‘<utmpx.h>’ イ
12866 ンクルードファイル、またはそれに相当するものが存在するプラットフォームだ
12867 けである。 従って、移植を考慮したスクリプトでは、非 POSIX のプラットフォ
12868 ームにも ‘users’ コマンドが存在することを当てにしない方がよい。
12869
12870    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12871
12872 \1f
12873 File: coreutils-ja.info,  Node: who invocation,  Prev: users invocation,  Up: User information
12874
12875 20.6 ‘who’: 現在誰がログインしているかを表示する
12876 ================================================
12877
12878 ‘who’ は、現在ログインしているユーザについての情報を表示する。
12879
12880    書式:
12881
12882      who [OPTION] [FILE] [am i]
12883
12884    オプション以外の引数が一つもない場合、‘who’ は現在ログインしている各
12885 ユーザについて、次の情報を表示する。 ログイン名、端末ライン、ログイン日
12886 時、それにリモート・ホスト名か X ディスプレー名。
12887
12888    オプション以外の引数を一つだけ指定すると、‘who’ はそれを、ログインし
12889 たユーザを記録しているファイルの名前として、 システムが管理しているデフ
12890 ォルトのファイル (たいていは ‘/var/run/utmp’ か ‘/etc/utmp’) の代りに使
12891 用する。‘who’ に引数として ‘/var/log/wtmp’ を渡して、これまでに誰がログ
12892 インしたかを調べるのはよくあることである。
12893
12894    オプション以外の引数を二つ指定すると、‘who’は、 自分を実行しているユ
12895 ーザの情報のみを (自分が接続している標準入力からユーザの見当を付けて)、
12896 ホスト名を前に付けて表示する。渡される二つの引数は、全体として ‘who am
12897 i’ になるように、‘am i’ とするのが慣例である。
12898
12899    タイムスタンプは、タイムゾーンのルールに従って表示されるが、 そのルー
12900 ルを指定しているのは、環境変数 ‘TZ’ である。 ‘TZ’ が設定されていない場合
12901 は、システムのデフォルトのルールに従って表示される。 *Note Specifying
12902 the Time Zone with ‘TZ’: (libc)TZ Variable.
12903
12904    このプログラムでは以下のオプションが使用できる。参照: *note Common
12905 options::.
12906
12907 ‘-a’
12908 ‘--all’
12909      ‘-b -d --login -p -r -t -T -u’ と同じである。
12910
12911 ‘-b’
12912 ‘--boot’
12913      システムをブートした直近の日時を表示する。
12914
12915 ‘-d’
12916 ‘--dead’
12917      終了したプロセスに関する情報を表示する。
12918
12919 ‘-H’
12920 ‘--heading’
12921      最初の行に各列の見出しを表示する。
12922
12923 ‘-l’
12924 ‘--login’
12925      現在システムがログインの窓口としてユーザを待ち受けているプロセスに
12926      関する情報のみを表示する。 ユーザ名は常に ‘LOGIN’ である。
12927
12928 ‘--lookup’
12929      utmp で見つかったホスト名について DNS を検索して正規名を得ようとす
12930      る。 これがデフォルトになっていないのは、インターネットに自動ダイア
12931      ルアップで接続しているシステムでは、 深刻な遅滞を招きかねないからで
12932      ある。
12933
12934 ‘-m’
12935      ‘who am i’ と同じである。
12936
12937 ‘-p’
12938 ‘--process’
12939      init によって生み出されたプロセスのうち、現在活動中のものをリストす
12940      る。
12941
12942 ‘-q’
12943 ‘--count’
12944      ログインしているユーザのログイン名と人数のみを表示する。他のすべて
12945      のオプションを無効にする。
12946
12947 ‘-r’
12948 ‘--runlevel’
12949      init プロセスの現在のランレベルを表示する (たぶん、直前のランレベル
12950      も)。
12951
12952 ‘-s’
12953      無視する。他の版の ‘who’ との互換性のためにある。
12954
12955 ‘-t’
12956 ‘--time’
12957      システムクロックを最後に変更した日時を表示する。
12958
12959 ‘-u’
12960      ログイン日時の後ろに、ユーザが何時間何分端末を使用していないかを
12961      (idle 状態かを) 表示する。 ‘.’ は、ユーザがここ 1 分以内に端末操作
12962      をしたことを意味する。 ‘old’ は、ユーザが 24 時間以上端末を使用して
12963      いないということである。
12964
12965 ‘-w’
12966 ‘-T’
12967 ‘--mesg’
12968 ‘--message’
12969 ‘--writable’
12970      ログイン名の後ろに、ユーザのメッセージ受け入れ状態を示す 1 文字を表
12971      示する。
12972
12973           ‘+’ ‘write’ によるメッセージを受け入れる。
12974           ‘-’ ‘write’ によるメッセージを拒否する。
12975           ‘?’ 端末デバイスが見つからない。
12976
12977    ‘who’ コマンドがインストールされるのは、POSIX 準拠の ‘<utmpx.h>’ イン
12978 クルードファイル、またはそれに相当するものが存在するプラットフォームだけ
12979 である。 従って、移植を考慮したスクリプトでは、非 POSIX のプラットフォー
12980 ムにも ‘who’ コマンドが存在することを当てにしない方がよい。
12981
12982    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12983
12984 \1f
12985 File: coreutils-ja.info,  Node: System context,  Next: SELinux context,  Prev: User information,  Up: Top
12986
12987 21 システム関連
12988 ***************
12989
12990 この章では、システム全体に関わる情報を表示したり、変更したりするコマンド
12991 を説明する。
12992
12993 * Menu:
12994
12995 * date invocation::          システムの日付や時刻を表示、設定する。
12996 * arch invocation::          マシンのハードウェア名を表示する。
12997 * nproc invocation::         プロセッサの数を表示する。
12998 * uname invocation::         システムについて情報を表示する。
12999 * hostname invocation::      システム名を表示、設定する。
13000 * hostid invocation::        数値によるホストの識別名を表示する。
13001 * uptime invocation::        システムの連続稼働時間と負荷を表示する。
13002
13003 \1f
13004 File: coreutils-ja.info,  Node: date invocation,  Next: arch invocation,  Up: System context
13005
13006 21.1 ‘date’: システムの日付や時刻を表示、設定する
13007 =================================================
13008
13009 書式:
13010
13011      date [OPTION]... [+FORMAT]
13012      date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]
13013
13014    ‘date’ を FORMAT 引数なしで起動すると、 デフォルトの書式を指定して起
13015 動するのと同じことになる。 デフォルトの書式は、‘LC_TIME’ ロケール・カテ
13016 ゴリによって様々である。 デフォルトの C ロケールの場合、その書式は ‘'+%a
13017 %b %e %H:%M:%S %Z %Y'’ なので、出力は ‘Thu Mar  3 13:47:51 PST 2005’ の
13018 ような形になる。
13019
13020    通常 ‘date’ は、環境変数 ‘TZ’ が指示しているタイムゾーンのルールを使
13021 用し、 ‘TZ’ が設定されていないときは、システムのデフォルトのルールを使用
13022 する。 *Note Specifying the Time Zone with ‘TZ’: (libc)TZ Variable.
13023
13024    ‘+’ で始まる引数を指定すると、‘date’ は現在の日付と時刻を (あるいは、
13025 後述する ‘--date’ オプションで指定した日付と時刻を)、 その引数によって定
13026 義された書式で表示する。書式を指定するこの引数は、‘strftime’ 関数のそれ
13027 とほぼ同じである。なお、‘%’ で始まる変換指定子を除いて、 書式文字列中の
13028 文字は、変更されずにそのまま表示される。 変換指定子については、次節以降
13029 で説明する。
13030
13031    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13032
13033 * Menu:
13034
13035 * Time conversion specifiers:: 時刻関係の変換指定子 %[HIklMNpPrRsSTXzZ]。
13036 * Date conversion specifiers:: 日付関係の変換指定子 %[aAbBcCdDeFgGhjmuUVwWxyY]。
13037 * Literal conversion specifiers:: 文字変換指定子 %[%nt]。
13038 * Padding and other flags::    0 や空白による空き埋め、その他。
13039 * Setting the time::           システムクロックの変更。
13040 * Options for date::           現在の日時以外の指定など。
13041 * Date input formats::         日付文字列の指定法。
13042 * Examples of date::           用例。
13043
13044 \1f
13045 File: coreutils-ja.info,  Node: Time conversion specifiers,  Next: Date conversion specifiers,  Up: date invocation
13046
13047 21.1.1 時刻関係の変換指定子
13048 ---------------------------
13049
13050 ‘date’ の時刻関係の変換指定子
13051
13052 ‘%H’
13053      時 (‘00’...‘23’)
13054 ‘%I’
13055      時 (‘01’...‘12’)
13056 ‘%k’
13057      時。一桁のときは、0 ではなく、空白で埋める (‘ 0’...‘23’)。 ‘%_H’ と
13058      同じ。これは GNU の拡張である。
13059 ‘%l’
13060      時。一桁のときは、0 ではなく、空白で埋める (‘ 1’...‘12’)。 ‘%_I’ と
13061      同じ。これは GNU の拡張である。
13062 ‘%M’
13063      分 (‘00’...‘59’)
13064 ‘%N’
13065      ナノ秒 (‘000000000’...‘999999999’)。これは GNU の拡張である。
13066 ‘%p’
13067      現在のロケールで ‘AM’ や ‘PM’ に相当するもの。空白になるロケールも
13068      多い。 正午は ‘PM’ として、真夜中は ‘AM’ として扱う。
13069 ‘%P’
13070      ‘%p’ と同様だが、小文字を使う。これは GNU の拡張である。
13071 ‘%r’
13072      現在のロケールによる 12 時間表記の時刻 (例: ‘11:11:04 PM’)
13073 ‘%R’
13074      24 時間表記の時と分。‘%H:%M’ と同じ。
13075 ‘%s’
13076      ジ・エポック (the epoch、Unix 紀元)、すなわち 1970-01-01 00:00:00
13077      UTC からの経過秒数。閏秒のサポートを利用できない場合、閏秒は計算に
13078      入れない。 用例については、「‘date’ の用例」を見ること。 *Note
13079      %s-examples::. これは GNU の拡張である。
13080 ‘%S’
13081      秒 (‘00’...‘60’)。閏秒がサポートされている場合、‘60’ になることがあ
13082      る。
13083 ‘%T’
13084      24 時間表記の時、分、秒。‘%H:%M:%S’ と同じ。
13085 ‘%X’
13086      現在のロケールによる時刻表示 (例: ‘23:13:48’)
13087 ‘%z’
13088      RFC 2822/ISO 8601 形式の数値によるタイムゾーン (たとえば、‘-0600’ や
13089      ‘+0530’)。タイムゾーンが特定できない場合は、空になる。 この値は、環
13090      境変数 ‘TZ’ によって指定されたタイムゾーンのルールを使用することで
13091      、 現在の日時に対応した、数値によるタイムゾーンを正しく反映する (訳
13092      注: 要するに、夏時間、冬時間が存在する地帯では、それを反映するとい
13093      うこと)。 操作の対象となる日時は (もしそうしたければ、その日時にお
13094      けるタイムゾーンのルールも)、 ‘--date’ オプションによって変更するこ
13095      とができる。
13096 ‘%:z’
13097      RFC 3339/ISO 8601 形式の、‘:’ を使用する数値によるタイムゾーン (た
13098      とえば、‘-06:00’ や ‘+05:30’)。 タイムゾーンが特定できない場合は、
13099      空になる。これは GNU による拡張である。
13100 ‘%::z’
13101      ‘:’ を使用する数値によるタイムゾーンで、もっとも近い秒まで表示する
13102      (たとえば、‘-06:00:00’ や ‘+05:30:00’)。 タイムゾーンが特定できない
13103      場合は、空になる。これは GNU による拡張である。
13104 ‘%:::z’
13105      ‘:’ を使用する数値によるタイムゾーンで、時間の精度を必要最小限で済
13106      ます (たとえば、‘-06’, ‘+05:30’, ‘-04:56:02’)。 タイムゾーンが特定
13107      できない場合は、空になる。これは GNU による拡張である。
13108 ‘%Z’
13109      アルファベットによるタイムゾーンの略称 (たとえば、‘EDT’)。 タイムゾ
13110      ーンが特定できない場合は、空になる。タイムゾーンがどのようにして特
13111      定されるか (訳注: たとえば、アメリカ東部なら、EST (冬時間) と EDT
13112      (夏時間) のどちらが選ばれるか) については、‘%z’ を参照すること。
13113
13114 \1f
13115 File: coreutils-ja.info,  Node: Date conversion specifiers,  Next: Literal conversion specifiers,  Prev: Time conversion specifiers,  Up: date invocation
13116
13117 21.1.2 日付関係の変換指定子
13118 ---------------------------
13119
13120 ‘date’ の日付関係の変換指定子。
13121
13122 ‘%a’
13123      現在のロケールによる曜日の省略形 (例: ‘Sun’)
13124 ‘%A’
13125      現在のロケールによる曜日の省略しない表現。長さは不定 (例: ‘Sunday’)
13126 ‘%b’
13127      現在のロケールによる月名の省略形 (例: ‘Jan’)
13128 ‘%B’
13129      現在のロケールによる月名の省略しない表現。長さは不定 (例:
13130      ‘January’)
13131 ‘%c’
13132      現在のロケールによる日付と時刻 (例: ‘Thu Mar  3 23:05:25 2005’)
13133 ‘%C’
13134      世紀。‘%Y’ に似ているが、下二桁を省略している。たとえば、‘%Y’ が
13135      ‘2000’ ならば、‘%C’ は ‘20’、‘%Y’ が ‘-001’ ならば、‘%C’ は ‘-0’ で
13136      ある。通例、少なくとも 2 個の文字からなるが、2 個以上のこともありえ
13137      る。
13138 ‘%d’
13139      その月の何日目か (例: ‘01’)
13140 ‘%D’
13141      日付。‘%m/%d/%y’ と同じ
13142 ‘%e’
13143      その月の何日目か。一桁のときは、0 ではなく、空白で埋める。‘%_d’ と
13144      同じ。
13145 ‘%F’
13146      ISO 8601 形式の完全な日付。‘%Y-%m-%d’ と同じ。 日付の形式にこれを選
13147      ぶのは、好判断である。標準的な形式だし、年度が 0000...9999 の範囲に
13148      ある通常の場合に、ソートしやすい。
13149 ‘%g’
13150      ISO 週番号に対応する年度表示だが、世紀の部分を省略している (その結
13151      果、‘00’ から ‘99’ の範囲になる)。 これは普通 ‘%y’ と同じ形式、同じ
13152      値になるが、ISO 週番号 (‘%V’ 参照) が前年、または翌年に属する場合は
13153      、そちらの年度が代りに使用される点が異なる。
13154 ‘%G’
13155      ISO 週番号に対応する年度表示。これは普通 ‘%Y’ と同じ形式、同じ値に
13156      なるが、 ISO 週番号 (‘%V’ 参照) が前年、または翌年に属する場合は、
13157      そちらの年度が代りに使用される点が異なる。通常、これが役に立つのは
13158      、 ‘%V’ も一緒に使用するときだけである。たとえば、‘%G-%m-%d’ という
13159      書式は、ISO 週番号による年度と普段使用する月や日を組み合わせている
13160      ので、 たぶん指定の仕方を間違えている。
13161 ‘%h’
13162      ‘%b’ と同じ。
13163 ‘%j’
13164      その年の何日目か (‘001’...‘366’)
13165 ‘%m’
13166      月 (‘01’...‘12’)
13167 ‘%q’
13168      四半期 (‘1’...‘4’)
13169 ‘%u’
13170      その週の何日目か (‘1’...‘7’)。‘1’ は月曜日に当たる。
13171 ‘%U’
13172      日曜日を週の最初の日とする、その年の週番号 (‘00’...‘53’)。 新しい年
13173      の最初の日曜日より前の日々は、第 0 週に属する。
13174 ‘%V’
13175      ISO 週番号。すなわち、月曜日を週の最初の日とする、その年の週番号
13176      (‘01’...‘53’)。1 月 1 日を含む週が、新しい年の日々を 4 日以上含む場
13177      合は、その週が第 1 週であると見なされる。 そうでない場合は、その週
13178      は前年の第 53 週であり、翌週が第 1 週になる。 (ISO 8601 の規格を参
13179      照。)
13180 ‘%w’
13181      その週の何日目か (‘0’...‘6’)。0 は日曜日に当たる。
13182 ‘%W’
13183      月曜日を週の最初の日とする、その年の週番号 (‘00’...‘53’)。 最初の月
13184      曜日より前の新しい年の日々は、第 0 週に属する。
13185 ‘%x’
13186      現在のロケールによる日付の表示 (例: ‘12/31/99’)
13187 ‘%y’
13188      年度の下二桁 (‘00’...‘99’)
13189 ‘%Y’
13190      年度。通例、少なくとも 4 文字だが、もっと多いこともある。‘0000’ 年
13191      は ‘0001’ の前年であり、‘-001’ 年は ‘0000’ の前年である。
13192
13193 \1f
13194 File: coreutils-ja.info,  Node: Literal conversion specifiers,  Next: Padding and other flags,  Prev: Date conversion specifiers,  Up: date invocation
13195
13196 21.1.3 文字変換指定子
13197 ---------------------
13198
13199 日付や時刻以外の ‘date’ の変換指定子。
13200
13201 ‘%%’
13202      1 個の % という文字
13203 ‘%n’
13204      改行
13205 ‘%t’
13206      水平タブ
13207
13208 \1f
13209 File: coreutils-ja.info,  Node: Padding and other flags,  Next: Setting the time,  Prev: Literal conversion specifiers,  Up: date invocation
13210
13211 21.1.4 空き埋めなどのフラグ
13212 ---------------------------
13213
13214 特に指定がないかぎり、‘date’ は通常、数値の入るフィールドの空きを 0 で埋
13215 める。従って、たとえば、数値による月名は常に二桁の数字として出力される。
13216 しかし、ジ・エポック (Unix 紀元) 以来の経過秒数では、空きを埋めることは
13217 しない。 この秒数には決まった長さがないからである。
13218
13219    GNU の拡張として、以下に挙げるフラグの一つを ‘%’ の後ろに置くことがで
13220 きる (指定するしないは自由)。
13221
13222 ‘-’
13223      (ハイフン) フィールドの空き埋めをしない。出力が人間に見せるためのも
13224      のである場合に、役に立つ。
13225 ‘_’
13226      (アンダースコア、下線) 空白で空き埋めをする。 出力を一定の文字数に
13227      する必要があるが、0 で埋めたのでは見にくいという場合に、役に立つ。
13228 ‘0’
13229      (ゼロ) 変換指定子が普通なら空白で埋める場合にも、ゼロで空き埋めをす
13230      る。
13231 ‘^’
13232      可能なら、大文字を使う。
13233 ‘#’
13234      可能なら、反対の文字を使う。通常大文字のフィールドは小文字になり、
13235      小文字のフィールドは大文字になる。
13236
13237 空き埋めの例をいくつか挙げておく。
13238
13239      date +%d/%m -d "Feb 1"
13240      ⇒ 01/02
13241      date +%-d/%-m -d "Feb 1"
13242      ⇒ 1/2
13243      date +%_d/%_m -d "Feb 1"
13244      ⇒  1/ 2
13245
13246    これも GNU の拡張だが、フィールドの幅を 10 進数で指定することができる
13247 (数字は、上記のフラグがあれば、その後ろに置く)。 そのフィールドの出力の
13248 加工前の長さが、幅として指定した文字数より短い場合は、 右詰めにして、指
13249 定サイズにまで空き埋めした結果が書き出される。たとえば、‘%9B’ は、右詰め
13250 にした月の名前を 9 文字分のフィールドに表示する。
13251
13252    上記のフラグやフィールド幅の指定の後ろに、修飾子 (modifier) を付ける
13253 こともできる (指定するしないは自由)。修飾子には、次のものがある。
13254
13255 ‘E’
13256      現在のロケールが持つもう一つの日時表記を使用する。この修飾子は、
13257      ‘%c’, ‘%C’, ‘%x’, ‘%X’, ‘%y’, ‘%Y’ に対して使用できる。 たとえば、
13258      日本語ロケールで ‘%Ex’ とすれば、元号による日付を表示するだろう。
13259
13260 ‘O’
13261      現在のロケールが持つもう一つの数字表記を使用する。 この修飾子は、数
13262      値を表す変換指定子にしか使用できない。
13263
13264    書式が修飾子をサポートしていても、もう一つの表記が利用できない場合、
13265 修飾子は無視される。
13266
13267 \1f
13268 File: coreutils-ja.info,  Node: Setting the time,  Next: Options for date,  Prev: Padding and other flags,  Up: date invocation
13269
13270 21.1.5 システムクロックの設定
13271 -----------------------------
13272
13273 ‘+’ で始まらない引数を指定すると、‘date’ は、(以下で述べるように) その引
13274 数で指定した日時にシステムクロックを設定する。 システムクロックを設定す
13275 るには、しかるべき権限が必要である。リブート後も変更を維持するには、 シ
13276 ステムクロックに合わせてハードウェアクロックも更新する必要があるかもしれ
13277 ないことに注意していただきたい。 ご使用のシステムでは、ハードウェアクロ
13278 ックの更新は、自動的に行われないかもしれないからだ。
13279
13280    引き数の構成要素は、すべて数字でなければならない。それは以下の意味を
13281 持っている。
13282
13283    (訳注: 念のため、この章の冒頭にあるシステムクロック設定用の書式を再掲
13284 しておく。 date [-u|–utc|–universal] [ MMDDhhmm[[CC]YY][.ss] ])
13285
13286 ‘MM’
13287      何月
13288 ‘DD’
13289      (何月の) 何日
13290 ‘hh’
13291      何時
13292 ‘mm’
13293      何分
13294 ‘CC’
13295      年度の上二桁 (省略可)
13296 ‘YY’
13297      年度の下二桁 (省略可)
13298 ‘ss’
13299      何秒 (省略可)
13300
13301    注意していただきたいが、‘--date’ や ‘--set’ オプションは、 ここで述べ
13302 ている書式の引数と組み合わせて使うことができない。 ‘--universal’ オプシ
13303 ョンは、ここで述べている書式の引数と一緒に使うことができるが、 その場合
13304 は、指定されている日時が現在地のタイムゾーンではなく、協定世界時 (UTC) に
13305 準じているのを示すことになる。
13306
13307 \1f
13308 File: coreutils-ja.info,  Node: Options for date,  Next: Examples of date,  Prev: Setting the time,  Up: date invocation
13309
13310 21.1.6 ‘date’ のオプション
13311 --------------------------
13312
13313 このプログラムでは以下のオプションが使用できる。参照: *note Common
13314 options::.
13315
13316 ‘-d DATESTR’
13317 ‘--date=DATESTR’
13318      現在の日時の代りに、日付文字列 DATESTR で指定した日時を表示する。
13319      DATESTR には、よく使われる書式なら、ほとんどどんな書式でも使うこと
13320      ができる。 月の名前、タイムゾーン、‘am’ や ‘pm’、‘yesterday’ といっ
13321      た単語、などを含んでいてもよい。たとえば、‘--date="2004-02-27
13322      14:19:13.489392193 +0530"’ は、UTC よりも東 5 時間 30 分のタイムゾ
13323      ーンで 2004 年 2 月 27 日 午後 2 時 19 分 13 秒から 489,392,193 ナ
13324      ノ秒経過した瞬間を指定している。
13325      注意: 現在のところ、入力は、ロケールに依存しない書式でなければなら
13326      ない。 たとえば、以下の例の LC_TIME=C は、多くのロケールで正しい日
13327      時を再表示させるために必要である。
13328           date -d "$(LC_TIME=C date)"
13329      参照: *Note Date input formats::.
13330
13331 ‘--debug’
13332      解析した日時について説明し、現在のタイムゾーンを表示し、 間違えた使
13333      い方をしている疑いがあれば、警告を出す。
13334
13335 ‘-f DATEFILE’
13336 ‘--file=DATEFILE’
13337      ファイル DATEFILE の各行を ‘-d’ の場合と同じように解析して、生成さ
13338      れた日付と時刻を表示する。 DATEFILE が ‘-’ ならば、標準入力を使用す
13339      る。 処理する日付がたくさんある場合に、このオプションは重宝である。
13340      何故ならば、‘date’ コマンドを何度も起動するときのシステムのオーバー
13341      ヘッドは、 馬鹿にならないことがあるからだ。
13342
13343 ‘-I[TIMESPEC]’
13344 ‘--iso-8601[=TIMESPEC]’
13345      ISO 8601 の書式、‘%Y-%m-%d’ を使って、日付を表示する。
13346
13347      引数 TIMESPEC では、日付の後ろに時刻をどの単位まで追加するかを指定
13348      する。 以下の一つを指定することができる。
13349      ‘date’
13350           日付のみを表示する。TIMESPEC を省略した場合のデフォルト。
13351
13352      ‘hours’
13353           日付にその日の何時かを追加する。
13354
13355      ‘minutes’
13356           何時何分まで追加する。
13357
13358      ‘seconds’
13359           何時何分何秒まで追加する。
13360
13361      ‘ns’
13362           何時何分何秒何ナノ秒まで追加する。
13363
13364      時刻の部分まで表示するときは、‘%:z’ の書式でタイムゾーンも付ける。
13365      この書式は、使用しているロケールが何であるかを問わず、‘--date’
13366      (‘-d’) や ‘--file’ (‘-f’) オプションに対する入力として、常に適切で
13367      ある。
13368
13369 ‘-r FILE’
13370 ‘--reference=FILE’
13371      現在の日付と時刻の代りに、FILE の内容を最後に更新した (the last
13372      modification) 日付と時刻を表示する。
13373
13374 ‘-R’
13375 ‘--rfc-822’
13376 ‘--rfc-2822’
13377      日付と時刻を ‘%a, %d %b %Y %H:%M:%S %z’ という書式を使用し、 C ロケ
13378      ールで評価して表示する。従って、月や曜日の省略形は常に英語になる。
13379      一例を挙げると、こんな表示である。
13380
13381           Fri, 09 Sep 2005 13:51:39 -0700
13382
13383      この書式は、Internet RFC 2822
13384      (ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt) と RFC 822
13385      (ftp://ftp.rfc-editor.org/in-notes/rfc822.txt) に従っている。 イン
13386      ターネットの E メールに関する現在と以前の規格である。
13387
13388 ‘--rfc-3339=TIMESPEC’
13389      Internet RFC 3339 (ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt) が
13390      規定している書式を使用して、日付を表示する。この書式は、ISO 8601 の
13391      書式のサブセットだが、日付と時刻を区切るのに、‘T’ という文字ではな
13392      く、空白を使うことをアプリケーションに許しているという相違点がある
13393      。 この書式は、使用しているロケールが何であるかを問わず、‘--date’
13394      (‘-d’) や ‘--file’ (‘-f’) オプションに対する入力として、常に適切で
13395      ある。
13396
13397      引数 TIMESPEC では、時刻をどこまで表示するかを指定する。 以下の一つ
13398      を指定することができる。
13399
13400      ‘date’
13401           年から始まる日付だけを表示する。たとえば、‘2005-09-14’。 これ
13402           は、‘%Y-%m-%d’ という書式と等価である。
13403
13404      ‘seconds’
13405           年から始まる日付と秒までの時刻を表示し、両者の間は空白で区切る
13406           。 一例を挙げると、‘2005-09-14 00:56:06+05:30’。出力の末尾には
13407           、 協定世界時からの時差が付く。例の場合、‘+05:30’ は、地方時が
13408           UTC より 5 時間 30 分進んでいることを意味している。 これは、
13409           ‘%Y-%m-%d %H:%M:%S%:z’ という書式と等価である。
13410
13411      ‘ns’
13412           ‘seconds’ と似ているが、ナノ秒まで表示する。 一例を挙げると、
13413           ‘2005-09-14 00:56:06.998458565+05:30’。 これは、‘%Y-%m-%d
13414           %H:%M:%S.%N%:z’ という書式と等価である。
13415
13416 ‘-s DATESTR’
13417 ‘--set=DATESTR’
13418      日付と時刻を DATESTR に設定する。上記の ‘-d’ を参照。 前節「システ
13419      ムクロックの設定」 も参照すること。*note Setting the time::.
13420
13421 ‘-u’
13422 ‘--utc’
13423 ‘--universal’
13424      環境変数 ‘TZ’ が、文字列 ‘UTC0’ に設定されているかのように、 処理に
13425      協定世界時 (UTC, Coordinated Universal Time) を使用する。 協定世界
13426      時は、歴史的な理由から「グリニッジ標準時 (GMT)」と呼ばれることもよ
13427      くある。 一般にシステムは閏秒を無視するので、日時は正真の UTC では
13428      なく、UTC の近似値になる。
13429
13430 \1f
13431 File: coreutils-ja.info,  Node: Examples of date,  Prev: Options for date,  Up: date invocation
13432
13433 21.1.7 ‘date’ の使用例
13434 ----------------------
13435
13436 用例をいくつか挙げてみる。前節の ‘-d’ オプションの説明も参照していただき
13437 たい。
13438
13439    • 一昨日の日付を表示する。
13440
13441           date --date='2 days ago'
13442
13443    • 今から 3 ヶ月と 1 日後の日付けを表示する。
13444
13445           date --date='3 months 1 day'
13446
13447    • 今年のクリスマスは年の初めから何日目かを表示する。
13448
13449           date --date='25 Dec' +%j
13450
13451    • 今日が何月何日かを、省略しない月の名前で表示する。
13452
13453           date '+%B %d'
13454
13455      しかし、月の最初の 9 日間では、‘%d’ は空きを 0 で埋めた 2 桁のフィ
13456      ールドに展開されるので、この結果はご希望のものとは違うかもしれない
13457      。 たとえば、‘date -d 1may '+%B %d'’ の出力は、‘May 01’ になるのだ
13458      。
13459
13460    • 月のうちの 1 桁の日々に対して、先頭に 0 を付けずに日付を表示したい
13461      のなら、 (GNU の拡張である) ‘-’ フラグを使用すれば、空き埋めを全く
13462      しないようにすることができる。
13463
13464           date -d 1may '+%B %-d'
13465
13466    • 現在の日付と時刻を、non-GNU 版の ‘date’ の多くでシステムクロックを
13467      設定するときに要求される書式で表示する。
13468
13469           date +%m%d%H%M%Y.%S
13470
13471    • システムクロックを 2 分進める。
13472
13473           date --set='+2 minutes'
13474
13475    • 日付を RFC 2822 の書式で表示するためには、‘date --rfc-2822’ を使用
13476      する。ここに示すのは、出力の一例である。
13477
13478           Fri, 09 Sep 2005 13:51:39 -0700
13479
13480    • 日付を表す文字列をジ・エポック (the epoch、Unix 紀元、すなわち、
13481      1970-01-01 00:00:00 UTC) からの経過秒数に変換するには、‘--date’ オ
13482      プションを ‘%s’ 書式と組み合わせて使用する。 これは、データを日付に
13483      よってソートしたり、グラフ化したり、比較したりする際に、便利である
13484      。 次のコマンドは、ジ・エポックから 2 分経ったときの、ジ・エポック
13485      からの経過秒数を出力する。
13486
13487           date --date='1970-01-01 00:02:00 +0000' +%s
13488           120
13489
13490      日付を表す文字列でタイムゾーン情報を指定しない場合、‘date’ は、コン
13491      ピュータが認識しているタイムゾーンを使用して、その文字列を解釈する
13492      。 たとえば、使用しているコンピュータのタイムゾーンが、マサチューセ
13493      ッツ州のケンブリッジのものならば、 それは UTC より 5 時間遅れている
13494      ので、次のようになる。
13495
13496           # 現在地のタイムゾーンを使用
13497           date --date='1970-01-01 00:02:00' +%s
13498           18120
13499
13500    • 日付の付いたデータをソートしたり、グラフ化したりしているとしよう。
13501      その日付の加工前の値は、ジ・エポックからの経過秒数で表されているか
13502      もしれない。 だが、‘946684800’ といった日付を見て、 「ああ、イギリ
13503      スのグリニッジの 2000 年の最初の 0 秒だね」と、 さりげなく言える人
13504      は、めったにいない。
13505
13506           date --date='2000-01-01 UTC' +%s
13507           946684800
13508
13509      なお、上と同じ結果は、‘--utc’ (‘-u’) オプションを使っても得られ、 そ
13510      の場合は、日付を表す文字列で ‘UTC’ を省略することができる。 とは言
13511      え、‘--utc’ を使う方法は、‘%s’ を始め、多くの書式文字列では、 日付
13512      文字列で ‘UTC’ を使うのと同じ結果をもたらすものの、 協定世界時から
13513      の時差が 0 ではないタイムゾーンでは、 ‘%z’ のようなタイムゾーンによ
13514      って値が変わってくる書式文字列に対しては、 異なる結果をもたらすこと
13515      になるだろう。
13516
13517           date -u --date=2000-01-01 +%s
13518           946684800
13519
13520      こうした秒数という扱いにくいデータをもっと読みやすい形に変換し直す
13521      には、 次のようなコマンドを使う。
13522
13523           # 現在地のタイムゾーンを使用
13524           date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
13525           1999-12-31 19:00:00 -0500
13526
13527      coreutils 5.3.0 以来使用できるようになった ‘@’ という表記に頼っても
13528      構わないなら、上記のコマンドを短くすることができる (参照: *note
13529      Seconds since the Epoch::)。
13530
13531           date -d @946684800 +"%F %T %z"
13532           1999-12-31 19:00:00 -0500
13533
13534      UTC の日付や時刻を出力した方がよいことも多い。
13535
13536           date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"
13537           2000-01-01 00:00:00 +0000
13538
13539    • 閏秒は秒数計算に入れないのが一般的だが、例外的なシステムもある。 閏
13540      秒は予測できないものなので、閏秒を計算に入れる例外的なシステムでは
13541      、 秒数による計算と未来の日時との対応は信頼性に欠ける。
13542
13543      一般的なシステムと例外的なシステムの両者が、2012-06-30 23:59:60 UTC
13544      の閏秒をどのように処理しているかを以下に示す。
13545
13546           # 一般的なシステムは閏秒を無視する:
13547           date --date='2012-06-30 23:59:59 +0000' +%s
13548           1341100799
13549           date --date='2012-06-30 23:59:60 +0000' +%s
13550           date: invalid date '2012-06-30 23:59:60 +0000'
13551           date --date='2012-07-01 00:00:00 +0000' +%s
13552           1341100800
13553
13554           # 例外的なシステムは閏秒をカウントする:
13555           date --date='2012-06-30 23:59:59 +0000' +%s
13556           1341100823
13557           date --date='2012-06-30 23:59:60 +0000' +%s
13558           1341100824
13559           date --date='2012-07-01 00:00:00 +0000' +%s
13560           1341100825
13561
13562 \1f
13563 File: coreutils-ja.info,  Node: arch invocation,  Next: nproc invocation,  Prev: date invocation,  Up: System context
13564
13565 21.2 ‘arch’: マシンのハードウェア名を表示する
13566 =============================================
13567
13568 ‘arch’ は、マシンのハードウェア名を表示する。‘uname -m’ と同じことである
13569
13570
13571    書式:
13572
13573      arch [OPTION]
13574
13575    このプログラムでは、共通オプションしか使用できない。*note Common
13576 options::.
13577
13578    ‘arch’ は、デフォルトではインストールされない。 従って、移植を考慮し
13579 たスクリプトでは、‘arch’ コマンドが存在することを当てにしない方がよい。
13580
13581    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13582
13583 \1f
13584 File: coreutils-ja.info,  Node: nproc invocation,  Next: uname invocation,  Prev: arch invocation,  Up: System context
13585
13586 21.3 ‘nproc’: 利用できるプロセッサの個数を表示する
13587 ==================================================
13588
13589 カレントプロセスが利用できるプロセシング・ユニットの個数を表示する。 そ
13590 れは、稼働しているプロセッサの数より少ないかもしれない。 そうした情報が
13591 取得できない場合は、搭載されているプロセッサの数を表示する。 環境変数
13592 ‘OMP_NUM_THREADS’ が設定されている場合は、 その変数が、返される値を決め
13593 ることになる。なお、結果は必ず 0 より大きくなる。
13594
13595    書式:
13596
13597      nproc [OPTION]
13598
13599    このプログラムでは以下のオプションが使用できる。参照: *note Common
13600 options::.
13601
13602 ‘--all’
13603      システムに搭載されているプロセッサの数を表示する。 それは、稼働して
13604      いるプロセッサや、カレントプロセスが利用できるプロセッサの数より多
13605      いかもしれない。 このオプションを付けた場合、環境変数
13606      ‘OMP_NUM_THREADS’ は考慮されない。
13607
13608 ‘--ignore=NUMBER’
13609      可能ならば、NUMBER 個のプロセシング・ユニットを除外する。
13610
13611    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13612
13613 \1f
13614 File: coreutils-ja.info,  Node: uname invocation,  Next: hostname invocation,  Prev: nproc invocation,  Up: System context
13615
13616 21.4 ‘uname’: システムについて情報を表示する
13617 ============================================
13618
13619 ‘uname’ は、自分がその上で実行されているマシンとオペレーティング・システ
13620 ムについて情報を表示する。 オプションが一つも指定されない場合は、‘-s’ オ
13621 プションが指定されたかのように振る舞う。
13622
13623    書式:
13624
13625      uname [OPTION]...
13626
13627    複数のオプションや ‘-a’ オプションが指定された場合、選択された情報は
13628 次の順番で表示される。
13629
13630      KERNEL-NAME NODENAME KERNEL-RELEASE KERNEL-VERSION
13631      MACHINE PROCESSOR HARDWARE-PLATFORM OPERATING-SYSTEM
13632
13633    個々の情報が空白を含んでいることがある。そうした場合、出力のどこから
13634 どこまでが、 ある情報に当たるかを判断することは難しい。以下の例で
13635 RELEASE に当たるのは、‘2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001’ の部分
13636 である。
13637
13638    (訳注: RELEASE が KERNEL-RELEASE のことならば、それに相当するのは
13639 ‘2.2.18’ だけである。#4 から 2001 までは KERNEL-VERSION。 原文は両者を合
13640 わせて、RELEASE と言っているのかもしれない。 なお、以下の例はちょっと古
13641 い。最近の ‘uname -a’ では、‘-a’ オプションの説明にあるように、unknown の
13642 部分は表示されないはずである。)
13643
13644      uname -a
13645      ⇒ Linux dumdum 2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001 i686 unknown unknown GNU/Linux
13646
13647    このプログラムでは以下のオプションが使用できる。参照: *note Common
13648 options::.
13649
13650 ‘-a’
13651 ‘--all’
13652      以下の情報をすべて表示する。ただし、プロセッサ・タイプとハードウェ
13653      ア・プラットホームは、unknown ならば省略する。
13654
13655 ‘-i’
13656 ‘--hardware-platform’
13657      ハードウェア・プラットホームの名前を表示する (ハードウェア実装と呼
13658      ばれることもある)。 その情報が取得できない場合は、‘unknown’ と表示
13659      する。 このオプションは、(GNU/Linux ディストリビューション同士の間
13660      ですら) 可搬性がない。
13661
13662 ‘-m’
13663 ‘--machine’
13664      マシンのハードウェア名を表示する (ハードウェア・クラスとかハードウ
13665      ェア・タイプと呼ばれることもある)。
13666
13667 ‘-n’
13668 ‘--nodename’
13669      ネットワークノードのホスト名を表示する。
13670
13671 ‘-p’
13672 ‘--processor’
13673      プロセッサ・タイプを表示する (命令セット体系、the instruction set
13674      architecture、ISA などと呼ばれることもある)。 その情報が取得できな
13675      い場合は、‘unknown’ と表示する。 このオプションは、(GNU/Linux ディ
13676      ストリビューション同士の間ですら) 可搬性がない。
13677
13678 ‘-o’
13679 ‘--operating-system’
13680      オペレーティング・システムの名前を表示する。
13681
13682 ‘-r’
13683 ‘--kernel-release’
13684      カーネルのリリース名を表示する。
13685
13686 ‘-s’
13687 ‘--kernel-name’
13688      カーネル名を表示する。POSIX 1003.1-2001 では (*note Standards
13689      conformance::)、これを「オペレーティング・システムの実装」と呼んで
13690      いる。 POSIX の仕様には、カーネルという概念がないからである。 カー
13691      ネル名は、‘-o’ や ‘--operating-system’ オプションで表示されるオペレ
13692      ーティング・システム名と同じかもしれないし、 違うかもしれない。オペ
13693      レーティング・システムによって、 基盤となっているカーネルと名前が同
13694      じものもあれば (FreeBSD, HP-UX など)、 違うものもある (GNU/Linux,
13695      Solaris など) からである。
13696
13697 ‘-v’
13698 ‘--kernel-version’
13699      カーネルのバージョンを表示する。
13700
13701    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13702
13703 \1f
13704 File: coreutils-ja.info,  Node: hostname invocation,  Next: hostid invocation,  Prev: uname invocation,  Up: System context
13705
13706 21.5 ‘hostname’: システムの名前を表示、または設定する
13707 =====================================================
13708
13709 ‘hostname’ は、引数なしで実行すると、使用しているホストシステムの名前を
13710 表示する。 引数を一つ付けて実行すると、指定した文字列を使用しているホス
13711 トの名前として設定する。 ホストの名前を設定するには、しかるべき権限が必
13712 要である。
13713
13714    書式:
13715
13716      hostname [NAME]
13717
13718    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
13719 options::.
13720
13721    ‘hostname’ は、デフォルトではインストールされない。 また、coreutils 以
13722 外のパッケージにも ‘hostname’ コマンドを提供するものがある。 従って、移
13723 植を考慮したスクリプトでは、‘hostname’ コマンドが存在することや、上記通
13724 りの動作をすることを当てにしない方がよい。
13725
13726    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13727
13728 \1f
13729 File: coreutils-ja.info,  Node: hostid invocation,  Next: uptime invocation,  Prev: hostname invocation,  Up: System context
13730
13731 21.6 ‘hostid’: 数値によるホストの識別名を表示する
13732 =================================================
13733
13734 ‘hostid’ は、使用しているホストの数値による識別名を 16 進数で表示する。
13735 このコマンドは引数を取らない。使用できるオプションは、‘--help’ と
13736 ‘--version’ だけである。*Note Common options::.
13737
13738    たとえば、筆者が使っているシステムの一つでは、次のように表示される。
13739
13740      $ hostid
13741      1bac013d
13742
13743    たまたまこのシステムでは、識別名の 32 ビットの数値が、システムのイン
13744 ターネット・アドレスと密接な関係を持っているが、 いつでもそうとはかぎら
13745 ない。
13746
13747    ‘hostid’ がインストールされるのは、‘gethostid’ 関数が存在するシステム
13748 だけである。 従って、移植を考慮したスクリプトでは、‘hostid’ の存在を当て
13749 にしない方がよい。
13750
13751    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13752
13753 \1f
13754 File: coreutils-ja.info,  Node: uptime invocation,  Prev: hostid invocation,  Up: System context
13755
13756 21.7 ‘uptime’: システムの連続稼働時間と負荷を表示する
13757 =====================================================
13758
13759 ‘uptime’ は、現在の時刻、システムの連続稼働時間、ログインしているユーザ
13760 の数、 それに現在の平均負荷 (load average) を表示する。
13761
13762    引数を指定すると、ユーザが何人ログインしているかを知るために読み込む
13763 ファイルとして、その引数が使用される。 引数を指定しない場合は、システム
13764 のデフォルトが使用される (‘uptime --help’ を実行すれば、デフォルトの設定
13765 がわかる)。
13766
13767    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
13768 options::.
13769
13770    たとえば、以下の例は、筆者が使っているシステムの一つで、ちょうど今表
13771 示されたものだ。
13772
13773      $ uptime
13774       14:07  up   3:35,  3 users,  load average: 1.39, 1.15, 1.04
13775
13776    細かいことを言うと、平均負荷の計算方法は、システムによっていくらか異
13777 なっている。 あるシステムでは、ここ 1 分間、5 分間、15 分間の、実行可能
13778 状態のプロセスの平均数として計算されるが、 別のシステムでは、割り込み不
13779 可能なスリープ状態のプロセスも含めている (すなわち、ディスク I/O を待っ
13780 ているプロセスだ)。 Linux のカーネルは、割り込み不可能なプロセスを含める
13781 方である。
13782
13783    ‘uptime’ がインストールされるのは、 ブート日時を取得するための下部構
13784 造を備えているプラットフォームだけである。 また、coreutils 以外のパッケ
13785 ージにも、‘uptime’ コマンドを提供しているものがある。 従って、移植を考慮
13786 したスクリプトでは、‘uptime’ コマンドが存在することや、 上記通りの動作を
13787 することを当てにしない方がよい。
13788
13789    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13790
13791 \1f
13792 File: coreutils-ja.info,  Node: SELinux context,  Next: Modified command invocation,  Prev: System context,  Up: Top
13793
13794 22 SELinux コンテキスト
13795 ***********************
13796
13797 この章では、SELinux コンテキスト関係の操作を行うコマンドを説明する。
13798
13799 * Menu:
13800
13801 * chcon invocation::     ファイルの SELinux コンテキストを変更する
13802 * runcon invocation::    指定された SELinux コンテキストでコマンドを実行する
13803
13804 \1f
13805 File: coreutils-ja.info,  Node: chcon invocation,  Next: runcon invocation,  Up: SELinux context
13806
13807 22.1 ‘chcon’: ファイルの SELinux コンテキストを変更する
13808 =======================================================
13809
13810 ‘chcon’ は、指定されたファイルの SELinux セキュリティ・コンテキストを変
13811 更する。
13812
13813    書式:
13814
13815      chcon [OPTION]... CONTEXT FILE...
13816      chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
13817      chcon [OPTION]... --reference=RFILE FILE...
13818
13819    各 FILE の SELinux セキュリティ・コンテキストを CONTEXT に変更する。
13820 ‘--reference’ オプションを使用した場合は、 各 FILE のセキュリティ・コン
13821 テキストを RFILE のそれに変更する。
13822
13823    このプログラムでは以下のオプションが使用できる。参照: *note Common
13824 options::.
13825
13826 ‘--dereference’
13827      シンボリックリンクそのものではなく、リンクが指しているものを操作の
13828      対象にする。 これがデフォルトである。
13829
13830 ‘-h’
13831 ‘--no-dereference’
13832      参照先のファイルではなく、シンボリックリンクそのものを操作の対象に
13833      する。
13834
13835 ‘--reference=RFILE’
13836      CONTEXT の値を直接指定する代わりに、RFILE のセキュリティ・コンテキ
13837      ストを使用する。
13838
13839 ‘-R’
13840 ‘--recursive’
13841      ファイルやディレクトリに対して再帰的に動作する。
13842
13843 ‘--preserve-root’
13844      ‘--recursive’ オプションと一緒に使ったとき、ルートディレクトリ
13845      (‘/’) に対して再帰的に動作することを拒否する。 *Note Treating /
13846      specially::.
13847
13848 ‘--no-preserve-root’
13849      ‘--recursive’ オプションと一緒に使ったとき、ルートディレクトリ
13850      (‘/’) を特別扱いしない。こちらがデフォルトの動作である。 *Note
13851      Treating / specially::.
13852
13853 ‘-H’
13854      ‘--recursive’ (‘-R’) オプションが指定されている場合に、 コマンドラ
13855      インで指定された引数がディレクトリへのシンボリックリンクならば、そ
13856      れをたどる。 *Note Traversing symlinks::.
13857
13858 ‘-L’
13859      ディレクトリ階層を再帰的にたどっている際に、 ディレクトリへのシンボ
13860      リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
13861      symlinks::.
13862
13863 ‘-P’
13864      シンボリックリンクを一切たどらない。これが、‘-H’, ‘-L’, ‘-P’ のどれ
13865      も指定されていないときの、デフォルトである。 *Note Traversing
13866      symlinks::.
13867
13868 ‘-v’
13869 ‘--verbose’
13870      処理したすべてのファイルについてメッセージを表示する。
13871
13872 ‘-u USER’
13873 ‘--user=USER’
13874      操作対象のセキュリティ・コンテキストのユーザを USER にする。
13875
13876 ‘-r ROLE’
13877 ‘--role=ROLE’
13878      操作対象のセキュリティ・コンテキストのロールを ROLE にする。
13879
13880 ‘-t TYPE’
13881 ‘--type=TYPE’
13882      操作対象のセキュリティ・コンテキストのタイプを TYPE にする。
13883
13884 ‘-l RANGE’
13885 ‘--range=RANGE’
13886      操作対象のセキュリティ・コンテキストのセキュリティ・レベルの範囲を
13887      RANGE にする。
13888
13889    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13890
13891 \1f
13892 File: coreutils-ja.info,  Node: runcon invocation,  Prev: chcon invocation,  Up: SELinux context
13893
13894 22.2 ‘runcon’: 指定された SELinux コンテキストでコマンドを実行する。
13895 ====================================================================
13896
13897 ‘runcon’ は、指定された SELinux セキュリティ・コンテキストでファイルを実
13898 行する。
13899
13900    書式:
13901      runcon CONTEXT COMMAND [ARGS]
13902      runcon [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [ARGS]
13903
13904    セキュリティ・コンテキストのすべてを CONTEXT で指定して、COMMAND を実
13905 行する。あるいは、現在の、または遷移後のセキュリティ・コンテキストのうち
13906 、 ユーザ、ロール、タイプ、レベルの一つ以上を変更して、COMMAND を実行す
13907 る。
13908
13909    ‘-c’, ‘-u’, ‘-r’, ‘-t’, ‘-l’ のどのオプションも指定されていない場合は
13910 、最初の引数が完全なコンテキストとして使用される。 COMMAND の後ろに続く
13911 引数があれば、それはそのコマンドに対する引数と見なされる。
13912
13913    CONTEXT と COMMAND のどちらも指定されていない場合は、 現在のセキュリ
13914 ティ・コンテキストを表示する。
13915
13916    このプログラムでは以下のオプションが使用できる。参照: *note Common
13917 options::.
13918
13919 ‘-c’
13920 ‘--compute’
13921      セキュリティ・コンテキストの変更を行う前に、プロセスの遷移によるコ
13922      ンテキストを求める。
13923
13924 ‘-u USER’
13925 ‘--user=USER’
13926      操作対象のセキュリティ・コンテキストのユーザを USER にする。
13927
13928 ‘-r ROLE’
13929 ‘--role=ROLE’
13930      操作対象のセキュリティ・コンテキストのロールを ROLE にする。
13931
13932 ‘-t TYPE’
13933 ‘--type=TYPE’
13934      操作対象のセキュリティ・コンテキストのタイプを TYPE にする。
13935
13936 ‘-l RANGE’
13937 ‘--range=RANGE’
13938      操作対象のセキュリティ・コンテキストのセキュリティ・レベルの範囲を
13939      RANGE にする。
13940
13941    終了ステータス:
13942
13943      126: COMMAND が見つかったが、起動できなかった。
13944      127: ‘runcon’ そのものの実行に失敗した。あるいは、COMMAND が
13945           見つからなかった。
13946      それ以外は、COMMAND の終了ステータス。
13947
13948 \1f
13949 File: coreutils-ja.info,  Node: Modified command invocation,  Next: Process control,  Prev: SELinux context,  Up: Top
13950
13951 23 コマンド実行条件の変更
13952 *************************
13953
13954 この章で説明するコマンドは、他のコマンドを現在の条件とは違った条件で実行
13955 するものである。 たとえば、環境を変更して実行する、別のユーザとして実行
13956 するといったコマンドだ。
13957
13958    (訳注: 「別のユーザとして実行する」というのは、‘chroot’ の
13959 ‘--userspec’ オプションを指していると考えられなくもないが、 元々は ‘su’
13960 コマンドのことを言っていたのだと思う。 ‘su’ も以前はこの章で説明されてい
13961 たが、現在では coreutils に収録されていない。)
13962
13963 * Menu:
13964
13965 * chroot invocation::        ルート・ディレクトリを変更する。
13966 * env invocation::           環境変数を変更する。
13967 * nice invocation::          niceness を変更する。
13968 * nohup invocation::         ハングアップ・シグナルで終了しない。
13969 * stdbuf invocation::        標準ストリームのバッファリングを変更する。
13970 * timeout invocation::       タイムリミット付きで実行する。
13971
13972 \1f
13973 File: coreutils-ja.info,  Node: chroot invocation,  Next: env invocation,  Up: Modified command invocation
13974
13975 23.1 ‘chroot’: ルートディレクトリを変更して、コマンドを実行する
13976 ===============================================================
13977
13978 ‘chroot’ は、指定されたディレクトリをルートディレクトリにして、コマンド
13979 を実行する。 多くのシステムでは、この操作を行うことができるのはスーパー
13980 ユーザだけである。 (1)
13981
13982    書式:
13983
13984      chroot OPTION NEWROOT [COMMAND [ARGS]...]
13985      chroot OPTION
13986
13987    通常、ファイル名の検索は、ディレクトリ構造の根 (ルート、root)、すなわ
13988 ち ‘/’ を起点として行われる。‘chroot’ はこのルートを NEWROOT ディレクト
13989 リ (実在するディレクトリでなければならない) に変更し、 さらに、作業ディ
13990 レクトリを ‘/’ に変更して、最後に COMMAND を、ARGS の指定があれば ARGS を
13991 付けて実行する。 COMMAND が指定されていない場合、デフォルトのコマンドは
13992 、環境変数 ‘SHELL’ の値か、‘SHELL’ が設定されていなければ、‘/bin/sh’ で
13993 あり、 それが ‘-i’ オプションを付けて、呼び出される。 COMMAND は シェル
13994 の組み込みコマンドであってはならない (*note Special built-in
13995 utilities::)。
13996
13997    このプログラムでは以下のオプションが使用できる。参照: *note Common
13998 options::. オプションはオペランドの前に置かなければならない。
13999
14000 ‘--groups=GROUPS’
14001      このオプションを使えば、新しいプロセスが使用する補助 GROUPS を変更
14002      することができる。グループのリストの各項目 (名前でも ID 番号でもよ
14003      い) は、コンマで区切られていなければならない。 ‘--userspec’ オプシ
14004      ョンで自動的に行われる補助グループの照合をしないようにするには、
14005      ‘--groups=''’ を使用すればよい。
14006
14007 ‘--userspec=USER[:GROUP]’
14008      デフォルトでは、COMMAND は呼び出し側のプロセスと同じ資格情報を使っ
14009      て実行されるが、 このオプションを使えば、COMMAND を別の USER の資格
14010      で実行することができる。別の基本 GROUP を指定することも可能だ。
14011      USER が指定された場合、補助グループは、そのユーザについてシステムが
14012      設定しているリストと同じものになる。 ただし、‘--groups’ オプション
14013      によって置き換えられる場合は別だ。
14014
14015 ‘--skip-chdir’
14016      ルートディレクトリを NEWROOT に変更した後で (すなわち chroot 環境中
14017      で)、作業ディレクトリを ‘/’ に変更したくなかったら、このオプション
14018      を使えばよい。 このオプションが使用できるのは、NEWROOT が元の ‘/’ デ
14019      ィレクトリと同じときだけであり、従って、役に立つのは、 ‘--groups’ や
14020      "‘--userspec’ と一緒に使い、 元の作業ディレクトリに留まっていたい場
14021      合がほとんどである。
14022
14023    ‘--userspec’ や ‘--groups’ オプションによって行われるユーザ名やグルー
14024 プ名の照合は、 chroot 環境の外側と内側の両方で行われるが、chroot 環境の
14025 内側で成功した照合が優先される。 ユーザやグループの指定で ID 番号を使う
14026 つもりならば、数字の前に ‘+’ を付ければ、名前を ID 番号に還元するステッ
14027 プが行われないで済む。 *Note Disambiguating names and IDs::.
14028
14029    chroot を使う上でよくある問題を避けることができるように、 ちょっとし
14030 た情報をいくつか挙げておく。まず簡単なことから言うと、COMMAND は、静的に
14031 リンクしたバイナリを指すようにした方がよい。 もし、動的にリンクした実行
14032 ファイルを使用するのならば、 共有ライブラリが新しいルートディレクトリ以
14033 下の適切な場所に存在するように、 前もって準備しておく必要があるだろう。
14034
14035    たとえば、静的にリンクした ‘ls’ の実行ファイルを作成して、
14036 ‘/tmp/empty’ に置けば、root ユーザとして次のようなコマンドを実行すること
14037 ができる。
14038
14039      $ chroot /tmp/empty /ls -Rl /
14040
14041    出力はこんなふうになるだろう。
14042
14043      /:
14044      total 1023
14045      -rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
14046
14047    もし、動的にリンクした実行ファイル、たとえば ‘bash’ を使いたいならば
14048 、 まず ‘ldd bash’ を実行して、どんな共有オブジェクトファイルが必要かを
14049 調べることだ。 それから、‘bash’ 自体のバイナリをコピーするだけでなく、
14050 ‘ldd bash’ でリストされたファイルも、新しいルートディレクトリになるディ
14051 レクトリ以下のしかるべき場所にコピーしておく。 さらに、実行ファイルが何
14052 か他のファイルも必要としているなら (たとえば、データファイル、ステータス
14053 ファイル、デバイスファイルなど)、 それも適切な場所にコピーする。
14054
14055    ‘chroot’ がインストールされるのは、‘chroot’ 関数を持つシステムだけで
14056 ある。 従って、移植を考慮したスクリプトでは、‘chroot’ が存在することを当
14057 てにしない方がよい。
14058
14059    終了ステータス:
14060
14061      125: ‘chroot’ そのものの実行に失敗した。
14062      126: COMMAND は見つかったが、起動できなかった。
14063      127: COMMAND が見つからなかった。
14064      それ以外は、COMMAND の終了ステータス。
14065
14066    ---------- Footnotes ----------
14067
14068    (1) もっとも、システムによっては (たとえば、FreeBSD がそうだが)、 特
14069 定の一般ユーザが ‘chroot’ システムコールを使用できるように設定できるもの
14070 もある。 従って、そうしたユーザは ‘chroot’ コマンドを実行できるわけだ。
14071 また、Cygwin では、どんなユーザでも ‘chroot’ コマンドを実行できる。
14072 MS-Windows が chroot 関数をサポートしていないため、 内部で使用する関数が
14073 特権とは無関係だからである。 なお、NEWROOT が元の ‘/’ ディレクトリと同じ
14074 場合、‘chroot’ コマンドは ‘chroot’ システムコールを使わないで済まそうと
14075 する。 これは、非特権ユーザにもそうしたことが許されているシステムとの一
14076 貫性を保つためである。
14077
14078 \1f
14079 File: coreutils-ja.info,  Node: env invocation,  Next: nice invocation,  Prev: chroot invocation,  Up: Modified command invocation
14080
14081 23.2 ‘env’: 変更した環境でコマンドを実行する
14082 ============================================
14083
14084 ‘env’ は、環境を変更して、コマンドを実行する。
14085
14086    書式:
14087
14088      env [OPTION]... [NAME=VALUE]... [COMMAND [ARGS]...]
14089      env
14090
14091    ‘VARIABLE=VALUE’ という形のオペランドは、環境変数 VARIABLE の値を
14092 VALUE に設定する。VALUE は空っぽでも構わない (‘VARIABLE=’)。 変数の値を
14093 空に設定 (set) するのは、変数を破棄 (unset) するのとは別のことである。 こ
14094 うしたオペランドは、左から右へ評価されるので、二つのオペランドが同じ変数
14095 を対象にしている場合、前のものは無視される。
14096
14097    環境変数名は、空でもよいし、‘=’ と ASCII NUL 以外なら、どんな文字を含
14098 んでいても構わない。 とは言え、変数名は、アンダースコア、数字、ASCII 文
14099 字のみから構成し、 数字以外の文字で始めるようにした方が、賢明である。 そ
14100 れ以外の名前だと、シェルなどのアプリケーションがうまく動作しないからだ。
14101
14102    ‘=’ という文字を含まない最初のオペランドが、起動するプログラムであり
14103 、 環境変数 ‘PATH’ に従って、どこにあるかが検索される。 残っている引数が
14104 あれば、すべてそのプログラムに引数として渡される。 起動するプログラムは
14105 、シェルの組み込みコマンドであってはならない (*note Special built-in
14106 utilities::)。
14107
14108    ‘PATH’ に対する変更は、COMMAND のありかを検索する前に有効になる。 そ
14109 こで、‘PATH’ を短縮するときには、気をつけなければならない。 ‘PATH’ を未
14110 定義にしたり、‘/bin’ のような重要なディレクトリを外したりすると、変更前
14111 と同じ動作にならないかもしれないからだ。
14112
14113    めったにないことだが、プログラムの名前に ‘=’ という文字が含まれている
14114 場合、 それを変数の指定と区別する唯一の方法は、COMMAND として仲介的なコ
14115 マンドを使用し、 その ARGS として問題のあるプログラム名を渡すことである
14116 。 たとえば、‘./prog=’ が現在の ‘PATH’ 中に存在する実行ファイルだとしよ
14117 う。
14118
14119      env prog= true
14120        # 環境変数 prog を空に設定して 'true' を実行する。
14121      env ./prog= true
14122        # 環境変数 ./prog を空に設定して 'true' を実行する。
14123      env -- prog= true
14124        # 環境変数 prog を空に設定して 'true' を実行する。
14125      env sh -c '\prog= true'
14126        # 'true' を引数にして 'prog=' を実行する。
14127      env sh -c 'exec "$@"' sh prog= true
14128        # これも 'prog=' を実行する。
14129
14130    環境変数の設定の後にコマンド名が指定されていない場合は、生成された環
14131 境が表示される。 これは、COMMAND に ‘printenv’ を指定するのと同じことで
14132 ある。
14133
14134    以下に例をいくつか挙げる。‘env’ に渡される環境は、‘LOGNAME=rms’,
14135 ‘EDITOR=emacs’, ‘PATH=.:/gnubin:/hacks’ からなっているものとする。
14136
14137    • 現在の環境を出力する。
14138           $ env | LC_ALL=C sort
14139           EDITOR=emacs
14140           LOGNAME=rms
14141           PATH=.:/gnubin:/hacks
14142
14143    • 環境を削減して、‘foo’ を実行する。‘foo’ が見つからないといけないの
14144      で、 ‘PATH’ だけは元のまま残している。
14145           env - PATH="$PATH" foo
14146
14147    • ‘LOGNAME=rms’, ‘EDITOR=emacs’, ‘PATH=.:/gnubin:/hacks’ からなる環境
14148      で ‘foo’ を実行する。 ‘foo’ には、シェルの組み込みコマンドではなく
14149      、 ファイルシステム中で見つかった実行ファイルが必ず使用される。
14150           env foo
14151
14152    • ‘LOGNAME=foo’, ‘EDITOR=emacs’, ‘PATH=.:/gnubin:/hacks’,
14153      ‘DISPLAY=gnu:0’ からなる環境で、‘nemacs’ を実行する。
14154           env DISPLAY=gnu:0 LOGNAME=foo nemacs
14155
14156    • プログラム ‘/energy/--’ の実行を試みる (パスの検索でそれしか出てこ
14157      ないようにしている)。 ‘--’ というコマンドが存在する場合、環境は、
14158      ‘LOGNAME=rms’ と ‘PATH=/energy’ だけになり、引数には、‘e=mc2’,
14159      ‘bar’, ‘baz’ が使われる。
14160           env -u EDITOR PATH=/energy -- e=mc2 bar baz
14161
14162    このプログラムでは以下のオプションが使用できる。参照: *note Common
14163 options::. オプションはオペランドの前に置かなければならない。
14164
14165 ‘-0’
14166 ‘--null’
14167      各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオ
14168      プションを使用すると、出力するデータの途中に改行が現れる場合でも、
14169      他のプログラムがその出力を解析できるようになる。
14170
14171 ‘-u NAME’
14172 ‘--unset=NAME’
14173      変数 NAME が環境中にあれば、それを環境から削除する。
14174
14175 ‘-’
14176 ‘-i’
14177 ‘--ignore-environment’
14178      継承した環境を無視し、空っぽの環境から始める。
14179
14180    終了ステータス:
14181
14182      0:   COMMAND が指定されなかったので、環境を出力した。
14183      125: ‘env’ そのものの実行に失敗した。
14184      126: COMMAND は見つかったが、起動できなかった。
14185      127: COMMAND が見つからなかった。
14186      それ以外は、COMMAND の終了ステータス。
14187
14188 \1f
14189 File: coreutils-ja.info,  Node: nice invocation,  Next: nohup invocation,  Prev: env invocation,  Up: Modified command invocation
14190
14191 23.3 ‘nice’: niceness を変更して、コマンドを実行する
14192 ====================================================
14193
14194 ‘nice’ はプロセスの “niceness” を表示したり、niceness を変更してコマンド
14195 を実行したりする。 “niceness” は、プロセスがシステム中でどの程度優先的に
14196 スケジュールされるかに影響を及ぼす。 (訳注: niceness を「スケジューリン
14197 グ優先度」と訳さない理由については、 三つほど下のパラグラフを御覧いただ
14198 きたい。)
14199
14200    書式:
14201
14202      nice [OPTION]... [COMMAND [ARG]...]
14203
14204    引数を指定しないと、‘nice’ は現在の niceness を表示する。引数に
14205 COMMAND を指定した場合は、niceness を調整して、その COMMAND を実行する。
14206 デフォルトでは、niceness が 10 増加する。
14207
14208    niceness の値は、最小が −20 で、最大が 19 である (値が小さければ、プ
14209 ロセスの優先度が高くなり、使えるリソースも多くなるが、 その分、他のプロ
14210 セスの動作が遅くなる。また、値が大きければ、プロセスの優先度が低くなり、
14211 自分自身の動作は遅くなるが、実行中の他のプロセスの速度に与える影響は小さ
14212 くなる)。 システムによっては、niceness の値の範囲がもっと広いものもある
14213 し、 反対に、上下限の制限がもっときついものもある。サポートされている範
14214 囲を越えた niceness を指定すると、 サポートされている値の最小、または最
14215 大を使用しようとしているものと見なされる。
14216
14217    niceness をスケジューリング優先度 (scheduling priority) と混同しては
14218 ならない。 後者は、様々なスレッドをどういう序列で実行するかの予定を組む
14219 際に、 その序列をアプリケーション側に決めさせるものである。 優先度とは違
14220 って、niceness はスケジューラに対する単なるアドバイスにすぎず、 スケジュ
14221 ーラはそれを無視することができるのだ。また、用語について言うと、 POSIX は
14222 ‘nice’ の動作を “nice value” という用語で定義している。 この nice value
14223 は、ある niceness と 最小の niceness との間の負ではない差である。 ‘nice’
14224 コマンドは POSIX に準拠しているものの、 この文書やエラーメッセージでは、
14225 従来の習慣との親和性を考慮して、 “niceness” という言葉を使っている。
14226
14227    COMMAND は、シェルの組み込みコマンドであってはならない (*note Special
14228 built-in utilities::)。
14229
14230    シェルの組み込み機能の ‘nice’ やエイリアスのために、 ‘nice’ に何の修
14231 飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がこ
14232 こで述べているものとは違うことがあるかもしれない。 シェルによる干渉を避
14233 けるためには、‘env’ 経由で ‘nice’ を起動すればよい (すなわち、‘env nice
14234 ...’ のようにだ)。
14235
14236    注意: 現在動作中のプロセスの “niceness” を変更するには、‘renice’ コマ
14237 ンドを使う必要がある。
14238
14239    このプログラムでは、以下のオプションが使用できる。参照: *note Common
14240 options::. オプションはオペランドの前に置かなければならない。
14241
14242 ‘-n ADJUSTMENT’
14243 ‘--adjustment=ADJUSTMENT’
14244      コマンドの niceness を 10 ではなく、ADJUSTMENT 増加する。
14245      ADJUSTMENT が負の数の場合、ユーザがしかるべき特権を持っていなければ
14246      、 ‘nice’ は警告を発する。とは言え、警告を出すだけで、ADJUSTMENT と
14247      して 0 が指定されたかのように振る舞う。
14248
14249      互換性を考慮して、‘nice’ は ‘-ADJUSTMENT’ というオプションの古い書
14250      式もサポートしている。 だが、新しいスクリプトでは、‘-n ADJUSTMENT’
14251      の方を使うべきである。
14252
14253    ‘nice’ がインストールされるのは、 POSIX の ‘setpriority’ 関数を持って
14254 いるシステムだけである。 従って、移植を考慮したシステムでは、非 POSIX の
14255 プラットフォームに ‘nice’ コマンドがあることを当てにしない方がよい。
14256
14257    終了ステータス:
14258
14259      0:   COMMAND が指定されなかったので、niceness を出力した。
14260      125: ‘nice’ そのものの実行に失敗した。
14261      126: COMMAND が見つかったが、起動できなかった。
14262      127: COMMAND が見つからなかった。
14263      それ以外は、COMMAND の終了ステータス。
14264
14265    対話的ではないプログラムは、niceness を落として (訳注: すなわち、
14266 niceness の値を増やして) 実行すると、都合のよいことがある。
14267
14268      $ nice factor 4611686018427387903
14269
14270    ‘nice’ は、現在の niceness を表示するので、‘nice’ を通して ‘nice’ を
14271 起動すれば、それがどんな動作をするか、目の当たりに見ることができる。
14272
14273    デフォルトの動作は、niceness を ‘10’ 増加することである。
14274
14275      $ nice
14276      0
14277      $ nice nice
14278      10
14279      $ nice -n 10 nice
14280      10
14281
14282    ADJUSTMENT は、現在の niceness からいくら増減するかということである。
14283 次の例では、最初の ‘nice’ が、二番目の ‘nice’ を niceness 10 で実行し、
14284 二番目の ‘nice’ は、niceness をさらに 3 増やして、三番目の ‘nice’ を実行
14285 している。
14286
14287      $ nice nice -n 3 nice
14288      13
14289
14290    サポートされている範囲より大きい niceness を指定するのは、 サポートさ
14291 れている最大値を指定するのと同じことである。
14292
14293      $ nice -n 10000000000 nice
14294      19
14295
14296    特権ユーザだけが niceness の値を下げて、プロセスを実行できる。
14297
14298      $ nice -n -1 nice
14299      nice: cannot set niceness: Permission denied
14300      0
14301      $ sudo nice -n -1 nice
14302      -1
14303
14304 \1f
14305 File: coreutils-ja.info,  Node: nohup invocation,  Next: stdbuf invocation,  Prev: nice invocation,  Up: Modified command invocation
14306
14307 23.4 ‘nohup’: ハングアップ・シグナルで終了しないコマンドを実行する
14308 ==================================================================
14309
14310 ‘nohup’ を使って、COMMAND を実行すると、 指定されたコマンドがハングアッ
14311 プ・シグナルを無視するようになる。 従って、そのコマンドは、ユーザがログ
14312 アウトした後でも、バックグラウンドで実行を継続することができる。
14313
14314    書式:
14315
14316      nohup COMMAND [ARG]...
14317
14318    標準入力が端末の場合は、‘nohup’ から実行されているコマンドが端末を使
14319 用していると、端末で行われるセッションが誤解しないように、 標準入力をリ
14320 ダイレクトする。 さらに、標準入力の代わりになるファイルのファイル・ディ
14321 スクリプタを読み込み不可にする。 ‘nohup’ から実行されているコマンドが、
14322 誤って標準入力から読み込を行おうとした場合に、 エラーメッセージを出すこ
14323 とができるようにするためである。 このリダイレクションは GNU の拡張である
14324 。 GNU 以外のホストでも使うことを考えているプログラムでは、GNU の拡張を
14325 当てにせず、 ‘nohup COMMAND [ARG]... 0>/dev/null’ を使えばよい。
14326
14327    標準出力が端末の場合、コマンドの標準出力は、(訳注: カレントディレクト
14328 リの) ‘nohup.out’ というファイルに追加されて行く。 そのファイルに書き込
14329 めない場合は、‘$HOME/nohup.out’ に追記されることになる。そのファイルにも
14330 書き込めない場合は、コマンドの実行が行われない。 ‘nohup’ によって作成さ
14331 れるのが ‘nohup.out’ であれ、 ‘$HOME/nohup.out’ であれ、それは、ファイル
14332 の所有者にのみ読み書き可能なものになる。 現在の umask の設定の影響は受け
14333 ない。
14334
14335    標準エラーが端末の場合、コマンドの標準エラー出力は、基本的には標準出
14336 力 (リダイレクトされているかもしれない) と同じファイル・ディスクリプタに
14337 リダイレクトされる。 ただし、標準出力がクローズされている場合には、標準
14338 エラーの端末への出力は、 リダイレクトされることなく、直接 ‘nohup.out’ や
14339 ‘$HOME/nohup.out’ というファイルに追加される。どちらのファイルが使用され
14340 るかは、上述のとおりである。
14341
14342    コマンドの出力を ‘nohup.out’ 以外のファイルに書き込みたければ、 リダ
14343 イレクトすればよい。たとえば、‘make’ の出力を ‘make.log’ に書き込みたか
14344 ったら、次のようにする。
14345
14346      nohup make > make.log
14347
14348    ‘nohup’ は、実行するコマンドを自動的にバックグラウンドに送ることをし
14349 ない。 そこで、ユーザは、コマンドラインの末尾に ‘&’ を付けることで、 明
14350 示的にそれを行わなければならない。また、‘nohup’ は、COMMAND の niceness
14351 を変更しない。niceness を変更したかったら、‘nice’ を使って、‘nohup nice
14352 COMMAND’ のように実行すればよい。
14353
14354    COMMAND は、シェルの組み込みコマンドであってはならない (*note Special
14355 built-in utilities::)。
14356
14357    指定できるオプションは、‘--help’ と ‘--version’ だけである。 *Note
14358 Common options::.  オプションはオペランドの前に置かなければならない。
14359
14360    終了ステータス:
14361
14362      125: ‘POSIXLY_CORRECT’ が設定されていない場合に、‘nohup’ そのものの
14363            実行に失敗した。
14364      126: COMMAND は見つかったが、起動できなかった。
14365      127: COMMAND が見つからなかった。
14366      それ以外の場合は、COMMAND の終了ステータス。
14367
14368    ‘POSIXLY_CORRECT’ が設定されている場合は、‘nohup’ そのものが実行に失
14369 敗したときの終了ステータスは、125 ではなく 127 になる。
14370
14371 \1f
14372 File: coreutils-ja.info,  Node: stdbuf invocation,  Next: timeout invocation,  Prev: nohup invocation,  Up: Modified command invocation
14373
14374 23.5 ‘stdbuf’: 入出力ストリームのバッファリングを変更して、コマンドを実行する
14375 =============================================================================
14376
14377 ‘stdbuf’ を使用すると、プログラムと結びついている 3 種類の標準入出力スト
14378 リームに対して、そのバッファリング動作を変更することができる。
14379
14380    書式:
14381
14382      stdbuf OPTION... COMMAND
14383
14384    COMMAND は、次の条件を満たすプログラムの名前で始まっていなければなら
14385 ない。
14386   1. 入出力に ISO C ‘FILE’ ストリームを使用している (注意: プログラム
14387      ‘dd’ や ‘cat’ は、これを使用していない)。
14388
14389   2. 自分で標準ストリームのバッファリングを調整していない (注意: プログ
14390      ラム ‘tee’ は、この部類に入らない)。
14391
14392    後に続く引数があれば、COMMAND に引数として渡される。
14393
14394    このプログラムでは以下のオプションが使用できる。参照: *note Common
14395 options::.
14396
14397 ‘-i MODE’
14398 ‘--input=MODE’
14399      標準入力ストリームのバッファリングを調整する。
14400
14401 ‘-o MODE’
14402 ‘--output=MODE’
14403      標準出力ストリームのバッファリングを調整する。
14404
14405 ‘-e MODE’
14406 ‘--error=MODE’
14407      標準エラーストリームのバッファリングを調整する。
14408
14409    MODE には、以下のものを指定できる。
14410
14411 ‘L’
14412      ストリームを行単位のバッファ・モードにする。このモードでは、改行が
14413      出力されることになるか、 あるいは、端末デバイスに結びついているスト
14414      リームから入力が読み込まれるまで、データを溜めておく。 このオプショ
14415      ンは、標準入力に対しては無効である。
14416
14417 ‘0’
14418      選択したストリームのバッファリングを無効にする。 このモードでは、デ
14419      ータは即座に出力される。また、要求された量のデータしか入力から読み
14420      込まない。 入力と出力で動作が違うことに気をつけていただきたい。 な
14421      お、入力のバッファリングを無効にしても、ストリーム入力関数の応答性
14422      やブロッキング動作に影響することはない。 たとえば、‘fread’ は、要求
14423      した量より少ないデータを、下層で動いている ‘read’ が返してきても、
14424      ‘EOF’ が来るか、エラーが起きるまで、 やはりブロッキングを行うのであ
14425      る。
14426
14427 ‘SIZE’
14428      バッファ一杯モード (fully buffered mode) で使用するバッファのサイズ
14429      を指定する。 SIZE は、整数であり、 以下に挙げるような何倍かを示す接
14430      尾辞を後ろに付けることもできる。接尾辞だけ指定してもよい (訳注: そ
14431      の場合は、1 が前にあるものと見なされる)。
14432           ‘KB’ =>           1000 (KiloBytes)
14433           ‘K’  =>           1024 (KibiBytes)
14434           ‘MB’ =>      1000*1000 (MegaBytes)
14435           ‘M’  =>      1024*1024 (MebiBytes)
14436           ‘GB’ => 1000*1000*1000 (GigaBytes)
14437           ‘G’  => 1024*1024*1024 (GibiBytes)
14438      ‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。
14439
14440    ‘stdbuf’ がインストールされるのは、Executable and Linkable Format
14441 (ELF) を使用し、‘constructor’ アトリビュートをサポートしているプラットフ
14442 ォームだけである。 従って、移植を考慮したスクリプトでは、‘stdbuf’ が存在
14443 することを当てにしない方がよい。
14444
14445    終了ステータス:
14446
14447      125: ‘stdbuf’ そのものの実行に失敗した。
14448      126: COMMAND は見つかったが、起動できなかった。
14449      127: COMMAND が見つからなかった。
14450      それ以外は、COMMAND の終了ステータス。
14451
14452 \1f
14453 File: coreutils-ja.info,  Node: timeout invocation,  Prev: stdbuf invocation,  Up: Modified command invocation
14454
14455 23.6 ‘timeout’: タイムリミット付きでコマンドを実行する
14456 ======================================================
14457
14458 ‘timeout’ は渡されたコマンドを実行し、 指定された時間が経過してもまだ実
14459 行が続いていたら、そのコマンドを終了させる。
14460
14461    書式:
14462
14463      timeout [OPTION] DURATION COMMAND [ARG]...
14464
14465    COMMAND は、シェルの組み込みコマンドであってはならない (*note Special
14466 built-in utilities::)。
14467
14468    このプログラムでは以下のオプションが使用できる。参照: *note Common
14469 options::. オプションはオペランドの前に置かなければならない。
14470
14471 ‘--preserve-status’
14472      タイムアウトしたときに、タイムアウトであることを示す ‘timeout’ コマ
14473      ンドの終了ステータスではなく、‘timeout’ が管理している COMMAND の終
14474      了ステータスを返す。このオプションは、管理される COMMAND が無期限の
14475      続行時間をサポートしている場合に役に立つ。
14476
14477 ‘--foreground’
14478      独立したバックグラウンドのプログラム・グループを作成しない。 その結
14479      果、‘timeout’ に管理される COMMAND が、フォアグラウンドの TTY を通
14480      常どおり使用できるようになる。 対話的シェルから直接実行されないコマ
14481      ンドの時間制限をきちんと行うには (訳注: 言い換えれば、‘timeout’ コ
14482      マンドをシェルスクリプト中で使用する場合には)、 この動作が必要にな
14483      ることがあり、次の二つの場合がそれに当たる。
14484        1. COMMAND が対話的であり、たとえば端末からの読み込みが必要な場合
14485           。
14486        2. 端末から直接 COMMAND にシグナルを送ることができるようにしたい
14487           場合。 (たとえば、Ctrl-C を送るとか)。
14488
14489      気をつけていただきたいが、この動作モードでは、COMMAND の子プロセス
14490      は、いかなるものもタイムアウトすることがない。 また、SIGCONT シグナ
14491      ルが COMMAND に送られることもない。 フォアグラウンドプロセスでは、
14492      そういったことは普通必要がないからであり、 また、(たとえば、GDB の
14493      ような) それ自身が他のプログラムを監視するモニターであるプログラム
14494      では、 断続的なシグナル送出を起こしかねないからである。
14495
14496 ‘-k DURATION’
14497 ‘--kill-after=DURATION’
14498      ここで指定した DURATION の経過後に、改めて ‘KILL’ シグナルを送り付
14499      けて、 監視対象の COMMAND を確実に終了させる。 このオプションを付け
14500      ないと、選択したシグナルに COMMAND を終了させる力がなかった場合に、
14501      ‘timeout’ は COMMAND を殺すことができない。
14502
14503 ‘-s SIGNAL’
14504 ‘--signal=SIGNAL’
14505      制限時間が来たとき、デフォルトの ‘TERM’ シグナルではなく、指定した
14506      SIGNAL を COMMAND に送る。SIGNAL は ‘HUP’ のような名前でもよく、番
14507      号でもよい。*Note Signal specifications::.
14508
14509    DURATION は浮動小数点数であり、後ろに単位を付けることもできる。
14510      ‘s’ 何秒 (デフォルト)
14511      ‘m’ 何分
14512      ‘h’ 何時間
14513      ‘d’ 何日
14514    DURATION が 0 だと、対象となるコマンドが時間切れなしになる。 実際の制
14515 限時間は、システムの制約を受けることに注意していただきたい。 秒以下の制
14516 限時間を指定するときは、とりわけそれを考慮に入れるべきである。
14517
14518    終了ステータス:
14519
14520      124: COMMAND がタイムアウトした。
14521      125: ‘timeout’ そのものの実行に失敗した。
14522      126: COMMAND は見つかったが、起動できなかった。
14523      127: COMMAND が見つからなかった。
14524      137: COMMAND に KILL(9) シグナルを送った (128+9)
14525      それ以外は、COMMAND の終了ステータス。
14526
14527 \1f
14528 File: coreutils-ja.info,  Node: Process control,  Next: Delaying,  Prev: Modified command invocation,  Up: Top
14529
14530 24 プロセス制御
14531 ***************
14532
14533 * Menu:
14534
14535 * kill invocation::          プロセスにシグナルを送る。
14536
14537 \1f
14538 File: coreutils-ja.info,  Node: kill invocation,  Up: Process control
14539
14540 24.1 ‘kill’: プロセスにシグナルを送る
14541 =====================================
14542
14543 ‘kill’ コマンドは、プロセスにシグナルを送る。 シグナルを送られたプロセス
14544 は、終了するか、 あるいは、シグナルを受け取った時点で他の何らかの形で反
14545 応する。 また、‘kill’ は、シグナルに関する情報を一覧表示する。
14546
14547    書式:
14548
14549      kill [-s SIGNAL | --signal SIGNAL | -SIGNAL] PID...
14550      kill [-l | --list | -t | --table] [SIGNAL]...
14551
14552    シェルの組み込み機能の ‘kill’ やエイリアスのために、 ‘kill’ に何の修
14553 飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がこ
14554 こで述べているものとは違うことがあるかもしれない。 シェルによる干渉を避
14555 けるためには、‘env’ 経由で ‘kill’ を起動すればよい (すなわち、‘env kill
14556 ...’ のようにだ)。
14557
14558    ‘kill’ コマンドの最初の書式では、すべての PID 引数に対してシグナルが
14559 送られる。 シグナルが指定されていない場合に送られるデフォルトのシグナル
14560 は、‘TERM’ である。 ‘0’ という特別なシグナル番号は、有効なシグナルを表し
14561 ていないが、 引数 PID が指しているプロセスに対してシグナルを送ることが可
14562 能かどうかを、調べるために使うことができる。
14563
14564    PID が正の数なら、シグナルはプロセス ID が PID のプロセスに送られる。
14565 PID が 0 なら、シグナルはカレントプロセスのプロセスグループに属するすべ
14566 てのプロセスに送られる。 PID が −1 の場合、シグナルが送られるのは、 ユー
14567 ザがシグナルを送る権限を持っているすべてのプロセスである。 PID が −1 よ
14568 り小さい場合は、PID の絶対値に等しいプロセスグループに属するすべてのプロ
14569 セスにシグナルが送られる。
14570
14571    PID が正の数ではない場合、システムプロセスに属するプロセス (システム
14572 によって様々である) は、シグナルが送られるプロセスのリストから除外される
14573
14574
14575    最初の PID 引数として負の PID を使用したい場合は、その前に ‘--’ オプ
14576 ションを置くべきである。 とは言え、‘kill -SIGNAL -PID’ という書式を使う
14577 場合は、 ‘--’ は必要がない。これは、POSIX に対する一般的な拡張である。 そ
14578 こで、次に挙げるコマンドは等価になる。
14579
14580      kill -15 -1
14581      kill -TERM -1
14582      kill -s TERM -- -1
14583      kill -- -1
14584
14585    最初の書式の ‘kill’ コマンドは、すべての PID 引数が、 シグナルが送ら
14586 れたプロセスをそれぞれ少なくとも一つは指している場合に、 成功のステータ
14587 スで終了する。
14588
14589    ‘kill’ コマンドの二番目の書式では、シグナルに関する情報が表示される。
14590 ‘-l’ または ‘--list’、あるいは、‘-t’ または ‘--table’ オプションの指定は
14591 必須である。引数 SIGNAL を一つも指定しないと、 サポートされているすべて
14592 のシグナルがリストされる。‘-l’ や ‘--list’ の出力は、シグナル名のリスト
14593 であり、1 行に一つづつ表示される。 ただし、引数 SIGNAL がすでにシグナル
14594 名である場合は、名前ではなく、シグナル番号の表示になる。 ‘-t’ や
14595 ‘--table’ の出力は、シグナル番号、シグナル名、その説明からなる表である。
14596 この書式の ‘kill’ コマンドは、引数として指定されたすべての SIGNAL が有効
14597 なものであり、出力エラーがなかったとき、成功のステータスで終了する。
14598
14599    ‘kill’ コマンドでは、‘--help’ や ‘--version’ オプションも使用できる。
14600 *Note Common options::.
14601
14602    SIGNAL の指定には、‘HUP’ のようなシグナル名や、‘1’のようなシグナル番
14603 号、 それに、シグナルによって終了させられるときのプロセスの終了ステータ
14604 スを使うことができる (訳注: 最後のものは、GNU coreutils の ‘kill’ コマン
14605 ドでは使用できるが、シェルの組み込みコマンドのような、他の系統の ‘kill’
14606 では使えないかもしれない)。 シグナル名は、標準的な形式でも、頭に ‘SIG’ を
14607 付けた形式でも構わない。 大文字小文字はどちらを使ってもよいが、‘-SIGNAL’
14608 という形式のオプションの場合は例外で、大文字を使わなければならない。 小
14609 文字を使うと、他のオプションとまぎらわしいからである。 サポートしている
14610 シグナル名とシグナル番号については、「2.5 シグナルの指定」を参照していた
14611 だきたい。 *Note Signal specifications::.
14612
14613 \1f
14614 File: coreutils-ja.info,  Node: Delaying,  Next: Numeric operations,  Prev: Process control,  Up: Top
14615
14616 25 一時停止
14617 ***********
14618
14619 * Menu:
14620
14621 * sleep invocation::         指定された時間、停止する。
14622
14623 \1f
14624 File: coreutils-ja.info,  Node: sleep invocation,  Up: Delaying
14625
14626 25.1 ‘sleep’: 指定された時間、停止する
14627 ======================================
14628
14629 ‘sleep’ は、コマンドラインで引数として指定された値を合計した時間だけ停止
14630 する。
14631
14632    書式:
14633
14634      sleep NUMBER[smhd]...
14635
14636    各引数は数値であり、後ろに単位を付けてもよい。デフォルトの単位は秒で
14637 ある。 単位には、以下のものが指定できる。
14638
14639 ‘s’
14640      秒
14641 ‘m’
14642      分
14643 ‘h’
14644      時
14645 ‘d’
14646      日
14647
14648    ‘sleep’ の従来の実装では、NUMBER は整数でなければならず、 引数は接尾
14649 辞なしのものが 1 個しか認められていなかった。それに対して GNU の ‘sleep’
14650 では、任意の浮動小数点数を複数個指定できる。 *Note Floating point::.
14651
14652    オプションは、‘--help’ と ‘--version’ だけである。 *Note Common
14653 options::.
14654
14655    シェルの組み込み機能の ‘sleep’ やエイリアスのために、 ‘sleep’ に何の
14656 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作が
14657 ここで述べているものとは違うことがあるかもしれない。 シェルによる干渉を
14658 避けるためには、‘env’ 経由で ‘sleep’ を起動すればよい (すなわち、‘env
14659 sleep ...’ のようにだ)。
14660
14661    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14662
14663 \1f
14664 File: coreutils-ja.info,  Node: Numeric operations,  Next: File permissions,  Prev: Delaying,  Up: Top
14665
14666 26 数値の操作
14667 *************
14668
14669 以下のプログラムは、数に関係した作業をする。
14670
14671 * Menu:
14672
14673 * factor invocation::        素因数を表示する。
14674 * numfmt invocation::        数値を整形し直す。
14675 * seq invocation::           連続する数を表示する。
14676
14677 \1f
14678 File: coreutils-ja.info,  Node: factor invocation,  Next: numfmt invocation,  Up: Numeric operations
14679
14680 26.1 ‘factor’: 素因数を表示する
14681 ===============================
14682
14683 ‘factor’ は、素因数を表示する。
14684
14685    書式:
14686
14687      factor [NUMBER]...
14688      factor OPTION
14689
14690    NUMBER がコマンドラインで指定されていない場合、‘factor’ は標準入力か
14691 ら数値を読み込む。 このとき、改行、タブ、空白で区切って複数の数値を入力
14692 することができる。
14693
14694    ‘factor’ コマンドで使えるオプションは、いくつもない。
14695
14696 ‘--help’
14697      簡単なヘルプメッセージを標準出力に表示し、それ以上の処理をせずに終
14698      了する。
14699
14700 ‘--version’
14701      プログラムのバージョンを標準出力に表示し、それ以上の処理をせずに終
14702      了する。
14703
14704    メルセンヌ素数の 8 番目と 9 番目の積を素因数に分解するには、2.2 GHz
14705 Athlon のシステムで、30 ミリセコンドの CPU 時間を要する。
14706
14707      M8=$(echo 2^31-1|bc)
14708      M9=$(echo 2^61-1|bc)
14709      n=$(echo "$M8 * $M9" | bc)
14710      /usr/bin/time -f %U factor $n
14711      4951760154835678088235319297: 2147483647 2305843009213693951
14712      0.03
14713
14714    同様に、8 番目のフェルマー数、2^{256}+1 では、同じマシンで約 20 秒か
14715 かる。
14716
14717    大きな数の素因数分解は、そもそも大変な作業である。‘factor’ が使用して
14718 いる Pollard-Brent rho アルゴリズムは、比較的小さな因数を持つ数値に対し
14719 てとりわけ効率がよい。 もし、小さな因数を持たない大きな数値 (たとえば、
14720 二つの大きな素数の積からなる数値) の素因数分解をなさりたいのなら、他の方
14721 法の方がずっとすぐれている。
14722
14723    ‘factor’ が GNU MP を使用せずにビルドされている場合は、 単精度の算術
14724 しか利用できない。従って、大きな数値 (一般には 2^{128} 以上) には対応し
14725 ていない。単精度用のコードが使用しているアルゴリズムは、 比較的小さな数
14726 値を素因数に分解するためのものなのである。
14727
14728    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14729
14730 \1f
14731 File: coreutils-ja.info,  Node: numfmt invocation,  Next: seq invocation,  Prev: factor invocation,  Up: Numeric operations
14732
14733 26.2 ‘numfmt’: 数値を整形し直す
14734 ===============================
14735
14736 ‘numfmt’ はさまざまな表記の数値を読み込んで、それを要求された形に整形し
14737 直す。 一番よく使うのは、数値を人間が読みやすい形に変換する場合や、 その
14738 逆を行う場合である (たとえば、‘4G’ ↦ ‘4,000,000,000’)。
14739
14740      numfmt [OPTION]... [NUMBER]
14741
14742    ‘numfmt’ は、コマンドラインで与えられた各 NUMBER を、 指定されたオプ
14743 ション (以下の節を参照) に従って変換する。 NUMBER の指定がない場合は、標
14744 準入力から数値を読み込む。 また、‘numfmt’ は、入力行中の特定のフィールド
14745 から数値を取り出すこともできる。 その場合、列が揃うようにパディング (訳
14746 注: フィールドの空き埋め) が行われていれば、 それも適切に維持する。
14747
14748    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14749
14750    終了ステータスについては追加情報がある。‘--invalid’ をご覧になってい
14751 ただきたい。
14752
14753 * Menu:
14754
14755 * General options in numfmt::  一般オプション
14756 * Possible UNITs::             使用できる UNIT
14757 * Examples of using numfmt::   numfmt の使用例
14758
14759 \1f
14760 File: coreutils-ja.info,  Node: General options in numfmt,  Next: Possible UNITs,  Up: numfmt invocation
14761
14762 26.2.1 一般オプション
14763 ---------------------
14764
14765 このプログラムでは以下のオプションが使用できる。参照: *note Common
14766 options::.
14767
14768 ‘--debug’
14769      間違えた使い方をしている疑いがあるとき、それについて警告メッセージ
14770      を (標準エラーに) 表示する。
14771
14772 ‘-d D’
14773 ‘--delimiter=D’
14774      文字 D を入力フィールドの区切りとして使用する (デフォルトはホワイト
14775      スペース)。 区切りにデフォルト以外の文字を使うと、自動的なパディン
14776      グが行われなくなるのに注意していただきたい。
14777
14778 ‘--field=FIELDS’
14779      FIELD 番目の入力フィールドの数値を変換する (FIELD のデフォルトは
14780      1)。 FIELDS では、‘cut’ と同じような範囲指定が使える。
14781
14782           N    N 番目のフィールド、1 から数える
14783           N-   N 番目のフィールドから行末まで
14784           N-M  N 番目から M 番目のフィールドまで (両端を含む)
14785           -M   行頭から M 番目のフィールドまで (両端を含む)
14786           -    すべてのフィールド
14787
14788 ‘--format=FORMAT’
14789      浮動小数点数を表す printf 形式の FORMAT 文字列を出力の整形に使用す
14790      る。 文字列 FORMAT には、1 個の ‘%f’ 変換指定子が含まれていなければ
14791      ならない。 なお、そうしたければ、‘'’, ‘-’, ‘0’ といった修飾子や、 フ
14792      ィールド幅修飾子 (訳注: 数値)、精度修飾子を ‘%f’ に付けることもでき
14793      る。 ‘'’ 修飾子は ‘--grouping’ オプションを有効にし、‘-’ 修飾子は
14794      ‘--padding’ オプションを左詰めで有効に、フィールド幅修飾子は
14795      ‘--padding’ オプションを右詰めで有効にする (訳注: ‘-’ 修飾子は、 数
14796      値であるフィールド幅修飾子と併せて用いなければならない)。 ‘0’ フィ
14797      ールド幅修飾子を使うと (‘-’ も同時に指定されていなければ)、 指定さ
14798      れた幅になるまで数値の前に 0 を付けることになる。 ‘%.1f’ のような精
14799      度指定は、入力データから引き出される精度や、‘--to’ オプションを使用
14800      したときの、数値の大きさや桁数の自動調整 (auto-scaling) によって決
14801      められた精度を上書きする。
14802
14803 ‘--from=UNIT’
14804      入力された数値の大きさや桁数を UNIT に従って自動調整 (auto-scaling)
14805      する (訳注: 一例を挙げると、入力数値が ‘1K’ だったとき、‘--from=si’
14806      が指定されていれば 1000 に変換し、‘--from=iec’ が指定されていれば
14807      1024 に変換する)。UNIT については、次節「使用できる UNIT」を参照し
14808      ていただきたい。 デフォルトでは数値の大きさや桁数の調節を行わない。
14809      それはまた、入力数値に接尾辞 (たとえば、‘M’, ‘G’ など) が付いている
14810      と、エラーになるということでもある。
14811
14812 ‘--from-unit=N’
14813      入力の 1 単位の大きさを (すなわち、デフォルトの 1 に代えて使う大き
14814      さを) 指定する。入力する数値の 1 単位の大きさが、デフォルトの 1 以
14815      外の場合に、このオプションを使用するわけだ (たとえば、入力する数値
14816      の ‘10’ が、1 単位 512 バイトの 10 単位を表している場合には、
14817      ‘--from-unit=512’ を使用する)。 単位となる数値に接尾辞を付けると、
14818      ‘--from=auto’ の場合と同様に処理される。
14819
14820 ‘--grouping’
14821      現在のロケールの桁区切りルールに従って、出力する数値を数桁ごとに区
14822      切る (たとえば、3 桁ごとの区切り記号は、たいてい ‘.’ (ドット) か
14823      ‘,’ (コンマ) である)。ロケールが ‘POSIX/C’ の場合は、このオプション
14824      に効果はない。
14825
14826 ‘--header[=N]’
14827      最初の N (デフォルトは 1) 行を、いかなる変換もせずに出力する。
14828
14829 ‘--invalid=MODE’
14830      入力エラーに出会ったときのデフォルトの動作は、ステータスコード 2 で
14831      即座に終了することである。 ‘--invalid=‘abort’’ は、このデフォルトの
14832      動作を明示的に指定することになる。 MODE に ‘fail’ を指定すると、 変
14833      換エラーがあるごとに警告メッセージを表示して、ステータス 2 で終了す
14834      る。 MODE が ‘warn’ の場合は、変換エラーがあっても、ステータス 0 で
14835      終了する。MODE が ‘ignore’ の場合は、ステータス 0 で終了するだけで
14836      なく、診断メッセージを出すことすらしない。
14837
14838 ‘--padding=N’
14839      出力する数値が N 字分を占めるように、スペースを加えることでパディン
14840      グを行う。 N が正の数の場合は、数値が右詰めになり、負の数の場合は、
14841      数値が左詰めになる。 デフォルトでは、数値は、入力行の幅に基づいて
14842      (訳注: 詳しく言うと、入力各行の変換する数値のあるフィールドが固定幅
14843      の場合、 その幅を使用して) 自動的に揃えられる (ただし、それが行われ
14844      るのは、フィールドの区切り文字がデフォルトの場合だけである)。
14845
14846 ‘--round=METHOD’
14847      数値の表現を変換するときに、METHOD に従って、数値を丸める。METHOD に
14848      は、‘up’, ‘down’, ‘from-zero’ (デフォルト), ‘towards-zero’,
14849      ‘nearest’ が使用できる。(訳注: ‘up’ は切り上げ、‘down’ は切り下げ、
14850      ‘from-zero’ はゼロから離れる方向へ、‘towards-zero’ はゼロに近づく方
14851      向へ、 ‘nearest’ は四捨五入である。)
14852
14853 ‘--suffix=SUFFIX’
14854      出力する数値に ‘SUFFIX’ を付ける。また、入力する数値に ‘SUFFIX’ が
14855      付いていても、エラーにしない。
14856
14857 ‘--to=UNIT’
14858      出力する数値の大きさや桁数を UNIT に従って自動調整する。 UNIT につ
14859      いては、次節「使用できる UNIT」を参照していただきたい。 デフォルト
14860      では、数値の大きさや桁数の調節をしないので、 数値を構成するすべての
14861      数字が表示されることになる。
14862
14863 ‘--to-unit=N’
14864      出力の 1 単位の大きさを (すなわち、デフォルトの 1 に代えて使う大き
14865      さを) 指定する。出力する数値の 1 単位の大きさが、デフォルトの 1 以
14866      外の場合に、このオプションを使用するわけだ (たとえば、1 ブロック
14867      1KB のブロック数で ‘4,000,000’ バイトを表現するには、 ‘--to=si
14868      --to-unit=1000’ が使用できる)。 単位となる数値に接尾辞を付けると、
14869      ‘--from=auto’ の場合と同様に処理される。
14870
14871 ‘-z’
14872 ‘--zero-terminated’
14873      項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 す
14874      なわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目
14875      の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find
14876      -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがあ
14877      る。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文
14878      字を含んでいる場合でも) きちんと確実に処理するために、 同様なことを
14879      しているのである。 ‘-z’ オプションを使用した場合、改行文字はフィー
14880      ルド・セパレータ扱いになる。
14881
14882 \1f
14883 File: coreutils-ja.info,  Node: Possible UNITs,  Next: Examples of using numfmt,  Prev: General options in numfmt,  Up: numfmt invocation
14884
14885 26.2.2 使用できる UNIT
14886 ----------------------
14887
14888 ‘--from=UNIT’ や ‘--to=UNIT’ で指定する UNIT には、 次のものを選択するこ
14889 とができる。(訳注: UNIT の名前は、大文字ではなく、si, iec などの小文字で
14890 指定すること。)
14891
14892 NONE
14893      数値の大きさや桁数の調整を行わない。入力する数値には、いかなる接尾
14894      辞も付けることができない。 従って、数値の直後に文字が続くとエラーに
14895      なる。 出力する数値については、その数値を構成するすべての数字を表示
14896      する。
14897
14898 SI
14899      国際単位系 (International System of Units (SI)) の規格に従って、数
14900      値の大きさや桁数を自動調整する。 入力する数値には、以下の接尾辞の一
14901      つが使用できる。 出力する数値については、1000 以上の値は丸められて
14902      、以下の接尾辞の一つを付けて表示される。
14903
14904           ‘K’  =>  1000^1 = 10^3 (Kilo)
14905           ‘M’  =>  1000^2 = 10^6 (Mega)
14906           ‘G’  =>  1000^3 = 10^9 (Giga)
14907           ‘T’  =>  1000^4 = 10^{12} (Tera)
14908           ‘P’  =>  1000^5 = 10^{15} (Peta)
14909           ‘E’  =>  1000^6 = 10^{18} (Exa)
14910           ‘Z’  =>  1000^7 = 10^{21} (Zetta)
14911           ‘Y’  =>  1000^8 = 10^{24} (Yotta)
14912
14913 IEC
14914      International Electrotechnical Commission (IEC) の規格に従って、数
14915      値の大きさや桁数を自動調整する。 入力する数値では、以下の接尾辞の一
14916      つが使用できる。 出力する数値については、1024 以上の値は丸められて
14917      、以下の接尾辞の一つを付けて表示される。
14918
14919           ‘K’  =>  1024^1 = 2^{10} (Kibi)
14920           ‘M’  =>  1024^2 = 2^{20} (Mebi)
14921           ‘G’  =>  1024^3 = 2^{30} (Gibi)
14922           ‘T’  =>  1024^4 = 2^{40} (Tebi)
14923           ‘P’  =>  1024^5 = 2^{50} (Pebi)
14924           ‘E’  =>  1024^6 = 2^{60} (Exbi)
14925           ‘Z’  =>  1024^7 = 2^{70} (Zebi)
14926           ‘Y’  =>  1024^8 = 2^{80} (Yobi)
14927
14928      ‘iec’ を選択すると、接尾辞に (‘G’ など) 1 文字の記号が使用されるこ
14929      とになるが、これは規格に完全にかなってるとは言えない。 IEC の規格で
14930      は (‘Gi’ など) 2 字の記号を推奨しているからだ。 しかし、実際の使用
14931      では、1 文字の表記法が普通に使われている。 ‘iec-i’ を指定した場合と
14932      比較していただきたい。
14933
14934 IEC-I
14935      International Electrotechnical Commission (IEC) の規格に従って、数
14936      値の大きさや桁数を自動調整する。 入力する数値では、以下の接尾辞の一
14937      つが使用できる。 出力する数値については、1024 以上の値は丸められて
14938      、以下の接尾辞の一つを付けて表示される。
14939
14940           ‘Ki’  =>  1024^1 = 2^{10} (Kibi)
14941           ‘Mi’  =>  1024^2 = 2^{20} (Mebi)
14942           ‘Gi’  =>  1024^3 = 2^{30} (Gibi)
14943           ‘Ti’  =>  1024^4 = 2^{40} (Tebi)
14944           ‘Pi’  =>  1024^5 = 2^{50} (Pebi)
14945           ‘Ei’  =>  1024^6 = 2^{60} (Exbi)
14946           ‘Zi’  =>  1024^7 = 2^{70} (Zebi)
14947           ‘Yi’  =>  1024^8 = 2^{80} (Yobi)
14948
14949      ‘iec-i’ を選択すると、接尾辞に (‘Gi’ など) 2 文字の記号が使用される
14950      ことになる。これは、IEC の規格が推奨しているとおりだが、 実際の使用
14951      では、必ずしもよく使われているわけではない。‘iec’ を指定した場合と
14952      、比較していただきたい。
14953
14954 AUTO
14955      ‘auto’ は ‘--from’ でしか使えない。これを選んだ場合、‘K’,‘M’,‘G’,
14956      ‘T’,‘P’,‘E’,‘Z’,‘Y’ といった接尾辞が付いていれば、 数値は SI の値と
14957      見なされる。接尾辞が ‘Ki’,‘Mi’,‘Gi’,‘Ti’,‘Pi’,‘Ei’,‘Zi’,‘Yi’ などの
14958      場合は、 数値は IEC の値と見なされることになる。
14959
14960 \1f
14961 File: coreutils-ja.info,  Node: Examples of using numfmt,  Prev: Possible UNITs,  Up: numfmt invocation
14962
14963 26.2.3 ‘nunfmt’ の使用例
14964 ------------------------
14965
14966 1 個の数値を人間に読みやすい形に変換する (あるいは、その逆を行う)。
14967      $ numfmt --to=si 500000
14968      500K
14969
14970      $ numfmt --to=iec 500000
14971      489K
14972
14973      $ numfmt --to=iec-i 500000
14974      489Ki
14975
14976      $ numfmt --from=si 1M
14977      1000000
14978
14979      $ numfmt --from=iec 1M
14980      1048576
14981
14982      # '--from=auto' を使用する。M=Mega, Mi=Mebi
14983      $ numfmt --from=auto 1M
14984      1000000
14985      $ numfmt --from=auto 1Mi
14986      1048576
14987
14988    ‘SI’ 表記を ‘IEC’ 表記に換算する (たとえば、ハードディスクの容量が、
14989 メーカー表示では ‘1TB’ となっているが、実際に容量をチェックすると、 それ
14990 より少ない場合)。
14991
14992      $ numfmt --from=si --to=iec 1T
14993      932G
14994
14995    ファイルやパイプから読み込んだ入力行にある、ある一つのフィールドを変
14996 換する (ここに示す数例は、あくまでも説明のために作ったものである。実際に
14997 は、‘ls’ と ‘df’ のどちらにも、人間に読みやすい形式でサイズを表示するた
14998 めの ‘--human-readable’ オプションが存在している)。
14999
15000      # 3 番目のフィールド (ファイルサイズ) を SI 表記で表示する
15001      $ ls -log | numfmt --field 3 --header --to=si | head -n4
15002      -rw-r--r--  1     94K Aug 23  2011 ABOUT-NLS
15003      -rw-r--r--  1    3.7K Jan  7 16:15 AUTHORS
15004      -rw-r--r--  1     36K Jun  1  2011 COPYING
15005      -rw-r--r--  1       0 Jan  7 15:15 ChangeLog
15006      (訳注: 実際には、この一番下の行は表示されず、一番上に「total ...
15007      といった行が現れるはずである。)
15008
15009      # 二番目のフィールド (サイズ) を IEC 表記で表示する
15010      $ df --block-size=1 | numfmt --field 2 --header --to=iec | head -n4
15011      File system   1B-blocks        Used  Available Use% Mounted on
15012      rootfs             132G   104741408   26554036  80% /
15013      tmpfs              794M        7580     804960   1% /run/shm
15014      /dev/sdb1          694G   651424756   46074696  94% /home
15015
15016    出力は ‘--padding’ や ‘--format’ オプションを使って加工することができ
15017 る。
15018
15019      # フィールド幅が 10 字になるまで空白で埋める。右詰め表示。
15020      $ du -s * | numfmt --to=si --padding=10
15021            2.5K config.log
15022             108 config.status
15023            1.7K configure
15024              20 configure.ac
15025
15026      # フィールド幅が 10 字になるまで空白で埋める。左詰め表示。
15027      $ du -s * | numfmt --to=si --padding=-10
15028      2.5K       config.log
15029      108        config.status
15030      1.7K       configure
15031      20         configure.ac
15032
15033      # --format オプションを使用して、フィールド幅が 10 文字になるまで
15034      # 空白で埋める。右詰め表示。
15035      $ du -s * | numfmt --to=si --format="%10f"
15036            2.5K config.log
15037             108 config.status
15038            1.7K configure
15039              20 configure.ac
15040
15041      # --format オプションを使用して、フィールド幅が 10 文字になるまで
15042      # 空白で埋める。左詰め表示。
15043      $ du -s * | numfmt --to=si --padding="%-10f"
15044      2.5K       config.log
15045      108        config.status
15046      1.7K       configure
15047      20         configure.ac
15048
15049    桁区切りをサポートしているロケールでは、‘--grouping’ や ‘--format’ オ
15050 プションを使って、数値を数桁ごとに区切ることができる。ロケールが ‘POSIX’
15051 や ‘C’ の場合は、桁区切りを指定しても、単に無視される。
15052
15053      $ LC_ALL=C numfmt --from=iec --grouping 2G
15054      2147483648
15055
15056      $ LC_ALL=en_US.utf8 numfmt --from=iec --grouping 2G
15057      2,147,483,648
15058
15059      $ LC_ALL=ta_IN numfmt --from=iec --grouping 2G
15060      2,14,74,83,648
15061
15062      $ LC_ALL=C numfmt --from=iec --format="==%'15f==" 2G
15063      ==     2147483648==
15064
15065      $ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'15f==" 2G
15066      ==  2,147,483,648==
15067
15068      $ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'-15f==" 2G
15069      ==2,147,483,648  ==
15070
15071      $ LC_ALL=ta_IN numfmt --from=iec --format="==%'15f==" 2G
15072      == 2,14,74,83,648==
15073
15074 \1f
15075 File: coreutils-ja.info,  Node: seq invocation,  Prev: numfmt invocation,  Up: Numeric operations
15076
15077 26.3 ‘seq’: 数列を表示する
15078 ==========================
15079
15080 ‘seq’ は、数列を標準出力に表示する。
15081
15082    書式:
15083
15084      seq [OPTION]... LAST
15085      seq [OPTION]... FIRST LAST
15086      seq [OPTION]... FIRST INCREMENT LAST
15087
15088    ‘seq’ は、FIRST から LAST までの数を INCREMENT おきに表示する。 デフ
15089 ォルトでは、それぞれの数は 1 行に 1 個づつ表示される。 INCREMENT が指定
15090 されていない場合は、FIRST が LAST より大きい場合でも、デフォルトの ‘1’ が
15091 INCREMENT として使用される。 FIRST のデフォルトもまた ‘1’ である。 従っ
15092 て、‘seq 1’ は ‘1’ を表示するが、‘seq 0’ や ‘seq 10 5’ は、何も出力しな
15093 い。数列が終了するのは、現在の数値に INCREMENT を加えたら LAST より大き
15094 くなってしまう時点である。だから、‘seq 1 10 10’ は、‘1’ しか表示しない。
15095 INCREMENT の値には ‘0’ を指定できない。 同じ数を繰り返し出力したかったら
15096 、‘yes’ コマンドを使うべきである。 また、FIRST, INCREMENT, LAST の値は、
15097 ‘NaN’ (訳注: Not a Number) であってはならない。数値には浮動小数点数を指
15098 定することもできる。 *Note Floating point::.
15099
15100    このプログラムでは以下のオプションが使用できる。参照: *note Common
15101 options::. オプションはオペランドの前に置かなければならない。
15102
15103 ‘-f FORMAT’
15104 ‘--format=FORMAT’
15105      すべての数を FORMAT を使用して表示する。FORMAT は、 ‘printf’ 形式の
15106      浮動小数点数の変換指定をただ一つ含むものでなければならない。 すなわ
15107      ち、‘%a’, ‘%e’, ‘%f’, ‘%g’, ‘%A’, ‘%E’, ‘%F’, ‘%G’ のいづれかである
15108      。 ‘%’ の後ろには 0 個以上のフラグを、‘-+#0 '’ のうちから選んで置く
15109      ことができる。 また、それに続けて、1 個以上の数字からなるフィールド
15110      幅を指定することもできるし、 さらにその後ろに、‘.’ とそれに続く 0 個
15111      以上の数字からなる精度を指定することもできる。 FORMAT には、任意の
15112      数の ‘%%’ 変換指定が含まれていてもよい。 変換指定はすべて、‘printf’
15113      の場合と同じ意味を持っている。
15114
15115      デフォルトの表示形式は、FIRST, INCREMENT, LAST がどういう表記を使用
15116      しているかよって決まる。そのすべてが固定小数点の 10 進数表記を使用
15117      しているならば、デフォルトの表示形式は ‘%.Pf’ になる。 この P には
15118      、出力する数値を過不足なく表現できる最小の精度が来る。 それ以外の場
15119      合、デフォルトの表示形式は ‘%g’ になる。
15120
15121 ‘-s STRING’
15122 ‘--separator=STRING’
15123      数の区切りに STRING を使う。デフォルトは改行である。出力の最後には
15124      、必ず改行が付く。
15125
15126 ‘-w’
15127 ‘--equal-width’
15128      すべての数を同じ桁数で表示する。先頭の空きは 0 で埋める。FIRST,
15129      INCREMENT, LAST は、すべて固定小数点の 10 進数表記でなければならな
15130      い (他のやり方で先頭を埋めたければ、‘--format’ を使うこと)。
15131
15132    ‘-f’ オプションを使えば、出力をもっときめ細かく制御することができる。
15133
15134      $ seq -f '(%9.2E)' -9e5 1.1e6 1.3e6
15135      (-9.00E+05)
15136      ( 2.00E+05)
15137      ( 1.30E+06)
15138
15139    出力を 16 進数の整数にしたかったら、‘printf’ を使って変換すればよい。
15140
15141      $ printf '%x\n' $(seq 1048575 1024 1050623)
15142      fffff
15143      1003ff
15144      1007ff
15145
15146    数のリストが非常に長くなる場合は、‘xargs’ を使用すると、引数リストの
15147 長さに対するシステムの制限を回避することができる。
15148
15149      $ seq 1000000 | xargs printf '%x\n' | tail -n 3
15150      f423e
15151      f423f
15152      f4240
15153
15154    8 進数の出力を生成するには、printf に対して ‘%x’ の代わりに、‘%o’ フ
15155 ォーマットを使用すればよい。
15156
15157    ほとんどのシステムで ‘seq’ は、少なくとも 2^{53} までの数値に対して整
15158 数の出力を生成することができる。それより大きい整数に対しては概算になる。
15159 細かい点は、ご使用のシステムの浮動小数点の実装によって異なっている。
15160 *Note Floating point::.  ‘seq’ が 2^{64} までの整数に対してなら、きちん
15161 と動作するが、 それより大きな整数に対しては、数値が不正確になることがあ
15162 るというのは、よくある話である。
15163
15164      $ seq 50000000000000000000 2 50000000000000000004
15165      50000000000000000000
15166      50000000000000000000
15167      50000000000000000004
15168
15169    とは言え、負ではない整数を対象とし、インクリメントが 1 で、 フォーマ
15170 ット指定オプションはないという条件の元では、 ‘seq’ は任意の大きな数値を
15171 表示できることも心に留めておいていただきたい。
15172
15173    ‘seq’ でとんでもなく大きな桁の値を扱うときは、気をつけた方がよい。 さ
15174 もないと、‘seq’ は内部で浮動小数点を使用しているので、結果を見てびっくり
15175 するかもしれない。 たとえば、x86 のプラットフォームでは、内部表現が 64 ビ
15176 ットの仮数部を使用しているが、 そこで次のコマンドを実行すると、
15177
15178      seq 1 0.0000000000000000001 1.0000000000000000009
15179
15180    ‘seq’ は 1.0000000000000000007 を二度出力し、1.0000000000000000008 を
15181 スキップする (訳注: 訳者の amd64 環境では、1.0000000000000000008 ではな
15182 く、1.0000000000000000006 をスキップする)。
15183
15184    終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
15185
15186 \1f
15187 File: coreutils-ja.info,  Node: File permissions,  Next: Date input formats,  Prev: Numeric operations,  Up: Top
15188
15189 27 ファイルの許可属性
15190 *********************
15191
15192 各ファイルには、一組のファイル・モードビット (“file mode bits”) というも
15193 のがあって、ユーザがそのファイルに対してどんなアクセスができるかを制御し
15194 ている。 モードビットは、シンボルによっても、8 進数によっても表すことが
15195 できる。
15196
15197 * Menu:
15198
15199 * Mode Structure::           ファイル・モードビットの構成。
15200 * Symbolic Modes::           ファイル・モードビットの覚えやすい表現。
15201 * Numeric Modes::            ファイル・モードビットの 8 進数による表現。
15202 * Operator Numeric Modes::   8 進数によるモードの追加、削除、絶対指定。
15203 * Directory Setuid and Setgid::  ディレクトリの set-user-ID と set-group-ID。
15204
15205 \1f
15206 File: coreutils-ja.info,  Node: Mode Structure,  Next: Symbolic Modes,  Up: File permissions
15207
15208 27.1 ファイル・モードビットの構成
15209 =================================
15210
15211 ファイル・モードビットには、二つの構成部分がある。 ファイルに対する通常
15212 のアクセスを制御するファイル許可属性ビット (“file permission bits”) と、
15213 若干のファイルのみに働く特殊モードビット (“special mode bits”) である。
15214
15215    ユーザがファイルに対して持つ許可 (訳注: アクセス権とも言う) には、 3
15216 種類ある。
15217
15218   1. ファイルを読み込む許可。ディレクトリに対しては、ディレクトリの中身
15219      をリストする許可になる。
15220   2. ファイルに書き出す (ファイルを変更する) 許可。ディレクトリに対して
15221      は、 そのディレクトリ中でファイルを作成したり、削除したりする許可に
15222      なる。
15223   3. ファイルを実行する (プログラムとしてそれを動かす) 許可。 ディレクト
15224      リに対しては、ディレクトリ中のファイルにアクセスする許可になる。
15225
15226    ユーザにも 3 種類あり、ファイルに対する上記の操作のいづれについても、
15227 それぞれ違った許可を持つことができる。
15228
15229   1. ファイルの所有者。
15230   2. ファイルの所有グループに属するファイルの所有者以外のユーザ。
15231   3. それ以外の全員。
15232
15233    ファイルには、作成されるときに所有者とグループが割り当てられる。 たい
15234 ていの場合、所有者はファイルを作成したユーザであり、 グループはファイル
15235 が存在するディレクトリのグループだが、 オペレーティングシステムやファイ
15236 ルが作成されるファイルシステム、ファイルの作成方法などによって違うことも
15237 ある。 ファイルの所有者やグループは、‘chown’ や ‘chgrp’ コマンドを使って
15238 、変更することができる。
15239
15240    上に挙げた 3 種類の許可属性 3 組のほかに、ファイルのモードビットには
15241 三つの特殊モードビットが存在するが、 そうしたものは、実行ファイル (すな
15242 わち、プログラム) と — ほとんどのシステムでは — ディレクトリにしか効果を
15243 持たない。
15244
15245   1. ファイルの実行時に、そのプロセスの実効ユーザ ID をファイルの所有者
15246      のものにする (“set-user-ID bit” とか “setuid bit” と呼ばれる)。 若
15247      干のシステムでは、ディレクトリに set-user-ID ビットを付けると、 フ
15248      ァイルの実際の作成者が誰であれ、そのディレクトリ中で作成されるファ
15249      イルの所有者が、 ディレクトリの所有者と同じになる。また、新しく作ら
15250      れるサブディレクトリに set-user-ID ビットが付く。
15251   2. ファイルの実行時に、そのプロセスの実効グループ ID をファイルのグル
15252      ープのものにする (“set-group-ID bit” とか “setgid bit” と呼ばれる
15253      )。 ほとんどのシステムでは、ディレクトリに set-group-ID ビットを付
15254      けると、 ファイルの作成者がどんなグループに属していようとも、 その
15255      ディレクトリ中で作成されるファイルのグループが、ディレクトリのグル
15256      ープと同じになる。 また、新しく作成されるサブディレクトリに
15257      set-group-ID ビットが付く。
15258   3. 特権を持たないユーザ (訳注: 要するに、root 以外の一般ユーザ) に対し
15259      て、自分が所有するファイルやディレクトリを除き、 ディレクトリ中のフ
15260      ァイルの削除や、名前の変更を禁じる。 これは、ディレクトリの削除制限
15261      フラグ (“restricted deletion flag”) と呼ばれ、‘/tmp’ のような、誰で
15262      も書き込めるディレクトリでよく見かけられる。
15263
15264      古いシステムの中には、通常ファイルにこのビットが付いていると、 プロ
15265      グラムのテキスト・イメージをスワップ・デバイスにセーブするものがあ
15266      る。 そうすることで、実行時にロードが速くなるわけだ。 こちらは、ス
15267      ティッキー・ビット (“sticky bit”) と呼ばれる。
15268
15269    上記のファイル・モードビットのほかに、ファイルシステムに固有のファイ
15270 ル属性が存在することがある。 たとえば、アクセス・コントロール・リスト
15271 (ACL) がそうだし、 ファイルが圧縮されているか否か、ファイルが変更可能か
15272 否か (変更不可属性)、 ファイルがダンプ可能か否か、といった属性が存在する
15273 こともある。 そうした属性は、通常、ファイルシステム固有のプログラムを使
15274 って設定される。例を挙げよう。
15275
15276 ext2
15277      GNU 及び GNU/Linux では、ext2 ファイルシステムに固有なファイル属性
15278      は、 ‘chattr’ コマンドを使って設定される。
15279
15280 FFS
15281      FreeBSD では、FFS ファイルシステムに固有なファイルフラグは、
15282      ‘chflags’ コマンドを使って設定される。
15283
15284    ファイルのモードビットがそのファイルに対するある操作を許可していたと
15285 しても、 それでもその操作に失敗することがある。その理由としては、次のよ
15286 うなことが考えられる。
15287
15288    • ファイルシステムに固有な属性やフラグが、その操作を許可していない。
15289
15290    • ファイルシステムが読み込み専用でマウントされている。
15291
15292    たとえば、ファイルに変更不可属性が設定されていると、‘chmod a+w FILE’
15293 を直前に実行したとしても、ファイルを変更することはできない。
15294
15295 \1f
15296 File: coreutils-ja.info,  Node: Symbolic Modes,  Next: Numeric Modes,  Prev: Mode Structure,  Up: File permissions
15297
15298 27.2 シンボリックモード
15299 =======================
15300
15301 シンボリックモード (“Symbolic modes”) では、 ファイルのモードビットの変
15302 更を、1 文字からなるシンボルに対する操作として表現している。 シンボリッ
15303 クモードを使えば、ファイルのモードビットのすべてを変更することもできるし
15304 、その一部を選択して変更することもできる。 もしそうしたければ、変更前の
15305 モードビットの値に基づいて変更することも可能だ。 現在の ‘umask’ に基づい
15306 て変更することも、多分できるはずである (*note Umask and Protection::)。
15307
15308    シンボリックモードの書式は、次のとおりである。
15309
15310      [ugoa...][-+=]PERMS...[,...]
15311
15312 ここで PERMS は ‘rwxXst’ の内の 0 個以上の文字、または ‘ugo’ の内の 1 個
15313 の文字である。
15314
15315    以下のセクションでは、シンボリックモードについて、演算子 (operator) を
15316 始め、様々なことを詳しく説明する。
15317
15318 * Menu:
15319
15320 * Setting Permissions::         許可属性の基本操作。
15321 * Copying Permissions::         存在する許可属性をコピーする。
15322 * Changing Special Mode Bits::  特殊モードビット。
15323 * Conditional Executability::   条件付きで実行属性の変更をする。
15324 * Multiple Changes::            複数の変更をする。
15325 * Umask and Protection::        umask の働き。
15326
15327 \1f
15328 File: coreutils-ja.info,  Node: Setting Permissions,  Next: Copying Permissions,  Up: Symbolic Modes
15329
15330 27.2.1 許可属性の設定
15331 ---------------------
15332
15333 ファイルの許可属性に対するシンボルによる操作 (operation) の基本は、 ある
15334 タイプのユーザに対して、ファイルの、読み、書き、実行または検索を行うため
15335 の許可属性を、 追加したり、削除したり、設定したりすることである。 そうし
15336 た操作には、以下の書式を使用する。
15337
15338      USERS OPERATION PERMISSIONS
15339
15340 上の書式では、三つの部分を空白で区切って示しているが、見やすくするために
15341 すぎない。 シンボリックモードの指定には空白があってはならない。
15342
15343    USERS の部分は、どのタイプのユーザの、ファイルに対するアクセス権を変
15344 更するかを示している。 この部分には、1 個以上の下記の文字を指定する (あ
15345 るいは、何も指定しないでもよい。 その場合どうなるかは、「Umask と保険」
15346 セクションで説明している。 *note Umask and Protection::)。文字を 2 個以
15347 上指定した場合の順番に特別な意味はない。
15348
15349 ‘u’
15350      ファイルの所有者。
15351 ‘g’
15352      ファイルの所有グループに属するファイルの所有者以外のユーザ。
15353 ‘o’
15354      ‘u’ や ‘g’ 以外のすべてのユーザ。
15355 ‘a’
15356      すべてのユーザ。‘ugo’ と同じ。
15357
15358    OPERATION の部分は、対象となるユーザのファイルに対するアクセス権をど
15359 んなふうに変更するかを指示しており、 以下の記号の一つを使用する。
15360
15361 ‘+’
15362      USERS がそのファイルに対して、すでにどんな許可を持っているかにかか
15363      わりなく、 それに PERMISSIONS を追加する。
15364 ‘-’
15365      USERS がそのファイルに対して、すでにどんな許可を持っているかにかか
15366      わりなく、 そこから PERMISSIONS を削除する。
15367 ‘=’
15368      PERMISSIONS を、そのファイルに対して USERS が持つ許可のすべてにする
15369      。
15370
15371    PERMISSIONS の部分は、ファイルに対するどんなアクセス権を変更するかを
15372 指示しており、 通常は 0 個以上の下記の文字を指定する。USERS の部分と同様
15373 、文字を 2 個以上指定した場合の順番に特別な意味はない。PERMISSIONS の部
15374 分に何も指定しないことに意味があるのは、操作に ‘=’ 演算子を使用する場合
15375 だけである。 その場合、指定されたユーザは、そのファイルに対していかなる
15376 アクセス権も持たないことになる。
15377
15378 ‘r’
15379      USERS の、そのファイルを読む権限。
15380 ‘w’
15381      USERS の、そのファイルに書き込む権限。
15382 ‘x’
15383      USERS の、そのファイルを実行する権限。ディレクトリの場合は、 ディレ
15384      クトリを検索する権限。
15385
15386    たとえば、ある通常ファイルについて、すべてのユーザに読み書きを許可す
15387 るが、 その実行は許可しないならば、次のように指定する。
15388
15389      a=rw
15390
15391    そのファイルの所有者以外のすべてのユーザから書き込み権限を取り上げる
15392 には、次のようにする。
15393
15394      go-w
15395
15396 上記の指定は、ファイルの所有者がファイルに対して持っているアクセス権には
15397 影響を及ぼさない。 また、所有者以外のユーザがそのファイルを読んだり、実
15398 行したりできるかどうかにも、影響を及ぼさない。
15399
15400    ファイルの所有者以外のすべてのユーザに対して、そのファイルに何をする
15401 権限も一切与えないためには、 以下のモードを使用すればよい。それでも、所
15402 有者以外のユーザは、 ファイルの存在するディレクトリに対する書き込み権限
15403 を持っていれば、 そのファイルを削除することができるだろうけれど。
15404
15405      go=
15406
15407 同じことを指定する別のやり方もある。
15408
15409      og-rwx
15410
15411 \1f
15412 File: coreutils-ja.info,  Node: Copying Permissions,  Next: Changing Special Mode Bits,  Prev: Setting Permissions,  Up: Symbolic Modes
15413
15414 27.2.2 存在する許可属性のコピー
15415 -------------------------------
15416
15417 ファイルの許可属性を、それが既に持っている許可属性を元にして指定すること
15418 もできる。 そうするには、演算子の後ろに ‘r’, ‘w’, ‘x’ という文字を続ける
15419 代わりに、‘u’, ‘g’, ‘o’ という文字を使用する。一例を挙げよう。
15420
15421      o+g
15422
15423 上記のモード指定は、ファイルのグループに属するユーザのアクセス権を、 そ
15424 の他のユーザがそのファイルに対して持っているアクセス権に追加する。 従っ
15425 て、仮にファイルの最初のモードが 664 (‘rw-rw-r--’) ならば、 上記のモード
15426 指定は、それを 666 (‘rw-rw-rw-’) に変更することになる。 ファイルの最初の
15427 モードが 741 (‘rwxr----x’) だったら、745 (‘rwxr--r-x’) になるだろう。‘-’
15428 と ‘=’ の演算子の働きも、同様である。
15429
15430 \1f
15431 File: coreutils-ja.info,  Node: Changing Special Mode Bits,  Next: Conditional Executability,  Prev: Copying Permissions,  Up: Symbolic Modes
15432
15433 27.2.3 特殊モードビットの変更
15434 -----------------------------
15435
15436 読み込み、書き出し、実行/検索に関するファイルの許可属性を変更できるだけ
15437 ではない。 特殊モードビットも変更することができる。特殊モードビットにつ
15438 いては、 「ファイルのモードビットの構成」の節で簡単に説明している。*Note
15439 Mode Structure::.
15440
15441    ファイルの実行時にユーザ ID をセットするように、ファイルのモードビッ
15442 トを変更するには、 シンボリックモードの USERS の部分に ‘u’ を使用し、
15443 PERMISSIONS の部分に‘s’ を使用する。
15444
15445    ファイルの実行時にグループ ID をセットするように、ファイルのモードビ
15446 ットを変更するには、 シンボリックモードの USERS の部分に ‘g’ を使用し、
15447 PERMISSIONS の部分に ‘s’ を使用する。
15448
15449    ファイルの実行時にユーザ ID とグループ ID の両方をセットするようにす
15450 るには、 シンボリックモードの USERS の部分に何も指定せず (あるいは、‘a’
15451 を使用し)、 PERMISSIONS の部分に ‘s’ を使用する。
15452
15453    削除制限フラグやスティッキー・ビットが有効になるように、ファイルのモ
15454 ードビットを変更するには、 シンボリックモードの USERS の部分に何も指定せ
15455 ず (あるいは、‘a’ を使用し)、PERMISSIONS の部分に ‘t’ を使用する。
15456
15457    たとえば、あるプログラムに set-user-ID モードビットを設定するには、 次
15458 のモードを指定すればよい。
15459
15460      u+s
15461
15462    そのプログラムから set-user-ID と set-group-ID の両方のモードビットを
15463 削除するには、 次のモードを指定する。
15464
15465      a-s
15466
15467    削除制限フラグやスティッキー・ビットを設定するには、次のモードを指定
15468 する。
15469
15470      +t
15471
15472    ‘o+s’ という組み合わせには、何の効果もない。GNU のシステムでは、
15473 ‘u+t’ や ‘g+t’ という組み合わせにも、全く効果がなく、 また ‘o+t’ は、単
15474 なる ‘+t’ と同じ働きをする。
15475
15476    特殊モードビットの設定や変更では、‘=’ はあまり役に立たない。 たとえば
15477 、こんな指定をしたとしよう。
15478
15479      o=t
15480
15481 上記のモードは、確かに、削除制限フラグやスティッキー・ビットを設定するこ
15482 とはするが、 同時に、ファイルのグループに属していないユーザが、 そのファ
15483 イルに対して、読み、書き、実行/検索の権限を持っていたとしても、 そうした
15484 権限をすべて削除してしまう。
15485
15486    set-user-ID や set-group-ID ビットがディレクトリに付いている場合の、
15487 ほかの約束事については、「ディレクトリの Set-User-ID と Set-Group-ID ビ
15488 ット」の節をご覧になっていただきたい。*Note Directory Setuid and
15489 Setgid::.
15490
15491 \1f
15492 File: coreutils-ja.info,  Node: Conditional Executability,  Next: Multiple Changes,  Prev: Changing Special Mode Bits,  Up: Symbolic Modes
15493
15494 27.2.4 条件付きの実行属性変更
15495 -----------------------------
15496
15497 シンボルによる許可属性の指定には、もう一つ特別なタイプがある。‘x’ の代わ
15498 りに、‘X’ を使用すると、実行/検索の許可属性に変更があるのは、 ファイルが
15499 ディレクトリである場合か、あるいは、(どのユーザかに) すでに実行許可が付
15500 いていた場合だけになる。
15501
15502    一例を挙げよう。
15503
15504      a+X
15505
15506 上記のモードは、すべてのユーザにディレクトリを検索する許可、 または、フ
15507 ァイルを実行する許可を与えるが、後者については、どのユーザかが、 すでに
15508 そのファイルを実行できたならば、という条件が付く。
15509
15510 \1f
15511 File: coreutils-ja.info,  Node: Multiple Changes,  Next: Umask and Protection,  Prev: Conditional Executability,  Up: Symbolic Modes
15512
15513 27.2.5 複数の変更
15514 -----------------
15515
15516 シンボリックモードの書式は、これまでに述べてきたよりも、実際にはもっと複
15517 雑である (*note Setting Permissions::)。 ファイルのモードビットに対して
15518 、複数の変更を一度に行うには、二つの方法がある。
15519
15520    一つ目の方法は、シンボリックモードの USERS の部分の後ろに、複数の
15521 OPERATION と PERMISSIONS を指定することである。
15522
15523    たとえば、こんなふうにだ。
15524
15525      og+rX-w
15526
15527 このモードは、ファイルの所有者以外のユーザに、読み込み許可を与え、 さら
15528 に、ファイルがディレクトリであるか、どのユーザかがすでに実行許可を持って
15529 いた場合には、実行/検索許可も与えている。 また、ファイルの所有者以外のユ
15530 ーザから、ファイルへの書き出し許可を取り上げている。 なお、この指定は、
15531 ファイルの所有者が持っている許可には影響を及ぼさない。 このモードは、以
15532 下の二つのモードと等価である。
15533
15534      og+rX
15535      og-w
15536
15537    複数の変更を行う二つ目の方法は、単純なシンボリックモードを 2 個以上、
15538 コンマで区切って指定することである。たとえば、
15539
15540      a+r,go-w
15541
15542 これは、すべてのユーザにそのファイルに対する読み込み許可を与え、 所有者
15543 以外のすべてのユーザから書き出し許可を削除している。もう一つ、例を挙げる
15544
15545
15546      u=rwx,g=rx,o=
15547
15548 こちらは、そのファイルに対するすべての許可ビットを明示的に設定している。
15549 (ファイルのグループに属さないユーザには、ファイルに対する許可を一切与え
15550 ていない。)
15551
15552    複数の変更を行う二つの方法を組み合わせて使うこともできる。
15553
15554      a+r,g+x-w
15555
15556 この指定は、すべてのユーザにファイルの読み込み許可を与え、 さらに、ファ
15557 イルのグループに属するユーザには、実行/検索許可も与えているが、 書き出し
15558 許可は与えていない。上記のモードを指定する方法は、ほかにもいくつかあるだ
15559 ろう。 その一つを挙げておく。
15560
15561      u+r,g+rx,o+r,g-w
15562
15563 \1f
15564 File: coreutils-ja.info,  Node: Umask and Protection,  Prev: Multiple Changes,  Up: Symbolic Modes
15565
15566 27.2.6 Umask と保険
15567 -------------------
15568
15569 シンボリックモードの USERS の部分を省略すると、デフォルトの ‘a’ が使用さ
15570 れる (すべてのユーザが対象になる)。が、この場合、システム変数 ‘umask’ で
15571 設定されている許可属性は、全く影響を受けない (訳注: ‘umask’ で許可しない
15572 ことになっている許可属性は、 現在実際には許可になっていようと、不許可で
15573 あろうと、‘-w’ や ‘+w’ といった USERS 部のない指定では、変更されないとい
15574 うこと。 以下で例を挙げて説明している)。‘umask’ の値は、‘umask’ コマンド
15575 で設定することができる。‘umask’ のデフォルトの値は、システムによって様々
15576 である。
15577
15578    シンボリックモードで USERS の部分を省略するのは、‘+’ 以外の操作では、
15579 おおむね役に立たない。USERS の省略が ‘+’ で役に立つのは、その場合、 意図
15580 した以上の許可をファイルに付けてしまわないための、簡単にカスタマイズでき
15581 る保険として、 ‘umask’ が使用できるからである。
15582
15583    一例を挙げると、‘umask’ の値が 2 ということは、 ファイルの所有者でも
15584 なく、ファイルのグループにも所属していない一般ユーザに、 書き出し許可を
15585 与えないということである。その場合、
15586
15587      +w
15588
15589 というモードは、ファイルの所有者とファイルのグループに所属するユーザに、
15590 書き出し許可を追加するが、それ以外のユーザには、書き出し許可を追加しない
15591 。それに対して、
15592
15593      a+w
15594
15595 というモードは、‘umask’ を無視して、ファイルへの書き出し許可を、 文字通
15596 りすべてのユーザに与えるのである。
15597
15598 \1f
15599 File: coreutils-ja.info,  Node: Numeric Modes,  Next: Operator Numeric Modes,  Prev: Symbolic Modes,  Up: File permissions
15600
15601 27.3 数値モード
15602 ===============
15603
15604 シンボリックモードで指定する代わりに、モードを表す 1 個の 8 進数 (基数
15605 8) を指定することもできる。この数値は常に 8 進数として解釈されるので、 C
15606 言語の場合とは違って、先頭に ‘0’ を付ける必要はない。‘0055’ というモード
15607 は、‘55’ というモードと同じなのだ。(とは言え、‘00055’ のような、5 桁以上
15608 のモードは、特別な扱いを受けることがある。 *Note Directory Setuid and
15609 Setgid::.)
15610
15611    数値モードは、たいていの場合、対応するシンボリックモードより短くてす
15612 むが、 ファイルの変更前のモードビットを踏まえて指定することが、 普通はで
15613 きないという制限がある。数値モードでは、絶対的な形で指定することしかでき
15614 ないのだ。 ただし、ディレクトリの set-user-ID ビットと set-group-ID ビッ
15615 トは、 この一般的な原則の対象外である。 *Note Directory Setuid and
15616 Setgid::. なお、演算子付き数値モードを使えば、ファイルの変更前のモードビ
15617 ットを踏まえた指定が可能になる。 *Note Operator Numeric Modes::.
15618
15619    ファイルの所有者、ファイルのグループに所属する他のユーザ、それ以外の
15620 一般ユーザ、 この 3 種のユーザに与える許可属性には、それぞれ 3 ビットを
15621 要し、その 3 ビットは 1 個の 8 進数で表現される。三つの特殊モードビット
15622 にも、おのおの 1 ビットが必要であり、 こちらも一つにまとめて、もう一つの
15623 8 進数として表現される。 各ビットの並び方は、最下位のビットから上位のビ
15624 ットへ向かって、次のようになっている。
15625
15626      モードの  対応する
15627      値        モードビット
15628
15629                ファイルのグループに所属しない一般ユーザ:
15630         1      実行/検索
15631         2      書き出し
15632         4      読み込み
15633
15634                ファイルのグループに所属する所有者以外のユーザ:
15635        10      実行/検索
15636        20      書き出し
15637        40      読み込み
15638
15639                ファイルの所有者:
15640       100      実行/検索
15641       200      書き出し
15642       400      読み込み
15643
15644                特殊モードビット:
15645      1000      削除制限フラグ、またはスティッキー・ビット
15646      2000      ファイルの実行時にグループ ID をセットする
15647      4000      ファイルの実行時にユーザ ID をセットする
15648
15649    たとえば、数値モードの ‘4755’ は、シンボリックモードの ‘u=rwxs,go=rx’
15650 に当たり、数値モードの ‘664’ は、シンボリックモードの ‘ug=rw,o=r’ に相当
15651 している。数値モードの ‘0’ は、シンボリックモードの ‘a=’ に相当する。
15652
15653 \1f
15654 File: coreutils-ja.info,  Node: Operator Numeric Modes,  Next: Directory Setuid and Setgid,  Prev: Numeric Modes,  Up: File permissions
15655
15656 27.4 演算子付き数値モード
15657 =========================
15658
15659 演算子付き数値モードは、‘-’, ‘+’, ‘=’ を前に付けた数値モードである。 そ
15660 うした演算子が表している意味は、シンボリックモードの場合と同じだ。 たと
15661 えば、‘+440’ は、ファイルの所有者とグループに対する読み込み許可を有効に
15662 し、 ‘-1’ は、その他の一般ユーザに対する実行許可を無効にする。 また、
15663 ‘=600’ は、ファイルの所有者に対する読み込みと書き出しの許可を有効にする
15664 が、 それ以外のすべての許可を無効にする。 演算子付き数値モードは、シンボ
15665 リックモードと組み合わせて使うことも可能だ。 両者の間はコンマで区切れば
15666 よい。一例を挙げると、‘=0,u+r’ は、すべての許可を無効にした上で、ファイ
15667 ルの所有者の読み込み許可だけを有効にする。
15668
15669    コマンド ‘chmod =755 DIR’ と ‘chmod 755 DIR’ の違いは、前者がディレク
15670 トリ DIR の setuid と setgid をクリアするのに対して、後者はそれをそのま
15671 ま維持するという点にある。 *Note Directory Setuid and Setgid::.
15672
15673    演算子付き数値モードは、GNU による拡張である。
15674
15675 \1f
15676 File: coreutils-ja.info,  Node: Directory Setuid and Setgid,  Prev: Operator Numeric Modes,  Up: File permissions
15677
15678 27.5 ディレクトリの Set-User-ID と Set-Group-ID ビット
15679 ======================================================
15680
15681 ほとんどのシステムでは、ディレクトリに set-group-ID ビットが付いていると
15682 、 そのディレクトリ内で新しく作られるファイルは、ディレクトリと同じグル
15683 ープを継承し、 新しく作られるサブディレクトリは、親ディレクトリの
15684 set-group-ID ビットを継承する。 また、若干のシステムでは、ディレクトリの
15685 set-user-ID ビットが、 ディレクトリ内の新規ファイルの所有者と、新規サブ
15686 ディレクトリの set-user-ID ビットに対して、同様の効果を持っている。 こう
15687 した仕組みによって、新しいファイルを共有するために ‘chmod’ や ‘chown’ を
15688 使う必要が軽減し、ユーザにとってファイルの共有がやりやすくなっているので
15689 ある。
15690
15691    ユーザの便宜のためのこうした仕組みは、ディレクトリの set-user-ID ビッ
15692 トや set-group-ID ビットを拠り所にしている。もし、‘chmod’ や ‘mkdir’ が
15693 、ディレクトリのそうしたビットを常時クリアする仕様になっていたら、 この
15694 仕組みもそれほど便利ではなくなり、ファイルの共有が面倒なことになるだろう
15695 。 それ故、‘chmod’ などのコマンドは、原則としてディレクトリの
15696 set-user-ID ビットや set-group-ID ビットを変更しないのである。
15697 set-user-ID ビットや set-group-ID ビットを変更するには、 ユーザがシンボ
15698 リックモードで明示的にそう指定するか、‘=755’ のような演算子付き数値モー
15699 ドを使用するか、数値モードでビットを立てるか、5 桁以上の 8 進数からなる
15700 数値モードでビットをクリアするか、そのどれかをやる必要がある。
15701 set-group-ID ビットの継承をサポートしているシステムでの例を挙げよう。
15702
15703      # 以下のコマンドは、サブディレクトリの set-user-ID ビットと
15704      # set-group-ID ビットを変更しない。従って、デフォルトの値が
15705      # 保持される。
15706      mkdir A B C
15707      chmod 755 A
15708      chmod 0755 B
15709      chmod u=rwx,go=rx C
15710      mkdir -m 755 D
15711      mkdir -m 0755 E
15712      mkdir -m u=rwx,go=rx F
15713
15714    サブディレクトリの set-user-ID ビットや set-group-ID ビットを設定した
15715 かったら、 シンボリックモードや数値モードで明示的に指定しなければならな
15716 い。たとえば、次のようにだ。
15717
15718      # 以下のコマンドは、サブディレクトリに set-user-ID ビットと
15719      # set-group-ID bits を付けようとしている。
15720      mkdir G
15721      chmod 6755 G
15722      chmod +6000 G
15723      chmod u=rwx,go=rx,a+s G
15724      mkdir -m 6755 H
15725      mkdir -m +6000 I
15726      mkdir -m u=rwx,go=rx,a+s J
15727
15728    サブディレクトリの set-user-ID ビットや set-group-ID ビットを消去した
15729 かったら、 シンボリックモードで明示的にそう指定するか、演算子付き数値モ
15730 ードを使用するか、5 桁以上の 8 進数からなる数値モードで指定するかしなけ
15731 ればならない。
15732
15733      # 以下のコマンドは、ディレクトリ D の set-user-ID ビットと
15734      # set-group-ID ビットをクリアしようとしている。
15735      chmod a-s D
15736      chmod -6000 D
15737      chmod =755 D
15738      chmod 00755 D
15739
15740    こうした動作は、GNU による拡張である。移植を考慮したスクリプトでは、
15741 ディレクトリの set-user-ID ビットや set-group-ID ビットを立てたり、 クリ
15742 アしたりするリクエストを当てにしない方がよい。 POSIX の規格で、そうした
15743 リクエストを無視する実装が認められているからだ。 なお、GNU の許可属性指
15744 定における 4 桁以下の数値モードの動作は、ディレクトリの set-user-ID ビッ
15745 トや set-group-ID ビットを維持するシステムで使うスクリプト向けであり、 5
15746 桁以上の数値モードの動作は、そうしたビットを維持しないシステムでも使える
15747 スクリプト向けである。
15748
15749    (訳注: 4 桁以下と 5 桁以上の数値によるモード指定の違いについて少し整
15750 理しておく。 数値によるモード指定は、原則として絶対的な指定である。 たと
15751 えば、755 と指定すれば、755 に対応するモードビットだけが立てられ、 それ
15752 以外のビットは 0 になる。ただし、ディレクトリの set-user-ID ビットと
15753 set-group-ID ビットについてだけは、話がもう少し複雑である。 4 桁以下の数
15754 値による指定の場合、ディレクトリの set-user-ID ビットや set-group-ID ビ
15755 ットを維持するシステムでは、 そうしたビットはデフォルトや現在の状態が引
15756 き継がれるのだから、 ユーザがディレクトリの set-user-ID ビットや
15757 set-group-ID ビットを数値によって指定しても、それは絶対的な指定にならな
15758 い。 デフォルト値や現在値に対する追加にしかならないのである。 当然のこと
15759 として、この方法では消去もできない。それに対して、5 桁以上の数値による指
15760 定の場合は、 どんなシステムでも、すべてのモードビットについて、ユーザの
15761 指定は絶対指定になる。 従って、こちらなら、ディレクトリの set-user-ID ビ
15762 ットや set-group-ID ビットの選択的な設定や消去もできるのである。もちろん
15763 、お使いの ‘chmod’ のバージョンが、5 桁の数値指定をサポートしていればだ
15764 が。)
15765
15766 \1f
15767 File: coreutils-ja.info,  Node: Date input formats,  Next: Opening the software toolbox,  Prev: File permissions,  Up: Top
15768
15769 28 日付入力の書式
15770 *****************
15771
15772 まず、引用から始める。
15773
15774      時間を計るための我々の単位は、秒から月にいたるまで、あまりにも複雑
15775      で、一貫性がなく、ばらばらなので、 時間について間違わずに暗算をする
15776      ことなど、ほとんど不可能なほどだ。 まったくの話、どこかの横暴な神様
15777      が、人間の知能を時間の奴隷にしてやろうと企んだとしても — 腐った決ま
15778      りごとや不愉快な不意打ちに隷従せずに済ますことなど、 人間にはほとん
15779      ど不可能にしてやろうと企んだとしても — 現在我々が使っているシステム
15780      をお下げ渡しになる以上のことは、できなかったに違いない。 我々の時間
15781      計算のシステムは、垂直な面も水平な面もない不等辺四辺形の建築ブロッ
15782      クの集まりのようなものだ。 あるいは、ほんの簡単な考えを述べるにも、
15783      凝りに凝った構成や、無駄な不変化詞や、長々しい婉曲表現が必要な言語
15784      のようなものだ。 言語や科学のもっとうまく行っている思考様式は、我々
15785      が経験に果敢に立ち向かうことを、 少なくとも冷静に立ち向かうことを可
15786      能にしてくれる。 ところが、そうしたものとは違って、我々の時間計算の
15787      システムは、 密かに、しかも執拗に時間に対する我々の恐怖をかきたてる
15788      のである。
15789
15790      ... それは、建築家が長さをフィートで、幅をメートルで、高さをエルで
15791      測らなければならないようなものだ。 あるいは、基本的な使用説明書を読
15792      むのに、五つの異なった言語の知識が必要なようなものだ。 だから、我々
15793      が、自分にとってすぐ最近の過去や未来を表す、この前の火曜日 (last
15794      Tuesday) とか、来週の日曜日 (a week from Sunday) とかいった表現につ
15795      いて、それは一体いつを指しているのだろうと考え込んでは、 どうしよう
15796      もない混乱を覚えることがよくあるのも、無理からぬことなのである。...
15797
15798      — Robert Grudin, ‘Time and the Art of Living’.
15799
15800    この章では、GNU のプログラムが認識する日付表現文字列について説明する
15801 。 そうした文字列は、ユーザである読者が、様々なプログラムに引数として渡
15802 すことのできるものだ。 C のインターフェース (‘parse_datetime’ 関数で使用
15803 する) については、ここでは説明しない。
15804
15805 * Menu:
15806
15807 * General date syntax::      共通規則。
15808 * Calendar date items::      暦日の項目 (19 Dec 1994)。
15809 * Time of day items::        時刻の項目 (9:20pm)。
15810 * Time zone items::          タイムゾーンの項目 (EST, PDT, UTC, ...)。
15811 * Combined date and time of day items::  暦日と時刻を組み合わせた項目
15812                                            (1972-09-24T20:02:00,000000-0500)。
15813 * Day of week items::        曜日の項目 (Monday, Tuesday)。
15814 * Relative items in date strings::  相対表現の項目
15815                                       (next tuesday, 2 years ago)。
15816 * Pure numbers in date strings::    純粋な数値 (19931219, 1440)。
15817 * Seconds since the Epoch::         紀元からの秒数 (@1078100502)。
15818 * Specifying time zone rules::      タイムゾーン・ルールの指定
15819                                       (TZ="America/New_York", TZ="UTC0")。
15820 * Authors of parse_datetime::       parse_datetime の作者 (Bellovin, Eggert,
15821                                       Salz, Berets, et al.)。
15822
15823 \1f
15824 File: coreutils-ja.info,  Node: General date syntax,  Next: Calendar date items,  Up: Date input formats
15825
15826 28.1 日付書式の一般ルール
15827 =========================
15828
15829 日付 (“date”) は、空文字列のこともある文字列であり、空白 (whitespace) で
15830 区切られた多くの項目を含んでいる。各項目の意味に曖昧さが生じないなら、 空
15831 白は省略できる。空の文字列は、今日の始まり (すなわち、真夜中) を意味して
15832 いる。 項目の順序は重要ではない。日付文字列では、様々な種類の項目を指定
15833 することができる。
15834
15835    • 暦日の項目
15836    • 時刻の項目
15837    • タイムゾーンの項目
15838    • 日付と時刻を組み合わせた項目
15839    • 曜日の項目
15840    • 相対表現の項目
15841    • 純粋な数値
15842
15843 個々の項目については、次節以下で順番に説明する。
15844
15845    何番目かを示す序数の中には、現れる場所によっては、単語で表現できるも
15846 のがいくつかある。 これは、曜日や相対的表現の項目を指定するとき、たいへ
15847 ん便利だ (下記参照)。 使用頻度のきわめて高い序数を取り上げると、‘last’ と
15848 いう単語は -1 を表し、‘this’ は 0 を、‘first’ と ‘next’ は両方とも 1 を
15849 表している。‘second’ という単語は時間の単位でもあるので、 序数の 2 を単
15850 語で表現する方法はない。だが、便宜を考えて、‘third’ は 3 を、‘fourth’ は
15851 4 を、‘fifth’ は 5 を、‘sixth’ は 6 を、‘seventh’ は 7 を、‘eighth’ は 8
15852 を、‘ninth’は 9 を、‘tenth’ は 10 を、‘eleventh’ は 11 を、‘twelfth’ は
15853 12 を表すことになっている。
15854
15855    月がこの形で表現されたときも、やはり数値として (訳注: たとえば、今月
15856 から何ヶ月後と) 指定されたと見なされるのであって、月の名前の省略なしの表
15857 記と解釈されるわけではない (訳注: たとえば、third month を March の別名
15858 の完全表記とは考えない)。 そのため、March のような月名を使った場合とは、
15859 指定できる文字列が違ってくる。
15860
15861    現在の実装で使用できる単語は、英語の単語とその省略形のみである。 すな
15862 わち、‘AM’, ‘DST’, ‘EST’, ‘first’, ‘January’, ‘Sunday’, ‘tomorrow’,
15863 ‘year’ などだ。
15864
15865    ‘date’ コマンドの出力だからと言って、必ずしも日付文字列としてプログラ
15866 ムに渡せるとはかぎらない。 言語の問題のせいばかりではない。‘IST’ のよう
15867 なタイムゾーン項目には、標準的な意味が存在しないからでもある。 後でプロ
15868 グラムに構文解析をさせる予定の日付文字列を、‘date’ を使用して生成するの
15869 なら、日付の書式には、言語が何であるかに依存せず、‘UTC’ と ‘Z’ 以外のタ
15870 イムゾーン項目を使用しないものを指定するべきだ。 それを行う方法をいくつ
15871 か挙げておく。
15872
15873      $ LC_ALL=C TZ=UTC0 date
15874      Mon Mar  1 00:21:42 UTC 2004
15875      $ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
15876      2004-03-01 00:21:42Z
15877      $ date --rfc-3339=ns  # --rfc-3339 は GNU の拡張。
15878      2004-02-29 16:21:42.692722128-08:00
15879      $ date --rfc-2822  # GNU の拡張。
15880      Sun, 29 Feb 2004 16:21:42 -0800
15881      $ date +'%Y-%m-%d %H:%M:%S %z'  # %z は GNU の拡張。
15882      2004-02-29 16:21:42 -0800
15883      $ date +'@%s.%N'  # %s と %N も GNU の拡張。
15884      @1078100502.692722128
15885
15886    日付を指定する際、アルファベットの大文字と小文字は全く区別されない。
15887 丸カッコで囲めば、コメントを入れることができる。ただし、丸カッコを入れ子
15888 にするときは、 開きカッコと閉じカッコがきちんと対応していなければならな
15889 い。 数字が後に続かないハイフンは、現在のところ無視される。 また、数値の
15890 前に付けた 0 も無視される。
15891
15892    ‘2005-02-29’ のような無効な日付や ‘24:00’ のような無効な時刻は、却下
15893 される。 閏秒をサポートしていないホストでは、‘23:59:60’ のような時刻は、
15894 たとえ閏秒に正しく対応する値であっても、却下されるのが普通である。
15895
15896 \1f
15897 File: coreutils-ja.info,  Node: Calendar date items,  Next: Time of day items,  Prev: General date syntax,  Up: Date input formats
15898
15899 28.2 暦日の項目
15900 ===============
15901
15902 暦日の項目 (“calendar date item”) では、ある年のある一日を指定する。 月
15903 を数字で指定するか、文字で指定するかにかによって、日付の指定法が変わって
15904 くる。 以下に挙げる文字列は、すべて暦の上の同じ日付を指定している。
15905
15906      1972-09-24     # ISO 8601 形式。
15907      72-9-24        # 69 から 99 までは、19xx 年と見なし、
15908                     # 00 から 68 までは、20xx 年と見なす。
15909      72-09-24       # 先頭の 0 は無視される。
15910      9/24/72        # アメリカでよく使われる表記。
15911      24 September 1972
15912      24 Sept 72     # September には、4 文字の省略形もある。
15913      24 Sep 72      # 3 文字の省略形は、何月に対しても使用できる。
15914      Sep 24, 1972
15915      24-sep-72
15916      24sep72
15917
15918    年を省略することもできる。その場合は、日付文字列の後方で指定された年
15919 が使用される (訳注: たとえば、‘date -d "5/3 2:00 UTC 2015"’ のような場合
15920 だろう)。 それもない場合は、今年が使われる。例を挙げると、次のような形で
15921 ある。
15922
15923      9/24
15924      sep 24
15925
15926    要するに、ルールはこうだ。
15927
15928    月を数字で表す場合、ISO 8601 の形式、すなわち ‘YEAR-MONTH-DAY’ が使用
15929 できる。ここで YEAR は任意の正の数であり、MONTH は 01 から 12 までの数、
15930 DAY は 01 から 31 までの数である。 数が 10 未満のときは、0 を前に付ける
15931 ことになる。YEAR が 68 以下の場合は、YEAR に2000 が加算される。また、
15932 YEAR が 69 以上、100 未満ならば、1900 が加算される。アメリカ合衆国で一般
15933 的な ‘MONTH/DAY/YEAR’ という書式も使うことができる。 年を省略した
15934 ‘MONTH/DAY’ も可能である。
15935
15936    月の名前を使用する場合は、フルスペルで書いてもよい。 すなわち、
15937 ‘January’, ‘February’, ‘March’, ‘April’, ‘May’, ‘June’, ‘July’,
15938 ‘August’, ‘September’, ‘October’, ‘November’, ‘December’ である。 月の名
15939 前は、最初の 3 文字に省略することができる。 その場合、省略の印のピリオド
15940 は、付けても付けなくてもよい。 また、‘September’ の代わりに、‘Sept’ と書
15941 くことも認められている。
15942
15943    月名を使用する場合、暦の上の日付は、以下のどの形で指定してもよい。
15944
15945      DAY MONTH YEAR
15946      DAY MONTH
15947      MONTH DAY YEAR
15948      DAY-MONTH-YEAR
15949
15950    年を省略することもできる。
15951
15952      MONTH DAY
15953
15954 \1f
15955 File: coreutils-ja.info,  Node: Time of day items,  Next: Time zone items,  Prev: Calendar date items,  Up: Date input formats
15956
15957 28.3 時刻の項目
15958 ===============
15959
15960 日付文字列中の時刻の項目 (“time of day item”) では、当日の時刻を指定する
15961 。 以下に挙げるいくつかの例は、すべて同じ時刻を表している。
15962
15963      20:02:00.000000
15964      20:02
15965      8:02pm
15966      20:02-0500      # EST (U.S. Eastern Standard Time)
15967
15968    もっと一般的に言うと、時刻は ‘HOUR:MINUTE:SECOND’ の形で指定できる。
15969 HOUR は 0 から 23 までの数であり、MINUTE は 0 から 59 までの数である。
15970 SECOND は 0 から 59 までの数であり、‘.’ や ‘,’ を後ろに付けて、一桁以上
15971 の数字からなる小数を続けてもよい。 なお、‘:SECOND’ は省略することもでき
15972 、その場合は 0 を指定したことになる。 閏秒をサポートするホストもまれには
15973 あり、そうしたところでは SECOND に 60 を指定することができる。
15974
15975    時刻に ‘am’ や ‘pm’ (または ‘a.m.’ や ‘p.m.’) が続く場合は、 HOUR が
15976 1 から 12 までになる。‘:MINUTE’ は省略してもよい (0 を指定したものと見な
15977 される)。‘am’ は一日の前半を示し、‘pm’ は一日の後半を示す。この表記法で
15978 は、1 の前が 12 になる。すなわち、真夜中は ‘12am’ であり、正午は ‘12pm’
15979 である。(これは ‘12am’ や ‘12pm’ の 12 を 0 のように見なす解釈であり、正
15980 午を ‘12m’、深夜を ‘12pm’ とするラテン文化から来た従来の習慣とは逆になっ
15981 ている。)
15982
15983    また、時刻にはタイムゾーン補正を続けてもよい。補正は ‘SHHMM’ という形
15984 で表現され、S は ‘+’ または ‘-’ 符号、HH は時間帯の時間差、MM は分差の部
15985 分である。分差の部分 MM は指定しないでもよく、その場合は、1 桁ないし 2 桁
15986 の補正は、時間差の指定と見なされる。なお、HH と MM の間をコロンで区切っ
15987 てもよい。タイムゾーン補正をこの方法で指定した場合、 それが、それまでに
15988 指定したいかなるタイムゾーンよりも、 また、ローカル・タイムゾーンよりも
15989 優先され、指定した時刻は、協定世界時 (UTC) よりも補正分進んでいる (ある
15990 いは、遅れている) タイムゾーンの時刻であると解釈されることになる。 一例
15991 を挙げると、‘+0530’ と ‘+05:30’ は両方とも、UTC より 5.5 時間進んだタイ
15992 ムゾーンを表している (たとえば、インドである)。 これは、タイムゾーン補正
15993 を 1 時間以下の部分まで指定する最善の方法である。 タイムゾーン補正の最大
15994 値は、24 時間である。
15995
15996    ‘am’/‘pm’ とタイムゾーン補正は、どちらか一方のみが指定できる。 両方を
15997 指定することはできない。
15998
15999 \1f
16000 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
16001
16002 28.4 タイムゾーンの項目
16003 =======================
16004
16005 タイムゾーン項目 (“time zone item”) では、国際時間帯を指定する。 これは
16006 数個の文字によって表されるもので、たとえば、協定世界時 (Coordinated
16007 Universal Time) なら ‘UTC’ または ‘Z’ である。 省略の印のピリオドは、す
16008 べて無視される。標準時のタイムゾーン (a non-daylight-saving time zone) の
16009 後ろに、文字列 ‘DST’ を独立した単語として (すなわち、空白、タブなどを間
16010 に置いて) 続ければ、対応する夏時間のタイムゾーンを指定することができる。
16011 ちなみに、標準時のタイムゾーンの後ろに、タイムゾーン補正を続けて、 両方
16012 の値を加算することもできる。ただし、その指定法は、通常 ‘UTC’ に対してし
16013 か行われない。たとえば、‘UTC+05:30’ は ‘+05:30’ と同じことである。
16014
16015    ‘UTC’ と ‘Z’ 以外のタイムゾーン項目は、時代遅れになりかかっているので
16016 、使用しない方がよい。 理由は解釈が一定しないからであり、たとえば、‘EST’
16017 はオーストラリアとアメリカ合衆国で違った意味を持っている。 タイムゾーン
16018 項目を使用するよりも、前節で述べた ‘-0500’ のような、数値によるタイムゾ
16019 ーン補正を使う方が、曖昧さがない分優れている。
16020
16021    タイムゾーン項目とタイムゾーン補正のどちらも指定されていない場合、 タ
16022 イムスタンプの解釈は、デフォルトのタイムゾーンのルールを用いて行われる
16023 (*note Specifying time zone rules::)。
16024
16025 \1f
16026 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
16027
16028 28.5 暦日と時刻を組み合わせた項目
16029 =================================
16030
16031 ISO 8601 の拡張日時書式は、ISO 8601 形式の日付、‘T’ という区切り文字、
16032 ISO 8601 形式の時刻という構成になっている。 ‘T’ の代わりにスペースが使わ
16033 れていても、この書式として認識される。
16034
16035    この書式では、時刻は 24 時間表記を使用するべきである。 秒については、
16036 コンマまたはピリオドに小数部分を続けることで、小数点以下も指定できる。
16037 ISO 8601 で認められている分や時の小数表現には対応していない。 たいていの
16038 ホストがナノセコンドの精度のタイムスタンプをサポートしている。 サポート
16039 を超えた精度は、エラーや警告を出さずに単に除去される。
16040
16041    例をいくつか挙げてみよう。
16042
16043      2012-09-24T20:02:00.052-05:00
16044      2012-12-31T23:59:59,999999999+11:00
16045      1970-01-01 00:00Z
16046
16047 \1f
16048 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
16049
16050 28.6 曜日の項目
16051 ===============
16052
16053 曜日を明示的に指定すると、未来のその曜日にまで日付を前に進めることになる
16054 (これが行われるのは、その必要があるときだけである)。
16055
16056    曜日は省略なしに書いてもよい。すなわち、‘Sunday’, ‘Monday’,
16057 ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’ である。最初の
16058 3 文字に短縮することもでき、 その場合、省略の印のピリオドは付けても付け
16059 なくてもよい。 ‘Tuesday’ には ‘Tues’、‘Wednesday’ には ‘Wednes’、
16060 ‘Thursday’ には ‘Thur’ または ‘Thurs’ という特殊な省略形もある。
16061
16062    曜日項目の前に数値を付けてもよい。週がその分だけ前に進むことになる。
16063 これは、‘third monday’ のような表現で使うのが、一番よい。 その伝で、
16064 ‘last DAY’ や ‘next DAY’ という表現も許されている (訳注: DAY の部分には
16065 Sunday, Monday などの曜日を指定する)。 それぞれ、単独の DAY が表すことに
16066 なる日付より 1 週間前、または 1 週間後の日付になる。
16067
16068    (訳注: next について上記のことが成り立つのは、DAY が今日の曜日のとき
16069 だけである。 それ以外の場合は、DAY と ‘next DAY’ は同じになる。)
16070
16071    曜日項目の後ろにコンマがあっても、無視される。
16072
16073    (訳注: 確かに ‘-d "Thu, 2013-03-07"’ といった指定では、コンマが無視さ
16074 れるが、 ‘-d "next Thu,"’ や ‘-d "3 Thu,"’ といった指定では、 “invalid
16075 date” と言われ、エラーになる。)
16076
16077 \1f
16078 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
16079
16080 28.7 相対表現の項目
16081 ===================
16082
16083 相対表現の項目 (“Relative items”) は、日付を (指定しない場合は、現在の日
16084 付を) 前後に移動させる。また、相対表現の項目の作用は、加算されていく。 相
16085 対表現の項目とは、次のようなものである。
16086
16087      1 year
16088      1 year ago
16089      3 years
16090      2 days
16091
16092    時間をどれくらい移動するかの単位は、文字列を使って選択する。 まる数年
16093 、あるいは、まる数ヶ月ずらすのなら、‘year’ や ‘month’ という文字列を使う
16094 。 年も月も、曖昧な単位である。すべての年や月が、同じ長さをしているわけ
16095 ではないからだ。 もっと厳密な単位としては、‘fortnight’ (14 日間)、‘week’
16096 (7 日間)、‘day’ (24 時間)、‘hour’ (60 分間)、‘minute’ または ‘min’ (60 秒
16097 間)、‘second’ または ‘sec’ (1 秒間) がある。こうした単位には、複数語尾の
16098 ‘s’ を付けてもよいが、付けても無視される。
16099
16100    時間の単位の前に、何倍かを示す乗数を置くことができる。 乗数には、‘+’
16101 または ‘-’ の符号を付けてもよい。 符号なしの数値には、‘+’ の符号が付いて
16102 いるものと見なされる。 数値を指定しなければ、乗数に 1 を指定したことにな
16103 る。相対表現の項目に ‘ago’ を続けるのは、単位の前にマイナスの乗数を置く
16104 のと同じことである。
16105
16106    ‘tomorrow’ という文字列は、1 日分未来ということである (‘day’ と等しい
16107 )。‘yesterday’ は、1 日分過去ということだ (‘day ago’ と等しい)。
16108
16109    ‘now’ や ‘today’ という文字列は、値 0 の時間移動に対応する相対表現の
16110 項目である。 値 0 の時間移動は、先行する項目によって別の日時に変更されて
16111 いないかぎり、 今現在の日時を表すということから、‘now’ (今) や ‘today’
16112 (今日) という言い方ができるわけだ。 こうしたものは、他の項目を強調するた
16113 めに、たとえば、‘12:00 today’ といった具合に使うこともできる。‘this’ と
16114 いう文字列にも、値 0 の時間移動という意味があるが、こちらは ‘this
16115 thursday’ のような日付文字列で使用される。
16116
16117    相対表現の項目によって生成される日付が、 標準時と夏時間の切り替えを典
16118 型とするような、時刻調整の境目を越えたものになる場合、 生成される日時は
16119 適切に調整される。
16120
16121    単位の曖昧さが、相対表現の項目では問題を起こすことがある。 たとえば、
16122 ‘2003-07-31 -1 month’ は、2003-07-01 と評価されるかもしれない。
16123 2003-06-31 が無効な日付だからだ。先月が何月かをもっと確実に引き出すため
16124 には、 今月の 15 日よりも前に、先行する月を求めればよい。例を挙げる。
16125
16126      $ date -R
16127      Thu, 31 Jul 2003 13:02:39 -0700
16128      $ date --date='-1 month' +'Last month was %B?'
16129      Last month was July?
16130      $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
16131      Last month was June!
16132
16133    また、標準時と夏時間の切り替えのような時刻変更があるときの前後で日付
16134 の操作を行う場合も、気を付けた方がよい。 24 時間も加算されたり、減算され
16135 たりしてしまうことも、ないとは言えないからだ。 そこで、たいていの場合、
16136 日付の計算に取りかかる前に、環境変数 ‘TZ’ を ‘UTC0’ に設定して、協定世界
16137 時を採用するのが賢明である。
16138
16139 \1f
16140 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
16141
16142 28.8 日付文字列中の純粋な数値
16143 =============================
16144
16145 純粋な 10 進数をどう解釈するかは、日付文字列の文脈次第である。
16146
16147    10 進数が YYYYMMDD の形をとり、日付文字列中のそれより前に他の暦日の項
16148 目 (*note Calendar date items::) が存在しない場合、YYYY は暦の上のある 1
16149 日の年の部分と見なされる。 MM は何番目の月かということ、DD はその月の日
16150 にちである。
16151
16152    10 進数が HHMM の形をとり、日付文字列中のそれより前に他の時刻の項目が
16153 存在しない場合、 HHMM は時刻の指定になり、HH はある 1 日の何時の部分、MM
16154 は何分の部分と見なされる。MM を省略してもよい。
16155
16156    日付文字列中で、ある数値の左側に暦の上の日にちとその日の時刻の両方が
16157 存在し、相対表現の項目が存在しない場合は、 その数値が今年の代わりに使わ
16158 れる。
16159
16160    (訳注: たとえば、‘date -d "3/27 10:10 2012"’ と指定すると、 今年の代
16161 わりに 2012 が使われるということらしい。 ‘date -d "3/27/2001 10:10
16162 2012"’ や ‘date -d "2001-03-27 10:10 2012"’ は無効な日付になるし、‘date
16163 -d "3/27 1010 2012"’ は、1010 年 3 月 27 日 20:12:00 になる。)
16164
16165 \1f
16166 File: coreutils-ja.info,  Node: Seconds since the Epoch,  Next: Specifying time zone rules,  Prev: Pure numbers in date strings,  Up: Date input formats
16167
16168 28.9 Unix 紀元 (the Epoch) からの秒数
16169 =====================================
16170
16171 ‘@’ に数値を続けると、それは、秒数として、システム内部で使われるタイムス
16172 タンプを表すことになる。 数値には、小数点 (‘.’ または ‘,’) が含まれてい
16173 てもよい。 内部表現がサポートしていない余分な精度は、マイナスの無限に向
16174 けて切り詰められる。 ‘@’ で始まるこうした数値は、他の日付項目のいかなる
16175 ものとも組み合わせて使うことができない。 欠けるところのない完全なタイム
16176 スタンプの指定だからである。
16177
16178    コンピュータの内部では、時間は、ある紀元 (an epoch) — きちんと定義さ
16179 れた時間中のある一点 — からの秒数として表現されている。 GNU や POSIX の
16180 システムでは、紀元は 1970-01-01 00:00:00 UTC である。 従って、‘@0’ はそ
16181 の時刻を表し、‘@1’ は 1970-01-01 00:00:01 UTC を表す、以下同様ということ
16182 になる。GNU を始め、POSIX に準拠したほとんどのシステムでは、 POSIX に対
16183 する拡張として、こうした時間表記をマイナスの秒数を使うことも含めて、サポ
16184 ートしている。 従って、‘@-1’ は 1969-12-31 23:59:59 UTC を表すことになる
16185
16186
16187    旧来の Unix システムでは、秒を 32 ビットの 2 の補数である整数で数えて
16188 おり、 1901-12-13 20:45:52 から 2038-01-19 03:14:07 UTC まで表すことがで
16189 きる。 もっと新しいシステムでは、64 ビットの秒数計算を、ナノセコンドのサ
16190 ブカウント付きで使用しており、 宇宙の寿命として知られている時間のうちの
16191 あらゆる時刻を 1 ナノセコンドの精密さで表すことができる。
16192
16193    ほとんどのホストのこうした計算では、閏秒の存在が無視されている。 たと
16194 えば、ほとんどのホストで ‘@915148799’ は 1998-12-31 23:59:59 UTC を表し
16195 、‘@915148800’ は 1999-01-01 00:00:00 UTC を表している。 従って、間にあ
16196 る 1998-12-31 23:59:60 UTC という閏秒を表現する方法は存在しない。
16197
16198 \1f
16199 File: coreutils-ja.info,  Node: Specifying time zone rules,  Next: Authors of parse_datetime,  Prev: Seconds since the Epoch,  Up: Date input formats
16200
16201 28.10 タイムゾーン・ルールの指定
16202 ================================
16203
16204 通常、日付の解釈は、現在のタイムゾーンのルールを使って行われる。 そして
16205 、その現在のタイムゾーンのルールを指定しているのは、環境変数 ‘TZ’ か、
16206 ‘TZ’ が設定されていなければ、システムのデフォルト設定である。 今、ある一
16207 つの日付のみに別のタイムゾーンでデフォルトとして使われる一連のルールを適
16208 用したいとしよう。 その場合は、日付を ‘TZ="RULE"’ という文字列で始めれば
16209 よい。 日付中では、対になった二重引用符 (‘"’) で RULE を必ず囲わなければ
16210 ならない。 また、RULE 中に引用符やバックスラッシュがあるときは、 それを
16211 バックスラッシュでエスケープしなければならない。
16212
16213    一例を挙げると、GNU の ‘date’ コマンドを使って、「パリで 2004 年 10 月
16214 31 日 午前 6 時 30 分のとき、 ニューヨークでは何時か?」という質問に答え
16215 ることができる、 以下で示すように、‘TZ="Europe/Paris"’で始まる日付を使う
16216 のである。
16217
16218      $ export TZ="America/New_York"
16219      $ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
16220      Sun Oct 31 01:30:00 EDT 2004
16221
16222    この例では、‘--date’ のオペランドの最初の部分で、その日付専用の ‘TZ’
16223 が設定されている。そこで、このオペランドの残りの部分は、‘Europe/Paris’ の
16224 ルールに従って処理され、‘2004-10-31 06:30’ という文字列が、パリの日時で
16225 あるかのように扱われる。ところが、‘date’ コマンドの出力は、全体のタイム
16226 ゾーンのルールに従って処理されるので、 出力にはニューヨークの時刻が使用
16227 されるのである。 (2004 年には、パリは通常ニューヨークより 6 時間進んでい
16228 た。 しかし、この例は、時差が 5 時間だったハロウィーンの日のほんの短い間
16229 のことを言っている。)
16230
16231    ‘TZ’ の値はルールであり、ルールには通常、‘tz’ データベースの地域名が
16232 付けられている (<http://www.twinsun.com/tz/tz-link.htm>)。 地域名の最新
16233 の一覧は、TWiki Date and Time Gateway で見ることができる
16234 (<http://twiki.org/cgi-bin/xtra/tzdate>)。 なお、GNU 以外のホストの中に
16235 は、‘TZ’ を設定するとき、‘TZ=":America/New_York"’ のように、地域名の前に
16236 コロンを置く必要があるものもある。
16237
16238    ‘tz’ データベースには、‘Arctic/Longyearbyen’ から
16239 ‘Antarctica/South_Pole’ に至るまで、実にさまざまな地域が含まれている。 そ
16240 れでも、目下航海の最中でタイムゾーンが船特有のものである場合や、‘tz’ デ
16241 ータベースに対応していない non-GNU のホストを使用している場合は、‘tz’ デ
16242 ータベースの地域名で表されるルールの代わりに、POSIX 式のルールを使う必要
16243 があるかもしれない。POSIX 式では、‘UTC0’ のような単純なルールだと、夏時
16244 間なしのタイムゾーン指定になるが、 そのほかに、簡単な夏時間制度なら指定
16245 できる別のルールも存在する。 *Note Specifying the Time Zone with ‘TZ’:
16246 (libc)TZ Variable.
16247
16248 \1f
16249 File: coreutils-ja.info,  Node: Authors of parse_datetime,  Prev: Specifying time zone rules,  Up: Date input formats
16250
16251 28.11 ‘parse_datetime’ の作者
16252 =============================
16253
16254 ‘parse_datetime’ は、‘getdate’ として誕生した。 最初の実装を行ったのは、
16255 Steven M. Bellovin (<smb@research.att.com>) であり、ノースカロライナ大学
16256 チャペルヒル校に在学中のことだった。 その後、Usenet 上で数人によって機能
16257 が追加され、1990 年 8 月に Rich $alz (<rsalz@bbn.com>) と Jim Berets
16258 (<jberets@bbn.com>) によって徹底的なオーバーホールがなされた。 GNU シス
16259 テムのための様々な改訂は、David MacKenzie, Jim Meyering, Paul Eggert な
16260 どによって行われた。ほぼ同様の機能を持つ Posix の ‘getdate’ 関数との衝突
16261 を避けるために ‘get_date’ と名前を変えたのも、この改訂の一部であり、さら
16262 に後に、‘parse_datetime’ と改名した。Posix の ‘getdate’ 関数は、
16263 ‘strptime’ の使用によりロケール特有の日付の解析に優れているが、環境変数
16264 や外部のファイルに依存しており、 ‘parse_datetime’ の持つスレッド安全性
16265 (thread-safety) を欠いている。
16266
16267    この章は、François Pinard (<pinard@iro.umontreal.ca>) がソースコード
16268 の ‘parse_datetime.y’ を元にして最初に作成し、 その後、K. Berry
16269 (<kb@cs.umb.edu>) が増補改訂した。
16270
16271 \1f
16272 File: coreutils-ja.info,  Node: Opening the software toolbox,  Next: About the translation,  Prev: Date input formats,  Up: Top
16273
16274 29 ソフトウェアの道具箱
16275 ***********************
16276
16277 この章の初期のバージョンは、「GNU とは何か? (‘What’s GNU?’)」という連載
16278 記事として ‘Linux Journal’ 1994 年 6 月号に掲載された。 執筆者は Arnold
16279 Robbins である。 (<http://www.linuxjournal.com/article.php?sid=2762>)
16280
16281 * Menu:
16282
16283 * Toolbox introduction::     はじめに
16284 * I/O redirection::          I/O リダイレクション
16285 * The who command::          ‘who’ コマンド
16286 * The cut command::          ‘cut’ コマンド
16287 * The sort command::         ‘sort’ コマンド
16288 * The uniq command::         ‘uniq’ コマンド
16289 * Putting the tools together::  工具を組み合わせる
16290
16291 \1f
16292 File: coreutils-ja.info,  Node: Toolbox introduction,  Next: I/O redirection,  Up: Opening the software toolbox
16293
16294 はじめに
16295 ========
16296
16297 今月の記事と GNU プロジェクトの関係は、周辺的なものにすぎない。お手元の
16298 GNU/Linux システムの GNU ツールをいくつか取り上げて、 こんな使い方もあり
16299 ますよ、と述べている点で、関係があるにすぎないのだ。 今月の記事の真の狙
16300 いは、プログラムを開発したり、使用したりする上での、 「ソフトウェアは工
16301 具だ」という考え方を説明することである。
16302
16303    ソフトウェアは工具だという思想は、Unix が最初に設計され、開発されたと
16304 きの重要で不可欠な考え方だった (Linux も GNU も本質的には Unix のクロー
16305 ンである)。 残念なことに、最近ではインターネットや見栄えのよい GUI の勢
16306 いに押されて、 ソフトウェア工具論は流行らなくなっているようだ。 この思想
16307 は、様々な問題を解決するための強力な思考モデルを提供してくれるのだから、
16308 まことに残念な話である。
16309
16310    スイス・アーミーナイフをズボンのポケットに (または、小物入れに) 入れ
16311 て、持ち歩いている人は多い。スイス・アーミーナイフは持っていると重宝な道
16312 具だ。 それには、何本かのナイフ、ねじ回し、ピンセット、つまようじ、爪や
16313 すり、コルク抜き、 他にもたぶん、いろいろ付いているだろう。 日常のちょっ
16314 とした雑用には、何にでも使える簡単な道具があれば済むのだから、 そうした
16315 用途にはまさにピッタリの道具である。
16316
16317    しかしながら、熟練した大工は、スイス・アーミーナイフを使って家を建て
16318 たりしない。 彼は、その代わりに道具箱を持っていて、そこには用途別の工具
16319 — のこぎり、金槌、ねじ回し、鉋など — がぎっしり詰まっている。 しかも、彼
16320 は一つ一つの工具について、適材適所を心得ている。 ねじ回しの柄で釘を打ち
16321 込んだりすることは絶対にないのだ。
16322
16323    ベル研究所にいた Unix の開発者たちは、プロのプログラマやコンピュータ
16324 ・サイエンスの専門家ばかりだった。 その彼らが、こういうことに気づいたの
16325 だ。 万能型のプログラムは、たった一つのプログラムを使えばよいので、 ユー
16326 ザには受けがよいかもしれない。だが、いざ実際に作ってみると、そうしたプロ
16327 グラムは、
16328
16329   a. 書くのが難しく、
16330
16331   b. 保守やデバッグが難しく、
16332
16333   c. 新しい状況に合わせて機能を拡張するのが難しい。
16334
16335    むしろ彼らは、プログラムは用途別の工具であるべきだと痛感した。 要する
16336 に、個々のプログラムは、「一つの仕事をきちんとやってのければよい」。 そ
16337 れ以上でもそれ以下でもない。そういったプログラムは、 設計するのも、コー
16338 ドを書くのも、修正するのも、ずっと簡単である — たった一つのことしかしな
16339 いからだ。
16340
16341    それだけではない。適切な仕組みを使って、プログラムを組み合わせると、
16342 全体が部分の総和以上になることにも、彼らは気づいた。 ある用途専用のプロ
16343 グラムをいくつか組み合わせると、 どのプログラムもそのために作られたので
16344 はない、ある特定の作業をやってのけることができる。 それも、それ専用のプ
16345 ログラムを書かなければならない場合よりも、 はるかに迅速に、かつ簡単にや
16346 ってのけられるのだ。この記事の以下では、そうした使用法の (基本的な) 例を
16347 いくつか紹介する。(大事なことを一つ付記しておく。急がば回れだ。 必要にな
16348 るかもしれないソフトウェア工具があれば、まずそれを作ること。 道具箱に適
16349 切な工具がまだない場合の話であるが。)
16350
16351 \1f
16352 File: coreutils-ja.info,  Node: I/O redirection,  Next: The who command,  Prev: Toolbox introduction,  Up: Opening the software toolbox
16353
16354 I/O リダイレクション
16355 ====================
16356
16357 シェルの入出力リダイレクションについて、基本的なこと、 とくに標準入力、
16358 標準出力、標準エラーがどういうものかを、読者はよく御存じだと思う。 要す
16359 るに、標準入力とは、データの入力元、すなわち、データがそこからやって来る
16360 場所のことだ。 データの入力元が、ディスク上のファイルだろうと、キーボー
16361 ドだろうと、磁気テープだろうと、 それどころかパンチカード・リーダーだろ
16362 うと、プログラムはそれを知る必要もなければ、気にかける必要もない。 同様
16363 に、標準出力とは、データの溜まる場所、データがそこに行く場所のことだ。 プ
16364 ログラムとしては、それがどこになろうと、知らなくてもよく、気にかけなくて
16365 もよい。 標準入力からデータを読み込み、それに対して何らかの処理を行い、
16366 標準出力に送り出すだけのプログラムを、 水道のパイプラインのフィルターに
16367 なぞらえて、「フィルター (“filter”)」と呼ぶ。
16368
16369    Unix のシェルでは、データのパイプラインを作るのはとてもやさしい。
16370
16371      program_to_create_data | filter1 | ... | filterN > final.pretty.data
16372
16373    ここでは、まず最初に生のデータを作成している。 各フィルターがそのデー
16374 タに対して何らかの変形を次々に行い、 最終的に、データが希望どおりの形に
16375 なって、パイプラインから抜け出してくる。
16376
16377    標準入力と標準出力については、それでよい。 では、標準エラーはどこで登
16378 場し、どんな役割を果たすのだろうか? 上記パイプラインの ‘filter1’ につい
16379 て考えてほしい。 データを読んでいるうちにエラーが起きたら、どうなるだろ
16380 うか? ‘filter1’ がエラーメッセージを標準出力に書き出したら、 そのメッセ
16381 ージはパイプラインを下って ‘filter2’ の入力に飲み込まれてしまう。 そうな
16382 ると、ユーザはたぶんメッセージをまったく目にしないことになるだろう。 そ
16383 こで、プログラムとしては、ユーザがエラーメッセージに気がついてくれるよう
16384 に、 それを送ることのできる場所が必要になる。それが、標準エラーなのであ
16385 り、 標準エラーは通常、現在使用しているコンソールやウィンドウに結びつい
16386 ている。 プログラムの標準出力を使用中のスクリーン以外にリダイレクトして
16387 いる場合でも、それは変わらない。
16388
16389    フィルター・プログラムが協力し合うためには、データのフォーマットにつ
16390 いて互いに合意している必要がある。 最も素直で使いやすいフォーマットと言
16391 えば、何と言っても、行分けされたテキストだ。 そして、Unix のデータファイ
16392 ルは、たいていの場合、まさに、ASCII LF (Line Feed) 文字によって行分けさ
16393 れたバイトの連続なのである。なお、この LF 文字は、Unix の文書では「改行
16394 (newline)」と呼ばれる習慣になっている (C のプログラマにとっては ‘\n’ だ
16395 )。これこそ、すべての伝統的なフィルター・プログラムによって使用されて来
16396 たフォーマットである。 (昔のオペレーティング・システムの多くは、バイナリ
16397 ・データを扱うための複雑な手段や専用のプログラムを備えていた。 だが、
16398 Unix は、ただ単にテキストエディタでデータを見たり編集できたりする方がは
16399 るかに簡単だという考えから、 そうした道具をずっと敬遠してきたのである。)
16400
16401    さて、前置きはこれくらいで十分だ。まず、道具のいくつかをざっと見てみ
16402 よう。 その後で、そうした道具をおもしろいやり方で組み合わせる方法をご覧
16403 に入れる。 以下の解説では、当面の問題に関係のあるコマンドライン・オプシ
16404 ョンしか取り上げない。 いつでもそうすべきことだが、コマンドについて詳し
16405 いことを知りたかったら、 ご使用のシステムの文書を参照なさるとよい。
16406
16407 \1f
16408 File: coreutils-ja.info,  Node: The who command,  Next: The cut command,  Prev: I/O redirection,  Up: Opening the software toolbox
16409
16410 ‘who’ コマンド
16411 ==============
16412
16413 最初に取り上げるプログラムは、‘who’ コマンドだ。 これは単独で使うと、現
16414 在ログインしているユーザのリストを生成する (参照: *note who
16415 invocation::)。 筆者がこの原稿を書いているのは、シングルユーザのシステム
16416 だが、数人のユーザがログインしていることにしよう。
16417
16418      $ who
16419      ⊣ arnold   console Jan 22 19:57
16420      ⊣ miriam   ttyp0   Jan 23 14:19(:0.0)
16421      ⊣ bill     ttyp1   Jan 21 09:32(:0.0)
16422      ⊣ arnold   ttyp2   Jan 23 20:48(:0.0)
16423
16424    ここで ‘$’ はお馴染みのシェルプロンプトであり、筆者はそれに対して
16425 ‘who’ と打ち込んだわけだ。三人のユーザがログインしており、筆者は二度ログ
16426 インしている。 伝統的な Unix のシステムでは、ユーザ名はアルファベット 8
16427 文字までということになっている。このちょっとした豆知識が、後で役に立つこ
16428 とになる。 ‘who’ の出力は悪くはない。だが、大しておもしろいデータでもな
16429 い。
16430
16431 \1f
16432 File: coreutils-ja.info,  Node: The cut command,  Next: The sort command,  Prev: The who command,  Up: Opening the software toolbox
16433
16434 ‘cut’ コマンド
16435 ==============
16436
16437 次に注目するプログラムは ‘cut’ コマンドだ。 このコマンドは、入力されたデ
16438 ータから縦の列 (columns) やフィールドを切り出す (参照: *note cut
16439 invocation::)。そこで、‘cut’ に命じて、‘/etc/passwd’ ファイルからログイ
16440 ン名とフルネームだけ表示させるといったことができる。 ‘/etc/passwd’ には
16441 、七つのフィールドがあり、おのおのコロンで区切られている。
16442
16443      arnold:xyzzy:2076:10:Arnold D. Robbins:/home/arnold:/bin/bash
16444
16445    1 番目と 5 番目のフィールドを取り出すには、次のように ‘cut’ を使用す
16446 る。
16447
16448      $ cut -d: -f1,5 /etc/passwd
16449      ⊣ root:Operator
16450      ...
16451      ⊣ arnold:Arnold D. Robbins
16452      ⊣ miriam:Miriam A. Robbins
16453      ...
16454
16455    ‘-c’ オプションを付けると、 ‘cut’ は入力行中の特定の文字 (すなわち、
16456 特定の縦の列) を切り出す。これは、入力データが固定幅のフィールドを持ち、
16457 フィールド・セパレータがないときに便利である。 たとえば、今月の月曜日は
16458 、何日と何日かをリストするには、次のようにする。
16459
16460      $ cal | cut -c 3-5
16461      ⊣ Mo
16462      ⊣
16463      ⊣  6
16464      ⊣ 13
16465      ⊣ 20
16466      ⊣ 27
16467
16468 \1f
16469 File: coreutils-ja.info,  Node: The sort command,  Next: The uniq command,  Prev: The cut command,  Up: Opening the software toolbox
16470
16471 ‘sort’ コマンド
16472 ===============
16473
16474 次に ‘sort’ コマンドを一瞥する。 これは Unix 風のシステムにおける最も強
16475 力なコマンドの一つであり、 パイプを使って手の込んだデータ処理を行うとき
16476 、気がつくと使っていることがよくあるものだ。
16477
16478    ‘sort’ コマンドは、コマンドラインで指名された各ファイルを読み込んで、
16479 ソートする。 その後で、ソートしたデータをマージし、それを標準出力に書き
16480 出す。 コマンドラインでファイルが指定されていない場合は、標準入力を読み
16481 込む (こうして、フィルターになる)。ソートは、文字の照合順序、あるいは、
16482 ユーザが順序について指定した基準に基づいて行われる (参照: *note sort
16483 invocation::)。
16484
16485 \1f
16486 File: coreutils-ja.info,  Node: The uniq command,  Next: Putting the tools together,  Prev: The sort command,  Up: Opening the software toolbox
16487
16488 ‘uniq’ コマンド
16489 ===============
16490
16491 最後に目を向けるのは (少なくとも今のところはだが)、‘uniq’ プログラムだ。
16492 データのソートをしていると、結果に重複行が現れることがよくある。 内容が
16493 全く同じ行だ。たいていの場合、各行は一つだけあればよい。そこで、‘uniq’ の
16494 出番になる。‘uniq’ プログラムは、標準入力を読み込み、 連続する同一行につ
16495 いては、そのうちの一件だけを表示する。‘uniq’ には、オプションがいくつか
16496 ある。後で ‘-c’ オプションを使うことになるが、 これはユニークな、つまり
16497 他と違っている各行を表示するとき、 その行が入力中に現れた回数を前に付け
16498 るものである (参照: *note uniq invocation::)。
16499
16500 \1f
16501 File: coreutils-ja.info,  Node: Putting the tools together,  Prev: The uniq command,  Up: Opening the software toolbox
16502
16503 工具 (tools) を組み合わせる
16504 ===========================
16505
16506 さて、大規模な ISP のサーバーシステムがあって、何十人ものユーザがログイ
16507 ンしているとしよう。 経営側がシステム管理者に、ログインしているユーザの
16508 ソートしたリストを生成するプログラムを書くことを求めている。 しかも、あ
16509 るユーザが多重ログインをしていても、その人の名前は出力に 1 回だけ現れれ
16510 ばよいという条件がある。
16511
16512    システム管理者は腰を据えてシステムのマニュアル類に取り組み、そうした
16513 作業を実行する C のプログラムを書くこともできるだろう。そのためには、た
16514 ぶん数百行のコードが必要であり、 プログラムを書いて、テストして、デバッ
16515 グするには、2 時間ぐらいかかるはずだ。 それに対して、ソフトウェアの道具
16516 箱に精通しているシステム管理者なら、 C のプログラムを書く代わりに、ログ
16517 インしているユーザのリストを生成するところから始めることができる。
16518
16519      $ who | cut -c1-8
16520      ⊣ arnold
16521      ⊣ miriam
16522      ⊣ bill
16523      ⊣ arnold
16524
16525    次に、リストをソートする。
16526
16527      $ who | cut -c1-8 | sort
16528      ⊣ arnold
16529      ⊣ arnold
16530      ⊣ bill
16531      ⊣ miriam
16532
16533    最後に、ソートしたリストを ‘uniq’ に渡して、重複を除く。
16534
16535      $ who | cut -c1-8 | sort | uniq
16536      ⊣ arnold
16537      ⊣ bill
16538      ⊣ miriam
16539
16540    実を言うと、‘sort’ コマンドには ‘-u’ というオプションがあって、‘uniq’
16541 がやることをやってくれる。しかし、‘uniq’ にはほかの働きもあり、そちらは
16542 ‘sort -u’ で代用することができない。
16543
16544    システム管理者が、以下のように、このパイプラインをシェルスクリプトに
16545 しておけば、 システムのすべてのユーザが利用できるようになる (‘#’ はシス
16546 テム管理者、すなわち ‘root’ のプロンプトだ)。
16547
16548      # cat > /usr/local/bin/listusers
16549      who | cut -c1-8 | sort | uniq
16550      ^D
16551      # chmod +x /usr/local/bin/listusers
16552
16553    ここには、心に留めておくべき重要なことが四つある。 まず第一に、1 行の
16554 コマンドラインにたった四つのプログラムを書くことで、システム管理者は約 2
16555 時間分の仕事をしないで済ますことができた。それだけではない。シェルのパイ
16556 プラインは、 C のプログラムを使った場合と比べても、ほぼ同じくらい効率が
16557 よく、 プログラマの労働時間という点から見ると、ずっとずっと効率がよい。
16558 人間の労働時間はコンピュータの時間よりはるかに高価であり、 「何もかもや
16559 るには、いつだって時間が足りない」現代社会では、プログラマの時間を 2 時
16560 間も節約するのは、馬鹿にできない成果だ。
16561
16562    二番目に、ツールを組み合わせることで、個々のプログラムの作者が想像も
16563 しなかったような、 ある特定の目的のための仕事をやってのけることができる
16564 。 これも、強調しておくべき重要なことである。
16565
16566    第三に、ここでやって見せたように、段階を追ってパイプラインを構成する
16567 のも有益な方法だ。 そうすれば、パイプラインの段階ごとにデータを目で見る
16568 ことができるので、 ツール類を間違いなく適切に使っているという自信を得る
16569 ことができる。
16570
16571    最後に、実行したパイプラインをシェルスクリプトにまとめておけば、他の
16572 ユーザがそのコマンドを使うことができる。 彼らのために作成した手の込んだ
16573 コマンドの配管工事を、彼らは憶える必要すらないのだ。 どうやって実行する
16574 かという点から見ると、シェルスクリプトもコンパイルされたプログラムも見分
16575 けが付かないのである。
16576
16577    ここまでは準備運動だ。続いて、もっと複雑なパイプラインをもう二つご覧
16578 に入れよう。 そのためには、工具をもう二つ紹介する必要がある。
16579
16580    一つ目は ‘tr’ コマンドだ。“transliterate (翻字する、字を置き換える)”
16581 の意味である。 ‘tr’ コマンドは、一字一字処理して行くというやり方で、 文
16582 字を置き換える (参照: *note tr invocation::)。 通常、このコマンドを使用
16583 するのは、大文字を小文字に変換するといったことのためである。
16584
16585      $ echo ThIs ExAmPlE HaS MIXED case! | tr '[:upper:]' '[:lower:]'
16586      ⊣ this example has mixed case!
16587
16588    役に立ちそうなオプションがいくつかある。
16589
16590 ‘-c’
16591      リストされた文字の補集合を動作対象にする。 言い換えると、指定された
16592      集合に存在しない文字に対して操作が行われる。
16593
16594 ‘-d’
16595      一つ目の集合にある文字を出力から削除する。
16596
16597 ‘-s’
16598      出力中の連続する同一文字を、ただの 1 文字に圧縮する。
16599
16600    すぐ後で、この三つのオプションをすべて使うことになる。
16601
16602    紹介するもう一つのコマンドは、‘comm’ だ。 ‘comm’ コマンドは、二つのソ
16603 ートされた入力ファイルを入力データとして受け取り、 両ファイルの各行を三
16604 つの列に分けて表示する。 出力される列は、一番目のファイルにのみ存在する
16605 行、二番目のファイルにのみ存在する行、 両方のファイルに存在する行の順番
16606 である。‘-1’, ‘-2’, ‘-3’ というコマンドライン・オプションを付けると、対
16607 応する列を表示しないようになる。 (これは直感的ではないので、ちょっとした
16608 慣れが必要だ。参照: *note comm invocation::) 例を挙げよう。
16609
16610      $ cat f1
16611      ⊣ 11111
16612      ⊣ 22222
16613      ⊣ 33333
16614      ⊣ 44444
16615      $ cat f2
16616      ⊣ 00000
16617      ⊣ 22222
16618      ⊣ 33333
16619      ⊣ 55555
16620      $ comm f1 f2
16621      ⊣         00000
16622      ⊣ 11111
16623      ⊣                 22222
16624      ⊣                 33333
16625      ⊣ 44444
16626      ⊣         55555
16627
16628    ファイル名を ‘-’ にすると、‘comm’ は通常ファイルではなく、標準入力を
16629 読み込む。
16630
16631    これで、気の利いたパイプラインを組み立てる準備ができた。 最初に作るア
16632 プリケーションは、単語の出現頻度カウンターである。 これは、ある特定の単
16633 語を使いすぎていないかどうか、文書の作成者が判断するとき、役に立つ。
16634
16635    最初のステップは、入力ファイル中のすべての文字を大文字か小文字のどち
16636 らかに統一することである。 “The” と “the” は、頻度計算にとって同じ単語だ
16637
16638
16639      $ tr '[:upper:]' '[:lower:]' < whats.gnu | ...
16640
16641    次のステップは、句読点を除去することだ。 引用符の付いている単語と付い
16642 ていない単語も同じものとして扱った方がよいだろう。 それならば、句読点類
16643 をすっぱり取り除いてしまうのが、一番簡単だ。
16644
16645      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' | ...
16646
16647    二番目の ‘tr’ コマンドは、リストされた文字の補集合を操作対象にしてい
16648 る。 すなわち、アルファベットのすべての文字、数字、アンダースコア、空白
16649 以外を対象にするわけだ。 ‘\n’ は改行文字のことであり、これもそのまま残さ
16650 なければならない。 (実用に供するスクリプトでは、ついでに ASCII タブ文字
16651 も残した方がよいだろう。)
16652
16653    この時点で、空白 (訳注: 改行を含む) で区切られた単語からなるデータが
16654 できていることになる。 単語には、英数字 (それにアンダースコア) しか含ま
16655 れていない。 次のステップは、データをバラして、1 行 1 単語になるようにす
16656 ることだ。 そうすれば、すぐ後で見るように、出現回数の計算がずっと楽にな
16657 る。
16658
16659      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16660      > tr -s ' ' '\n' | ...
16661
16662    このコマンドは、空白を改行に変える。‘-s’ オプションが付いているので、
16663 出力中の連続する改行文字はたった 1 個に圧縮され、空行が取り除かれること
16664 になる。 (なお、2 行目行頭の ‘>’ という記号は、シェルの二次プロンプトで
16665 ある。 シェルがユーザに、コマンドがまだ最後まで打ち込まれていないと知ら
16666 せるとき、これが表示される。)
16667
16668    今や、1 行 1 単語からなるデータが手元にある。句読点は含まれず、すべて
16669 小文字だ。 これで、各単語の出現回数を数える準備が整った。
16670
16671      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16672      > tr -s ' ' '\n' | sort | uniq -c | ...
16673
16674    この時点で、データはたぶんこんなふうになっているだろう。
16675
16676           60 a
16677            2 able
16678            6 about
16679            1 above
16680            2 accomplish
16681            1 acquire
16682            1 actually
16683            2 additional
16684
16685    なんと、出力が出現回数ではなく、単語によってソートされている! こちら
16686 としては、最も頻繁に使われる単語ほど先に表示したいのにだ。 幸いなことに
16687 、それは簡単に実現できる。‘sort’ のオプションをもう二つ使うだけでよい。
16688
16689 ‘-n’
16690      文字としてではなく、数値としてソートする。
16691
16692 ‘-r’
16693      逆順にソートする。
16694
16695    最終的なパイプラインは次のようになる。
16696
16697      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16698      > tr -s ' ' '\n' | sort | uniq -c | sort -n -r
16699      ⊣    156 the
16700      ⊣     60 a
16701      ⊣     58 to
16702      ⊣     51 of
16703      ⊣     51 and
16704      ...
16705
16706    ふう、憶えることがどっさり! うん、でもね、同じ原則を応用してるだけな
16707 んだよ。 たった 2 行、6 個のコマンドで (実際には、長い 1 行を便宜上 2 行
16708 に分割しているだけだが) 興味深く有用な作業をするプログラムが出来上がった
16709 。それも、同じこことする C のプログラムを書くよりもずっと短い時間でだ。
16710
16711    上記のパイプラインをちょっといじるだけで、なんと、簡単なスペルチェッ
16712 カーが出来てしまう。 ある単語の綴りが正しいかどうかを判断するには、辞書
16713 で調べさえすればよい。 その単語が辞書になければ、綴りを間違えている可能
16714 性が高いわけだ。 そこで、とりあえず、辞書が必要になる。辞書の在り処は、
16715 慣例からすると ‘/usr/dict/words’ だ (現在では ‘/usr/share/dict/words’ か
16716 もしれない)。筆者の GNU/Linux システムでは (1)、それはソートされた
16717 45,402 語からなる辞書である。
16718
16719    それでは、自分の作ったファイルをどうやって辞書と比べるのか? 前の例と
16720 同様、ソートした単語のリストを 1 行 1 語の形式で生成する。
16721
16722      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16723      > tr -s ' ' '\n' | sort -u | ...
16724
16725    必要なのは、辞書にない単語のリストだけだ。そこで、‘comm’ の出番になる
16726
16727
16728      $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16729      > tr -s ' ' '\n' | sort -u |
16730      > comm -23 - /usr/dict/words
16731
16732    ‘-2’ と ‘-3’ のオプションを使うと、辞書 (2 番目のファイル) にしかない
16733 行と、両方のファイルにある行が排除される。1 番目のファイル (標準入力、す
16734 なわち、自分が使った単語のリストだ) にしかない行は、辞書に存在しない単語
16735 だ。 そうした単語は、綴りを間違えている可能性がかなり高いわけである。 ご
16736 覧に入れたこのパイプラインは、Unix における本格的なスペルチェッカーへの
16737 最初の一歩だったのである。
16738
16739    他にも一言述べておくべきツールがいくつかある。
16740
16741 ‘grep’
16742      ファイルを調べて、正規表現にマッチするテキストを検索する。
16743
16744 ‘wc’
16745      行数、単語数、文字数を計算する。
16746
16747 ‘tee’
16748      データが流れるパイプのための T 字管。データをファイルと標準出力にコ
16749      ピーする。
16750
16751 ‘sed’
16752      ストリーム・エディタ。上級ツール。
16753
16754 ‘awk’
16755      データ処理用の言語。これも上級ツール。
16756
16757    ソフトウェア工具論が取り入れたものに、次のちょっとしたアドバイスもあ
16758 る。「骨の折れる部分は、他の奴にやらせろ」。 すなわち、ある道具を選んで
16759 、必要なことの大部分をやらせ、それから、その結果に手を加えて、こちらの望
16760 む形にする、ということである。
16761
16762    要約しておこう。
16763
16764   1. 個々のプログラムは、一つの仕事をきちんとやってのければよい。それ以
16765      上でもそれ以下でもない。
16766
16767   2. プログラムを適切な配管工事で組み合わせると、全体が部分の総和以上に
16768      なる結果が生じる。 作者が想像もしなかったようなプログラムの新しい使
16769      用法が見つかることもある。
16770
16771   3. プログラムは決して余計なヘッダや追加情報を出力すべきではない。 そう
16772      したものもパイプラインの先へ送られてしまうかもしれないからだ。 (こ
16773      れは、これまでに言及しなかったが、重要なことだ。)
16774
16775   4. 骨の折れる部分は、他の奴にやらせろ。
16776
16777   5. 自分の道具箱をよく知れ! 個々のプログラムを適切に使え。適切なツール
16778      がなかったら、それを作れ。
16779
16780    これを執筆している時点で、ここで取り上げたプログラムはすべて次の URL
16781 から手に入れることができる。
16782 <http://ftp.gnu.org/old-gnu/textutils/textutils-1.22.tar.gz>
16783 もっと新しいバージョンは以下の場所にある。
16784 <http://ftp.gnu.org/gnu/coreutils>
16785
16786    この記事で筆者が述べたことに、新しいことは何もない。 ソフトウェアは工
16787 具だという思想が最初に紹介されたのは、Brian Kernighan と P.J. Plauger に
16788 よる ‘Software Tools’ という本の中だった (Addison-Wesley, ISBN
16789 0-201-03669-X)。ソフトウェア工具の書き方と使い方を教えるこの本は、1976 年
16790 に執筆され、‘ratfor’ (RATional FORtran) という名前の FORTRAN のプリプロ
16791 セッサを使用している。その当時、C は今ほどありふれてはいず、FORTRAN がそ
16792 うだったのだ。最後の章では、‘ratfor’ を FORTRAN に変換するプロセッサを
16793 ‘ratfor’ で書いて見せている。‘ratfor’ は C にとてもよく似ているので、 C
16794 を御存じの方なら、コードを追うのに何の苦労もないことだろう。 (訳注:
16795 ‘Software Tools’ の翻訳は「ソフトウェア作法」という題で 1981 年に出版さ
16796 れている。木村泉 訳、共立出版)
16797
16798    1981 年に本は改訂され、‘Software Tools in Pascal’ という形でも手に入
16799 るようになった (Addison-Wesley, ISBN 0-201-10342-7)。 どちらの本も現在で
16800 も入手可能であり、プログラマなら、一読の価値が十分にある。 この 2 冊の本
16801 が筆者のプログラミングに対する見方を大きく変えてくれたことに、疑いの余地
16802 はない。
16803
16804    両方の本にあるプログラムは、Brian Kernighan のホームページから手に入
16805 れることができる (<http://cm.bell-labs.com/who/bwk>)。Software Tools
16806 Users Group という活動的なグループが長年に渡って存在し、そのメンバーがオ
16807 リジナルの ‘ratfor’ プログラムを、FORTRAN コンパイラを持っているほとんど
16808 すべてのコンピュータ・システムに移植していた。 だが、1980 年代の中頃に
16809 Unix が大学を越えて浸透し出すにつれて、グループの人気は衰えて行った。
16810
16811    現在では GNU のコードをはじめ、Unix クローンのプログラムがどんどん作
16812 られており、 上記のプログラムはほとんど関心を持たれていない。 それに、現
16813 代の C のバージョンの方がはるかに効率がよく、できることも上記のプログラ
16814 ムよりずっと多くなっている。 それでも、よいプログラミング・スタイルのお
16815 手本として、 また、今でも価値がある考え方を熱心に説いている点において、
16816 この 2 冊の本は肩を並べるものがない。筆者としては、大いにお薦めする次第
16817 だ。
16818
16819    謝辞: ソフトウェア工具の最初の道具鍛冶である、Bell 研究所の Brian
16820 Kernighan 氏に、この記事を読んでチェックしてくださったことについて、 心
16821 からお礼を申し上げる。
16822
16823    ---------- Footnotes ----------
16824
16825    (1) この記事を 2000 年 11 月に改訂したとき使用したのは、Redhat Linux
16826 6.1 である
16827
16828 \1f
16829 File: coreutils-ja.info,  Node: About the translation,  Next: GNU Free Documentation License,  Prev: Opening the software toolbox,  Up: Top
16830
16831 Appendix A 翻訳について
16832 ***********************
16833
16834 この文書は GNU core utilities version 8.26 の info マニュアルの翻訳であ
16835 る。間違いの御指摘や改良の御提案は Linux JM project 宛にメールでなさって
16836 いただきたい (<linuxjm-discuss@lists.osdn.me>)。
16837
16838    まず最初に、coreutils の日本語版 info マニュアルの呼び出し方を簡単に
16839 説明する。 coreutils の 日本語版 info が install-info コマンドを使ってき
16840 ちんとシステムにインストールされているならば、コマンドラインから ‘info
16841 coreutils-ja’ で日本語マニュアル全体を、‘info chmod-ja’ などで個々のプロ
16842 グラムの日本語マニュアルを呼び出すことができる。 英語版を読むときは、今
16843 までどおり ‘info coreutils’ や ‘info chmod’ とすればよい。個々のコマンド
16844 については、英語版なら ‘info coreutils 'cp invocation'’、日本語版なら
16845 ‘info coreutils-ja 'cp invocation'’ といったマニュアルの呼び出し方もある
16846
16847
16848    また、‘info’ を引数なしで実行すると、 info マニュアルのトップレベルの
16849 メニューが開く。 ここで、メニュー項目にカーソルを合わせて、リターンキー
16850 を押せば、その項目に飛ぶ。 しかし、読みたい項目をキー操作で指定する方が
16851 簡単である。たとえば、 ‘m’ キーを押した後 ‘chmod-ja’ と打ち込んで、リタ
16852 ーンキーを押せば、chmod コマンドの日本語版マニュアルが、 ‘chmod’ だけな
16853 ら英語版マニュアルが表示される。
16854
16855    ‘coreutils-ja’、‘chmod-ja’ などと ‘-ja’ を付けるのは、‘info’ プログラ
16856 ムを起動するときと、 info のトップレベル・メニューにいるときだけである。
16857 すでに日本語版 coreutils マニュアルのどれかを (それが coreutils-ja であ
16858 れ、dd-ja であれ) ‘info’ コマンドで開いている場合は、 ‘-ja’ を後ろに付け
16859 る必要がなくなる。と言うより、付けてはいけない。 coreutils-ja の先頭ペー
16860 ジのようにコマンドのメニューが存在するページでは (実際には、スクロールし
16861 ないと、メニューが見えないが)、たとえば、 ‘m’ に続けて ‘chmod’ と打ち込
16862 み、リターンキーを押すだけで、 chmod の日本語の説明が開く。また、日本語
16863 coreutils マニュアルの任意のページから coreutils-ja の他のノードへ直接飛
16864 ぶ場合も (ノードは、ほぼ章や節に相当する)、 ‘g’ キーを押してから、‘chmod
16865 invocation’ などとノード名を打ち込み、 リターンキーを押せばよい。‘m’,
16866 ‘g’、どちらの場合も、タブで文字列の補完ができる。
16867
16868    info マニュアルの読み方の基本は、「メニューやクロスリファレンスにカー
16869 ソルを合わせてリターンキーを押せば、その項目に飛ぶ。 スペースで先に進み
16870 、バックスペースで後戻りする。‘l’ キーで直前に開いていたノードに戻る。
16871 ‘q’ キーで終了する」である。たぶん coreutils-ja.info のパッケージには、
16872 README.ja というファイルが含まれていると思う。 info マニュアルの呼び出し
16873 方や使用法について、そこにもう少し詳しい説明を書いておいたので、 ご覧に
16874 なっていただきたい。
16875
16876    ここで、日本語の info マニュアルを使用するときの問題点を挙げておく。
16877
16878   1. ‘info’ コマンドのバージョンによっては、行末の処理が上手ではない。 そ
16879      のため、行末に余計な文字が入ることがある。そうしたときは、‘C-l’ を
16880      押して (Ctrl と l (エル) キーを同時に押す)、画面の再描画を行ってい
16881      ただきたい。 表示が正常になるはずである。 Emacs の info リーダーで
16882      は、この問題はめったに起きない。
16883
16884   2. 最近の ‘info’ コマンド (たとえば、バージョン 6.3) では、‘s’ や ‘/’
16885      による日本語の単語の検索ができるようになった。 ‘C-s’ による日本語の
16886      インクリメンタル検索も可能になっている。 バージョンの古い ‘info’ で
16887      は、英単語による検索はできても、 日本語の単語による検索はできないの
16888      で、注意していただきたい。
16889
16890   3. X の端末エミュレータで ‘info’ コマンドを使用する場合、 端末エミュレ
16891      ータとフォントの組み合わせによっては、 文字列を囲むクォートの表示が
16892      おかしくなることがある。 フォントに「Monospace Regular」を使ってい
16893      るなら、 「VL Pゴシック regular」か「Liberation Mono Regular」に変
16894      えてみるとよいかもしれない (それはそれで、別の問題が出る可能性もあ
16895      るが)。 ちょっと古風だが、日本語が使える ‘xterm’ (‘uxterm’ など) な
16896      ら、クォートの表示にまず問題はない。
16897
16898   4. coreutils の info のこの翻訳では、インデックスの日本語化まで手が回
16899      らなかった。 そのため、インデックスは英語のままである。
16900
16901   5. 古めの Emacs でこの翻訳を読もうとすると、文字化けするかもしれない。
16902      回避法があるのかもしれないが、訳者にはわからなかった。
16903
16904    この翻訳の最初の版は、coreutils-8.20 所収の texinfo ファイルを元に、
16905 Linux JM project のために訳者が新たに翻訳したものだった。 以下に、そのと
16906 きの後書きをほぼそのまま載せておく。
16907
16908    この info マニュアルの原文は、本文の「序」でも述べているように、 各プ
16909 ログラムの man ページを統合し、増補・改訂したものである。この info マニ
16910 ュアルがまとめられるにともない、公式の man ページの方は、コマンドの
16911 ‘--help’ オプションで見ることができるものとほぼ同文の、 簡単な内容のもの
16912 になった。
16913
16914    従来どおりの詳しい man ページを希望する人たちも存在した。 そのために
16915 作られたのが、gnumaniak の man ページであり、従来の man ページを info の
16916 情報で増補したものだったが、現在では保守されていないようだ。
16917
16918    作成の経緯がそうしたものなので、この info マニュアルの原文には、
16919 gnumaniak の man ページの原文とほとんど内容が同じものがある。 翻訳作業に
16920 当たっては、すべての項目について gnumaniak の man ページの翻訳を参考にし
16921 た。あちらの訳文の方がよくできている項目もある (gnumaniak の翻訳は
16922 <http://linuxjm.osdn.jp/html/gnumaniak/man1/> にある)。
16923
16924    この翻訳は、Linux JM project の gnumaniak の翻訳に多くを負っている。
16925 そこで、まず、gnumaniak の翻訳者の方々 — 中野武雄、佐藤裕一、白方健太郎
16926 、 Kazuyuki Tanisako、Omo Kazuki の諸氏にお礼を申し上げる。
16927
16928    訳文を見直す際には、西尾太さんが以前翻訳なさった coreutils-5.2.1 の
16929 info を参考にした。また、当然ながら、新しい man ページ (こちらの翻訳者は
16930 、たぶん Yasuaki Taniguchi さんと Akihiro MOTOKI さん) とも、できるだけ
16931 突き合わせた。西尾さん、Taniguchi さん、元木さんにもお礼を申し上げる。
16932
16933    gnumaniak や coreutils の man や info の翻訳をなさった方で、 私がお名
16934 前を挙げ忘れた方がいらっしゃるかもしれない。 お知らせくだされば、追加訂
16935 正する。
16936
16937    訳文には間違った箇所がたくさんあると思う。そのへんは、ご寛恕いただき
16938 たい。 皆さんがこの訳文を叩き台にして、増補・改訂・改訳を続け、 より新し
16939 く、よりわかりやすい、そして、より正確な coreutils の翻訳を作ってくださ
16940 れば、最初の翻訳者としてそれにまさる喜びはない。
16941
16942    2017-03-26 訳者
16943
16944    [翻訳履歴]
16945
16946    • 2014-03-15
16947      coreutils-8.20 を翻訳 by 長南洋一
16948      ptx, tsort, chcon, runcon は未訳
16949
16950    • 2014-11-25
16951      coreutils-8.22 を元に増補・改訂 by 長南洋一
16952      numfmt, ptx, tsort, chcon, runcon を翻訳
16953
16954    • 2016-07-07
16955      numfmt の章の構成を修正。訳文の訂正と細かい変更 by 長南洋一
16956
16957    • 2017-03-26
16958      coreutils-8.26 を元に増補・改訂 by 長南洋一
16959
16960    • 2019-09-09
16961      訳文の訂正と変更 by 長南洋一
16962
16963 \1f
16964 File: coreutils-ja.info,  Node: GNU Free Documentation License,  Next: Concept index,  Prev: About the translation,  Up: Top
16965
16966 Appendix B GNU Free Documentation License
16967 *****************************************
16968
16969                      Version 1.3, 3 November 2008
16970
16971      Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
16972      <http://fsf.org/>
16973
16974      Everyone is permitted to copy and distribute verbatim copies
16975      of this license document, but changing it is not allowed.
16976
16977   0. PREAMBLE
16978
16979      The purpose of this License is to make a manual, textbook, or other
16980      functional and useful document “free” in the sense of freedom: to
16981      assure everyone the effective freedom to copy and redistribute it,
16982      with or without modifying it, either commercially or
16983      noncommercially.  Secondarily, this License preserves for the
16984      author and publisher a way to get credit for their work, while not
16985      being considered responsible for modifications made by others.
16986
16987      This License is a kind of “copyleft”, which means that derivative
16988      works of the document must themselves be free in the same sense.
16989      It complements the GNU General Public License, which is a copyleft
16990      license designed for free software.
16991
16992      We have designed this License in order to use it for manuals for
16993      free software, because free software needs free documentation: a
16994      free program should come with manuals providing the same freedoms
16995      that the software does.  But this License is not limited to
16996      software manuals; it can be used for any textual work, regardless
16997      of subject matter or whether it is published as a printed book.  We
16998      recommend this License principally for works whose purpose is
16999      instruction or reference.
17000
17001   1. APPLICABILITY AND DEFINITIONS
17002
17003      This License applies to any manual or other work, in any medium,
17004      that contains a notice placed by the copyright holder saying it can
17005      be distributed under the terms of this License.  Such a notice
17006      grants a world-wide, royalty-free license, unlimited in duration,
17007      to use that work under the conditions stated herein.  The
17008      “Document”, below, refers to any such manual or work.  Any member
17009      of the public is a licensee, and is addressed as “you”.  You accept
17010      the license if you copy, modify or distribute the work in a way
17011      requiring permission under copyright law.
17012
17013      A “Modified Version” of the Document means any work containing the
17014      Document or a portion of it, either copied verbatim, or with
17015      modifications and/or translated into another language.
17016
17017      A “Secondary Section” is a named appendix or a front-matter section
17018      of the Document that deals exclusively with the relationship of the
17019      publishers or authors of the Document to the Document’s overall
17020      subject (or to related matters) and contains nothing that could
17021      fall directly within that overall subject.  (Thus, if the Document
17022      is in part a textbook of mathematics, a Secondary Section may not
17023      explain any mathematics.)  The relationship could be a matter of
17024      historical connection with the subject or with related matters, or
17025      of legal, commercial, philosophical, ethical or political position
17026      regarding them.
17027
17028      The “Invariant Sections” are certain Secondary Sections whose
17029      titles are designated, as being those of Invariant Sections, in the
17030      notice that says that the Document is released under this License.
17031      If a section does not fit the above definition of Secondary then it
17032      is not allowed to be designated as Invariant.  The Document may
17033      contain zero Invariant Sections.  If the Document does not identify
17034      any Invariant Sections then there are none.
17035
17036      The “Cover Texts” are certain short passages of text that are
17037      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
17038      that says that the Document is released under this License.  A
17039      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
17040      be at most 25 words.
17041
17042      A “Transparent” copy of the Document means a machine-readable copy,
17043      represented in a format whose specification is available to the
17044      general public, that is suitable for revising the document
17045      straightforwardly with generic text editors or (for images composed
17046      of pixels) generic paint programs or (for drawings) some widely
17047      available drawing editor, and that is suitable for input to text
17048      formatters or for automatic translation to a variety of formats
17049      suitable for input to text formatters.  A copy made in an otherwise
17050      Transparent file format whose markup, or absence of markup, has
17051      been arranged to thwart or discourage subsequent modification by
17052      readers is not Transparent.  An image format is not Transparent if
17053      used for any substantial amount of text.  A copy that is not
17054      “Transparent” is called “Opaque”.
17055
17056      Examples of suitable formats for Transparent copies include plain
17057      ASCII without markup, Texinfo input format, LaTeX input format,
17058      SGML or XML using a publicly available DTD, and standard-conforming
17059      simple HTML, PostScript or PDF designed for human modification.
17060      Examples of transparent image formats include PNG, XCF and JPG.
17061      Opaque formats include proprietary formats that can be read and
17062      edited only by proprietary word processors, SGML or XML for which
17063      the DTD and/or processing tools are not generally available, and
17064      the machine-generated HTML, PostScript or PDF produced by some word
17065      processors for output purposes only.
17066
17067      The “Title Page” means, for a printed book, the title page itself,
17068      plus such following pages as are needed to hold, legibly, the
17069      material this License requires to appear in the title page.  For
17070      works in formats which do not have any title page as such, “Title
17071      Page” means the text near the most prominent appearance of the
17072      work’s title, preceding the beginning of the body of the text.
17073
17074      The “publisher” means any person or entity that distributes copies
17075      of the Document to the public.
17076
17077      A section “Entitled XYZ” means a named subunit of the Document
17078      whose title either is precisely XYZ or contains XYZ in parentheses
17079      following text that translates XYZ in another language.  (Here XYZ
17080      stands for a specific section name mentioned below, such as
17081      “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.)
17082      To “Preserve the Title” of such a section when you modify the
17083      Document means that it remains a section “Entitled XYZ” according
17084      to this definition.
17085
17086      The Document may include Warranty Disclaimers next to the notice
17087      which states that this License applies to the Document.  These
17088      Warranty Disclaimers are considered to be included by reference in
17089      this License, but only as regards disclaiming warranties: any other
17090      implication that these Warranty Disclaimers may have is void and
17091      has no effect on the meaning of this License.
17092
17093   2. VERBATIM COPYING
17094
17095      You may copy and distribute the Document in any medium, either
17096      commercially or noncommercially, provided that this License, the
17097      copyright notices, and the license notice saying this License
17098      applies to the Document are reproduced in all copies, and that you
17099      add no other conditions whatsoever to those of this License.  You
17100      may not use technical measures to obstruct or control the reading
17101      or further copying of the copies you make or distribute.  However,
17102      you may accept compensation in exchange for copies.  If you
17103      distribute a large enough number of copies you must also follow the
17104      conditions in section 3.
17105
17106      You may also lend copies, under the same conditions stated above,
17107      and you may publicly display copies.
17108
17109   3. COPYING IN QUANTITY
17110
17111      If you publish printed copies (or copies in media that commonly
17112      have printed covers) of the Document, numbering more than 100, and
17113      the Document’s license notice requires Cover Texts, you must
17114      enclose the copies in covers that carry, clearly and legibly, all
17115      these Cover Texts: Front-Cover Texts on the front cover, and
17116      Back-Cover Texts on the back cover.  Both covers must also clearly
17117      and legibly identify you as the publisher of these copies.  The
17118      front cover must present the full title with all words of the title
17119      equally prominent and visible.  You may add other material on the
17120      covers in addition.  Copying with changes limited to the covers, as
17121      long as they preserve the title of the Document and satisfy these
17122      conditions, can be treated as verbatim copying in other respects.
17123
17124      If the required texts for either cover are too voluminous to fit
17125      legibly, you should put the first ones listed (as many as fit
17126      reasonably) on the actual cover, and continue the rest onto
17127      adjacent pages.
17128
17129      If you publish or distribute Opaque copies of the Document
17130      numbering more than 100, you must either include a machine-readable
17131      Transparent copy along with each Opaque copy, or state in or with
17132      each Opaque copy a computer-network location from which the general
17133      network-using public has access to download using public-standard
17134      network protocols a complete Transparent copy of the Document, free
17135      of added material.  If you use the latter option, you must take
17136      reasonably prudent steps, when you begin distribution of Opaque
17137      copies in quantity, to ensure that this Transparent copy will
17138      remain thus accessible at the stated location until at least one
17139      year after the last time you distribute an Opaque copy (directly or
17140      through your agents or retailers) of that edition to the public.
17141
17142      It is requested, but not required, that you contact the authors of
17143      the Document well before redistributing any large number of copies,
17144      to give them a chance to provide you with an updated version of the
17145      Document.
17146
17147   4. MODIFICATIONS
17148
17149      You may copy and distribute a Modified Version of the Document
17150      under the conditions of sections 2 and 3 above, provided that you
17151      release the Modified Version under precisely this License, with the
17152      Modified Version filling the role of the Document, thus licensing
17153      distribution and modification of the Modified Version to whoever
17154      possesses a copy of it.  In addition, you must do these things in
17155      the Modified Version:
17156
17157        A. Use in the Title Page (and on the covers, if any) a title
17158           distinct from that of the Document, and from those of previous
17159           versions (which should, if there were any, be listed in the
17160           History section of the Document).  You may use the same title
17161           as a previous version if the original publisher of that
17162           version gives permission.
17163
17164        B. List on the Title Page, as authors, one or more persons or
17165           entities responsible for authorship of the modifications in
17166           the Modified Version, together with at least five of the
17167           principal authors of the Document (all of its principal
17168           authors, if it has fewer than five), unless they release you
17169           from this requirement.
17170
17171        C. State on the Title page the name of the publisher of the
17172           Modified Version, as the publisher.
17173
17174        D. Preserve all the copyright notices of the Document.
17175
17176        E. Add an appropriate copyright notice for your modifications
17177           adjacent to the other copyright notices.
17178
17179        F. Include, immediately after the copyright notices, a license
17180           notice giving the public permission to use the Modified
17181           Version under the terms of this License, in the form shown in
17182           the Addendum below.
17183
17184        G. Preserve in that license notice the full lists of Invariant
17185           Sections and required Cover Texts given in the Document’s
17186           license notice.
17187
17188        H. Include an unaltered copy of this License.
17189
17190        I. Preserve the section Entitled “History”, Preserve its Title,
17191           and add to it an item stating at least the title, year, new
17192           authors, and publisher of the Modified Version as given on the
17193           Title Page.  If there is no section Entitled “History” in the
17194           Document, create one stating the title, year, authors, and
17195           publisher of the Document as given on its Title Page, then add
17196           an item describing the Modified Version as stated in the
17197           previous sentence.
17198
17199        J. Preserve the network location, if any, given in the Document
17200           for public access to a Transparent copy of the Document, and
17201           likewise the network locations given in the Document for
17202           previous versions it was based on.  These may be placed in the
17203           “History” section.  You may omit a network location for a work
17204           that was published at least four years before the Document
17205           itself, or if the original publisher of the version it refers
17206           to gives permission.
17207
17208        K. For any section Entitled “Acknowledgements” or “Dedications”,
17209           Preserve the Title of the section, and preserve in the section
17210           all the substance and tone of each of the contributor
17211           acknowledgements and/or dedications given therein.
17212
17213        L. Preserve all the Invariant Sections of the Document, unaltered
17214           in their text and in their titles.  Section numbers or the
17215           equivalent are not considered part of the section titles.
17216
17217        M. Delete any section Entitled “Endorsements”.  Such a section
17218           may not be included in the Modified Version.
17219
17220        N. Do not retitle any existing section to be Entitled
17221           “Endorsements” or to conflict in title with any Invariant
17222           Section.
17223
17224        O. Preserve any Warranty Disclaimers.
17225
17226      If the Modified Version includes new front-matter sections or
17227      appendices that qualify as Secondary Sections and contain no
17228      material copied from the Document, you may at your option designate
17229      some or all of these sections as invariant.  To do this, add their
17230      titles to the list of Invariant Sections in the Modified Version’s
17231      license notice.  These titles must be distinct from any other
17232      section titles.
17233
17234      You may add a section Entitled “Endorsements”, provided it contains
17235      nothing but endorsements of your Modified Version by various
17236      parties—for example, statements of peer review or that the text has
17237      been approved by an organization as the authoritative definition of
17238      a standard.
17239
17240      You may add a passage of up to five words as a Front-Cover Text,
17241      and a passage of up to 25 words as a Back-Cover Text, to the end of
17242      the list of Cover Texts in the Modified Version.  Only one passage
17243      of Front-Cover Text and one of Back-Cover Text may be added by (or
17244      through arrangements made by) any one entity.  If the Document
17245      already includes a cover text for the same cover, previously added
17246      by you or by arrangement made by the same entity you are acting on
17247      behalf of, you may not add another; but you may replace the old
17248      one, on explicit permission from the previous publisher that added
17249      the old one.
17250
17251      The author(s) and publisher(s) of the Document do not by this
17252      License give permission to use their names for publicity for or to
17253      assert or imply endorsement of any Modified Version.
17254
17255   5. COMBINING DOCUMENTS
17256
17257      You may combine the Document with other documents released under
17258      this License, under the terms defined in section 4 above for
17259      modified versions, provided that you include in the combination all
17260      of the Invariant Sections of all of the original documents,
17261      unmodified, and list them all as Invariant Sections of your
17262      combined work in its license notice, and that you preserve all
17263      their Warranty Disclaimers.
17264
17265      The combined work need only contain one copy of this License, and
17266      multiple identical Invariant Sections may be replaced with a single
17267      copy.  If there are multiple Invariant Sections with the same name
17268      but different contents, make the title of each such section unique
17269      by adding at the end of it, in parentheses, the name of the
17270      original author or publisher of that section if known, or else a
17271      unique number.  Make the same adjustment to the section titles in
17272      the list of Invariant Sections in the license notice of the
17273      combined work.
17274
17275      In the combination, you must combine any sections Entitled
17276      “History” in the various original documents, forming one section
17277      Entitled “History”; likewise combine any sections Entitled
17278      “Acknowledgements”, and any sections Entitled “Dedications”.  You
17279      must delete all sections Entitled “Endorsements.”
17280
17281   6. COLLECTIONS OF DOCUMENTS
17282
17283      You may make a collection consisting of the Document and other
17284      documents released under this License, and replace the individual
17285      copies of this License in the various documents with a single copy
17286      that is included in the collection, provided that you follow the
17287      rules of this License for verbatim copying of each of the documents
17288      in all other respects.
17289
17290      You may extract a single document from such a collection, and
17291      distribute it individually under this License, provided you insert
17292      a copy of this License into the extracted document, and follow this
17293      License in all other respects regarding verbatim copying of that
17294      document.
17295
17296   7. AGGREGATION WITH INDEPENDENT WORKS
17297
17298      A compilation of the Document or its derivatives with other
17299      separate and independent documents or works, in or on a volume of a
17300      storage or distribution medium, is called an “aggregate” if the
17301      copyright resulting from the compilation is not used to limit the
17302      legal rights of the compilation’s users beyond what the individual
17303      works permit.  When the Document is included in an aggregate, this
17304      License does not apply to the other works in the aggregate which
17305      are not themselves derivative works of the Document.
17306
17307      If the Cover Text requirement of section 3 is applicable to these
17308      copies of the Document, then if the Document is less than one half
17309      of the entire aggregate, the Document’s Cover Texts may be placed
17310      on covers that bracket the Document within the aggregate, or the
17311      electronic equivalent of covers if the Document is in electronic
17312      form.  Otherwise they must appear on printed covers that bracket
17313      the whole aggregate.
17314
17315   8. TRANSLATION
17316
17317      Translation is considered a kind of modification, so you may
17318      distribute translations of the Document under the terms of section
17319      4.  Replacing Invariant Sections with translations requires special
17320      permission from their copyright holders, but you may include
17321      translations of some or all Invariant Sections in addition to the
17322      original versions of these Invariant Sections.  You may include a
17323      translation of this License, and all the license notices in the
17324      Document, and any Warranty Disclaimers, provided that you also
17325      include the original English version of this License and the
17326      original versions of those notices and disclaimers.  In case of a
17327      disagreement between the translation and the original version of
17328      this License or a notice or disclaimer, the original version will
17329      prevail.
17330
17331      If a section in the Document is Entitled “Acknowledgements”,
17332      “Dedications”, or “History”, the requirement (section 4) to
17333      Preserve its Title (section 1) will typically require changing the
17334      actual title.
17335
17336   9. TERMINATION
17337
17338      You may not copy, modify, sublicense, or distribute the Document
17339      except as expressly provided under this License.  Any attempt
17340      otherwise to copy, modify, sublicense, or distribute it is void,
17341      and will automatically terminate your rights under this License.
17342
17343      However, if you cease all violation of this License, then your
17344      license from a particular copyright holder is reinstated (a)
17345      provisionally, unless and until the copyright holder explicitly and
17346      finally terminates your license, and (b) permanently, if the
17347      copyright holder fails to notify you of the violation by some
17348      reasonable means prior to 60 days after the cessation.
17349
17350      Moreover, your license from a particular copyright holder is
17351      reinstated permanently if the copyright holder notifies you of the
17352      violation by some reasonable means, this is the first time you have
17353      received notice of violation of this License (for any work) from
17354      that copyright holder, and you cure the violation prior to 30 days
17355      after your receipt of the notice.
17356
17357      Termination of your rights under this section does not terminate
17358      the licenses of parties who have received copies or rights from you
17359      under this License.  If your rights have been terminated and not
17360      permanently reinstated, receipt of a copy of some or all of the
17361      same material does not give you any rights to use it.
17362
17363   10. FUTURE REVISIONS OF THIS LICENSE
17364
17365      The Free Software Foundation may publish new, revised versions of
17366      the GNU Free Documentation License from time to time.  Such new
17367      versions will be similar in spirit to the present version, but may
17368      differ in detail to address new problems or concerns.  See
17369      <http://www.gnu.org/copyleft/>.
17370
17371      Each version of the License is given a distinguishing version
17372      number.  If the Document specifies that a particular numbered
17373      version of this License “or any later version” applies to it, you
17374      have the option of following the terms and conditions either of
17375      that specified version or of any later version that has been
17376      published (not as a draft) by the Free Software Foundation.  If the
17377      Document does not specify a version number of this License, you may
17378      choose any version ever published (not as a draft) by the Free
17379      Software Foundation.  If the Document specifies that a proxy can
17380      decide which future versions of this License can be used, that
17381      proxy’s public statement of acceptance of a version permanently
17382      authorizes you to choose that version for the Document.
17383
17384   11. RELICENSING
17385
17386      “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
17387      World Wide Web server that publishes copyrightable works and also
17388      provides prominent facilities for anybody to edit those works.  A
17389      public wiki that anybody can edit is an example of such a server.
17390      A “Massive Multiauthor Collaboration” (or “MMC”) contained in the
17391      site means any set of copyrightable works thus published on the MMC
17392      site.
17393
17394      “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
17395      license published by Creative Commons Corporation, a not-for-profit
17396      corporation with a principal place of business in San Francisco,
17397      California, as well as future copyleft versions of that license
17398      published by that same organization.
17399
17400      “Incorporate” means to publish or republish a Document, in whole or
17401      in part, as part of another Document.
17402
17403      An MMC is “eligible for relicensing” if it is licensed under this
17404      License, and if all works that were first published under this
17405      License somewhere other than this MMC, and subsequently
17406      incorporated in whole or in part into the MMC, (1) had no cover
17407      texts or invariant sections, and (2) were thus incorporated prior
17408      to November 1, 2008.
17409
17410      The operator of an MMC Site may republish an MMC contained in the
17411      site under CC-BY-SA on the same site at any time before August 1,
17412      2009, provided the MMC is eligible for relicensing.
17413
17414 ADDENDUM: How to use this License for your documents
17415 ====================================================
17416
17417 To use this License in a document you have written, include a copy of
17418 the License in the document and put the following copyright and license
17419 notices just after the title page:
17420
17421        Copyright (C)  YEAR  YOUR NAME.
17422        Permission is granted to copy, distribute and/or modify this document
17423        under the terms of the GNU Free Documentation License, Version 1.3
17424        or any later version published by the Free Software Foundation;
17425        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
17426        Texts.  A copy of the license is included in the section entitled ``GNU
17427        Free Documentation License''.
17428
17429    If you have Invariant Sections, Front-Cover Texts and Back-Cover
17430 Texts, replace the “with...Texts.” line with this:
17431
17432          with the Invariant Sections being LIST THEIR TITLES, with
17433          the Front-Cover Texts being LIST, and with the Back-Cover Texts
17434          being LIST.
17435
17436    If you have Invariant Sections without Cover Texts, or some other
17437 combination of the three, merge those two alternatives to suit the
17438 situation.
17439
17440    If your document contains nontrivial examples of program code, we
17441 recommend releasing these examples in parallel under your choice of free
17442 software license, such as the GNU General Public License, to permit
17443 their use in free software.
17444
17445 \1f
17446 File: coreutils-ja.info,  Node: Concept index,  Prev: GNU Free Documentation License,  Up: Top
17447
17448 Index
17449 *****
17450
17451 \0\b[index\0\b]
17452 * Menu:
17453
17454 * !:                                     Connectives for test.
17455                                                               (line  24)
17456 * !=:                                    String tests.        (line  28)
17457 * %:                                     Numeric expressions. (line  15)
17458 * %b:                                    printf invocation.   (line  42)
17459 * %q:                                    printf invocation.   (line  50)
17460 * &:                                     Relations for expr.  (line  17)
17461 * *:                                     Numeric expressions. (line  15)
17462 * +:                                     String expressions.  (line  51)
17463 * + <1>:                                 Numeric expressions. (line  11)
17464 * +PAGE_RANGE:                           pr invocation.       (line  48)
17465 * -:                                     Numeric expressions. (line  11)
17466 * - <1>:                                 env invocation.      (line 100)
17467 * - and Unix rm:                         rm invocation.       (line 128)
17468 * -, removing files beginning with:      rm invocation.       (line 115)
17469 * --:                                    Common options.      (line  47)
17470 * --across:                              pr invocation.       (line  74)
17471 * --additional-suffix:                   split invocation.    (line 161)
17472 * --address-radix:                       od invocation.       (line  44)
17473 * --adjustment:                          nice invocation.     (line  56)
17474 * --all:                                 unexpand invocation. (line  52)
17475 * --all <1>:                             Which files are listed.
17476                                                               (line  13)
17477 * --all <2>:                             df invocation.       (line  50)
17478 * --all <3>:                             du invocation.       (line  34)
17479 * --all <4>:                             stty invocation.     (line  29)
17480 * --all <5>:                             who invocation.      (line  37)
17481 * --all <6>:                             nproc invocation.    (line  20)
17482 * --all <7>:                             uname invocation.    (line  39)
17483 * --all-repeated:                        uniq invocation.     (line  73)
17484 * --almost-all:                          Which files are listed.
17485                                                               (line  18)
17486 * --apparent-size:                       du invocation.       (line  37)
17487 * --append:                              tee invocation.      (line  29)
17488 * --archive:                             cp invocation.       (line  80)
17489 * --attributes-only:                     cp invocation.       (line  89)
17490 * --author:                              What information is listed.
17491                                                               (line  10)
17492 * --auto-reference:                      Output formatting in ptx.
17493                                                               (line  46)
17494 * --backup:                              Backup options.      (line  14)
17495 * --backup <1>:                          cp invocation.       (line  96)
17496 * --backup <2>:                          install invocation.  (line  45)
17497 * --backup <3>:                          mv invocation.       (line  71)
17498 * --backup <4>:                          ln invocation.       (line  93)
17499 * --batch-size:                          sort invocation.     (line 291)
17500 * --before:                              tac invocation.      (line  23)
17501 * --binary:                              md5sum invocation.   (line  44)
17502 * --block-size:                          Block size.          (line 135)
17503 * --block-size <1>:                      df invocation.       (line  64)
17504 * --block-size <2>:                      du invocation.       (line  55)
17505 * --block-size=SIZE:                     Block size.          (line  12)
17506 * --body-numbering:                      nl invocation.       (line  47)
17507 * --boot:                                who invocation.      (line  41)
17508 * --bourne-shell:                        dircolors invocation.
17509                                                               (line  35)
17510 * --break-file:                          Input processing in ptx.
17511                                                               (line   8)
17512 * --buffer-size:                         sort invocation.     (line 360)
17513 * --bytes:                               fold invocation.     (line  33)
17514 * --bytes <1>:                           head invocation.     (line  26)
17515 * --bytes <2>:                           tail invocation.     (line  41)
17516 * --bytes <3>:                           split invocation.    (line  47)
17517 * --bytes <4>:                           wc invocation.       (line  47)
17518 * --bytes <5>:                           cut invocation.      (line  30)
17519 * --bytes <6>:                           du invocation.       (line  61)
17520 * --c-shell:                             dircolors invocation.
17521                                                               (line  42)
17522 * --canonicalize:                        readlink invocation. (line  29)
17523 * --canonicalize-existing:               readlink invocation. (line  36)
17524 * --canonicalize-existing <1>:           realpath invocation. (line  20)
17525 * --canonicalize-missing:                readlink invocation. (line  43)
17526 * --canonicalize-missing <1>:            realpath invocation. (line  28)
17527 * --changes:                             chown invocation.    (line  77)
17528 * --changes <1>:                         chgrp invocation.    (line  27)
17529 * --changes <2>:                         chmod invocation.    (line  44)
17530 * --characters:                          cut invocation.      (line  38)
17531 * --chars:                               wc invocation.       (line  51)
17532 * --check:                               sort invocation.     (line  45)
17533 * --check <1>:                           sort invocation.     (line  54)
17534 * --check-chars:                         uniq invocation.     (line 143)
17535 * --classify:                            General output formatting.
17536                                                               (line  60)
17537 * --color:                               General output formatting.
17538                                                               (line  29)
17539 * --columns:                             pr invocation.       (line  59)
17540 * --compare:                             install invocation.  (line  50)
17541 * --complement:                          cut invocation.      (line  92)
17542 * --compute:                             runcon invocation.   (line  30)
17543 * --context:                             What information is listed.
17544                                                               (line 266)
17545 * --context <1>:                         cp invocation.       (line 428)
17546 * --context <2>:                         install invocation.  (line 153)
17547 * --context <3>:                         mv invocation.       (line 129)
17548 * --context <4>:                         mkdir invocation.    (line  58)
17549 * --context <5>:                         mkfifo invocation.   (line  31)
17550 * --context <6>:                         mknod invocation.    (line  61)
17551 * --context <7>:                         id invocation.       (line  53)
17552 * --count:                               uniq invocation.     (line  59)
17553 * --count <1>:                           who invocation.      (line  72)
17554 * --count-links:                         du invocation.       (line 132)
17555 * --crown-margin:                        fmt invocation.      (line  40)
17556 * --csh:                                 dircolors invocation.
17557                                                               (line  42)
17558 * --data:                                sync invocation.     (line  35)
17559 * --date:                                touch invocation.    (line  96)
17560 * --date <1>:                            Options for date.    (line  11)
17561 * --dead:                                who invocation.      (line  45)
17562 * --debug:                               Options for date.    (line  25)
17563 * --debug <1>:                           General options in numfmt.
17564                                                               (line  10)
17565 * --decode:                              base64 invocation.   (line  33)
17566 * --delimiter:                           cut invocation.      (line  72)
17567 * --delimiter <1>:                       General options in numfmt.
17568                                                               (line  15)
17569 * --delimiters:                          paste invocation.    (line  61)
17570 * --dereference:                         Which files are listed.
17571                                                               (line  89)
17572 * --dereference <1>:                     cp invocation.       (line 174)
17573 * --dereference <2>:                     chown invocation.    (line 112)
17574 * --dereference <3>:                     chgrp invocation.    (line  37)
17575 * --dereference <4>:                     du invocation.       (line 127)
17576 * --dereference <5>:                     stat invocation.     (line  25)
17577 * --dereference <6>:                     chcon invocation.    (line  23)
17578 * --dereference-args:                    du invocation.       (line  71)
17579 * --dereference-command-line:            Which files are listed.
17580                                                               (line  38)
17581 * --dereference-command-line-symlink-to-dir: Which files are listed.
17582                                                               (line  42)
17583 * --dictionary-order:                    sort invocation.     (line 100)
17584 * --digits:                              csplit invocation.   (line  87)
17585 * --dir:                                 rm invocation.       (line  40)
17586 * --directory:                           Which files are listed.
17587                                                               (line  29)
17588 * --directory <1>:                       install invocation.  (line  75)
17589 * --directory <2>:                       ln invocation.       (line  99)
17590 * --directory <3>:                       mktemp invocation.   (line  94)
17591 * --dired:                               What information is listed.
17592                                                               (line  17)
17593 * --double-space:                        pr invocation.       (line  87)
17594 * --dry-run:                             mktemp invocation.   (line 107)
17595 * --echo:                                shuf invocation.     (line  21)
17596 * --elide-empty-files:                   split invocation.    (line 166)
17597 * --elide-empty-files <1>:               csplit invocation.   (line 104)
17598 * --endian:                              od invocation.       (line  59)
17599 * --equal-width:                         seq invocation.      (line  54)
17600 * --error:                               stdbuf invocation.   (line  36)
17601 * --escape:                              Formatting the file names.
17602                                                               (line  11)
17603 * --exact:                               shred invocation.    (line 161)
17604 * --exclude-from=FILE:                   du invocation.       (line 280)
17605 * --exclude-type:                        df invocation.       (line 245)
17606 * --exclude=PATTERN:                     du invocation.       (line 285)
17607 * --expand-tabs:                         pr invocation.       (line 111)
17608 * --field:                               General options in numfmt.
17609                                                               (line  20)
17610 * --field-separator:                     sort invocation.     (line 377)
17611 * --fields:                              cut invocation.      (line  47)
17612 * --file:                                stty invocation.     (line  34)
17613 * --file <1>:                            Options for date.    (line  30)
17614 * --file-system:                         stat invocation.     (line  32)
17615 * --file-system <1>:                     sync invocation.     (line  40)
17616 * --file-type:                           General output formatting.
17617                                                               (line  71)
17618 * --files0-from=FILE:                    wc invocation.       (line  68)
17619 * --files0-from=FILE <1>:                sort invocation.     (line 242)
17620 * --files0-from=FILE <2>:                du invocation.       (line  85)
17621 * --filter:                              split invocation.    (line  70)
17622 * --first-line-number:                   pr invocation.       (line 189)
17623 * --flag-truncation:                     Output formatting in ptx.
17624                                                               (line  75)
17625 * --follow:                              tail invocation.     (line  58)
17626 * --footer-numbering:                    nl invocation.       (line  73)
17627 * --force:                               cp invocation.       (line 137)
17628 * --force <1>:                           mv invocation.       (line  76)
17629 * --force <2>:                           rm invocation.       (line  44)
17630 * --force <3>:                           shred invocation.    (line 114)
17631 * --force <4>:                           ln invocation.       (line 105)
17632 * --foreground:                          timeout invocation.  (line  26)
17633 * --form-feed:                           pr invocation.       (line 119)
17634 * --format:                              od invocation.       (line  99)
17635 * --format <1>:                          What information is listed.
17636                                                               (line 138)
17637 * --format <2>:                          General output formatting.
17638                                                               (line  10)
17639 * --format <3>:                          General output formatting.
17640                                                               (line  22)
17641 * --format <4>:                          General output formatting.
17642                                                               (line 107)
17643 * --format <5>:                          General output formatting.
17644                                                               (line 117)
17645 * --format <6>:                          General options in numfmt.
17646                                                               (line  30)
17647 * --format <7>:                          seq invocation.      (line  31)
17648 * --format=FORMAT:                       stat invocation.     (line  38)
17649 * --format=roff:                         Output formatting in ptx.
17650                                                               (line 106)
17651 * --format=tex:                          Output formatting in ptx.
17652                                                               (line 127)
17653 * --from:                                chown invocation.    (line  87)
17654 * --from <1>:                            General options in numfmt.
17655                                                               (line  45)
17656 * --from-unit:                           General options in numfmt.
17657                                                               (line  54)
17658 * --full-time:                           What information is listed.
17659                                                               (line 107)
17660 * --gap-size:                            Output formatting in ptx.
17661                                                               (line  28)
17662 * --general-numeric-sort:                sort invocation.     (line 123)
17663 * --goal:                                fmt invocation.      (line  77)
17664 * --group:                               uniq invocation.     (line 106)
17665 * --group <1>:                           install invocation.  (line  82)
17666 * --group <2>:                           id invocation.       (line  31)
17667 * --group-directories-first:             Which files are listed.
17668                                                               (line  52)
17669 * --grouping:                            General options in numfmt.
17670                                                               (line  62)
17671 * --groups:                              id invocation.       (line  35)
17672 * --groups <1>:                          chroot invocation.   (line  29)
17673 * --hardware-platform:                   uname invocation.    (line  44)
17674 * --head-count:                          shuf invocation.     (line  33)
17675 * --header:                              pr invocation.       (line 125)
17676 * --header <1>:                          join invocation.     (line  96)
17677 * --header <2>:                          General options in numfmt.
17678                                                               (line  68)
17679 * --header-numbering:                    nl invocation.       (line  77)
17680 * --header=N:                            General options in numfmt.
17681                                                               (line  68)
17682 * --heading:                             who invocation.      (line  49)
17683 * --help:                                Common options.      (line  40)
17684 * --hide-control-chars:                  Formatting the file names.
17685                                                               (line  25)
17686 * --hide=PATTERN:                        Which files are listed.
17687                                                               (line  60)
17688 * --human-numeric-sort:                  sort invocation.     (line 143)
17689 * --human-readable:                      Block size.          (line 135)
17690 * --human-readable <1>:                  What information is listed.
17691                                                               (line 123)
17692 * --human-readable <2>:                  df invocation.       (line  70)
17693 * --human-readable <3>:                  du invocation.       (line 104)
17694 * --ignore:                              nproc invocation.    (line  26)
17695 * --ignore-backups:                      Which files are listed.
17696                                                               (line  24)
17697 * --ignore-case:                         sort invocation.     (line 107)
17698 * --ignore-case <1>:                     uniq invocation.     (line  63)
17699 * --ignore-case <2>:                     Charset selection in ptx.
17700                                                               (line  21)
17701 * --ignore-case <3>:                     join invocation.     (line 105)
17702 * --ignore-environment:                  env invocation.      (line 100)
17703 * --ignore-fail-on-non-empty:            rmdir invocation.    (line  19)
17704 * --ignore-file:                         Input processing in ptx.
17705                                                               (line  26)
17706 * --ignore-garbage:                      base64 invocation.   (line  40)
17707 * --ignore-interrupts:                   tee invocation.      (line  34)
17708 * --ignore-leading-blanks:               sort invocation.     (line  91)
17709 * --ignore-missing:                      md5sum invocation.   (line  84)
17710 * --ignore-nonprinting:                  sort invocation.     (line 162)
17711 * --ignore=PATTERN:                      Which files are listed.
17712                                                               (line  74)
17713 * --indent:                              pr invocation.       (line 194)
17714 * --indicator-style:                     General output formatting.
17715                                                               (line  60)
17716 * --indicator-style <1>:                 General output formatting.
17717                                                               (line  71)
17718 * --indicator-style <2>:                 General output formatting.
17719                                                               (line  75)
17720 * --indicator-style <3>:                 General output formatting.
17721                                                               (line 112)
17722 * --initial:                             expand invocation.   (line  37)
17723 * --inode:                               What information is listed.
17724                                                               (line 131)
17725 * --inodes:                              df invocation.       (line  81)
17726 * --inodes <1>:                          du invocation.       (line 111)
17727 * --input:                               stdbuf invocation.   (line  28)
17728 * --input-range:                         shuf invocation.     (line  25)
17729 * --interactive:                         cp invocation.       (line 162)
17730 * --interactive <1>:                     mv invocation.       (line  82)
17731 * --interactive <2>:                     rm invocation.       (line  61)
17732 * --interactive <3>:                     ln invocation.       (line 110)
17733 * --invalid:                             General options in numfmt.
17734                                                               (line  71)
17735 * --io-blocks:                           truncate invocation. (line  29)
17736 * --iso-8601[=TIMESPEC]:                 Options for date.    (line  38)
17737 * --iterations=NUMBER:                   shred invocation.    (line 118)
17738 * --join-blank-lines:                    nl invocation.       (line  85)
17739 * --join-lines:                          pr invocation.       (line 138)
17740 * --keep-files:                          csplit invocation.   (line  92)
17741 * --kernel-name:                         uname invocation.    (line  75)
17742 * --kernel-release:                      uname invocation.    (line  71)
17743 * --kernel-version:                      uname invocation.    (line  86)
17744 * --key:                                 sort invocation.     (line 258)
17745 * --kibibytes:                           General output formatting.
17746                                                               (line  94)
17747 * --kill-after:                          timeout invocation.  (line  46)
17748 * --length:                              pr invocation.       (line 148)
17749 * --length <1>:                          b2sum invocation.    (line  12)
17750 * --line-bytes:                          split invocation.    (line  62)
17751 * --line-increment:                      nl invocation.       (line  81)
17752 * --lines:                               head invocation.     (line  43)
17753 * --lines <1>:                           tail invocation.     (line 133)
17754 * --lines <2>:                           split invocation.    (line  38)
17755 * --lines <3>:                           wc invocation.       (line  59)
17756 * --link:                                cp invocation.       (line 169)
17757 * --literal:                             Formatting the file names.
17758                                                               (line  19)
17759 * --local:                               df invocation.       (line  92)
17760 * --logical:                             ln invocation.       (line 115)
17761 * --logical <1>:                         realpath invocation. (line  33)
17762 * --logical <2>:                         pwd invocation.      (line  17)
17763 * --login:                               who invocation.      (line  53)
17764 * --lookup:                              who invocation.      (line  57)
17765 * --machine:                             uname invocation.    (line  51)
17766 * --macro-name:                          Output formatting in ptx.
17767                                                               (line  99)
17768 * --max-depth=DEPTH:                     du invocation.       (line  78)
17769 * --max-line-length:                     wc invocation.       (line  63)
17770 * --max-unchanged-stats:                 tail invocation.     (line 121)
17771 * --merge:                               pr invocation.       (line 154)
17772 * --merge <1>:                           sort invocation.     (line  61)
17773 * --mesg:                                who invocation.      (line  98)
17774 * --message:                             who invocation.      (line  98)
17775 * --mode:                                install invocation.  (line  88)
17776 * --mode <1>:                            mkdir invocation.    (line  22)
17777 * --mode <2>:                            mkfifo invocation.   (line  24)
17778 * --mode <3>:                            mknod invocation.    (line  54)
17779 * --month-sort:                          sort invocation.     (line 170)
17780 * --multiple:                            basename invocation. (line  35)
17781 * --name:                                id invocation.       (line  39)
17782 * --no-clobber:                          cp invocation.       (line 182)
17783 * --no-clobber <1>:                      mv invocation.       (line  89)
17784 * --no-create:                           touch invocation.    (line  92)
17785 * --no-create <1>:                       truncate invocation. (line  25)
17786 * --no-dereference:                      cp invocation.       (line 188)
17787 * --no-dereference <1>:                  ln invocation.       (line 122)
17788 * --no-dereference <2>:                  chown invocation.    (line 117)
17789 * --no-dereference <3>:                  chgrp invocation.    (line  42)
17790 * --no-dereference <4>:                  touch invocation.    (line 109)
17791 * --no-dereference <5>:                  du invocation.       (line 142)
17792 * --no-dereference <6>:                  chcon invocation.    (line  28)
17793 * --no-file-warnings:                    pr invocation.       (line 201)
17794 * --no-group:                            What information is listed.
17795                                                               (line 117)
17796 * --no-newline:                          readlink invocation. (line  49)
17797 * --no-preserve-root:                    rm invocation.       (line 101)
17798 * --no-preserve-root <1>:                chown invocation.    (line 132)
17799 * --no-preserve-root <2>:                chgrp invocation.    (line  57)
17800 * --no-preserve-root <3>:                chmod invocation.    (line  59)
17801 * --no-preserve-root <4>:                chcon invocation.    (line  45)
17802 * --no-renumber:                         nl invocation.       (line 103)
17803 * --no-symlinks:                         realpath invocation. (line  81)
17804 * --no-sync:                             df invocation.       (line  96)
17805 * --no-target-directory:                 Target directory.    (line  15)
17806 * --no-target-directory <1>:             cp invocation.       (line 398)
17807 * --no-target-directory <2>:             install invocation.  (line 144)
17808 * --no-target-directory <3>:             mv invocation.       (line 124)
17809 * --no-target-directory <4>:             ln invocation.       (line 200)
17810 * --nodename:                            uname invocation.    (line  56)
17811 * --null:                                du invocation.       (line  28)
17812 * --null <1>:                            printenv invocation. (line  21)
17813 * --null <2>:                            env invocation.      (line  89)
17814 * --number:                              cat invocation.      (line  33)
17815 * --number <1>:                          split invocation.    (line  88)
17816 * --number-format:                       nl invocation.       (line  92)
17817 * --number-lines:                        pr invocation.       (line 169)
17818 * --number-nonblank:                     cat invocation.      (line  22)
17819 * --number-separator:                    nl invocation.       (line 107)
17820 * --number-width:                        nl invocation.       (line 116)
17821 * --numeric-sort:                        sort invocation.     (line 181)
17822 * --numeric-suffixes:                    split invocation.    (line 134)
17823 * --numeric-uid-gid:                     What information is listed.
17824                                                               (line 232)
17825 * --omit-header:                         pr invocation.       (line 228)
17826 * --omit-pagination:                     pr invocation.       (line 239)
17827 * --one-file-system:                     cp invocation.       (line 422)
17828 * --one-file-system <1>:                 rm invocation.       (line  72)
17829 * --one-file-system <2>:                 du invocation.       (line 291)
17830 * --only-delimited:                      cut invocation.      (line  80)
17831 * --only-file:                           Input processing in ptx.
17832                                                               (line  35)
17833 * --operating-system:                    uname invocation.    (line  67)
17834 * --output:                              sort invocation.     (line 318)
17835 * --output <1>:                          shuf invocation.     (line  38)
17836 * --output <2>:                          df invocation.       (line 104)
17837 * --output <3>:                          stdbuf invocation.   (line  32)
17838 * --output-delimiter:                    cut invocation.      (line  85)
17839 * --output-duplicates:                   od invocation.       (line 159)
17840 * --output-error:                        tee invocation.      (line  38)
17841 * --output-tabs:                         pr invocation.       (line 131)
17842 * --owner:                               install invocation.  (line 101)
17843 * --padding:                             General options in numfmt.
17844                                                               (line  80)
17845 * --pages=PAGE_RANGE:                    pr invocation.       (line  48)
17846 * --page_width:                          pr invocation.       (line 259)
17847 * --parallel:                            sort invocation.     (line 407)
17848 * --parents:                             cp invocation.       (line 278)
17849 * --parents <1>:                         mkdir invocation.    (line  36)
17850 * --parents <2>:                         rmdir invocation.    (line  24)
17851 * --physical:                            ln invocation.       (line 144)
17852 * --physical <1>:                        realpath invocation. (line  43)
17853 * --physical <2>:                        pwd invocation.      (line  24)
17854 * --pid:                                 tail invocation.     (line 138)
17855 * --portability:                         df invocation.       (line 161)
17856 * --portability <1>:                     pathchk invocation.  (line  48)
17857 * --prefix:                              csplit invocation.   (line  68)
17858 * --preserve:                            cp invocation.       (line 196)
17859 * --preserve-context:                    install invocation.  (line 107)
17860 * --preserve-root:                       rm invocation.       (line  90)
17861 * --preserve-root <1>:                   chown invocation.    (line 127)
17862 * --preserve-root <2>:                   chgrp invocation.    (line  52)
17863 * --preserve-root <3>:                   chmod invocation.    (line  54)
17864 * --preserve-root <4>:                   chcon invocation.    (line  40)
17865 * --preserve-status:                     timeout invocation.  (line  20)
17866 * --preserve-timestamps:                 install invocation.  (line 114)
17867 * --print-database:                      dircolors invocation.
17868                                                               (line  47)
17869 * --print-type:                          df invocation.       (line 219)
17870 * --printf=FORMAT:                       stat invocation.     (line  47)
17871 * --process:                             who invocation.      (line  67)
17872 * --processor:                           uname invocation.    (line  60)
17873 * --quiet:                               head invocation.     (line  51)
17874 * --quiet <1>:                           tail invocation.     (line 163)
17875 * --quiet <2>:                           csplit invocation.   (line 114)
17876 * --quiet <3>:                           md5sum invocation.   (line  91)
17877 * --quiet <4>:                           readlink invocation. (line  57)
17878 * --quiet <5>:                           chown invocation.    (line  83)
17879 * --quiet <6>:                           chgrp invocation.    (line  33)
17880 * --quiet <7>:                           chmod invocation.    (line  50)
17881 * --quiet <8>:                           mktemp invocation.   (line 101)
17882 * --quiet <9>:                           realpath invocation. (line  52)
17883 * --quiet <10>:                          tty invocation.      (line  19)
17884 * --quote-name:                          Formatting the file names.
17885                                                               (line  38)
17886 * --quoting-style:                       Formatting the file names.
17887                                                               (line  11)
17888 * --quoting-style <1>:                   Formatting the file names.
17889                                                               (line  19)
17890 * --quoting-style <2>:                   Formatting the file names.
17891                                                               (line  38)
17892 * --quoting-style <3>:                   Formatting the file names.
17893                                                               (line  42)
17894 * --random-sort:                         sort invocation.     (line 211)
17895 * --random-source:                       sort invocation.     (line 338)
17896 * --random-source <1>:                   shuf invocation.     (line  44)
17897 * --random-source <2>:                   shred invocation.    (line 124)
17898 * --range:                               chcon invocation.    (line  82)
17899 * --range <1>:                           runcon invocation.   (line  47)
17900 * --read-bytes:                          od invocation.       (line  84)
17901 * --real:                                id invocation.       (line  44)
17902 * --recursive:                           Which files are listed.
17903                                                               (line  97)
17904 * --recursive <1>:                       cp invocation.       (line 292)
17905 * --recursive <2>:                       rm invocation.       (line 108)
17906 * --recursive <3>:                       chown invocation.    (line 151)
17907 * --recursive <4>:                       chgrp invocation.    (line  75)
17908 * --recursive <5>:                       chmod invocation.    (line  75)
17909 * --recursive <6>:                       chcon invocation.    (line  37)
17910 * --reference:                           chown invocation.    (line 136)
17911 * --reference <1>:                       chgrp invocation.    (line  61)
17912 * --reference <2>:                       chmod invocation.    (line  68)
17913 * --reference <3>:                       touch invocation.    (line 130)
17914 * --reference <4>:                       truncate invocation. (line  33)
17915 * --reference <5>:                       Options for date.    (line  64)
17916 * --reference <6>:                       chcon invocation.    (line  32)
17917 * --references:                          Input processing in ptx.
17918                                                               (line  50)
17919 * --reflink[=WHEN]:                      cp invocation.       (line 308)
17920 * --regex:                               tac invocation.      (line  28)
17921 * --relative:                            ln invocation.       (line 156)
17922 * --relative-base:                       realpath invocation. (line  60)
17923 * --relative-to:                         realpath invocation. (line  55)
17924 * --remove:                              shred invocation.    (line 137)
17925 * --remove-destination:                  cp invocation.       (line 336)
17926 * --remove=unlink:                       shred invocation.    (line 137)
17927 * --remove=wipe:                         shred invocation.    (line 137)
17928 * --remove=wipesync:                     shred invocation.    (line 137)
17929 * --repeat:                              shuf invocation.     (line  50)
17930 * --repeated:                            uniq invocation.     (line  67)
17931 * --retry:                               tail invocation.     (line 166)
17932 * --reverse:                             sort invocation.     (line 205)
17933 * --reverse <1>:                         Sorting the output.  (line  28)
17934 * --rfc-2822:                            Options for date.    (line  70)
17935 * --rfc-3339=TIMESPEC:                   Options for date.    (line  82)
17936 * --rfc-822:                             Options for date.    (line  70)
17937 * --right-side-refs:                     Output formatting in ptx.
17938                                                               (line  58)
17939 * --role:                                chcon invocation.    (line  74)
17940 * --role <1>:                            runcon invocation.   (line  39)
17941 * --round:                               General options in numfmt.
17942                                                               (line  88)
17943 * --round=down:                          General options in numfmt.
17944                                                               (line  88)
17945 * --round=from-zero:                     General options in numfmt.
17946                                                               (line  88)
17947 * --round=nearest:                       General options in numfmt.
17948                                                               (line  88)
17949 * --round=towards-zero:                  General options in numfmt.
17950                                                               (line  88)
17951 * --round=up:                            General options in numfmt.
17952                                                               (line  88)
17953 * --runlevel:                            who invocation.      (line  77)
17954 * --save:                                stty invocation.     (line  46)
17955 * --section-delimiter:                   nl invocation.       (line  66)
17956 * --sentence-regexp:                     Input processing in ptx.
17957                                                               (line  76)
17958 * --sep-string:                          pr invocation.       (line 216)
17959 * --separate-dirs:                       du invocation.       (line 147)
17960 * --separator:                           tac invocation.      (line  32)
17961 * --separator <1>:                       pr invocation.       (line 206)
17962 * --separator <2>:                       split invocation.    (line 175)
17963 * --separator <3>:                       seq invocation.      (line  49)
17964 * --serial:                              paste invocation.    (line  51)
17965 * --set:                                 Options for date.    (line 111)
17966 * --sh:                                  dircolors invocation.
17967                                                               (line  35)
17968 * --show-all:                            cat invocation.      (line  18)
17969 * --show-control-chars:                  pr invocation.       (line  81)
17970 * --show-control-chars <1>:              Formatting the file names.
17971                                                               (line 109)
17972 * --show-ends:                           cat invocation.      (line  29)
17973 * --show-nonprinting:                    cat invocation.      (line  53)
17974 * --show-nonprinting <1>:                pr invocation.       (line 244)
17975 * --show-tabs:                           cat invocation.      (line  46)
17976 * --si:                                  Block size.          (line 135)
17977 * --si <1>:                              What information is listed.
17978                                                               (line 258)
17979 * --si <2>:                              df invocation.       (line 181)
17980 * --si <3>:                              du invocation.       (line 155)
17981 * --signal:                              timeout invocation.  (line  53)
17982 * --silent:                              head invocation.     (line  51)
17983 * --silent <1>:                          tail invocation.     (line 163)
17984 * --silent <2>:                          csplit invocation.   (line 114)
17985 * --silent <3>:                          readlink invocation. (line  57)
17986 * --silent <4>:                          chown invocation.    (line  83)
17987 * --silent <5>:                          chgrp invocation.    (line  33)
17988 * --silent <6>:                          chmod invocation.    (line  50)
17989 * --silent <7>:                          tty invocation.      (line  19)
17990 * --size:                                What information is listed.
17991                                                               (line 242)
17992 * --size <1>:                            truncate invocation. (line  37)
17993 * --size=BYTES:                          shred invocation.    (line 130)
17994 * --skip-bytes:                          od invocation.       (line  67)
17995 * --skip-chars:                          uniq invocation.     (line  43)
17996 * --skip-chdir:                          chroot invocation.   (line  44)
17997 * --skip-fields:                         uniq invocation.     (line  33)
17998 * --sleep-interval:                      tail invocation.     (line 186)
17999 * --sort:                                sort invocation.     (line 123)
18000 * --sort <1>:                            sort invocation.     (line 143)
18001 * --sort <2>:                            sort invocation.     (line 170)
18002 * --sort <3>:                            sort invocation.     (line 181)
18003 * --sort <4>:                            sort invocation.     (line 211)
18004 * --sort <5>:                            Sorting the output.  (line  34)
18005 * --sort <6>:                            Sorting the output.  (line  38)
18006 * --sort <7>:                            Sorting the output.  (line  53)
18007 * --sort <8>:                            Sorting the output.  (line  61)
18008 * --sort <9>:                            Sorting the output.  (line  69)
18009 * --spaces:                              fold invocation.     (line  39)
18010 * --sparse=WHEN:                         cp invocation.       (line 340)
18011 * --split-only:                          fmt invocation.      (line  60)
18012 * --squeeze-blank:                       cat invocation.      (line  38)
18013 * --stable:                              sort invocation.     (line 344)
18014 * --starting-line-number:                nl invocation.       (line 112)
18015 * --status:                              md5sum invocation.   (line 100)
18016 * --strict:                              md5sum invocation.   (line 138)
18017 * --strings:                             od invocation.       (line  89)
18018 * --strip:                               install invocation.  (line 124)
18019 * --strip <1>:                           realpath invocation. (line  81)
18020 * --strip-program:                       install invocation.  (line 128)
18021 * --strip-trailing-slashes:              cp invocation.       (line 375)
18022 * --strip-trailing-slashes <1>:          mv invocation.       (line 109)
18023 * --suffix:                              Backup options.      (line  53)
18024 * --suffix <1>:                          cp invocation.       (line 388)
18025 * --suffix <2>:                          install invocation.  (line 133)
18026 * --suffix <3>:                          mv invocation.       (line 114)
18027 * --suffix <4>:                          ln invocation.       (line 190)
18028 * --suffix <5>:                          basename invocation. (line  41)
18029 * --suffix <6>:                          mktemp invocation.   (line 126)
18030 * --suffix <7>:                          General options in numfmt.
18031                                                               (line  95)
18032 * --suffix-format:                       csplit invocation.   (line  72)
18033 * --suffix-length:                       split invocation.    (line 125)
18034 * --summarize:                           du invocation.       (line 163)
18035 * --suppress-matched:                    csplit invocation.   (line  95)
18036 * --symbolic:                            ln invocation.       (line 184)
18037 * --symbolic-link:                       cp invocation.       (line 380)
18038 * --sync:                                df invocation.       (line 188)
18039 * --sysv:                                sum invocation.      (line  34)
18040 * --tabs:                                expand invocation.   (line  24)
18041 * --tabs <1>:                            unexpand invocation. (line  28)
18042 * --tabsize:                             General output formatting.
18043                                                               (line 122)
18044 * --tag:                                 md5sum invocation.   (line 111)
18045 * --tagged-paragraph:                    fmt invocation.      (line  53)
18046 * --target-directory:                    Target directory.    (line  34)
18047 * --target-directory <1>:                cp invocation.       (line 393)
18048 * --target-directory <2>:                install invocation.  (line 138)
18049 * --target-directory <3>:                mv invocation.       (line 119)
18050 * --target-directory <4>:                ln invocation.       (line 195)
18051 * --temporary-directory:                 sort invocation.     (line 398)
18052 * --terse:                               stat invocation.     (line  58)
18053 * --text:                                md5sum invocation.   (line 122)
18054 * --threshold:                           du invocation.       (line 169)
18055 * --time:                                Sorting the output.  (line  13)
18056 * --time <1>:                            Sorting the output.  (line  45)
18057 * --time <2>:                            touch invocation.    (line  88)
18058 * --time <3>:                            touch invocation.    (line 126)
18059 * --time <4>:                            du invocation.       (line 211)
18060 * --time <5>:                            du invocation.       (line 226)
18061 * --time <6>:                            du invocation.       (line 235)
18062 * --time <7>:                            who invocation.      (line  85)
18063 * --time-style:                          Formatting file timestamps.
18064                                                               (line  27)
18065 * --time-style <1>:                      du invocation.       (line 239)
18066 * --tmpdir:                              mktemp invocation.   (line 117)
18067 * --to:                                  General options in numfmt.
18068                                                               (line  99)
18069 * --to-unit:                             General options in numfmt.
18070                                                               (line 105)
18071 * --total:                               df invocation.       (line 196)
18072 * --total <1>:                           du invocation.       (line  65)
18073 * --traditional:                         od invocation.       (line 209)
18074 * --type:                                df invocation.       (line 212)
18075 * --type <1>:                            chcon invocation.    (line  78)
18076 * --type <2>:                            runcon invocation.   (line  43)
18077 * --unbuffered:                          split invocation.    (line 182)
18078 * --uniform-spacing:                     fmt invocation.      (line  66)
18079 * --unique:                              sort invocation.     (line 415)
18080 * --unique <1>:                          uniq invocation.     (line 135)
18081 * --universal:                           Options for date.    (line 117)
18082 * --unset:                               env invocation.      (line  95)
18083 * --update:                              cp invocation.       (line 403)
18084 * --update <1>:                          mv invocation.       (line  95)
18085 * --user:                                id invocation.       (line  49)
18086 * --user <1>:                            chcon invocation.    (line  70)
18087 * --user <2>:                            runcon invocation.   (line  35)
18088 * --userspec:                            chroot invocation.   (line  36)
18089 * --utc:                                 Options for date.    (line 117)
18090 * --verbose:                             head invocation.     (line  55)
18091 * --verbose <1>:                         tail invocation.     (line 199)
18092 * --verbose <2>:                         split invocation.    (line 186)
18093 * --verbose <3>:                         cp invocation.       (line 418)
18094 * --verbose <4>:                         install invocation.  (line 149)
18095 * --verbose <5>:                         mv invocation.       (line 106)
18096 * --verbose <6>:                         rm invocation.       (line 113)
18097 * --verbose <7>:                         shred invocation.    (line 156)
18098 * --verbose <8>:                         ln invocation.       (line 205)
18099 * --verbose <9>:                         mkdir invocation.    (line  53)
18100 * --verbose <10>:                        readlink invocation. (line  62)
18101 * --verbose <11>:                        rmdir invocation.    (line  33)
18102 * --verbose <12>:                        chown invocation.    (line 143)
18103 * --verbose <13>:                        chgrp invocation.    (line  67)
18104 * --verbose <14>:                        chmod invocation.    (line  64)
18105 * --verbose <15>:                        chcon invocation.    (line  66)
18106 * --version:                             Common options.      (line  44)
18107 * --version-sort:                        sort invocation.     (line 198)
18108 * --warn:                                md5sum invocation.   (line 132)
18109 * --width:                               od invocation.       (line 166)
18110 * --width <1>:                           fmt invocation.      (line  72)
18111 * --width <2>:                           pr invocation.       (line 248)
18112 * --width <3>:                           fold invocation.     (line  45)
18113 * --width <4>:                           Output formatting in ptx.
18114                                                               (line  34)
18115 * --width <5>:                           General output formatting.
18116                                                               (line 134)
18117 * --word-regexp:                         Input processing in ptx.
18118                                                               (line 125)
18119 * --words:                               wc invocation.       (line  55)
18120 * --wrap:                                base64 invocation.   (line  25)
18121 * --writable:                            who invocation.      (line  98)
18122 * --zero:                                shred invocation.    (line 173)
18123 * --zero <1>:                            readlink invocation. (line  66)
18124 * --zero <2>:                            basename invocation. (line  46)
18125 * --zero <3>:                            dirname invocation.  (line  34)
18126 * --zero <4>:                            realpath invocation. (line  89)
18127 * --zero <5>:                            id invocation.       (line  60)
18128 * --zero-terminated:                     head invocation.     (line  59)
18129 * --zero-terminated <1>:                 tail invocation.     (line 203)
18130 * --zero-terminated <2>:                 sort invocation.     (line 432)
18131 * --zero-terminated <3>:                 shuf invocation.     (line  59)
18132 * --zero-terminated <4>:                 uniq invocation.     (line 149)
18133 * --zero-terminated <5>:                 comm invocation.     (line  90)
18134 * --zero-terminated <6>:                 cut invocation.      (line 101)
18135 * --zero-terminated <7>:                 paste invocation.    (line  72)
18136 * --zero-terminated <8>:                 join invocation.     (line 166)
18137 * --zero-terminated <9>:                 General options in numfmt.
18138                                                               (line 114)
18139 * -0:                                    du invocation.       (line  28)
18140 * -0 <1>:                                printenv invocation. (line  21)
18141 * -0 <2>:                                env invocation.      (line  89)
18142 * -1:                                    comm invocation.     (line  24)
18143 * -1 <1>:                                join invocation.     (line 111)
18144 * -1 <2>:                                General output formatting.
18145                                                               (line  10)
18146 * -2:                                    comm invocation.     (line  24)
18147 * -2 <1>:                                join invocation.     (line 115)
18148 * -3:                                    comm invocation.     (line  24)
18149 * -A:                                    cat invocation.      (line  18)
18150 * -A <1>:                                od invocation.       (line  44)
18151 * -a:                                    od invocation.       (line 178)
18152 * -a <1>:                                pr invocation.       (line  74)
18153 * -a <2>:                                split invocation.    (line 125)
18154 * -A <2>:                                Output formatting in ptx.
18155                                                               (line  46)
18156 * -a <3>:                                join invocation.     (line  79)
18157 * -a <4>:                                unexpand invocation. (line  52)
18158 * -a <5>:                                Which files are listed.
18159                                                               (line  13)
18160 * -A <3>:                                Which files are listed.
18161                                                               (line  18)
18162 * -a <6>:                                cp invocation.       (line  80)
18163 * -a <7>:                                touch invocation.    (line  88)
18164 * -a <8>:                                df invocation.       (line  50)
18165 * -a <9>:                                du invocation.       (line  34)
18166 * -a <10>:                               Connectives for test.
18167                                                               (line  31)
18168 * -a <11>:                               tee invocation.      (line  29)
18169 * -a <12>:                               basename invocation. (line  35)
18170 * -a <13>:                               stty invocation.     (line  29)
18171 * -a <14>:                               who invocation.      (line  37)
18172 * -a <15>:                               uname invocation.    (line  39)
18173 * -b:                                    Backup options.      (line  14)
18174 * -b <1>:                                cat invocation.      (line  22)
18175 * -b <2>:                                tac invocation.      (line  23)
18176 * -b <3>:                                nl invocation.       (line  47)
18177 * -b <4>:                                od invocation.       (line 181)
18178 * -b <5>:                                fold invocation.     (line  33)
18179 * -b <6>:                                split invocation.    (line  47)
18180 * -b <7>:                                csplit invocation.   (line  72)
18181 * -b <8>:                                md5sum invocation.   (line  44)
18182 * -b <9>:                                sort invocation.     (line  91)
18183 * -b <10>:                               Input processing in ptx.
18184                                                               (line   8)
18185 * -b <11>:                               cut invocation.      (line  30)
18186 * -B:                                    Which files are listed.
18187                                                               (line  24)
18188 * -b <12>:                               Formatting the file names.
18189                                                               (line  11)
18190 * -b <13>:                               dircolors invocation.
18191                                                               (line  35)
18192 * -b <14>:                               cp invocation.       (line  96)
18193 * -b <15>:                               install invocation.  (line  45)
18194 * -b <16>:                               mv invocation.       (line  71)
18195 * -b <17>:                               ln invocation.       (line  93)
18196 * -B <1>:                                df invocation.       (line  64)
18197 * -B <2>:                                du invocation.       (line  55)
18198 * -b <18>:                               du invocation.       (line  61)
18199 * -b <19>:                               File type tests.     (line  11)
18200 * -b <20>:                               who invocation.      (line  41)
18201 * -c:                                    od invocation.       (line 184)
18202 * -c <1>:                                fmt invocation.      (line  40)
18203 * -c <2>:                                pr invocation.       (line  81)
18204 * -c <3>:                                head invocation.     (line  26)
18205 * -c <4>:                                tail invocation.     (line  41)
18206 * -C:                                    split invocation.    (line  62)
18207 * -c <5>:                                wc invocation.       (line  47)
18208 * -c <6>:                                sort invocation.     (line  45)
18209 * -c <7>:                                sort invocation.     (line  54)
18210 * -c <8>:                                shuf invocation.     (line  21)
18211 * -c <9>:                                uniq invocation.     (line  59)
18212 * -c <10>:                               cut invocation.      (line  38)
18213 * -c <11>:                               Sorting the output.  (line  13)
18214 * -C <1>:                                General output formatting.
18215                                                               (line  22)
18216 * -c <12>:                               dircolors invocation.
18217                                                               (line  42)
18218 * -C <2>:                                install invocation.  (line  50)
18219 * -c <13>:                               install invocation.  (line  64)
18220 * -c <14>:                               chown invocation.    (line  77)
18221 * -c <15>:                               chgrp invocation.    (line  27)
18222 * -c <16>:                               chmod invocation.    (line  44)
18223 * -c <17>:                               touch invocation.    (line  92)
18224 * -c <18>:                               du invocation.       (line  65)
18225 * -c <19>:                               stat invocation.     (line  38)
18226 * -c <20>:                               truncate invocation. (line  25)
18227 * -c <21>:                               File type tests.     (line  14)
18228 * -c <22>:                               runcon invocation.   (line  30)
18229 * -COLUMN:                               pr invocation.       (line  59)
18230 * -d:                                    nl invocation.       (line  66)
18231 * -d <1>:                                od invocation.       (line 188)
18232 * -d <2>:                                base64 invocation.   (line  33)
18233 * -d <3>:                                pr invocation.       (line  87)
18234 * -d <4>:                                split invocation.    (line 134)
18235 * -d <5>:                                sort invocation.     (line 100)
18236 * -d <6>:                                uniq invocation.     (line  67)
18237 * -D:                                    uniq invocation.     (line  73)
18238 * -d <7>:                                cut invocation.      (line  72)
18239 * -d <8>:                                paste invocation.    (line  61)
18240 * -d <9>:                                Which files are listed.
18241                                                               (line  29)
18242 * -D <1>:                                What information is listed.
18243                                                               (line  17)
18244 * -d <10>:                               cp invocation.       (line 129)
18245 * -D <2>:                                install invocation.  (line  68)
18246 * -d <11>:                               install invocation.  (line  75)
18247 * -d <12>:                               rm invocation.       (line  40)
18248 * -d <13>:                               ln invocation.       (line  99)
18249 * -d <14>:                               touch invocation.    (line  96)
18250 * -D <3>:                                du invocation.       (line  71)
18251 * -d <15>:                               File type tests.     (line  17)
18252 * -d <16>:                               mktemp invocation.   (line  94)
18253 * -d <17>:                               who invocation.      (line  45)
18254 * -d <18>:                               Options for date.    (line  11)
18255 * -d <19>:                               General options in numfmt.
18256                                                               (line  15)
18257 * -d DEPTH:                              du invocation.       (line  78)
18258 * -e:                                    cat invocation.      (line  25)
18259 * -E:                                    cat invocation.      (line  29)
18260 * -e <1>:                                pr invocation.       (line 111)
18261 * -e <2>:                                split invocation.    (line 166)
18262 * -e <3>:                                join invocation.     (line  91)
18263 * -e <4>:                                readlink invocation. (line  36)
18264 * -e <5>:                                echo invocation.     (line  28)
18265 * -E <1>:                                echo invocation.     (line  64)
18266 * -e <6>:                                File characteristic tests.
18267                                                               (line   9)
18268 * -e <7>:                                realpath invocation. (line  20)
18269 * -e <8>:                                stdbuf invocation.   (line  36)
18270 * -ef:                                   File characteristic tests.
18271                                                               (line  23)
18272 * -eq:                                   Numeric tests.       (line  20)
18273 * -f:                                    nl invocation.       (line  73)
18274 * -f <1>:                                od invocation.       (line 191)
18275 * -F:                                    pr invocation.       (line 119)
18276 * -f <2>:                                pr invocation.       (line 119)
18277 * -f <3>:                                tail invocation.     (line  58)
18278 * -F <1>:                                tail invocation.     (line 115)
18279 * -f <4>:                                csplit invocation.   (line  68)
18280 * -f <5>:                                sort invocation.     (line 107)
18281 * -f <6>:                                uniq invocation.     (line  33)
18282 * -f <7>:                                Charset selection in ptx.
18283                                                               (line  21)
18284 * -F <2>:                                Output formatting in ptx.
18285                                                               (line  75)
18286 * -f <8>:                                cut invocation.      (line  47)
18287 * -f <9>:                                Sorting the output.  (line  20)
18288 * -F <3>:                                General output formatting.
18289                                                               (line  60)
18290 * -f <10>:                               cp invocation.       (line 137)
18291 * -f <11>:                               mv invocation.       (line  76)
18292 * -f <12>:                               rm invocation.       (line  44)
18293 * -f <13>:                               shred invocation.    (line 114)
18294 * -F <4>:                                ln invocation.       (line  99)
18295 * -f <14>:                               ln invocation.       (line 105)
18296 * -f <15>:                               readlink invocation. (line  29)
18297 * -f <16>:                               chown invocation.    (line  83)
18298 * -f <17>:                               chgrp invocation.    (line  33)
18299 * -f <18>:                               chmod invocation.    (line  50)
18300 * -f <19>:                               touch invocation.    (line 105)
18301 * -f <20>:                               stat invocation.     (line  32)
18302 * -f <21>:                               File type tests.     (line  20)
18303 * -F <5>:                                stty invocation.     (line  34)
18304 * -f <22>:                               Options for date.    (line  30)
18305 * -f <23>:                               seq invocation.      (line  31)
18306 * -g:                                    fmt invocation.      (line  77)
18307 * -g <1>:                                sort invocation.     (line 123)
18308 * -g <2>:                                Output formatting in ptx.
18309                                                               (line  28)
18310 * -g <3>:                                What information is listed.
18311                                                               (line 112)
18312 * -G:                                    What information is listed.
18313                                                               (line 117)
18314 * -g <4>:                                install invocation.  (line  82)
18315 * -g <5>:                                Access permission tests.
18316                                                               (line   9)
18317 * -G <1>:                                Access permission tests.
18318                                                               (line  32)
18319 * -g <6>:                                stty invocation.     (line  46)
18320 * -g <7>:                                id invocation.       (line  31)
18321 * -G <2>:                                id invocation.       (line  35)
18322 * -ge:                                   Numeric tests.       (line  20)
18323 * -gt:                                   Numeric tests.       (line  20)
18324 * -h:                                    Block size.          (line 135)
18325 * -H:                                    Traversing symlinks. (line  19)
18326 * -h <1>:                                nl invocation.       (line  77)
18327 * -h <2>:                                pr invocation.       (line 125)
18328 * -h <3>:                                sort invocation.     (line 143)
18329 * -H <1>:                                Which files are listed.
18330                                                               (line  38)
18331 * -h <4>:                                What information is listed.
18332                                                               (line 123)
18333 * -H <2>:                                cp invocation.       (line 154)
18334 * -h <5>:                                chown invocation.    (line 117)
18335 * -H <3>:                                chown invocation.    (line 154)
18336 * -h <6>:                                chgrp invocation.    (line  42)
18337 * -H <4>:                                chgrp invocation.    (line  78)
18338 * -h <7>:                                touch invocation.    (line 109)
18339 * -h <8>:                                df invocation.       (line  70)
18340 * -H <5>:                                df invocation.       (line  77)
18341 * -H <6>:                                du invocation.       (line 100)
18342 * -h <9>:                                du invocation.       (line 104)
18343 * -h <10>:                               File type tests.     (line  24)
18344 * -H <7>:                                who invocation.      (line  49)
18345 * -h <11>:                               chcon invocation.    (line  28)
18346 * -H <8>:                                chcon invocation.    (line  50)
18347 * -i:                                    nl invocation.       (line  81)
18348 * -i <1>:                                od invocation.       (line 194)
18349 * -i <2>:                                base64 invocation.   (line  40)
18350 * -i <3>:                                pr invocation.       (line 131)
18351 * -i <4>:                                sort invocation.     (line 162)
18352 * -i <5>:                                shuf invocation.     (line  25)
18353 * -i <6>:                                uniq invocation.     (line  63)
18354 * -i <7>:                                Input processing in ptx.
18355                                                               (line  26)
18356 * -i <8>:                                join invocation.     (line 105)
18357 * -i <9>:                                expand invocation.   (line  37)
18358 * -I:                                    Which files are listed.
18359                                                               (line  74)
18360 * -i <10>:                               What information is listed.
18361                                                               (line 131)
18362 * -i <11>:                               cp invocation.       (line 162)
18363 * -i <12>:                               mv invocation.       (line  82)
18364 * -i <13>:                               rm invocation.       (line  50)
18365 * -I <1>:                                rm invocation.       (line  55)
18366 * -i <14>:                               ln invocation.       (line 110)
18367 * -i <15>:                               df invocation.       (line  81)
18368 * -i <16>:                               tee invocation.      (line  34)
18369 * -i <17>:                               uname invocation.    (line  44)
18370 * -i <18>:                               env invocation.      (line 100)
18371 * -i <19>:                               stdbuf invocation.   (line  28)
18372 * -I[TIMESPEC]:                          Options for date.    (line  38)
18373 * -j:                                    od invocation.       (line  67)
18374 * -J:                                    pr invocation.       (line 138)
18375 * -k:                                    Block size.          (line 135)
18376 * -k <1>:                                csplit invocation.   (line  92)
18377 * -k <2>:                                sort invocation.     (line 258)
18378 * -k <3>:                                General output formatting.
18379                                                               (line  94)
18380 * -k <4>:                                df invocation.       (line  86)
18381 * -k <5>:                                du invocation.       (line 121)
18382 * -k <6>:                                Access permission tests.
18383                                                               (line  12)
18384 * -k <7>:                                timeout invocation.  (line  46)
18385 * -L:                                    Traversing symlinks. (line  24)
18386 * -l:                                    nl invocation.       (line  85)
18387 * -l <1>:                                od invocation.       (line 197)
18388 * -l <2>:                                pr invocation.       (line 148)
18389 * -l <3>:                                split invocation.    (line  38)
18390 * -l <4>:                                wc invocation.       (line  59)
18391 * -L <1>:                                wc invocation.       (line  63)
18392 * -l <5>:                                b2sum invocation.    (line  12)
18393 * -L <2>:                                Which files are listed.
18394                                                               (line  89)
18395 * -l <6>:                                What information is listed.
18396                                                               (line 138)
18397 * -l <7>:                                cp invocation.       (line 169)
18398 * -L <3>:                                cp invocation.       (line 174)
18399 * -L <4>:                                ln invocation.       (line 115)
18400 * -L <5>:                                chown invocation.    (line 159)
18401 * -L <6>:                                chgrp invocation.    (line  83)
18402 * -l <8>:                                df invocation.       (line  92)
18403 * -L <7>:                                du invocation.       (line 127)
18404 * -l <9>:                                du invocation.       (line 132)
18405 * -L <8>:                                stat invocation.     (line  25)
18406 * -L <9>:                                File type tests.     (line  24)
18407 * -L <10>:                               realpath invocation. (line  33)
18408 * -L <11>:                               pwd invocation.      (line  17)
18409 * -l <10>:                               who invocation.      (line  53)
18410 * -L <12>:                               chcon invocation.    (line  55)
18411 * -l <11>:                               chcon invocation.    (line  82)
18412 * -l <12>:                               runcon invocation.   (line  47)
18413 * -le:                                   Numeric tests.       (line  20)
18414 * -lt:                                   Numeric tests.       (line  20)
18415 * -m:                                    pr invocation.       (line 154)
18416 * -m <1>:                                wc invocation.       (line  51)
18417 * -m <2>:                                sort invocation.     (line  61)
18418 * -M:                                    sort invocation.     (line 170)
18419 * -M <1>:                                Output formatting in ptx.
18420                                                               (line  99)
18421 * -m <3>:                                General output formatting.
18422                                                               (line 107)
18423 * -m <4>:                                install invocation.  (line  88)
18424 * -m <5>:                                mkdir invocation.    (line  22)
18425 * -m <6>:                                mkfifo invocation.   (line  24)
18426 * -m <7>:                                mknod invocation.    (line  54)
18427 * -m <8>:                                readlink invocation. (line  43)
18428 * -m <9>:                                touch invocation.    (line 126)
18429 * -m <10>:                               du invocation.       (line 136)
18430 * -m <11>:                               realpath invocation. (line  28)
18431 * -m <12>:                               who invocation.      (line  63)
18432 * -m <13>:                               uname invocation.    (line  51)
18433 * -n:                                    cat invocation.      (line  33)
18434 * -n <1>:                                nl invocation.       (line  92)
18435 * -N:                                    od invocation.       (line  84)
18436 * -n <2>:                                pr invocation.       (line 169)
18437 * -N <1>:                                pr invocation.       (line 189)
18438 * -n <3>:                                head invocation.     (line  43)
18439 * -n <4>:                                tail invocation.     (line 133)
18440 * -n <5>:                                split invocation.    (line  88)
18441 * -n <6>:                                csplit invocation.   (line  87)
18442 * -n <7>:                                sort invocation.     (line 181)
18443 * -n <8>:                                shuf invocation.     (line  33)
18444 * -n <9>:                                cut invocation.      (line  76)
18445 * -n <10>:                               What information is listed.
18446                                                               (line 232)
18447 * -N <2>:                                Formatting the file names.
18448                                                               (line  19)
18449 * -n <11>:                               cp invocation.       (line 182)
18450 * -n <12>:                               mv invocation.       (line  89)
18451 * -n <13>:                               ln invocation.       (line 122)
18452 * -n <14>:                               readlink invocation. (line  49)
18453 * -n <15>:                               echo invocation.     (line  25)
18454 * -n <16>:                               String tests.        (line  19)
18455 * -n <17>:                               id invocation.       (line  39)
18456 * -n <18>:                               uname invocation.    (line  56)
18457 * -n <19>:                               nice invocation.     (line  56)
18458 * -n NUMBER:                             shred invocation.    (line 118)
18459 * -ne:                                   Numeric tests.       (line  20)
18460 * -nt:                                   File characteristic tests.
18461                                                               (line  15)
18462 * -o:                                    od invocation.       (line 200)
18463 * -o <1>:                                pr invocation.       (line 194)
18464 * -o <2>:                                sort invocation.     (line 318)
18465 * -o <3>:                                shuf invocation.     (line  38)
18466 * -o <4>:                                Input processing in ptx.
18467                                                               (line  35)
18468 * -O:                                    Output formatting in ptx.
18469                                                               (line 106)
18470 * -o <5>:                                What information is listed.
18471                                                               (line 236)
18472 * -o <6>:                                install invocation.  (line 101)
18473 * -o <7>:                                truncate invocation. (line  29)
18474 * -O <1>:                                Access permission tests.
18475                                                               (line  28)
18476 * -o <8>:                                Connectives for test.
18477                                                               (line  35)
18478 * -o <9>:                                uname invocation.    (line  67)
18479 * -o <10>:                               stdbuf invocation.   (line  32)
18480 * -ot:                                   File characteristic tests.
18481                                                               (line  19)
18482 * -P:                                    Traversing symlinks. (line  28)
18483 * -p:                                    nl invocation.       (line 103)
18484 * -p <1>:                                General output formatting.
18485                                                               (line 112)
18486 * -p <2>:                                dircolors invocation.
18487                                                               (line  47)
18488 * -P <1>:                                cp invocation.       (line 188)
18489 * -p <3>:                                cp invocation.       (line 196)
18490 * -p <4>:                                install invocation.  (line 114)
18491 * -P <2>:                                ln invocation.       (line 144)
18492 * -p <5>:                                mkdir invocation.    (line  36)
18493 * -p <6>:                                rmdir invocation.    (line  24)
18494 * -P <3>:                                chown invocation.    (line 164)
18495 * -P <4>:                                chgrp invocation.    (line  88)
18496 * -P <5>:                                df invocation.       (line 161)
18497 * -P <6>:                                du invocation.       (line 142)
18498 * -p <7>:                                File type tests.     (line  29)
18499 * -p <8>:                                tee invocation.      (line  38)
18500 * -p <9>:                                pathchk invocation.  (line  29)
18501 * -P <7>:                                pathchk invocation.  (line  44)
18502 * -p <10>:                               mktemp invocation.   (line 117)
18503 * -P <8>:                                realpath invocation. (line  43)
18504 * -P <9>:                                pwd invocation.      (line  24)
18505 * -p <11>:                               who invocation.      (line  67)
18506 * -p <12>:                               uname invocation.    (line  60)
18507 * -P <10>:                               chcon invocation.    (line  60)
18508 * -q:                                    head invocation.     (line  51)
18509 * -q <1>:                                tail invocation.     (line 163)
18510 * -q <2>:                                csplit invocation.   (line 114)
18511 * -q <3>:                                Formatting the file names.
18512                                                               (line  25)
18513 * -Q:                                    Formatting the file names.
18514                                                               (line  38)
18515 * -q <4>:                                readlink invocation. (line  57)
18516 * -q <5>:                                mktemp invocation.   (line 101)
18517 * -q <6>:                                realpath invocation. (line  52)
18518 * -q <7>:                                who invocation.      (line  72)
18519 * -r:                                    tac invocation.      (line  28)
18520 * -r <1>:                                pr invocation.       (line 201)
18521 * -r <2>:                                sum invocation.      (line  27)
18522 * -r <3>:                                sort invocation.     (line 205)
18523 * -R:                                    sort invocation.     (line 211)
18524 * -r <4>:                                shuf invocation.     (line  50)
18525 * -r <5>:                                Input processing in ptx.
18526                                                               (line  50)
18527 * -R <1>:                                Output formatting in ptx.
18528                                                               (line  58)
18529 * -R <2>:                                Which files are listed.
18530                                                               (line  97)
18531 * -r <6>:                                Sorting the output.  (line  28)
18532 * -R <3>:                                cp invocation.       (line 292)
18533 * -r <7>:                                cp invocation.       (line 292)
18534 * -r <8>:                                rm invocation.       (line 108)
18535 * -R <4>:                                rm invocation.       (line 108)
18536 * -r <9>:                                ln invocation.       (line 156)
18537 * -R <5>:                                chown invocation.    (line 151)
18538 * -R <6>:                                chgrp invocation.    (line  75)
18539 * -R <7>:                                chmod invocation.    (line  75)
18540 * -r <10>:                               touch invocation.    (line 130)
18541 * -r <11>:                               truncate invocation. (line  33)
18542 * -r <12>:                               Access permission tests.
18543                                                               (line  15)
18544 * -r <13>:                               id invocation.       (line  44)
18545 * -r <14>:                               who invocation.      (line  77)
18546 * -r <15>:                               Options for date.    (line  64)
18547 * -R <8>:                                Options for date.    (line  70)
18548 * -r <16>:                               uname invocation.    (line  71)
18549 * -R <9>:                                chcon invocation.    (line  37)
18550 * -r <17>:                               chcon invocation.    (line  74)
18551 * -r <18>:                               runcon invocation.   (line  39)
18552 * -S:                                    Backup options.      (line  53)
18553 * -s:                                    cat invocation.      (line  38)
18554 * -s <1>:                                tac invocation.      (line  32)
18555 * -s <2>:                                nl invocation.       (line 107)
18556 * -S <1>:                                od invocation.       (line  89)
18557 * -s <3>:                                od invocation.       (line 203)
18558 * -s <4>:                                fmt invocation.      (line  60)
18559 * -s <5>:                                pr invocation.       (line 206)
18560 * -S <2>:                                pr invocation.       (line 216)
18561 * -s <6>:                                fold invocation.     (line  39)
18562 * -s <7>:                                tail invocation.     (line 186)
18563 * -s <8>:                                csplit invocation.   (line 114)
18564 * -s <9>:                                sum invocation.      (line  34)
18565 * -s <10>:                               sort invocation.     (line 344)
18566 * -S <3>:                                sort invocation.     (line 360)
18567 * -s <11>:                               uniq invocation.     (line  43)
18568 * -S <4>:                                Input processing in ptx.
18569                                                               (line  76)
18570 * -s <12>:                               cut invocation.      (line  80)
18571 * -s <13>:                               paste invocation.    (line  51)
18572 * -s <14>:                               What information is listed.
18573                                                               (line 242)
18574 * -S <5>:                                Sorting the output.  (line  34)
18575 * -s <15>:                               cp invocation.       (line 380)
18576 * -S <6>:                                cp invocation.       (line 388)
18577 * -s <16>:                               install invocation.  (line 124)
18578 * -S <7>:                                install invocation.  (line 133)
18579 * -S <8>:                                mv invocation.       (line 114)
18580 * -s <17>:                               ln invocation.       (line 184)
18581 * -S <9>:                                ln invocation.       (line 190)
18582 * -s <18>:                               readlink invocation. (line  57)
18583 * -S <10>:                               du invocation.       (line 147)
18584 * -s <19>:                               du invocation.       (line 163)
18585 * -s <20>:                               truncate invocation. (line  37)
18586 * -S <11>:                               File type tests.     (line  32)
18587 * -s <21>:                               File characteristic tests.
18588                                                               (line  12)
18589 * -s <22>:                               basename invocation. (line  41)
18590 * -s <23>:                               realpath invocation. (line  81)
18591 * -s <24>:                               tty invocation.      (line  19)
18592 * -s <25>:                               who invocation.      (line  81)
18593 * -s <26>:                               Options for date.    (line 111)
18594 * -s <27>:                               uname invocation.    (line  75)
18595 * -s <28>:                               timeout invocation.  (line  53)
18596 * -s <29>:                               seq invocation.      (line  49)
18597 * -s BYTES:                              shred invocation.    (line 130)
18598 * -t:                                    cat invocation.      (line  42)
18599 * -T:                                    cat invocation.      (line  46)
18600 * -t <1>:                                od invocation.       (line  99)
18601 * -t <2>:                                fmt invocation.      (line  53)
18602 * -t <3>:                                pr invocation.       (line 228)
18603 * -T <1>:                                pr invocation.       (line 239)
18604 * -t <4>:                                split invocation.    (line 175)
18605 * -t <5>:                                md5sum invocation.   (line 122)
18606 * -t <6>:                                sort invocation.     (line 377)
18607 * -T <2>:                                sort invocation.     (line 398)
18608 * -T <3>:                                Output formatting in ptx.
18609                                                               (line 127)
18610 * -t <7>:                                expand invocation.   (line  24)
18611 * -t <8>:                                unexpand invocation. (line  28)
18612 * -t <9>:                                Sorting the output.  (line  38)
18613 * -T <4>:                                General output formatting.
18614                                                               (line 122)
18615 * -t <10>:                               cp invocation.       (line 393)
18616 * -T <5>:                                cp invocation.       (line 398)
18617 * -t <11>:                               install invocation.  (line 138)
18618 * -T <6>:                                install invocation.  (line 144)
18619 * -t <12>:                               mv invocation.       (line 119)
18620 * -T <7>:                                mv invocation.       (line 124)
18621 * -t <13>:                               ln invocation.       (line 195)
18622 * -T <8>:                                ln invocation.       (line 200)
18623 * -t <14>:                               df invocation.       (line 212)
18624 * -T <9>:                                df invocation.       (line 219)
18625 * -t <15>:                               du invocation.       (line 169)
18626 * -t <16>:                               stat invocation.     (line  58)
18627 * -t <17>:                               File type tests.     (line  35)
18628 * -t <18>:                               mktemp invocation.   (line 135)
18629 * -t <19>:                               who invocation.      (line  85)
18630 * -T <10>:                               who invocation.      (line  98)
18631 * -t <20>:                               chcon invocation.    (line  78)
18632 * -t <21>:                               runcon invocation.   (line  43)
18633 * -u:                                    cat invocation.      (line  49)
18634 * -u <1>:                                fmt invocation.      (line  66)
18635 * -u <2>:                                split invocation.    (line 182)
18636 * -u <3>:                                sort invocation.     (line 415)
18637 * -u <4>:                                uniq invocation.     (line 135)
18638 * -u <5>:                                Sorting the output.  (line  45)
18639 * -U:                                    Sorting the output.  (line  53)
18640 * -u <6>:                                cp invocation.       (line 403)
18641 * -u <7>:                                mv invocation.       (line  95)
18642 * -u <8>:                                shred invocation.    (line 137)
18643 * -u <9>:                                Access permission tests.
18644                                                               (line  18)
18645 * -u <10>:                               mktemp invocation.   (line 107)
18646 * -u <11>:                               id invocation.       (line  49)
18647 * -u <12>:                               who invocation.      (line  88)
18648 * -u <13>:                               Options for date.    (line 117)
18649 * -u <14>:                               chcon invocation.    (line  70)
18650 * -u <15>:                               runcon invocation.   (line  35)
18651 * -u <16>:                               env invocation.      (line  95)
18652 * -v:                                    cat invocation.      (line  53)
18653 * -v <1>:                                nl invocation.       (line 112)
18654 * -v <2>:                                od invocation.       (line 159)
18655 * -v <3>:                                pr invocation.       (line 244)
18656 * -v <4>:                                head invocation.     (line  55)
18657 * -v <5>:                                tail invocation.     (line 199)
18658 * -V:                                    sort invocation.     (line 198)
18659 * -v <6>:                                Sorting the output.  (line  61)
18660 * -v <7>:                                cp invocation.       (line 418)
18661 * -v <8>:                                install invocation.  (line 149)
18662 * -v <9>:                                mv invocation.       (line 106)
18663 * -v <10>:                               rm invocation.       (line 113)
18664 * -v <11>:                               shred invocation.    (line 156)
18665 * -v <12>:                               ln invocation.       (line 205)
18666 * -v <13>:                               mkdir invocation.    (line  53)
18667 * -v <14>:                               readlink invocation. (line  62)
18668 * -v <15>:                               rmdir invocation.    (line  33)
18669 * -v <16>:                               chown invocation.    (line 143)
18670 * -v <17>:                               chgrp invocation.    (line  67)
18671 * -v <18>:                               chmod invocation.    (line  64)
18672 * -v <19>:                               uname invocation.    (line  86)
18673 * -v <20>:                               chcon invocation.    (line  66)
18674 * -w:                                    nl invocation.       (line 116)
18675 * -w <1>:                                od invocation.       (line 166)
18676 * -w <2>:                                base64 invocation.   (line  25)
18677 * -w <3>:                                fmt invocation.      (line  72)
18678 * -w <4>:                                pr invocation.       (line 248)
18679 * -W:                                    pr invocation.       (line 259)
18680 * -w <5>:                                fold invocation.     (line  45)
18681 * -w <6>:                                wc invocation.       (line  55)
18682 * -w <7>:                                md5sum invocation.   (line 132)
18683 * -w <8>:                                uniq invocation.     (line 143)
18684 * -W <1>:                                Input processing in ptx.
18685                                                               (line 125)
18686 * -w <9>:                                Output formatting in ptx.
18687                                                               (line  34)
18688 * -w <10>:                               General output formatting.
18689                                                               (line 134)
18690 * -w <11>:                               Access permission tests.
18691                                                               (line  21)
18692 * -w <12>:                               who invocation.      (line  98)
18693 * -w <13>:                               seq invocation.      (line  54)
18694 * -WIDTH:                                fmt invocation.      (line  72)
18695 * -x:                                    od invocation.       (line 206)
18696 * -X:                                    Sorting the output.  (line  69)
18697 * -x <1>:                                General output formatting.
18698                                                               (line 117)
18699 * -x <2>:                                cp invocation.       (line 422)
18700 * -x <3>:                                shred invocation.    (line 161)
18701 * -x <4>:                                df invocation.       (line 245)
18702 * -x <5>:                                du invocation.       (line 291)
18703 * -x <6>:                                Access permission tests.
18704                                                               (line  24)
18705 * -X FILE:                               du invocation.       (line 280)
18706 * -z:                                    head invocation.     (line  59)
18707 * -z <1>:                                tail invocation.     (line 203)
18708 * -z <2>:                                csplit invocation.   (line 104)
18709 * -z <3>:                                sort invocation.     (line 432)
18710 * -z <4>:                                shuf invocation.     (line  59)
18711 * -z <5>:                                uniq invocation.     (line 149)
18712 * -z <6>:                                comm invocation.     (line  90)
18713 * -z <7>:                                cut invocation.      (line 101)
18714 * -z <8>:                                paste invocation.    (line  72)
18715 * -z <9>:                                join invocation.     (line 166)
18716 * -Z:                                    What information is listed.
18717                                                               (line 266)
18718 * -Z <1>:                                cp invocation.       (line 428)
18719 * -Z <2>:                                install invocation.  (line 153)
18720 * -Z <3>:                                mv invocation.       (line 129)
18721 * -z <10>:                               shred invocation.    (line 173)
18722 * -Z <4>:                                mkdir invocation.    (line  58)
18723 * -Z <5>:                                mkfifo invocation.   (line  31)
18724 * -Z <6>:                                mknod invocation.    (line  61)
18725 * -z <11>:                               readlink invocation. (line  66)
18726 * -z <12>:                               String tests.        (line  15)
18727 * -z <13>:                               basename invocation. (line  46)
18728 * -z <14>:                               dirname invocation.  (line  34)
18729 * -z <15>:                               realpath invocation. (line  89)
18730 * -Z <7>:                                id invocation.       (line  53)
18731 * -z <16>:                               id invocation.       (line  60)
18732 * -z <17>:                               General options in numfmt.
18733                                                               (line 114)
18734 * /:                                     Numeric expressions. (line  15)
18735 * 128-bit checksum:                      md5sum invocation.   (line   6)
18736 * 16-bit checksum:                       sum invocation.      (line   6)
18737 * 160-bit checksum:                      sha1sum invocation.  (line   6)
18738 * 224-bit checksum:                      sha2 utilities.      (line   6)
18739 * 256-bit checksum:                      sha2 utilities.      (line   6)
18740 * 384-bit checksum:                      sha2 utilities.      (line   6)
18741 * 512-bit checksum:                      b2sum invocation.    (line   6)
18742 * 512-bit checksum <1>:                  sha2 utilities.      (line   6)
18743 * <:                                     Relations for expr.  (line  21)
18744 * <=:                                    Relations for expr.  (line  21)
18745 * =:                                     Relations for expr.  (line  21)
18746 * = <1>:                                 String tests.        (line  22)
18747 * ==:                                    Relations for expr.  (line  21)
18748 * == <1>:                                String tests.        (line  25)
18749 * >:                                     Relations for expr.  (line  21)
18750 * >=:                                    Relations for expr.  (line  21)
18751 * \( regexp operator:                    String expressions.  (line  23)
18752 * \+ regexp operator:                    String expressions.  (line  26)
18753 * \? regexp operator:                    String expressions.  (line  26)
18754 * \c:                                    printf invocation.   (line  33)
18755 * \OOO:                                  printf invocation.   (line  75)
18756 * \uhhhh:                                printf invocation.   (line  82)
18757 * \Uhhhhhhhh:                            printf invocation.   (line  82)
18758 * \xHH:                                  printf invocation.   (line  75)
18759 * \| regexp operator:                    String expressions.  (line  26)
18760 * _POSIX2_VERSION:                       Standards conformance.
18761                                                               (line  21)
18762 * _POSIX2_VERSION <1>:                   tail invocation.     (line 219)
18763 * _POSIX2_VERSION <2>:                   sort invocation.     (line 466)
18764 * _POSIX2_VERSION <3>:                   uniq invocation.     (line  48)
18765 * _POSIX2_VERSION <4>:                   touch invocation.    (line 147)
18766 * |:                                     Relations for expr.  (line  11)
18767 * abbreviations for months:              Calendar date items. (line  40)
18768 * access permission tests:               Access permission tests.
18769                                                               (line   6)
18770 * access permissions, changing:          chmod invocation.    (line   6)
18771 * access time:                           dd invocation.       (line 277)
18772 * access time, changing:                 touch invocation.    (line  88)
18773 * access time, printing or sorting files by: Sorting the output.
18774                                                               (line  45)
18775 * access time, show the most recent:     du invocation.       (line 235)
18776 * across columns:                        pr invocation.       (line  74)
18777 * across, listing files:                 General output formatting.
18778                                                               (line 117)
18779 * adding permissions:                    Setting Permissions. (line  35)
18780 * addition:                              Numeric expressions. (line  11)
18781 * ago in date strings:                   Relative items in date strings.
18782                                                               (line  23)
18783 * all lines, grouping:                   uniq invocation.     (line 106)
18784 * all repeated lines, outputting:        uniq invocation.     (line  73)
18785 * alnum:                                 Character sets.      (line  88)
18786 * alpha:                                 Character sets.      (line  90)
18787 * alternate ebcdic, converting to:       dd invocation.       (line 108)
18788 * always color option:                   General output formatting.
18789                                                               (line  33)
18790 * always interactive option:             rm invocation.       (line  66)
18791 * am i:                                  who invocation.      (line  22)
18792 * am in date strings:                    Time of day items.   (line  21)
18793 * and operator:                          Connectives for test.
18794                                                               (line  31)
18795 * and operator <1>:                      Relations for expr.  (line  17)
18796 * append:                                dd invocation.       (line 202)
18797 * appending to the output file:          dd invocation.       (line 202)
18798 * appropriate privileges:                install invocation.  (line 101)
18799 * appropriate privileges <1>:            Setting the time.    (line   6)
18800 * appropriate privileges <2>:            hostname invocation. (line   6)
18801 * appropriate privileges <3>:            nice invocation.     (line   6)
18802 * arbitrary date strings, debugging:     Options for date.    (line  25)
18803 * arbitrary date strings, parsing:       Options for date.    (line  11)
18804 * arbitrary text, displaying:            echo invocation.     (line   6)
18805 * arch:                                  arch invocation.     (line   6)
18806 * arithmetic tests:                      Numeric tests.       (line   6)
18807 * ASCII dump of files:                   od invocation.       (line   6)
18808 * ascii, converting to:                  dd invocation.       (line  96)
18809 * atime, changing:                       touch invocation.    (line  88)
18810 * atime, printing or sorting files by:   Sorting the output.  (line  45)
18811 * atime, show the most recent:           du invocation.       (line 235)
18812 * attributes, file:                      Changing file attributes.
18813                                                               (line   6)
18814 * authors of parse_datetime:             Authors of parse_datetime.
18815                                                               (line   6)
18816 * auto color option:                     General output formatting.
18817                                                               (line  32)
18818 * b for block special file:              mknod invocation.    (line  38)
18819 * b2sum:                                 b2sum invocation.    (line   6)
18820 * background jobs, stopping at terminal write: Local.         (line  44)
18821 * backslash escapes:                     Character sets.      (line  13)
18822 * backslash escapes <1>:                 echo invocation.     (line  28)
18823 * backslash escapes <2>:                 echo invocation.     (line  64)
18824 * backslash sequences for file names:    Formatting the file names.
18825                                                               (line  11)
18826 * backup files, ignoring:                Which files are listed.
18827                                                               (line  24)
18828 * backup options:                        Backup options.      (line   6)
18829 * backup suffix:                         Backup options.      (line  53)
18830 * backups, making:                       Backup options.      (line  14)
18831 * backups, making <1>:                   cp invocation.       (line  96)
18832 * backups, making <2>:                   install invocation.  (line  45)
18833 * backups, making <3>:                   mv invocation.       (line  71)
18834 * backups, making <4>:                   ln invocation.       (line  93)
18835 * backups, making only:                  cp invocation.       (line  66)
18836 * base32:                                base32 invocation.   (line   6)
18837 * base32 encoding:                       base32 invocation.   (line   6)
18838 * base64:                                base64 invocation.   (line   6)
18839 * Base64 decoding:                       base64 invocation.   (line  33)
18840 * base64 encoding:                       base64 invocation.   (line   6)
18841 * basename:                              basename invocation. (line   6)
18842 * baud rate, setting:                    Special.             (line  53)
18843 * beeping at input buffer full:          Input.               (line  61)
18844 * beginning of time:                     Time conversion specifiers.
18845                                                               (line  32)
18846 * beginning of time, for POSIX:          Seconds since the Epoch.
18847                                                               (line  13)
18848 * Bellovin, Steven M.:                   Authors of parse_datetime.
18849                                                               (line   6)
18850 * Berets, Jim:                           Authors of parse_datetime.
18851                                                               (line   6)
18852 * Berry, K.:                             Introduction.        (line  31)
18853 * Berry, K. <1>:                         Authors of parse_datetime.
18854                                                               (line  19)
18855 * binary:                                dd invocation.       (line 295)
18856 * binary I/O:                            dd invocation.       (line 295)
18857 * binary input files:                    md5sum invocation.   (line  44)
18858 * bind mount:                            rm invocation.       (line  76)
18859 * bind mount <1>:                        stat invocation.     (line 193)
18860 * BLAKE2:                                b2sum invocation.    (line   6)
18861 * BLAKE2 hash length:                    b2sum invocation.    (line  12)
18862 * blank:                                 Character sets.      (line  92)
18863 * blank lines, numbering:                nl invocation.       (line  85)
18864 * blanks, ignoring leading:              sort invocation.     (line  91)
18865 * block (space-padding):                 dd invocation.       (line 117)
18866 * block size:                            Block size.          (line   6)
18867 * block size <1>:                        dd invocation.       (line  37)
18868 * block size of conversion:              dd invocation.       (line  44)
18869 * block size of input:                   dd invocation.       (line  29)
18870 * block size of output:                  dd invocation.       (line  33)
18871 * block special check:                   File type tests.     (line  11)
18872 * block special files:                   mknod invocation.    (line  13)
18873 * block special files, creating:         mknod invocation.    (line   6)
18874 * BLOCKSIZE:                             Block size.          (line  12)
18875 * BLOCK_SIZE:                            Block size.          (line  12)
18876 * body, numbering:                       nl invocation.       (line  19)
18877 * Bourne shell syntax for color setup:   dircolors invocation.
18878                                                               (line  35)
18879 * breaks, cause interrupts:              Input.               (line  12)
18880 * breaks, ignoring:                      Input.               (line   9)
18881 * brkint:                                Input.               (line  12)
18882 * bs:                                    dd invocation.       (line  37)
18883 * BSD output:                            md5sum invocation.   (line 111)
18884 * BSD sum:                               sum invocation.      (line  27)
18885 * BSD tail:                              tail invocation.     (line  28)
18886 * BSD touch compatibility:               touch invocation.    (line 105)
18887 * bsN:                                   Output.              (line  56)
18888 * btrfs file system type:                df invocation.       (line 232)
18889 * bugs, reporting:                       Introduction.        (line  13)
18890 * built-in shell commands, conflicts with: mknod invocation.  (line  26)
18891 * built-in shell commands, conflicts with <1>: stat invocation.
18892                                                               (line  17)
18893 * built-in shell commands, conflicts with <2>: echo invocation.
18894                                                               (line  13)
18895 * built-in shell commands, conflicts with <3>: printf invocation.
18896                                                               (line  19)
18897 * built-in shell commands, conflicts with <4>: test invocation.
18898                                                               (line  28)
18899 * built-in shell commands, conflicts with <5>: pwd invocation.
18900                                                               (line  33)
18901 * built-in shell commands, conflicts with <6>: nice invocation.
18902                                                               (line  42)
18903 * built-in shell commands, conflicts with <7>: kill invocation.
18904                                                               (line  15)
18905 * built-in shell commands, conflicts with <8>: sleep invocation.
18906                                                               (line  32)
18907 * byte count:                            wc invocation.       (line   6)
18908 * byte-swapping:                         od invocation.       (line  59)
18909 * byte-swapping <1>:                     dd invocation.       (line 150)
18910 * c for character special file:          mknod invocation.    (line  41)
18911 * C shell syntax for color setup:        dircolors invocation.
18912                                                               (line  42)
18913 * C-s/C-q flow control:                  Input.               (line  41)
18914 * calendar date item:                    Calendar date items. (line   6)
18915 * calling combined multi-call program:   Multi-call invocation.
18916                                                               (line   6)
18917 * canonical file name:                   readlink invocation. (line   6)
18918 * canonical file name <1>:               realpath invocation. (line   6)
18919 * canonicalize a file name:              readlink invocation. (line   6)
18920 * canonicalize a file name <1>:          realpath invocation. (line   6)
18921 * case folding:                          sort invocation.     (line 107)
18922 * case translation:                      Local.               (line  37)
18923 * case, ignored in dates:                General date syntax. (line  63)
18924 * cat:                                   cat invocation.      (line   6)
18925 * cbreak:                                Combination.         (line  51)
18926 * cbs:                                   dd invocation.       (line  44)
18927 * CD-ROM file system type:               df invocation.       (line 237)
18928 * cdfs file system type:                 df invocation.       (line 237)
18929 * cdtrdsr:                               Control.             (line  46)
18930 * change or print terminal settings:     stty invocation.     (line   6)
18931 * change SELinux context:                chcon invocation.    (line   6)
18932 * changed files, verbosely describing:   chgrp invocation.    (line  27)
18933 * changed owners, verbosely describing:  chown invocation.    (line  77)
18934 * changing access permissions:           chmod invocation.    (line   6)
18935 * changing file attributes:              Changing file attributes.
18936                                                               (line   6)
18937 * changing file ownership:               chown invocation.    (line   6)
18938 * changing file timestamps:              touch invocation.    (line   6)
18939 * changing group ownership:              chown invocation.    (line   6)
18940 * changing group ownership <1>:          chgrp invocation.    (line   6)
18941 * changing security context:             chcon invocation.    (line   6)
18942 * changing special mode bits:            Changing Special Mode Bits.
18943                                                               (line   6)
18944 * character classes:                     Character sets.      (line  74)
18945 * character count:                       wc invocation.       (line   6)
18946 * character size:                        Control.             (line  25)
18947 * character special check:               File type tests.     (line  14)
18948 * character special files:               mknod invocation.    (line  13)
18949 * character special files, creating:     mknod invocation.    (line   6)
18950 * characters, special:                   Characters.          (line   6)
18951 * chcon:                                 chcon invocation.    (line   6)
18952 * check file types:                      test invocation.     (line   6)
18953 * checking for sortedness:               sort invocation.     (line  45)
18954 * checking for sortedness <1>:           sort invocation.     (line  54)
18955 * checksum, 128-bit:                     md5sum invocation.   (line   6)
18956 * checksum, 16-bit:                      sum invocation.      (line   6)
18957 * checksum, 160-bit:                     sha1sum invocation.  (line   6)
18958 * checksum, 224-bit:                     sha2 utilities.      (line   6)
18959 * checksum, 256-bit:                     sha2 utilities.      (line   6)
18960 * checksum, 384-bit:                     sha2 utilities.      (line   6)
18961 * checksum, 512-bit:                     b2sum invocation.    (line   6)
18962 * checksum, 512-bit <1>:                 sha2 utilities.      (line   6)
18963 * chgrp:                                 chgrp invocation.    (line   6)
18964 * chmod:                                 chmod invocation.    (line   6)
18965 * chown:                                 chown invocation.    (line   6)
18966 * chroot:                                chroot invocation.   (line   6)
18967 * cio:                                   dd invocation.       (line 211)
18968 * cksum:                                 cksum invocation.    (line   6)
18969 * clocal:                                Control.             (line  40)
18970 * clock skew:                            Formatting file timestamps.
18971                                                               (line  12)
18972 * clock skew <1>:                        touch invocation.    (line  20)
18973 * clone:                                 cp invocation.       (line 308)
18974 * cmspar:                                Control.             (line  17)
18975 * cntrl:                                 Character sets.      (line  94)
18976 * color database, printing:              dircolors invocation.
18977                                                               (line  47)
18978 * color setup:                           dircolors invocation.
18979                                                               (line   6)
18980 * color, distinguishing file types with: General output formatting.
18981                                                               (line  29)
18982 * cols:                                  Special.             (line  27)
18983 * column to wrap data after:             base64 invocation.   (line  25)
18984 * COLUMNS:                               General output formatting.
18985                                                               (line 134)
18986 * COLUMNS <1>:                           Special.             (line  40)
18987 * columns:                               Special.             (line  27)
18988 * combination settings:                  Combination.         (line   6)
18989 * combined:                              Multi-call invocation.
18990                                                               (line   6)
18991 * combined date and time of day item:    Combined date and time of day items.
18992                                                               (line   6)
18993 * comm:                                  comm invocation.     (line   6)
18994 * command-line operands to shuffle:      shuf invocation.     (line  21)
18995 * commands for controlling processes:    Process control.     (line   6)
18996 * commands for delaying:                 Delaying.            (line   6)
18997 * commands for exit status:              Conditions.          (line   6)
18998 * commands for file name manipulation:   File name manipulation.
18999                                                               (line   6)
19000 * commands for invoking other commands:  Modified command invocation.
19001                                                               (line   6)
19002 * commands for printing text:            Printing text.       (line   6)
19003 * commands for printing the working context: Working context. (line   6)
19004 * commands for printing user information: User information.   (line   6)
19005 * commands for redirection:              Redirection.         (line   6)
19006 * commands for SELinux context:          SELinux context.     (line   6)
19007 * commands for system context:           System context.      (line   6)
19008 * commas, outputting between files:      General output formatting.
19009                                                               (line 107)
19010 * comments, in dates:                    General date syntax. (line  63)
19011 * common field, joining on:              join invocation.     (line   6)
19012 * common lines:                          comm invocation.     (line  19)
19013 * common options:                        Common options.      (line   6)
19014 * compare values:                        test invocation.     (line   6)
19015 * comparing sorted files:                comm invocation.     (line   6)
19016 * comparison operators:                  Relations for expr.  (line  21)
19017 * concatenate and write files:           cat invocation.      (line   6)
19018 * concurrent I/O:                        dd invocation.       (line 211)
19019 * conditional executability:             Conditional Executability.
19020                                                               (line   6)
19021 * conditions:                            Conditions.          (line   6)
19022 * conflicts with shell built-ins:        mknod invocation.    (line  26)
19023 * conflicts with shell built-ins <1>:    stat invocation.     (line  17)
19024 * conflicts with shell built-ins <2>:    echo invocation.     (line  13)
19025 * conflicts with shell built-ins <3>:    printf invocation.   (line  19)
19026 * conflicts with shell built-ins <4>:    test invocation.     (line  28)
19027 * conflicts with shell built-ins <5>:    pwd invocation.      (line  33)
19028 * conflicts with shell built-ins <6>:    nice invocation.     (line  42)
19029 * conflicts with shell built-ins <7>:    kill invocation.     (line  15)
19030 * conflicts with shell built-ins <8>:    sleep invocation.    (line  32)
19031 * connectives, logical:                  Connectives for test.
19032                                                               (line   6)
19033 * connectives, logical <1>:              Relations for expr.  (line   6)
19034 * constant parity:                       Control.             (line  17)
19035 * context splitting:                     csplit invocation.   (line   6)
19036 * context, system:                       System context.      (line   6)
19037 * control characters, using ^C:          Local.               (line  54)
19038 * control settings:                      Control.             (line   6)
19039 * controlling terminal:                  dd invocation.       (line 283)
19040 * conv:                                  dd invocation.       (line  90)
19041 * conversion block size:                 dd invocation.       (line  44)
19042 * conversion specifiers, date:           Date conversion specifiers.
19043                                                               (line   6)
19044 * conversion specifiers, literal:        Literal conversion specifiers.
19045                                                               (line   6)
19046 * conversion specifiers, time:           Time conversion specifiers.
19047                                                               (line   6)
19048 * converting tabs to spaces:             expand invocation.   (line   6)
19049 * converting while copying a file:       dd invocation.       (line   6)
19050 * cooked:                                Combination.         (line  36)
19051 * Coordinated Universal Time:            Options for date.    (line 117)
19052 * copy on write:                         cp invocation.       (line 308)
19053 * copying directories recursively:       cp invocation.       (line 115)
19054 * copying directories recursively <1>:   cp invocation.       (line 292)
19055 * copying existing permissions:          Copying Permissions. (line   6)
19056 * copying files:                         cat invocation.      (line   6)
19057 * copying files and directories:         cp invocation.       (line   6)
19058 * copying files and setting attributes:  install invocation.  (line   6)
19059 * core utilities:                        Top.                 (line  32)
19060 * count:                                 dd invocation.       (line  59)
19061 * count_bytes:                           dd invocation.       (line 315)
19062 * COW:                                   cp invocation.       (line 308)
19063 * cp:                                    cp invocation.       (line   6)
19064 * crashes and corruption:                sync invocation.     (line  20)
19065 * CRC checksum:                          cksum invocation.    (line   6)
19066 * cread:                                 Control.             (line  37)
19067 * creating directories:                  mkdir invocation.    (line   6)
19068 * creating FIFOs (named pipes):          mkfifo invocation.   (line   6)
19069 * creating links (hard only):            link invocation.     (line   6)
19070 * creating links (hard or soft):         ln invocation.       (line   6)
19071 * creating output file, avoiding:        dd invocation.       (line 169)
19072 * creating output file, requiring:       dd invocation.       (line 164)
19073 * crN:                                   Output.              (line  46)
19074 * crown margin:                          fmt invocation.      (line  40)
19075 * crt:                                   Combination.         (line  75)
19076 * crterase:                              Local.               (line  22)
19077 * crtkill:                               Local.               (line  59)
19078 * crtscts:                               Control.             (line  43)
19079 * csh syntax for color setup:            dircolors invocation.
19080                                                               (line  42)
19081 * csN:                                   Control.             (line  25)
19082 * csplit:                                csplit invocation.   (line   6)
19083 * cstopb:                                Control.             (line  33)
19084 * ctime, printing or sorting by:         Sorting the output.  (line  13)
19085 * ctime, show the most recent:           du invocation.       (line 226)
19086 * ctlecho:                               Local.               (line  54)
19087 * current working directory, printing:   pwd invocation.      (line   6)
19088 * cut:                                   cut invocation.      (line   6)
19089 * cyclic redundancy check:               cksum invocation.    (line   6)
19090 * data, erasing:                         shred invocation.    (line   6)
19091 * database for color setup, printing:    dircolors invocation.
19092                                                               (line  47)
19093 * date:                                  date invocation.     (line   6)
19094 * date and time of day format, ISO 8601: Combined date and time of day items.
19095                                                               (line   6)
19096 * date conversion specifiers:            Date conversion specifiers.
19097                                                               (line   6)
19098 * date format, ISO 8601:                 Calendar date items. (line  32)
19099 * date input formats:                    Date input formats.  (line   6)
19100 * date options:                          Options for date.    (line   6)
19101 * date strings, debugging:               Options for date.    (line  25)
19102 * date strings, parsing:                 Options for date.    (line  11)
19103 * day in date strings:                   Relative items in date strings.
19104                                                               (line  15)
19105 * day in date strings <1>:               Relative items in date strings.
19106                                                               (line  29)
19107 * day of week item:                      Day of week items.   (line   6)
19108 * dd:                                    dd invocation.       (line   6)
19109 * ddrescue:                              dd invocation.       (line 369)
19110 * debugging date strings:                Options for date.    (line  25)
19111 * dec:                                   Combination.         (line  78)
19112 * decctlq:                               Combination.         (line  63)
19113 * Decode base64 data:                    base64 invocation.   (line  33)
19114 * delay for a specified time:            sleep invocation.    (line   6)
19115 * delaying commands:                     Delaying.            (line   6)
19116 * deleting characters:                   Squeezing and deleting.
19117                                                               (line   6)
19118 * dereferencing symbolic links:          ln invocation.       (line  48)
19119 * descriptor follow option:              tail invocation.     (line  58)
19120 * destination directory:                 Target directory.    (line  15)
19121 * destination directory <1>:             Target directory.    (line  34)
19122 * destination directory <2>:             cp invocation.       (line 393)
19123 * destination directory <3>:             cp invocation.       (line 398)
19124 * destination directory <4>:             install invocation.  (line 138)
19125 * destination directory <5>:             install invocation.  (line 144)
19126 * destination directory <6>:             mv invocation.       (line 119)
19127 * destination directory <7>:             mv invocation.       (line 124)
19128 * destination directory <8>:             ln invocation.       (line 195)
19129 * destination directory <9>:             ln invocation.       (line 200)
19130 * destinations, multiple output:         tee invocation.      (line   6)
19131 * device file, disk:                     df invocation.       (line  36)
19132 * df:                                    df invocation.       (line   6)
19133 * DF_BLOCK_SIZE:                         Block size.          (line  12)
19134 * diagnostic:                            chcon invocation.    (line  66)
19135 * dictionary order:                      sort invocation.     (line 100)
19136 * differing lines:                       comm invocation.     (line  19)
19137 * digit:                                 Character sets.      (line  96)
19138 * dir:                                   dir invocation.      (line   6)
19139 * dircolors:                             dircolors invocation.
19140                                                               (line   6)
19141 * direct:                                dd invocation.       (line 218)
19142 * direct I/O:                            dd invocation.       (line 218)
19143 * directories, copying:                  cp invocation.       (line   6)
19144 * directories, copying recursively:      cp invocation.       (line 115)
19145 * directories, copying recursively <1>:  cp invocation.       (line 292)
19146 * directories, creating:                 mkdir invocation.    (line   6)
19147 * directories, creating with given attributes: install invocation.
19148                                                               (line  75)
19149 * directories, removing:                 rm invocation.       (line  40)
19150 * directories, removing (recursively):   rm invocation.       (line 108)
19151 * directories, removing empty:           rmdir invocation.    (line   6)
19152 * directory:                             dd invocation.       (line 227)
19153 * directory check:                       File type tests.     (line  17)
19154 * directory components, printing:        dirname invocation.  (line   6)
19155 * directory deletion, ignoring failures: rmdir invocation.    (line  19)
19156 * directory deletion, reporting:         rmdir invocation.    (line  33)
19157 * directory I/O:                         dd invocation.       (line 227)
19158 * directory listing:                     ls invocation.       (line   6)
19159 * directory listing, brief:              dir invocation.      (line   6)
19160 * directory listing, recursive:          Which files are listed.
19161                                                               (line  97)
19162 * directory listing, verbose:            vdir invocation.     (line   6)
19163 * directory order, listing by:           Sorting the output.  (line  20)
19164 * directory, creating temporary:         mktemp invocation.   (line   6)
19165 * directory, stripping from file names:  basename invocation. (line   6)
19166 * dired Emacs mode support:              What information is listed.
19167                                                               (line  17)
19168 * dirname:                               dirname invocation.  (line   6)
19169 * disabling special characters:          Characters.          (line  12)
19170 * disambiguating group names and IDs:    Disambiguating names and IDs.
19171                                                               (line   6)
19172 * discard:                               Characters.          (line  40)
19173 * discarding file cache:                 dd invocation.       (line 245)
19174 * disk allocation:                       What information is listed.
19175                                                               (line 242)
19176 * disk device file:                      df invocation.       (line  36)
19177 * disk usage:                            Disk usage.          (line   6)
19178 * disk usage by file system:             df invocation.       (line   6)
19179 * disk usage for files:                  du invocation.       (line   6)
19180 * disks, failing:                        dd invocation.       (line 369)
19181 * displacement of dates:                 Relative items in date strings.
19182                                                               (line   6)
19183 * displaying text:                       echo invocation.     (line   6)
19184 * displaying value of a symbolic link:   readlink invocation. (line   6)
19185 * division:                              Numeric expressions. (line  15)
19186 * do nothing, successfully:              true invocation.     (line   6)
19187 * do nothing, unsuccessfully:            false invocation.    (line   6)
19188 * DOS file system:                       df invocation.       (line 241)
19189 * double spacing:                        pr invocation.       (line  87)
19190 * down columns:                          pr invocation.       (line  59)
19191 * drain:                                 Special.             (line  30)
19192 * dsusp:                                 Characters.          (line  59)
19193 * dsync:                                 dd invocation.       (line 233)
19194 * DTR/DSR flow control:                  Control.             (line  46)
19195 * du:                                    du invocation.       (line   6)
19196 * DU_BLOCK_SIZE:                         Block size.          (line  12)
19197 * DVD file system type:                  df invocation.       (line 237)
19198 * ebcdic, converting to:                 dd invocation.       (line 103)
19199 * echo:                                  echo invocation.     (line   6)
19200 * echo <1>:                              Local.               (line  18)
19201 * echoctl:                               Local.               (line  54)
19202 * echoe:                                 Local.               (line  22)
19203 * echok:                                 Local.               (line  26)
19204 * echoke:                                Local.               (line  59)
19205 * echonl:                                Local.               (line  29)
19206 * echoprt:                               Local.               (line  49)
19207 * effective user and group IDs, printing: id invocation.      (line   6)
19208 * effective user ID, printing:           whoami invocation.   (line   6)
19209 * Eggert, Paul:                          Authors of parse_datetime.
19210                                                               (line   6)
19211 * eight-bit characters:                  Control.             (line  25)
19212 * eight-bit characters <1>:              Combination.         (line  55)
19213 * eight-bit input:                       Input.               (line  25)
19214 * ek:                                    Combination.         (line  22)
19215 * empty files, creating:                 touch invocation.    (line  13)
19216 * empty lines, numbering:                nl invocation.       (line  85)
19217 * endianness:                            od invocation.       (line  59)
19218 * entire files, output of:               Output of entire files.
19219                                                               (line   6)
19220 * env:                                   env invocation.      (line   6)
19221 * environment variables, printing:       printenv invocation. (line   6)
19222 * environment, printing:                 env invocation.      (line  52)
19223 * environment, running a program in a modified: env invocation.
19224                                                               (line   6)
19225 * eof:                                   Characters.          (line  31)
19226 * eol:                                   Characters.          (line  34)
19227 * eol2:                                  Characters.          (line  37)
19228 * epoch, for POSIX:                      Seconds since the Epoch.
19229                                                               (line  13)
19230 * epoch, seconds since:                  Time conversion specifiers.
19231                                                               (line  32)
19232 * equal string check:                    String tests.        (line  22)
19233 * equal string check <1>:                String tests.        (line  25)
19234 * equivalence classes:                   Character sets.      (line 115)
19235 * erase:                                 Characters.          (line  25)
19236 * erasing data:                          shred invocation.    (line   6)
19237 * error messages, omitting:              chown invocation.    (line  83)
19238 * error messages, omitting <1>:          chgrp invocation.    (line  33)
19239 * error messages, omitting <2>:          chmod invocation.    (line  50)
19240 * evaluation of expressions:             expr invocation.     (line   6)
19241 * even parity:                           Control.             (line  13)
19242 * evenp:                                 Combination.         (line   9)
19243 * exabyte, definition of:                Block size.          (line 114)
19244 * examples of date:                      Examples of date.    (line   6)
19245 * examples of expr:                      Examples of expr.    (line   6)
19246 * exbibyte, definition of:               Block size.          (line 118)
19247 * excl:                                  dd invocation.       (line 164)
19248 * excluding files from du:               du invocation.       (line 280)
19249 * excluding files from du <1>:           du invocation.       (line 285)
19250 * executable file check:                 Access permission tests.
19251                                                               (line  24)
19252 * executables and file type, marking:    General output formatting.
19253                                                               (line  60)
19254 * execute/search permission:             Mode Structure.      (line  18)
19255 * execute/search permission, symbolic:   Setting Permissions. (line  56)
19256 * existence-of-file check:               File characteristic tests.
19257                                                               (line   9)
19258 * existing backup method:                Backup options.      (line  41)
19259 * exit status commands:                  Conditions.          (line   6)
19260 * exit status of chroot:                 chroot invocation.   (line  87)
19261 * exit status of env:                    env invocation.      (line 102)
19262 * exit status of expr:                   expr invocation.     (line  47)
19263 * exit status of false:                  false invocation.    (line   6)
19264 * exit status of ls:                     ls invocation.       (line  36)
19265 * exit status of mktemp:                 mktemp invocation.   (line 144)
19266 * exit status of nice:                   nice invocation.     (line  69)
19267 * exit status of nohup:                  nohup invocation.    (line  56)
19268 * exit status of pathchk:                pathchk invocation.  (line  52)
19269 * exit status of printenv:               printenv invocation. (line  25)
19270 * exit status of realpath:               realpath invocation. (line  93)
19271 * exit status of runcon:                 runcon invocation.   (line  50)
19272 * exit status of sort:                   sort invocation.     (line  67)
19273 * exit status of stdbuf:                 stdbuf invocation.   (line  74)
19274 * exit status of test:                   test invocation.     (line  43)
19275 * exit status of timeout:                timeout invocation.  (line  66)
19276 * exit status of true:                   true invocation.     (line   6)
19277 * exit status of tty:                    tty invocation.      (line  21)
19278 * expand:                                expand invocation.   (line   6)
19279 * expr:                                  expr invocation.     (line   6)
19280 * expression evaluation:                 test invocation.     (line   6)
19281 * expression evaluation <1>:             expr invocation.     (line   6)
19282 * expressions, numeric:                  Numeric expressions. (line   6)
19283 * expressions, string:                   String expressions.  (line   6)
19284 * ext2 file system type:                 df invocation.       (line 232)
19285 * ext3 file system type:                 df invocation.       (line 232)
19286 * ext4 file system type:                 df invocation.       (line 232)
19287 * extended attributes, xattr:            install invocation.  (line  38)
19288 * extended attributes, xattr <1>:        mv invocation.       (line  38)
19289 * extension, sorting files by:           Sorting the output.  (line  69)
19290 * extproc:                               Local.               (line  64)
19291 * factor:                                factor invocation.   (line   6)
19292 * failure exit status:                   false invocation.    (line   6)
19293 * false:                                 false invocation.    (line   6)
19294 * fat file system file:                  df invocation.       (line 241)
19295 * fdatasync:                             dd invocation.       (line 182)
19296 * ffN:                                   Output.              (line  64)
19297 * field separator character:             sort invocation.     (line 377)
19298 * fields, padding numeric:               Padding and other flags.
19299                                                               (line   6)
19300 * FIFOs, creating:                       mkfifo invocation.   (line   6)
19301 * file attributes, changing:             Changing file attributes.
19302                                                               (line   6)
19303 * file characteristic tests:             File characteristic tests.
19304                                                               (line   6)
19305 * file contents, dumping unambiguously:  od invocation.       (line   6)
19306 * file information, preserving:          cp invocation.       (line 274)
19307 * file information, preserving, extended attributes, xattr: cp invocation.
19308                                                               (line 196)
19309 * file mode bits, numeric:               Numeric Modes.       (line   6)
19310 * file name manipulation:                File name manipulation.
19311                                                               (line   6)
19312 * file names, canonicalization:          realpath invocation. (line   6)
19313 * file names, checking validity and portability: pathchk invocation.
19314                                                               (line   6)
19315 * file names, creating temporary:        mktemp invocation.   (line   6)
19316 * file names, stripping directory and suffix: basename invocation.
19317                                                               (line   6)
19318 * file offset radix:                     od invocation.       (line  44)
19319 * file ownership, changing:              chown invocation.    (line   6)
19320 * file sizes:                            du invocation.       (line  55)
19321 * file space usage:                      du invocation.       (line   6)
19322 * file status:                           stat invocation.     (line   6)
19323 * file system disk usage:                df invocation.       (line   6)
19324 * file system sizes:                     df invocation.       (line  64)
19325 * file system space, retrieving current data more slowly: df invocation.
19326                                                               (line 188)
19327 * file system space, retrieving old data more quickly: df invocation.
19328                                                               (line  96)
19329 * file system status:                    stat invocation.     (line   6)
19330 * file system types, limiting output to certain: df invocation.
19331                                                               (line  92)
19332 * file system types, limiting output to certain <1>: df invocation.
19333                                                               (line 212)
19334 * file system types, printing:           df invocation.       (line 219)
19335 * file systems:                          stat invocation.     (line  32)
19336 * file systems and hard links:           ln invocation.       (line   6)
19337 * file systems, omitting copying to different: cp invocation. (line 422)
19338 * file timestamp resolution:             touch invocation.    (line  31)
19339 * file timestamps, changing:             touch invocation.    (line   6)
19340 * file type and executables, marking:    General output formatting.
19341                                                               (line  60)
19342 * file type tests:                       File type tests.     (line   6)
19343 * file type, marking:                    General output formatting.
19344                                                               (line  71)
19345 * file type, marking <1>:                General output formatting.
19346                                                               (line 112)
19347 * file types:                            Special file types.  (line  10)
19348 * file types, special:                   Special file types.  (line   6)
19349 * file utilities:                        Top.                 (line  32)
19350 * files beginning with -, removing:      rm invocation.       (line 115)
19351 * files, copying:                        cp invocation.       (line   6)
19352 * files, creating:                       truncate invocation. (line  13)
19353 * fingerprint, 128-bit:                  md5sum invocation.   (line   6)
19354 * fingerprint, 160-bit:                  sha1sum invocation.  (line   6)
19355 * fingerprint, 224-bit:                  sha2 utilities.      (line   6)
19356 * fingerprint, 256-bit:                  sha2 utilities.      (line   6)
19357 * fingerprint, 384-bit:                  sha2 utilities.      (line   6)
19358 * fingerprint, 512-bit:                  b2sum invocation.    (line   6)
19359 * fingerprint, 512-bit <1>:              sha2 utilities.      (line   6)
19360 * first in date strings:                 General date syntax. (line  22)
19361 * first part of files, outputting:       head invocation.     (line   6)
19362 * fixed-length records, converting to variable-length: dd invocation.
19363                                                               (line  44)
19364 * floating point:                        Floating point.      (line   6)
19365 * flow control, hardware:                Control.             (line  43)
19366 * flow control, hardware <1>:            Control.             (line  46)
19367 * flow control, software:                Input.               (line  46)
19368 * flush:                                 Characters.          (line  40)
19369 * flushing, disabling:                   Local.               (line  33)
19370 * flusho:                                Local.               (line  70)
19371 * fmt:                                   fmt invocation.      (line   6)
19372 * fold:                                  fold invocation.     (line   6)
19373 * folding long input lines:              fold invocation.     (line   6)
19374 * footers, numbering:                    nl invocation.       (line  19)
19375 * force deletion:                        shred invocation.    (line 114)
19376 * formatting file contents:              Formatting file contents.
19377                                                               (line   6)
19378 * formatting of numbers in seq:          seq invocation.      (line  31)
19379 * formatting times:                      pr invocation.       (line  91)
19380 * formatting times <1>:                  date invocation.     (line  21)
19381 * fortnight in date strings:             Relative items in date strings.
19382                                                               (line  15)
19383 * fsync:                                 dd invocation.       (line 186)
19384 * fullblock:                             dd invocation.       (line 303)
19385 * general date syntax:                   General date syntax. (line   6)
19386 * general numeric sort:                  sort invocation.     (line 123)
19387 * gibibyte, definition of:               Block size.          (line 102)
19388 * gigabyte, definition of:               Block size.          (line  99)
19389 * giving away permissions:               Umask and Protection.
19390                                                               (line  15)
19391 * GMT:                                   Options for date.    (line 117)
19392 * grand total of disk size, usage and available space: df invocation.
19393                                                               (line 196)
19394 * grand total of disk space:             du invocation.       (line  65)
19395 * graph:                                 Character sets.      (line  98)
19396 * Greenwich Mean Time:                   Options for date.    (line 117)
19397 * group IDs, disambiguating:             Disambiguating names and IDs.
19398                                                               (line   6)
19399 * group names, disambiguating:           Disambiguating names and IDs.
19400                                                               (line   6)
19401 * group owner, default:                  Mode Structure.      (line  28)
19402 * group ownership of installed files, setting: install invocation.
19403                                                               (line  82)
19404 * group ownership, changing:             chown invocation.    (line   6)
19405 * group ownership, changing <1>:         chgrp invocation.    (line   6)
19406 * group, permissions for:                Setting Permissions. (line  25)
19407 * groups:                                groups invocation.   (line   6)
19408 * growing files:                         tail invocation.     (line  58)
19409 * hangups, immunity to:                  nohup invocation.    (line   6)
19410 * hard link check:                       File characteristic tests.
19411                                                               (line  23)
19412 * hard link, defined:                    ln invocation.       (line  36)
19413 * hard links:                            dd invocation.       (line 292)
19414 * hard links to directories:             ln invocation.       (line  99)
19415 * hard links to symbolic links:          ln invocation.       (line 207)
19416 * hard links, counting in du:            du invocation.       (line 132)
19417 * hard links, creating:                  link invocation.     (line   6)
19418 * hard links, creating <1>:              ln invocation.       (line   6)
19419 * hard links, preserving:                cp invocation.       (line 129)
19420 * hardware class:                        uname invocation.    (line  51)
19421 * hardware flow control:                 Control.             (line  43)
19422 * hardware flow control <1>:             Control.             (line  46)
19423 * hardware platform:                     uname invocation.    (line  44)
19424 * hardware type:                         uname invocation.    (line  51)
19425 * hat notation for control characters:   Local.               (line  54)
19426 * head:                                  head invocation.     (line   6)
19427 * head of output:                        shuf invocation.     (line  33)
19428 * headers, numbering:                    nl invocation.       (line  19)
19429 * help, online:                          Common options.      (line  40)
19430 * hex dump of files:                     od invocation.       (line   6)
19431 * holes, copying files with:             cp invocation.       (line 340)
19432 * holes, creating files with:            truncate invocation. (line  15)
19433 * horizontal, listing files:             General output formatting.
19434                                                               (line 117)
19435 * host processor type:                   uname invocation.    (line  60)
19436 * hostid:                                hostid invocation.   (line   6)
19437 * hostname:                              hostname invocation. (line   6)
19438 * hostname <1>:                          uname invocation.    (line  56)
19439 * hour in date strings:                  Relative items in date strings.
19440                                                               (line  15)
19441 * human numeric sort:                    sort invocation.     (line 143)
19442 * human-readable output:                 Block size.          (line  43)
19443 * human-readable output <1>:             What information is listed.
19444                                                               (line 123)
19445 * human-readable output <2>:             df invocation.       (line  70)
19446 * human-readable output <3>:             du invocation.       (line 104)
19447 * hup[cl]:                               Control.             (line  29)
19448 * hurd, author, printing:                What information is listed.
19449                                                               (line  10)
19450 * ibs:                                   dd invocation.       (line  29)
19451 * icanon:                                Local.               (line  11)
19452 * icrnl:                                 Input.               (line  35)
19453 * id:                                    id invocation.       (line   6)
19454 * idle time:                             who invocation.      (line  88)
19455 * IEEE floating point:                   Floating point.      (line   6)
19456 * iexten:                                Local.               (line  15)
19457 * if:                                    dd invocation.       (line  21)
19458 * iflag:                                 dd invocation.       (line 191)
19459 * ignbrk:                                Input.               (line   9)
19460 * igncr:                                 Input.               (line  32)
19461 * ignore file systems:                   df invocation.       (line  50)
19462 * Ignore garbage in base64 stream:       base64 invocation.   (line  40)
19463 * ignoring case:                         sort invocation.     (line 107)
19464 * ignpar:                                Input.               (line  15)
19465 * imaxbel:                               Input.               (line  61)
19466 * immunity to hangups:                   nohup invocation.    (line   6)
19467 * implementation, hardware:              uname invocation.    (line  44)
19468 * indenting lines:                       pr invocation.       (line 194)
19469 * index:                                 String expressions.  (line  44)
19470 * information, about current users:      who invocation.      (line   6)
19471 * initial part of files, outputting:     head invocation.     (line   6)
19472 * initial tabs, converting:              expand invocation.   (line  37)
19473 * inlcr:                                 Input.               (line  28)
19474 * inode number, printing:                What information is listed.
19475                                                               (line 131)
19476 * inode usage:                           df invocation.       (line  81)
19477 * inode usage, dereferencing in du:      du invocation.       (line 111)
19478 * inode, and hard links:                 ln invocation.       (line  36)
19479 * inodes, written buffered:              sync invocation.     (line  13)
19480 * inpck:                                 Input.               (line  22)
19481 * input block size:                      dd invocation.       (line  29)
19482 * input encoding, UTF-8:                 Input.               (line  38)
19483 * input range to shuffle:                shuf invocation.     (line  25)
19484 * input settings:                        Input.               (line   6)
19485 * input tabs:                            pr invocation.       (line 111)
19486 * install:                               install invocation.  (line   6)
19487 * intr:                                  Characters.          (line  19)
19488 * invocation of commands, modified:      Modified command invocation.
19489                                                               (line   6)
19490 * isig:                                  Local.               (line   7)
19491 * ISO 8601 date and time of day format:  Combined date and time of day items.
19492                                                               (line   6)
19493 * ISO 8601 date format:                  Calendar date items. (line  32)
19494 * ISO/IEC 10646:                         printf invocation.   (line  82)
19495 * ISO9660 file system type:              df invocation.       (line 237)
19496 * iso9660 file system type:              df invocation.       (line 237)
19497 * ispeed:                                Special.             (line  17)
19498 * istrip:                                Input.               (line  25)
19499 * items in date strings:                 General date syntax. (line   6)
19500 * iterations, selecting the number of:   shred invocation.    (line 118)
19501 * iuclc:                                 Input.               (line  51)
19502 * iutf8:                                 Input.               (line  38)
19503 * ixany:                                 Input.               (line  57)
19504 * ixoff:                                 Input.               (line  46)
19505 * ixon:                                  Input.               (line  41)
19506 * join:                                  join invocation.     (line   6)
19507 * kernel name:                           uname invocation.    (line  75)
19508 * kernel release:                        uname invocation.    (line  71)
19509 * kernel version:                        uname invocation.    (line  86)
19510 * kibibyte, definition of:               Block size.          (line  88)
19511 * kibibytes for file sizes:              du invocation.       (line 121)
19512 * kibibytes for file system sizes:       df invocation.       (line  86)
19513 * kill:                                  kill invocation.     (line   6)
19514 * kill <1>:                              Characters.          (line  28)
19515 * kilobyte, definition of:               Block size.          (line  84)
19516 * Knuth, Donald E.:                      fmt invocation.      (line  23)
19517 * language, in dates:                    General date syntax. (line  38)
19518 * language, in dates <1>:                General date syntax. (line  42)
19519 * last DAY:                              Day of week items.   (line  15)
19520 * last DAY <1>:                          Options for date.    (line  11)
19521 * last in date strings:                  General date syntax. (line  22)
19522 * last modified dates, displaying in du: du invocation.       (line 211)
19523 * last part of files, outputting:        tail invocation.     (line   6)
19524 * lcase:                                 Combination.         (line  71)
19525 * LCASE:                                 Combination.         (line  71)
19526 * lcase, converting to:                  dd invocation.       (line 127)
19527 * lchown:                                chown invocation.    (line 112)
19528 * lchown <1>:                            chown invocation.    (line 117)
19529 * lchown <2>:                            chgrp invocation.    (line  37)
19530 * lchown <3>:                            chgrp invocation.    (line  42)
19531 * LC_ALL:                                sort invocation.     (line  29)
19532 * LC_ALL <1>:                            ls invocation.       (line  18)
19533 * LC_COLLATE:                            sort invocation.     (line  29)
19534 * LC_COLLATE <1>:                        uniq invocation.     (line  23)
19535 * LC_COLLATE <2>:                        comm invocation.     (line  13)
19536 * LC_COLLATE <3>:                        join invocation.     (line  18)
19537 * LC_COLLATE <4>:                        Relations for expr.  (line  21)
19538 * LC_CTYPE:                              sort invocation.     (line  91)
19539 * LC_CTYPE <1>:                          sort invocation.     (line 100)
19540 * LC_CTYPE <2>:                          sort invocation.     (line 107)
19541 * LC_CTYPE <3>:                          sort invocation.     (line 162)
19542 * LC_CTYPE <4>:                          printf invocation.   (line  82)
19543 * LC_MESSAGES:                           pr invocation.       (line  19)
19544 * LC_NUMERIC:                            Block size.          (line  62)
19545 * LC_NUMERIC <1>:                        Floating point.      (line  17)
19546 * LC_NUMERIC <2>:                        sort invocation.     (line 123)
19547 * LC_NUMERIC <3>:                        sort invocation.     (line 143)
19548 * LC_NUMERIC <4>:                        sort invocation.     (line 181)
19549 * LC_NUMERIC <5>:                        printf invocation.   (line  69)
19550 * LC_TIME:                               pr invocation.       (line  98)
19551 * LC_TIME <1>:                           sort invocation.     (line 170)
19552 * LC_TIME <2>:                           Formatting file timestamps.
19553                                                               (line  31)
19554 * LC_TIME <3>:                           Formatting file timestamps.
19555                                                               (line  78)
19556 * LC_TIME <4>:                           Formatting file timestamps.
19557                                                               (line 102)
19558 * LC_TIME <5>:                           du invocation.       (line 244)
19559 * LC_TIME <6>:                           date invocation.     (line  11)
19560 * leading directories, creating missing: install invocation.  (line  75)
19561 * leading directory components, stripping: basename invocation.
19562                                                               (line   6)
19563 * leap seconds:                          touch invocation.    (line 140)
19564 * leap seconds <1>:                      Time conversion specifiers.
19565                                                               (line  32)
19566 * leap seconds <2>:                      Time conversion specifiers.
19567                                                               (line  37)
19568 * leap seconds <3>:                      Options for date.    (line 117)
19569 * leap seconds <4>:                      Examples of date.    (line 109)
19570 * leap seconds <5>:                      General date syntax. (line  69)
19571 * leap seconds <6>:                      Time of day items.   (line  14)
19572 * leap seconds <7>:                      Seconds since the Epoch.
19573                                                               (line  28)
19574 * left margin:                           pr invocation.       (line 194)
19575 * length:                                String expressions.  (line  48)
19576 * limiting output of du:                 du invocation.       (line  78)
19577 * line:                                  Special.             (line  47)
19578 * line buffered:                         stdbuf invocation.   (line   6)
19579 * line count:                            wc invocation.       (line   6)
19580 * line numbering:                        nl invocation.       (line   6)
19581 * line separator character:              split invocation.    (line 175)
19582 * line settings of terminal:             stty invocation.     (line   6)
19583 * line-breaking:                         fmt invocation.      (line  23)
19584 * line-by-line comparison:               comm invocation.     (line   6)
19585 * LINES:                                 Special.             (line  40)
19586 * link:                                  link invocation.     (line   6)
19587 * links, creating:                       link invocation.     (line   6)
19588 * links, creating <1>:                   ln invocation.       (line   6)
19589 * Linux file system types:               df invocation.       (line 232)
19590 * literal conversion specifiers:         Literal conversion specifiers.
19591                                                               (line   6)
19592 * litout:                                Combination.         (line  59)
19593 * ln:                                    ln invocation.       (line   6)
19594 * ln format for nl:                      nl invocation.       (line  95)
19595 * lnext:                                 Characters.          (line  68)
19596 * local file system types:               df invocation.       (line 232)
19597 * local settings:                        Local.               (line   6)
19598 * logging out and continuing to run:     nohup invocation.    (line   6)
19599 * logical and operator:                  Connectives for test.
19600                                                               (line  31)
19601 * logical and operator <1>:              Relations for expr.  (line  17)
19602 * logical connectives:                   Connectives for test.
19603                                                               (line   6)
19604 * logical connectives <1>:               Relations for expr.  (line   6)
19605 * logical or operator:                   Connectives for test.
19606                                                               (line  35)
19607 * logical or operator <1>:               Relations for expr.  (line  11)
19608 * logical pages, numbering on:           nl invocation.       (line  14)
19609 * login name, printing:                  logname invocation.  (line   6)
19610 * login sessions, printing users with:   users invocation.    (line   6)
19611 * login time:                            who invocation.      (line  12)
19612 * logname:                               logname invocation.  (line   6)
19613 * long ls format:                        What information is listed.
19614                                                               (line 138)
19615 * lower:                                 Character sets.      (line 101)
19616 * lowercase, translating to output:      Output.              (line  13)
19617 * ls:                                    ls invocation.       (line   6)
19618 * LS_BLOCK_SIZE:                         Block size.          (line  12)
19619 * LS_COLORS:                             General output formatting.
19620                                                               (line  41)
19621 * LS_COLORS <1>:                         dircolors invocation.
19622                                                               (line  25)
19623 * lutimes:                               touch invocation.    (line 109)
19624 * machine type:                          uname invocation.    (line  51)
19625 * machine-readable stty output:          stty invocation.     (line  46)
19626 * MacKenzie, D.:                         Introduction.        (line  31)
19627 * MacKenzie, David:                      Authors of parse_datetime.
19628                                                               (line   6)
19629 * Makefiles, installing programs in:     install invocation.  (line  33)
19630 * manipulating files:                    Basic operations.    (line   6)
19631 * manipulation of file names:            File name manipulation.
19632                                                               (line   6)
19633 * mark parity:                           Control.             (line  17)
19634 * match:                                 String expressions.  (line  35)
19635 * matching patterns:                     String expressions.  (line  11)
19636 * MD5:                                   md5sum invocation.   (line   6)
19637 * md5sum:                                md5sum invocation.   (line   6)
19638 * mebibyte, definition of:               Block size.          (line  97)
19639 * mebibytes for file sizes:              du invocation.       (line 136)
19640 * megabyte, definition of:               Block size.          (line  94)
19641 * merging files:                         paste invocation.    (line   6)
19642 * merging files in parallel:             pr invocation.       (line   6)
19643 * merging sorted files:                  sort invocation.     (line  61)
19644 * message status:                        who invocation.      (line  98)
19645 * message-digest, 128-bit:               md5sum invocation.   (line   6)
19646 * message-digest, 160-bit:               sha1sum invocation.  (line   6)
19647 * message-digest, 224-bit:               sha2 utilities.      (line   6)
19648 * message-digest, 256-bit:               sha2 utilities.      (line   6)
19649 * message-digest, 384-bit:               sha2 utilities.      (line   6)
19650 * message-digest, 512-bit:               b2sum invocation.    (line   6)
19651 * message-digest, 512-bit <1>:           sha2 utilities.      (line   6)
19652 * Meyering, J.:                          Introduction.        (line  31)
19653 * Meyering, Jim:                         Authors of parse_datetime.
19654                                                               (line   6)
19655 * midnight in date strings:              Time of day items.   (line  21)
19656 * min:                                   Special.             (line   7)
19657 * minute in date strings:                Relative items in date strings.
19658                                                               (line  15)
19659 * minutes, time zone correction by:      Time of day items.   (line  29)
19660 * mkdir:                                 mkdir invocation.    (line   6)
19661 * mkfifo:                                mkfifo invocation.   (line   6)
19662 * mknod:                                 mknod invocation.    (line   6)
19663 * mktemp:                                mktemp invocation.   (line   6)
19664 * modem control:                         Control.             (line  40)
19665 * modes and umask:                       Umask and Protection.
19666                                                               (line   6)
19667 * modes of created directories, setting: mkdir invocation.    (line  22)
19668 * modes of created FIFOs, setting:       mkfifo invocation.   (line  24)
19669 * modification time, sorting files by:   Sorting the output.  (line  38)
19670 * modified command invocation:           Modified command invocation.
19671                                                               (line   6)
19672 * modified environment, running a program in a: env invocation.
19673                                                               (line   6)
19674 * modify time, changing:                 touch invocation.    (line 126)
19675 * month in date strings:                 Relative items in date strings.
19676                                                               (line  15)
19677 * month names in date strings:           Calendar date items. (line  40)
19678 * months, sorting by:                    sort invocation.     (line 170)
19679 * months, written-out:                   General date syntax. (line  32)
19680 * MS-DOS file system:                    df invocation.       (line 241)
19681 * MS-Windows file system:                df invocation.       (line 241)
19682 * mtime, changing:                       touch invocation.    (line 126)
19683 * multicall:                             Multi-call invocation.
19684                                                               (line   6)
19685 * multicolumn output, generating:        pr invocation.       (line   6)
19686 * multiple changes to permissions:       Multiple Changes.    (line   6)
19687 * multiplication:                        Numeric expressions. (line  15)
19688 * multipliers after numbers:             dd invocation.       (line 340)
19689 * multithreaded sort:                    sort invocation.     (line 407)
19690 * mv:                                    mv invocation.       (line   6)
19691 * name follow option:                    tail invocation.     (line  58)
19692 * name of kernel:                        uname invocation.    (line  75)
19693 * named pipe check:                      File type tests.     (line  29)
19694 * named pipes, creating:                 mkfifo invocation.   (line   6)
19695 * network node name:                     uname invocation.    (line  56)
19696 * never interactive option:              rm invocation.       (line  63)
19697 * newer files, copying only:             cp invocation.       (line 403)
19698 * newer files, moving only:              mv invocation.       (line  95)
19699 * newer-than file check:                 File characteristic tests.
19700                                                               (line  15)
19701 * newline echoing after kill:            Local.               (line  26)
19702 * newline, echoing:                      Local.               (line  29)
19703 * newline, translating to crlf:          Output.              (line  21)
19704 * newline, translating to return:        Input.               (line  28)
19705 * next DAY:                              Day of week items.   (line  15)
19706 * next DAY <1>:                          Options for date.    (line  11)
19707 * next in date strings:                  General date syntax. (line  22)
19708 * NFS file system type:                  df invocation.       (line 227)
19709 * NFS mounts from BSD to HP-UX:          What information is listed.
19710                                                               (line 250)
19711 * NFS mounts from BSD to HP-UX <1>:      du invocation.       (line 294)
19712 * nice:                                  nice invocation.     (line   6)
19713 * niceness:                              nice invocation.     (line   6)
19714 * nl:                                    nl invocation.       (line   6)
19715 * nl <1>:                                Combination.         (line  18)
19716 * nlN:                                   Output.              (line  40)
19717 * no dereference:                        chcon invocation.    (line  28)
19718 * no-op:                                 true invocation.     (line   6)
19719 * noatime:                               dd invocation.       (line 277)
19720 * nocache:                               dd invocation.       (line 245)
19721 * nocreat:                               dd invocation.       (line 169)
19722 * noctty:                                dd invocation.       (line 283)
19723 * node name:                             uname invocation.    (line  56)
19724 * noerror:                               dd invocation.       (line 179)
19725 * noflsh:                                Local.               (line  33)
19726 * nofollow:                              dd invocation.       (line 289)
19727 * nohup:                                 nohup invocation.    (line   6)
19728 * nohup.out:                             nohup invocation.    (line   6)
19729 * nohup.out <1>:                         nohup invocation.    (line  23)
19730 * nolinks:                               dd invocation.       (line 292)
19731 * non-directories, copying as special files: cp invocation.   (line 115)
19732 * non-directories, copying as special files <1>: cp invocation.
19733                                                               (line 292)
19734 * non-directory suffix, stripping:       dirname invocation.  (line   6)
19735 * nonblock:                              dd invocation.       (line 274)
19736 * nonblocking I/O:                       dd invocation.       (line 274)
19737 * nonblocking stty setting:              Special.             (line  30)
19738 * none backup method:                    Backup options.      (line  33)
19739 * none color option:                     General output formatting.
19740                                                               (line  31)
19741 * none dd status=:                       dd invocation.       (line  76)
19742 * none, sorting option for ls:           Sorting the output.  (line  53)
19743 * nonempty file check:                   File characteristic tests.
19744                                                               (line  12)
19745 * nonprinting characters, ignoring:      sort invocation.     (line 162)
19746 * nonzero-length string check:           String tests.        (line  19)
19747 * noon in date strings:                  Time of day items.   (line  21)
19748 * not-equal string check:                String tests.        (line  28)
19749 * notrunc:                               dd invocation.       (line 175)
19750 * now in date strings:                   Relative items in date strings.
19751                                                               (line  32)
19752 * noxfer dd status=:                     dd invocation.       (line  80)
19753 * nproc:                                 nproc invocation.    (line   6)
19754 * NTFS file system:                      df invocation.       (line 241)
19755 * ntfs file system file:                 df invocation.       (line 241)
19756 * number of inputs to merge, nmerge:     sort invocation.     (line 291)
19757 * numbered backup method:                Backup options.      (line  37)
19758 * numbering lines:                       nl invocation.       (line   6)
19759 * numbers, written-out:                  General date syntax. (line  22)
19760 * numeric expressions:                   Numeric expressions. (line   6)
19761 * numeric field padding:                 Padding and other flags.
19762                                                               (line   6)
19763 * numeric modes:                         Numeric Modes.       (line   6)
19764 * numeric operations:                    Numeric operations.  (line   6)
19765 * numeric sequences:                     seq invocation.      (line   6)
19766 * numeric sort:                          sort invocation.     (line 181)
19767 * numeric tests:                         Numeric tests.       (line   6)
19768 * numeric uid and gid:                   What information is listed.
19769                                                               (line 232)
19770 * numeric user and group IDs:            What information is listed.
19771                                                               (line 232)
19772 * numfmt:                                numfmt invocation.   (line   6)
19773 * obs:                                   dd invocation.       (line  33)
19774 * ocrnl:                                 Output.              (line  17)
19775 * octal dump of files:                   od invocation.       (line   6)
19776 * octal numbers for file modes:          Numeric Modes.       (line   6)
19777 * od:                                    od invocation.       (line   6)
19778 * odd parity:                            Control.             (line  13)
19779 * oddp:                                  Combination.         (line  14)
19780 * of:                                    dd invocation.       (line  24)
19781 * ofdel:                                 Output.              (line  35)
19782 * ofill:                                 Output.              (line  30)
19783 * oflag:                                 dd invocation.       (line 195)
19784 * olcuc:                                 Output.              (line  13)
19785 * older-than file check:                 File characteristic tests.
19786                                                               (line  19)
19787 * once interactive option:               rm invocation.       (line  64)
19788 * one file system, restricting du to:    du invocation.       (line 291)
19789 * one file system, restricting rm to:    rm invocation.       (line  72)
19790 * one-line output format:                df invocation.       (line 161)
19791 * onlcr:                                 Output.              (line  21)
19792 * onlret:                                Output.              (line  27)
19793 * onocr:                                 Output.              (line  24)
19794 * operating on characters:               Operating on characters.
19795                                                               (line   6)
19796 * operating on sorted files:             Operating on sorted files.
19797                                                               (line   6)
19798 * operating system name:                 uname invocation.    (line  67)
19799 * opost:                                 Output.              (line   9)
19800 * option delimiter:                      Common options.      (line  47)
19801 * options for date:                      Options for date.    (line   6)
19802 * or operator:                           Connectives for test.
19803                                                               (line  35)
19804 * or operator <1>:                       Relations for expr.  (line  11)
19805 * ordinal numbers:                       General date syntax. (line  22)
19806 * ospeed:                                Special.             (line  20)
19807 * other permissions:                     Setting Permissions. (line  27)
19808 * output block size:                     dd invocation.       (line  33)
19809 * output file name prefix:               split invocation.    (line  19)
19810 * output file name prefix <1>:           csplit invocation.   (line  68)
19811 * output file name suffix:               csplit invocation.   (line  72)
19812 * output format:                         stat invocation.     (line  38)
19813 * output format <1>:                     stat invocation.     (line  47)
19814 * output format, portable:               df invocation.       (line 161)
19815 * output NUL-byte-terminated lines:      readlink invocation. (line  66)
19816 * output NUL-byte-terminated lines <1>:  du invocation.       (line  28)
19817 * output NUL-byte-terminated lines <2>:  basename invocation. (line  46)
19818 * output NUL-byte-terminated lines <3>:  dirname invocation.  (line  34)
19819 * output NUL-byte-terminated lines <4>:  realpath invocation. (line  89)
19820 * output NUL-byte-terminated lines <5>:  printenv invocation. (line  21)
19821 * output NUL-byte-terminated lines <6>:  env invocation.      (line  89)
19822 * output of entire files:                Output of entire files.
19823                                                               (line   6)
19824 * output of parts of files:              Output of parts of files.
19825                                                               (line   6)
19826 * output settings:                       Output.              (line   6)
19827 * output tabs:                           pr invocation.       (line 131)
19828 * overwriting of input, allowed:         sort invocation.     (line 318)
19829 * overwriting of input, allowed <1>:     shuf invocation.     (line  38)
19830 * owned by effective group ID check:     Access permission tests.
19831                                                               (line  32)
19832 * owned by effective user ID check:      Access permission tests.
19833                                                               (line  28)
19834 * owner of file, permissions for:        Setting Permissions. (line  23)
19835 * owner, default:                        Mode Structure.      (line  28)
19836 * ownership of installed files, setting: install invocation.  (line 101)
19837 * p for FIFO file:                       mknod invocation.    (line  35)
19838 * pad character:                         Output.              (line  35)
19839 * pad instead of timing for delaying:    Output.              (line  30)
19840 * padding of numeric fields:             Padding and other flags.
19841                                                               (line   6)
19842 * paragraphs, reformatting:              fmt invocation.      (line   6)
19843 * parenb:                                Control.             (line   9)
19844 * parent directories and cp:             cp invocation.       (line 278)
19845 * parent directories, creating:          mkdir invocation.    (line  36)
19846 * parent directories, creating missing:  install invocation.  (line  75)
19847 * parent directories, removing:          rmdir invocation.    (line  24)
19848 * parentheses for grouping:              expr invocation.     (line  35)
19849 * parity:                                Combination.         (line  10)
19850 * parity errors, marking:                Input.               (line  18)
19851 * parity, ignoring:                      Input.               (line  15)
19852 * parmrk:                                Input.               (line  18)
19853 * parodd:                                Control.             (line  13)
19854 * parse_datetime:                        Date input formats.  (line   6)
19855 * parsing date strings:                  Options for date.    (line  11)
19856 * parts of files, output of:             Output of parts of files.
19857                                                               (line   6)
19858 * pass8:                                 Combination.         (line  55)
19859 * paste:                                 paste invocation.    (line   6)
19860 * Paterson, R.:                          Introduction.        (line  31)
19861 * PATH:                                  env invocation.      (line  24)
19862 * pathchk:                               pathchk invocation.  (line   6)
19863 * pattern matching:                      String expressions.  (line  11)
19864 * pebibyte, definition of:               Block size.          (line 112)
19865 * permission tests:                      Access permission tests.
19866                                                               (line   6)
19867 * permissions of installed files, setting: install invocation.
19868                                                               (line  88)
19869 * permissions, changing access:          chmod invocation.    (line   6)
19870 * permissions, copying existing:         Copying Permissions. (line   6)
19871 * permissions, for changing file timestamps: touch invocation.
19872                                                               (line  46)
19873 * permissions, output by ls:             What information is listed.
19874                                                               (line 188)
19875 * petabyte, definition of:               Block size.          (line 109)
19876 * phone directory order:                 sort invocation.     (line 100)
19877 * pieces, splitting a file into:         split invocation.    (line   6)
19878 * Pinard, F.:                            Introduction.        (line  31)
19879 * Pinard, F. <1>:                        Authors of parse_datetime.
19880                                                               (line  19)
19881 * pipe fitting:                          tee invocation.      (line   6)
19882 * Plass, Michael F.:                     fmt invocation.      (line  23)
19883 * platform, hardware:                    uname invocation.    (line  44)
19884 * pm in date strings:                    Time of day items.   (line  21)
19885 * portable file names, checking for:     pathchk invocation.  (line   6)
19886 * portable output format:                df invocation.       (line 161)
19887 * POSIX:                                 Introduction.        (line  12)
19888 * POSIX output format:                   df invocation.       (line 161)
19889 * POSIXLY_CORRECT:                       Common options.      (line  11)
19890 * POSIXLY_CORRECT <1>:                   Standards conformance.
19891                                                               (line   6)
19892 * POSIXLY_CORRECT <2>:                   pr invocation.       (line  98)
19893 * POSIXLY_CORRECT <3>:                   sort invocation.     (line 332)
19894 * POSIXLY_CORRECT <4>:                   sort invocation.     (line 466)
19895 * POSIXLY_CORRECT <5>:                   dd invocation.       (line 417)
19896 * POSIXLY_CORRECT <6>:                   echo invocation.     (line  68)
19897 * POSIXLY_CORRECT <7>:                   printf invocation.   (line  60)
19898 * POSIXLY_CORRECT <8>:                   id invocation.       (line  17)
19899 * POSIXLY_CORRECT, and block size:       Block size.          (line  12)
19900 * pr:                                    pr invocation.       (line   6)
19901 * prime factors:                         factor invocation.   (line   6)
19902 * print:                                 Character sets.      (line 103)
19903 * print machine hardware name:           arch invocation.     (line   6)
19904 * print name of current directory:       pwd invocation.      (line   6)
19905 * print system information:              uname invocation.    (line   6)
19906 * print terminal file name:              tty invocation.      (line   6)
19907 * Print the number of processors:        nproc invocation.    (line   6)
19908 * printenv:                              printenv invocation. (line   6)
19909 * printf:                                printf invocation.   (line   6)
19910 * printing all or some environment variables: printenv invocation.
19911                                                               (line   6)
19912 * printing color database:               dircolors invocation.
19913                                                               (line  47)
19914 * printing current user information:     who invocation.      (line   6)
19915 * printing current usernames:            users invocation.    (line   6)
19916 * printing groups a user is in:          groups invocation.   (line   6)
19917 * printing real and effective user and group IDs: id invocation.
19918                                                               (line   6)
19919 * printing text:                         echo invocation.     (line   6)
19920 * printing text, commands for:           Printing text.       (line   6)
19921 * printing the current time:             date invocation.     (line   6)
19922 * printing the effective user ID:        whoami invocation.   (line   6)
19923 * printing the host identifier:          hostid invocation.   (line   6)
19924 * printing the hostname:                 hostname invocation. (line   6)
19925 * printing the system uptime and load:   uptime invocation.   (line   6)
19926 * printing user’s login name:            logname invocation.  (line   6)
19927 * printing, preparing files for:         pr invocation.       (line   6)
19928 * process zero-terminated items:         head invocation.     (line  59)
19929 * process zero-terminated items <1>:     tail invocation.     (line 203)
19930 * process zero-terminated items <2>:     sort invocation.     (line 432)
19931 * process zero-terminated items <3>:     shuf invocation.     (line  59)
19932 * process zero-terminated items <4>:     uniq invocation.     (line 149)
19933 * process zero-terminated items <5>:     comm invocation.     (line  90)
19934 * process zero-terminated items <6>:     cut invocation.      (line 101)
19935 * process zero-terminated items <7>:     paste invocation.    (line  72)
19936 * process zero-terminated items <8>:     join invocation.     (line 166)
19937 * process zero-terminated items <9>:     General options in numfmt.
19938                                                               (line 114)
19939 * processes, commands for controlling:   Process control.     (line   6)
19940 * progress dd status=:                   dd invocation.       (line  84)
19941 * prompting, and ln:                     ln invocation.       (line 110)
19942 * prompting, and mv:                     mv invocation.       (line  43)
19943 * prompting, and rm:                     rm invocation.       (line  13)
19944 * prompts, forcing:                      mv invocation.       (line  82)
19945 * prompts, omitting:                     mv invocation.       (line  76)
19946 * prompts, omitting <1>:                 mv invocation.       (line  89)
19947 * prterase:                              Local.               (line  49)
19948 * ptx:                                   ptx invocation.      (line   6)
19949 * punct:                                 Character sets.      (line 106)
19950 * pure numbers in date strings:          Pure numbers in date strings.
19951                                                               (line   6)
19952 * pwd:                                   pwd invocation.      (line   6)
19953 * quit:                                  Characters.          (line  22)
19954 * quoting style:                         Formatting the file names.
19955                                                               (line  42)
19956 * radix for file offsets:                od invocation.       (line  44)
19957 * random seed:                           Random sources.      (line  31)
19958 * random sort:                           sort invocation.     (line 211)
19959 * random source for shredding:           shred invocation.    (line 124)
19960 * random source for shuffling:           shuf invocation.     (line  44)
19961 * random source for sorting:             sort invocation.     (line 338)
19962 * random sources:                        Random sources.      (line   6)
19963 * ranges:                                Character sets.      (line  42)
19964 * raw:                                   Combination.         (line  42)
19965 * read errors, ignoring:                 dd invocation.       (line 179)
19966 * read from stdin and write to stdout and files: tee invocation.
19967                                                               (line   6)
19968 * read permission:                       Mode Structure.      (line  13)
19969 * read permission, symbolic:             Setting Permissions. (line  52)
19970 * read system call, and holes:           cp invocation.       (line 340)
19971 * readable file check:                   Access permission tests.
19972                                                               (line  15)
19973 * readlink:                              readlink invocation. (line   6)
19974 * real user and group IDs, printing:     id invocation.       (line   6)
19975 * realpath:                              readlink invocation. (line   6)
19976 * realpath <1>:                          realpath invocation. (line   6)
19977 * realpath <2>:                          realpath invocation. (line   6)
19978 * realpath <3>:                          realpath invocation. (line   6)
19979 * record separator character:            split invocation.    (line 175)
19980 * recursive directory listing:           Which files are listed.
19981                                                               (line  97)
19982 * recursively changing access permissions: chmod invocation.  (line  75)
19983 * recursively changing file ownership:   chown invocation.    (line 151)
19984 * recursively changing group ownership:  chgrp invocation.    (line  75)
19985 * recursively copying directories:       cp invocation.       (line 115)
19986 * recursively copying directories <1>:   cp invocation.       (line 292)
19987 * redirection:                           Redirection.         (line   6)
19988 * reference file:                        chcon invocation.    (line  32)
19989 * reformatting paragraph text:           fmt invocation.      (line   6)
19990 * regular expression matching:           String expressions.  (line  11)
19991 * regular file check:                    File type tests.     (line  20)
19992 * relations, numeric or string:          Relations for expr.  (line   6)
19993 * relative items in date strings:        Relative items in date strings.
19994                                                               (line   6)
19995 * release of kernel:                     uname invocation.    (line  71)
19996 * relpath:                               realpath invocation. (line  55)
19997 * remainder:                             Numeric expressions. (line  15)
19998 * remote hostname:                       who invocation.      (line  12)
19999 * removing characters:                   Squeezing and deleting.
20000                                                               (line   6)
20001 * removing empty directories:            rmdir invocation.    (line   6)
20002 * removing files after shredding:        shred invocation.    (line 137)
20003 * removing files or directories:         rm invocation.       (line   6)
20004 * removing files or directories (via the unlink syscall): unlink invocation.
20005                                                               (line   6)
20006 * removing permissions:                  Setting Permissions. (line  38)
20007 * repeat output values:                  shuf invocation.     (line  50)
20008 * repeated characters:                   Character sets.      (line  66)
20009 * repeated lines, outputting:            uniq invocation.     (line  67)
20010 * repeated output of a string:           yes invocation.      (line   6)
20011 * restricted deletion flag:              Mode Structure.      (line  53)
20012 * return, ignoring:                      Input.               (line  32)
20013 * return, translating to newline:        Input.               (line  35)
20014 * return, translating to newline <1>:    Output.              (line  17)
20015 * reverse sorting:                       sort invocation.     (line 205)
20016 * reverse sorting <1>:                   Sorting the output.  (line  28)
20017 * reversing files:                       tac invocation.      (line   6)
20018 * rm:                                    rm invocation.       (line   6)
20019 * rmdir:                                 rmdir invocation.    (line   6)
20020 * rn format for nl:                      nl invocation.       (line  97)
20021 * root as default owner:                 install invocation.  (line 101)
20022 * root directory, allow recursive destruction: rm invocation. (line 101)
20023 * root directory, allow recursive modification: chown invocation.
20024                                                               (line 132)
20025 * root directory, allow recursive modification <1>: chgrp invocation.
20026                                                               (line  57)
20027 * root directory, allow recursive modification <2>: chmod invocation.
20028                                                               (line  59)
20029 * root directory, disallow recursive destruction: rm invocation.
20030                                                               (line  90)
20031 * root directory, disallow recursive modification: chown invocation.
20032                                                               (line 127)
20033 * root directory, disallow recursive modification <1>: chgrp invocation.
20034                                                               (line  52)
20035 * root directory, disallow recursive modification <2>: chmod invocation.
20036                                                               (line  54)
20037 * root directory, running a program in a specified: chroot invocation.
20038                                                               (line   6)
20039 * rows:                                  Special.             (line  23)
20040 * rprnt:                                 Characters.          (line  62)
20041 * RTS/CTS flow control:                  Control.             (line  43)
20042 * run commands with bounded time:        timeout invocation.  (line   6)
20043 * run with security context:             runcon invocation.   (line   6)
20044 * runcon:                                runcon invocation.   (line   6)
20045 * running a program in a modified environment: env invocation.
20046                                                               (line   6)
20047 * running a program in a specified root directory: chroot invocation.
20048                                                               (line   6)
20049 * rz format for nl:                      nl invocation.       (line  99)
20050 * Salz, Rich:                            Authors of parse_datetime.
20051                                                               (line   6)
20052 * same file check:                       File characteristic tests.
20053                                                               (line  23)
20054 * sane:                                  Combination.         (line  25)
20055 * scheduling, affecting:                 nice invocation.     (line   6)
20056 * screen columns:                        fold invocation.     (line  24)
20057 * seconds since the epoch:               Time conversion specifiers.
20058                                                               (line  32)
20059 * section delimiters of pages:           nl invocation.       (line  66)
20060 * security context:                      What information is listed.
20061                                                               (line 266)
20062 * security context <1>:                  cp invocation.       (line 428)
20063 * security context <2>:                  install invocation.  (line 107)
20064 * security context <3>:                  install invocation.  (line 153)
20065 * security context <4>:                  mv invocation.       (line 129)
20066 * security context <5>:                  mkdir invocation.    (line  58)
20067 * security context <6>:                  mkfifo invocation.   (line  31)
20068 * security context <7>:                  mknod invocation.    (line  61)
20069 * security context <8>:                  id invocation.       (line  53)
20070 * seek:                                  dd invocation.       (line  54)
20071 * seek_bytes:                            dd invocation.       (line 327)
20072 * self-backups:                          cp invocation.       (line  66)
20073 * SELinux:                               What information is listed.
20074                                                               (line 266)
20075 * SELinux <1>:                           install invocation.  (line 107)
20076 * SELinux <2>:                           id invocation.       (line  53)
20077 * SELinux context:                       SELinux context.     (line   6)
20078 * SELinux, context:                      SELinux context.     (line   6)
20079 * SELinux, restoring security context:   mv invocation.       (line 129)
20080 * SELinux, setting/restoring security context: cp invocation. (line 428)
20081 * SELinux, setting/restoring security context <1>: install invocation.
20082                                                               (line 153)
20083 * SELinux, setting/restoring security context <2>: mkdir invocation.
20084                                                               (line  58)
20085 * SELinux, setting/restoring security context <3>: mkfifo invocation.
20086                                                               (line  31)
20087 * SELinux, setting/restoring security context <4>: mknod invocation.
20088                                                               (line  61)
20089 * send a signal to processes:            kill invocation.     (line   6)
20090 * sentences and line-breaking:           fmt invocation.      (line  23)
20091 * separator for numbers in seq:          seq invocation.      (line  49)
20092 * seq:                                   seq invocation.      (line   6)
20093 * sequence of numbers:                   seq invocation.      (line   6)
20094 * set-group-ID:                          Mode Structure.      (line  46)
20095 * set-group-ID check:                    Access permission tests.
20096                                                               (line   9)
20097 * set-user-ID:                           Mode Structure.      (line  40)
20098 * set-user-ID check:                     Access permission tests.
20099                                                               (line  18)
20100 * setgid:                                Mode Structure.      (line  46)
20101 * setting permissions:                   Setting Permissions. (line  41)
20102 * setting the hostname:                  hostname invocation. (line   6)
20103 * setting the time:                      Setting the time.    (line   6)
20104 * setuid:                                Mode Structure.      (line  40)
20105 * setup for color:                       dircolors invocation.
20106                                                               (line   6)
20107 * sh syntax for color setup:             dircolors invocation.
20108                                                               (line  35)
20109 * SHA-1:                                 sha1sum invocation.  (line   6)
20110 * SHA-2:                                 sha2 utilities.      (line   6)
20111 * sha1sum:                               sha1sum invocation.  (line   6)
20112 * sha224sum:                             sha2 utilities.      (line   6)
20113 * sha256sum:                             sha2 utilities.      (line   6)
20114 * sha384sum:                             sha2 utilities.      (line   6)
20115 * sha512sum:                             sha2 utilities.      (line   6)
20116 * SHELL environment variable, and color: General output formatting.
20117                                                               (line  41)
20118 * SHELL environment variable, and color <1>: dircolors invocation.
20119                                                               (line  25)
20120 * shell utilities:                       Top.                 (line  32)
20121 * shred:                                 shred invocation.    (line   6)
20122 * shuf:                                  shuf invocation.     (line   6)
20123 * shuffling files:                       shuf invocation.     (line   6)
20124 * SI output:                             Block size.          (line  43)
20125 * SI output <1>:                         What information is listed.
20126                                                               (line 258)
20127 * SI output <2>:                         df invocation.       (line 181)
20128 * SI output <3>:                         du invocation.       (line 155)
20129 * signals, specifying:                   Signal specifications.
20130                                                               (line   6)
20131 * simple backup method:                  Backup options.      (line  48)
20132 * SIMPLE_BACKUP_SUFFIX:                  Backup options.      (line  53)
20133 * single-column output of files:         General output formatting.
20134                                                               (line  10)
20135 * size:                                  Special.             (line  40)
20136 * size for main memory sorting:          sort invocation.     (line 360)
20137 * size of file to shred:                 shred invocation.    (line 130)
20138 * size of files, reporting:              What information is listed.
20139                                                               (line 242)
20140 * size of files, sorting files by:       Sorting the output.  (line  34)
20141 * skip:                                  dd invocation.       (line  49)
20142 * skip_bytes:                            dd invocation.       (line 321)
20143 * sleep:                                 sleep invocation.    (line   6)
20144 * socket check:                          File type tests.     (line  32)
20145 * software flow control:                 Input.               (line  46)
20146 * sort:                                  sort invocation.     (line   6)
20147 * sort field:                            sort invocation.     (line 258)
20148 * sort stability:                        sort invocation.     (line  16)
20149 * sort stability <1>:                    sort invocation.     (line 344)
20150 * sort’s last-resort comparison:         sort invocation.     (line  16)
20151 * sort’s last-resort comparison <1>:     sort invocation.     (line 344)
20152 * sorted files, operations on:           Operating on sorted files.
20153                                                               (line   6)
20154 * sorting files:                         sort invocation.     (line   6)
20155 * sorting ls output:                     Sorting the output.  (line   6)
20156 * space:                                 Character sets.      (line 108)
20157 * space parity:                          Control.             (line  17)
20158 * sparse:                                dd invocation.       (line 135)
20159 * sparse files, copying:                 cp invocation.       (line 340)
20160 * sparse files, creating:                truncate invocation. (line  15)
20161 * special characters:                    Characters.          (line   6)
20162 * special file types:                    Special file types.  (line   6)
20163 * special file types <1>:                Special file types.  (line  10)
20164 * special files:                         mknod invocation.    (line  13)
20165 * special settings:                      Special.             (line   6)
20166 * specifying sets of characters:         Character sets.      (line   6)
20167 * speed:                                 Special.             (line  50)
20168 * split:                                 split invocation.    (line   6)
20169 * splitting a file into pieces:          split invocation.    (line   6)
20170 * splitting a file into pieces by context: csplit invocation. (line   6)
20171 * squeezing blank lines:                 cat invocation.      (line  38)
20172 * squeezing empty lines:                 cat invocation.      (line  38)
20173 * squeezing repeat characters:           Squeezing and deleting.
20174                                                               (line   6)
20175 * Stallman, R.:                          Introduction.        (line  31)
20176 * standard input:                        Common options.      (line  51)
20177 * standard output:                       Common options.      (line  51)
20178 * standard streams, buffering:           stdbuf invocation.   (line   6)
20179 * start:                                 Characters.          (line  50)
20180 * stat:                                  stat invocation.     (line   6)
20181 * status:                                dd invocation.       (line  70)
20182 * status <1>:                            Characters.          (line  46)
20183 * status time, printing or sorting by:   Sorting the output.  (line  13)
20184 * status time, show the most recent:     du invocation.       (line 226)
20185 * stdbuf:                                stdbuf invocation.   (line   6)
20186 * stick parity:                          Control.             (line  17)
20187 * sticky:                                Mode Structure.      (line  53)
20188 * sticky bit check:                      Access permission tests.
20189                                                               (line  12)
20190 * stop:                                  Characters.          (line  53)
20191 * stop bits:                             Control.             (line  33)
20192 * strftime and date:                     date invocation.     (line  21)
20193 * string constants, outputting:          od invocation.       (line  89)
20194 * string expressions:                    String expressions.  (line   6)
20195 * string tests:                          String tests.        (line   6)
20196 * strip directory and suffix from file names: basename invocation.
20197                                                               (line   6)
20198 * stripping non-directory suffix:        dirname invocation.  (line   6)
20199 * stripping symbol table information:    install invocation.  (line 124)
20200 * stripping trailing slashes:            cp invocation.       (line 375)
20201 * stripping trailing slashes <1>:        mv invocation.       (line 109)
20202 * stty:                                  stty invocation.     (line   6)
20203 * substr:                                String expressions.  (line  39)
20204 * subtracting permissions:               Setting Permissions. (line  38)
20205 * subtraction:                           Numeric expressions. (line  11)
20206 * successful exit:                       true invocation.     (line   6)
20207 * suffix, stripping from file names:     basename invocation. (line   6)
20208 * sum:                                   sum invocation.      (line   6)
20209 * summarizing files:                     Summarizing files.   (line   6)
20210 * superblock, writing:                   sync invocation.     (line  13)
20211 * supplementary groups, printing:        groups invocation.   (line   6)
20212 * susp:                                  Characters.          (line  56)
20213 * swab (byte-swapping):                  dd invocation.       (line 150)
20214 * swap space, saving text image in:      Mode Structure.      (line  53)
20215 * swtch:                                 Characters.          (line  43)
20216 * symbol table information, stripping:   install invocation.  (line 124)
20217 * symbol table information, stripping, program: install invocation.
20218                                                               (line 128)
20219 * symbolic (soft) links, creating:       ln invocation.       (line   6)
20220 * symbolic link check:                   File type tests.     (line  24)
20221 * symbolic link to directory, controlling traversal of: Traversing symlinks.
20222                                                               (line   6)
20223 * symbolic link to directory, never traverse: Traversing symlinks.
20224                                                               (line  28)
20225 * symbolic link to directory, never traverse <1>: chown invocation.
20226                                                               (line 164)
20227 * symbolic link to directory, never traverse <2>: chgrp invocation.
20228                                                               (line  88)
20229 * symbolic link to directory, never traverse <3>: chcon invocation.
20230                                                               (line  60)
20231 * symbolic link to directory, traverse each that is encountered: Traversing symlinks.
20232                                                               (line  24)
20233 * symbolic link to directory, traverse each that is encountered <1>: chown invocation.
20234                                                               (line 159)
20235 * symbolic link to directory, traverse each that is encountered <2>: chgrp invocation.
20236                                                               (line  83)
20237 * symbolic link to directory, traverse each that is encountered <3>: chcon invocation.
20238                                                               (line  55)
20239 * symbolic link to directory, traverse if on the command line: Traversing symlinks.
20240                                                               (line  19)
20241 * symbolic link to directory, traverse if on the command line <1>: chown invocation.
20242                                                               (line 154)
20243 * symbolic link to directory, traverse if on the command line <2>: chgrp invocation.
20244                                                               (line  78)
20245 * symbolic link to directory, traverse if on the command line <3>: chcon invocation.
20246                                                               (line  50)
20247 * symbolic link, defined:                ln invocation.       (line  48)
20248 * symbolic links and ln:                 ln invocation.       (line 207)
20249 * symbolic links and pwd:                pwd invocation.      (line  28)
20250 * symbolic links, changing group:        chgrp invocation.    (line  42)
20251 * symbolic links, changing owner:        chown invocation.    (line  87)
20252 * symbolic links, changing owner <1>:    chown invocation.    (line 112)
20253 * symbolic links, changing owner <2>:    chown invocation.    (line 117)
20254 * symbolic links, changing owner <3>:    chgrp invocation.    (line  37)
20255 * symbolic links, changing time:         touch invocation.    (line 109)
20256 * symbolic links, copying:               cp invocation.       (line 129)
20257 * symbolic links, copying <1>:           cp invocation.       (line 188)
20258 * symbolic links, copying with:          cp invocation.       (line 380)
20259 * symbolic links, dereferencing:         Which files are listed.
20260                                                               (line  38)
20261 * symbolic links, dereferencing <1>:     Which files are listed.
20262                                                               (line  42)
20263 * symbolic links, dereferencing <2>:     Which files are listed.
20264                                                               (line  89)
20265 * symbolic links, dereferencing in du:   du invocation.       (line 127)
20266 * symbolic links, dereferencing in du <1>: du invocation.     (line 142)
20267 * symbolic links, dereferencing in stat: stat invocation.     (line  25)
20268 * symbolic links, following:             dd invocation.       (line 289)
20269 * symbolic links, permissions of:        chmod invocation.    (line  12)
20270 * symbolic modes:                        Symbolic Modes.      (line   6)
20271 * symlinks, resolution:                  realpath invocation. (line   6)
20272 * sync:                                  sync invocation.     (line   6)
20273 * sync <1>:                              dd invocation.       (line 242)
20274 * sync (padding with ASCII NULs):        dd invocation.       (line 156)
20275 * Synchronize cached writes to persistent storage: sync invocation.
20276                                                               (line   6)
20277 * synchronize disk and memory:           sync invocation.     (line   6)
20278 * synchronized data and metadata I/O:    dd invocation.       (line 242)
20279 * synchronized data and metadata writes, before finishing: dd invocation.
20280                                                               (line 186)
20281 * synchronized data reads:               dd invocation.       (line 233)
20282 * synchronized data writes, before finishing: dd invocation.  (line 182)
20283 * system context:                        System context.      (line   6)
20284 * system information, printing:          arch invocation.     (line   6)
20285 * system information, printing <1>:      nproc invocation.    (line   6)
20286 * system information, printing <2>:      uname invocation.    (line   6)
20287 * system name, printing:                 hostname invocation. (line   6)
20288 * System V sum:                          sum invocation.      (line  34)
20289 * tab stops, setting:                    expand invocation.   (line  24)
20290 * tabN:                                  Output.              (line  52)
20291 * tabs:                                  Combination.         (line  66)
20292 * tabs to spaces, converting:            expand invocation.   (line   6)
20293 * tac:                                   tac invocation.      (line   6)
20294 * tagged paragraphs:                     fmt invocation.      (line  53)
20295 * tail:                                  tail invocation.     (line   6)
20296 * tandem:                                Input.               (line  46)
20297 * target directory:                      Target directory.    (line   6)
20298 * target directory <1>:                  Target directory.    (line  15)
20299 * target directory <2>:                  Target directory.    (line  34)
20300 * target directory <3>:                  cp invocation.       (line 393)
20301 * target directory <4>:                  cp invocation.       (line 398)
20302 * target directory <5>:                  install invocation.  (line 138)
20303 * target directory <6>:                  install invocation.  (line 144)
20304 * target directory <7>:                  mv invocation.       (line 119)
20305 * target directory <8>:                  mv invocation.       (line 124)
20306 * target directory <9>:                  ln invocation.       (line 195)
20307 * target directory <10>:                 ln invocation.       (line 200)
20308 * tebibyte, definition of:               Block size.          (line 107)
20309 * tee:                                   tee invocation.      (line   6)
20310 * telephone directory order:             sort invocation.     (line 100)
20311 * temporary directory:                   sort invocation.     (line 398)
20312 * temporary files and directories:       mktemp invocation.   (line   6)
20313 * terabyte, definition of:               Block size.          (line 104)
20314 * terminal check:                        File type tests.     (line  35)
20315 * terminal file name, printing:          tty invocation.      (line   6)
20316 * terminal lines, currently used:        who invocation.      (line  12)
20317 * terminal settings:                     stty invocation.     (line   6)
20318 * terminal, using color iff:             General output formatting.
20319                                                               (line  32)
20320 * terse output:                          stat invocation.     (line  58)
20321 * test:                                  test invocation.     (line   6)
20322 * text:                                  dd invocation.       (line 299)
20323 * text I/O:                              dd invocation.       (line 299)
20324 * text image, saving in swap space:      Mode Structure.      (line  53)
20325 * text input files:                      md5sum invocation.   (line 122)
20326 * text utilities:                        Top.                 (line  32)
20327 * text, displaying:                      echo invocation.     (line   6)
20328 * text, reformatting:                    fmt invocation.      (line   6)
20329 * this in date strings:                  Relative items in date strings.
20330                                                               (line  32)
20331 * time:                                  touch invocation.    (line  96)
20332 * time <1>:                              Special.             (line  12)
20333 * time conversion specifiers:            Time conversion specifiers.
20334                                                               (line   6)
20335 * time formats:                          pr invocation.       (line  91)
20336 * time formats <1>:                      date invocation.     (line  21)
20337 * time limit:                            timeout invocation.  (line   6)
20338 * time of day item:                      Time of day items.   (line   6)
20339 * time setting:                          Setting the time.    (line   6)
20340 * time style:                            Formatting file timestamps.
20341                                                               (line  27)
20342 * time style <1>:                        du invocation.       (line 239)
20343 * time units:                            timeout invocation.  (line  57)
20344 * time units <1>:                        sleep invocation.    (line  13)
20345 * time zone correction:                  Time of day items.   (line  29)
20346 * time zone item:                        General date syntax. (line  42)
20347 * time zone item <1>:                    Time zone items.     (line   6)
20348 * time, printing or setting:             date invocation.     (line   6)
20349 * timeout:                               timeout invocation.  (line   6)
20350 * timestamps of installed files, preserving: install invocation.
20351                                                               (line 114)
20352 * timestamps, changing file:             touch invocation.    (line   6)
20353 * TIME_STYLE:                            Formatting file timestamps.
20354                                                               (line 109)
20355 * TIME_STYLE <1>:                        du invocation.       (line 269)
20356 * TMPDIR:                                sort invocation.     (line  73)
20357 * TMPDIR <1>:                            sort invocation.     (line 398)
20358 * today in date strings:                 Relative items in date strings.
20359                                                               (line  32)
20360 * tomorrow:                              Options for date.    (line  11)
20361 * tomorrow in date strings:              Relative items in date strings.
20362                                                               (line  29)
20363 * topological sort:                      tsort invocation.    (line   6)
20364 * tostop:                                Local.               (line  44)
20365 * total counts:                          wc invocation.       (line  15)
20366 * touch:                                 touch invocation.    (line   6)
20367 * tr:                                    tr invocation.       (line   6)
20368 * trailing slashes:                      Trailing slashes.    (line   6)
20369 * translating characters:                Translating.         (line   6)
20370 * true:                                  true invocation.     (line   6)
20371 * truncate:                              truncate invocation. (line   6)
20372 * truncating output file, avoiding:      dd invocation.       (line 175)
20373 * truncating, file sizes:                truncate invocation. (line   6)
20374 * tsort:                                 tsort invocation.    (line   6)
20375 * tty:                                   tty invocation.      (line   6)
20376 * two-way parity:                        Control.             (line   9)
20377 * type size:                             od invocation.       (line 131)
20378 * TZ:                                    pr invocation.       (line 104)
20379 * TZ <1>:                                Formatting file timestamps.
20380                                                               (line  19)
20381 * TZ <2>:                                touch invocation.    (line  75)
20382 * TZ <3>:                                stat invocation.     (line 229)
20383 * TZ <4>:                                who invocation.      (line  27)
20384 * TZ <5>:                                date invocation.     (line  17)
20385 * TZ <6>:                                Options for date.    (line 117)
20386 * TZ <7>:                                Specifying time zone rules.
20387                                                               (line   6)
20388 * u, and disabling special characters:   Characters.          (line  12)
20389 * ucase, converting to:                  dd invocation.       (line 130)
20390 * umask and modes:                       Umask and Protection.
20391                                                               (line   6)
20392 * uname:                                 uname invocation.    (line   6)
20393 * unblock:                               dd invocation.       (line 121)
20394 * unexpand:                              unexpand invocation. (line   6)
20395 * Unicode:                               printf invocation.   (line  82)
20396 * uniq:                                  uniq invocation.     (line   6)
20397 * unique lines, outputting:              uniq invocation.     (line 135)
20398 * uniquify files:                        uniq invocation.     (line   6)
20399 * uniquifying output:                    sort invocation.     (line 415)
20400 * unlink:                                unlink invocation.   (line   6)
20401 * unprintable characters, ignoring:      sort invocation.     (line 162)
20402 * unsorted directory listing:            Sorting the output.  (line  20)
20403 * upper:                                 Character sets.      (line 110)
20404 * uppercase, translating to lowercase:   Input.               (line  51)
20405 * uptime:                                uptime invocation.   (line   6)
20406 * use time, changing:                    touch invocation.    (line  88)
20407 * use time, printing or sorting files by: Sorting the output. (line  13)
20408 * use time, printing or sorting files by <1>: Sorting the output.
20409                                                               (line  45)
20410 * use time, show the most recent:        du invocation.       (line 226)
20411 * user IDs, disambiguating:              Disambiguating names and IDs.
20412                                                               (line   6)
20413 * user information, commands for:        User information.    (line   6)
20414 * user name, printing:                   logname invocation.  (line   6)
20415 * user names, disambiguating:            Disambiguating names and IDs.
20416                                                               (line   6)
20417 * usernames, printing current:           users invocation.    (line   6)
20418 * users:                                 users invocation.    (line   6)
20419 * UTC:                                   Options for date.    (line 117)
20420 * utmp:                                  logname invocation.  (line   6)
20421 * utmp <1>:                              users invocation.    (line  16)
20422 * utmp <2>:                              who invocation.      (line  16)
20423 * valid file names, checking for:        pathchk invocation.  (line   6)
20424 * variable-length records, converting to fixed-length: dd invocation.
20425                                                               (line  44)
20426 * vdir:                                  vdir invocation.     (line   6)
20427 * verbose ls format:                     What information is listed.
20428                                                               (line 138)
20429 * verifying MD5 checksums:               md5sum invocation.   (line  84)
20430 * verifying MD5 checksums <1>:           md5sum invocation.   (line  91)
20431 * verifying MD5 checksums <2>:           md5sum invocation.   (line 100)
20432 * verifying MD5 checksums <3>:           md5sum invocation.   (line 132)
20433 * verifying MD5 checksums <4>:           md5sum invocation.   (line 138)
20434 * version number sort:                   sort invocation.     (line 198)
20435 * version number, finding:               Common options.      (line  44)
20436 * version of kernel:                     uname invocation.    (line  86)
20437 * version, sorting option for ls:        Sorting the output.  (line  61)
20438 * version-control Emacs variable:        Backup options.      (line  25)
20439 * VERSION_CONTROL:                       Backup options.      (line  14)
20440 * VERSION_CONTROL <1>:                   cp invocation.       (line  96)
20441 * VERSION_CONTROL <2>:                   install invocation.  (line  45)
20442 * VERSION_CONTROL <3>:                   mv invocation.       (line  71)
20443 * VERSION_CONTROL <4>:                   ln invocation.       (line  93)
20444 * vertical sorted files in columns:      General output formatting.
20445                                                               (line  22)
20446 * vtN:                                   Output.              (line  60)
20447 * wc:                                    wc invocation.       (line   6)
20448 * week in date strings:                  Relative items in date strings.
20449                                                               (line  15)
20450 * werase:                                Characters.          (line  65)
20451 * who:                                   who invocation.      (line   6)
20452 * who am i:                              who invocation.      (line  22)
20453 * whoami:                                whoami invocation.   (line   6)
20454 * word count:                            wc invocation.       (line   6)
20455 * working context:                       Working context.     (line   6)
20456 * working directory, printing:           pwd invocation.      (line   6)
20457 * wrap data:                             base64 invocation.   (line  25)
20458 * wrapping long input lines:             fold invocation.     (line   6)
20459 * writable file check:                   Access permission tests.
20460                                                               (line  21)
20461 * write permission:                      Mode Structure.      (line  15)
20462 * write permission, symbolic:            Setting Permissions. (line  54)
20463 * write, allowed:                        who invocation.      (line  98)
20464 * wtmp:                                  users invocation.    (line  16)
20465 * wtmp <1>:                              who invocation.      (line  16)
20466 * xcase:                                 Local.               (line  37)
20467 * xdigit:                                Character sets.      (line 112)
20468 * xfs file system type:                  df invocation.       (line 232)
20469 * XON/XOFF flow control:                 Input.               (line  41)
20470 * year in date strings:                  Relative items in date strings.
20471                                                               (line  15)
20472 * yes:                                   yes invocation.      (line   6)
20473 * yesterday:                             Options for date.    (line  11)
20474 * yesterday in date strings:             Relative items in date strings.
20475                                                               (line  29)
20476 * yottabyte, definition of:              Block size.          (line 128)
20477 * Youmans, B.:                           Introduction.        (line  31)
20478 * zero-length string check:              String tests.        (line  15)
20479 * zettabyte, definition of:              Block size.          (line 121)
20480
20481
20482 \1f
20483 Tag Table:
20484 Node: Top\7f9947
20485 Node: Introduction\7f28702
20486 Node: Common options\7f31748
20487 Node: Exit status\7f36935
20488 Node: Backup options\7f38180
20489 Node: Block size\7f41421
20490 Node: Floating point\7f49796
20491 Node: Signal specifications\7f51883
20492 Node: Disambiguating names and IDs\7f55419
20493 Ref: Disambiguating names and IDs-Footnote-1\7f58020
20494 Node: Random sources\7f58122
20495 Node: Target directory\7f60966
20496 Node: Trailing slashes\7f66449
20497 Node: Traversing symlinks\7f68199
20498 Node: Treating / specially\7f70053
20499 Node: Special built-in utilities\7f72928
20500 Node: Standards conformance\7f75344
20501 Node: Multi-call invocation\7f77831
20502 Node: Output of entire files\7f79689
20503 Node: cat invocation\7f80565
20504 Node: tac invocation\7f83110
20505 Node: nl invocation\7f85129
20506 Node: od invocation\7f90661
20507 Node: base32 invocation\7f101460
20508 Node: base64 invocation\7f102174
20509 Node: Formatting file contents\7f104300
20510 Node: fmt invocation\7f104846
20511 Node: pr invocation\7f109757
20512 Node: fold invocation\7f128547
20513 Node: Output of parts of files\7f131150
20514 Node: head invocation\7f131694
20515 Node: tail invocation\7f135872
20516 Node: split invocation\7f152899
20517 Node: csplit invocation\7f166350
20518 Node: Summarizing files\7f174137
20519 Node: wc invocation\7f175112
20520 Node: sum invocation\7f180009
20521 Node: cksum invocation\7f182168
20522 Node: b2sum invocation\7f183751
20523 Node: md5sum invocation\7f184723
20524 Node: sha1sum invocation\7f195561
20525 Node: sha2 utilities\7f196627
20526 Node: Operating on sorted files\7f197270
20527 Node: sort invocation\7f198025
20528 Ref: sort invocation-Footnote-1\7f241032
20529 Node: shuf invocation\7f241970
20530 Node: uniq invocation\7f246531
20531 Node: comm invocation\7f255633
20532 Node: ptx invocation\7f261138
20533 Node: General options in ptx\7f268173
20534 Node: Charset selection in ptx\7f268914
20535 Node: Input processing in ptx\7f270408
20536 Node: Output formatting in ptx\7f279956
20537 Node: Compatibility in ptx\7f291244
20538 Node: tsort invocation\7f296256
20539 Node: tsort background\7f300734
20540 Node: Operating on fields\7f303682
20541 Node: cut invocation\7f304111
20542 Node: paste invocation\7f311289
20543 Node: join invocation\7f314123
20544 Node: Operating on characters\7f324946
20545 Node: tr invocation\7f325393
20546 Node: Character sets\7f327947
20547 Node: Translating\7f334918
20548 Node: Squeezing and deleting\7f338027
20549 Node: expand invocation\7f342719
20550 Node: unexpand invocation\7f344980
20551 Node: Directory listing\7f348502
20552 Node: ls invocation\7f349116
20553 Ref: ls invocation-Footnote-1\7f353020
20554 Node: Which files are listed\7f353341
20555 Node: What information is listed\7f359231
20556 Node: Sorting the output\7f373312
20557 Node: Details about version sort\7f377135
20558 Node: General output formatting\7f379524
20559 Node: Formatting file timestamps\7f388285
20560 Node: Formatting the file names\7f396392
20561 Node: dir invocation\7f404268
20562 Node: vdir invocation\7f404894
20563 Node: dircolors invocation\7f405428
20564 Node: Basic operations\7f408023
20565 Node: cp invocation\7f408867
20566 Node: dd invocation\7f438333
20567 Node: install invocation\7f463599
20568 Node: mv invocation\7f473076
20569 Node: rm invocation\7f481236
20570 Node: shred invocation\7f489030
20571 Node: Special file types\7f503858
20572 Node: link invocation\7f506345
20573 Node: ln invocation\7f508152
20574 Node: mkdir invocation\7f523266
20575 Node: mkfifo invocation\7f527422
20576 Node: mknod invocation\7f529744
20577 Node: readlink invocation\7f534066
20578 Node: rmdir invocation\7f537563
20579 Node: unlink invocation\7f539284
20580 Node: Changing file attributes\7f540662
20581 Node: chown invocation\7f541870
20582 Node: chgrp invocation\7f551509
20583 Node: chmod invocation\7f556464
20584 Node: touch invocation\7f560784
20585 Node: Disk usage\7f572544
20586 Node: df invocation\7f573596
20587 Node: du invocation\7f589118
20588 Node: stat invocation\7f606804
20589 Node: sync invocation\7f621594
20590 Node: truncate invocation\7f625113
20591 Node: Printing text\7f627753
20592 Node: echo invocation\7f628212
20593 Node: printf invocation\7f632155
20594 Node: yes invocation\7f641882
20595 Node: Conditions\7f642843
20596 Node: false invocation\7f643592
20597 Node: true invocation\7f645313
20598 Node: test invocation\7f647317
20599 Node: File type tests\7f650481
20600 Node: Access permission tests\7f651791
20601 Node: File characteristic tests\7f652984
20602 Node: String tests\7f653985
20603 Node: Numeric tests\7f654961
20604 Node: Connectives for test\7f656217
20605 Node: expr invocation\7f657952
20606 Node: String expressions\7f662019
20607 Node: Numeric expressions\7f665678
20608 Node: Relations for expr\7f666450
20609 Node: Examples of expr\7f667975
20610 Node: Redirection\7f669029
20611 Node: tee invocation\7f669705
20612 Node: File name manipulation\7f679540
20613 Node: basename invocation\7f680236
20614 Node: dirname invocation\7f683303
20615 Node: pathchk invocation\7f685826
20616 Node: mktemp invocation\7f688564
20617 Node: realpath invocation\7f698101
20618 Node: Working context\7f703479
20619 Node: pwd invocation\7f704267
20620 Node: stty invocation\7f706306
20621 Node: Control\7f710790
20622 Node: Input\7f712434
20623 Node: Output\7f714877
20624 Node: Local\7f716833
20625 Node: Combination\7f719829
20626 Node: Characters\7f722789
20627 Node: Special\7f725495
20628 Node: printenv invocation\7f728574
20629 Node: tty invocation\7f729902
20630 Node: User information\7f730809
20631 Node: id invocation\7f731626
20632 Node: logname invocation\7f735190
20633 Node: whoami invocation\7f736009
20634 Node: groups invocation\7f736566
20635 Node: users invocation\7f738298
20636 Node: who invocation\7f740022
20637 Node: System context\7f744878
20638 Node: date invocation\7f745726
20639 Node: Time conversion specifiers\7f747982
20640 Node: Date conversion specifiers\7f751914
20641 Node: Literal conversion specifiers\7f756029
20642 Node: Padding and other flags\7f756384
20643 Node: Setting the time\7f759388
20644 Node: Options for date\7f761208
20645 Node: Examples of date\7f767459
20646 Ref: %s-examples\7f769256
20647 Node: arch invocation\7f773594
20648 Node: nproc invocation\7f774379
20649 Node: uname invocation\7f775818
20650 Node: hostname invocation\7f779959
20651 Node: hostid invocation\7f781152
20652 Node: uptime invocation\7f782349
20653 Node: SELinux context\7f784513
20654 Node: chcon invocation\7f784979
20655 Node: runcon invocation\7f788392
20656 Node: Modified command invocation\7f790767
20657 Node: chroot invocation\7f792035
20658 Ref: chroot invocation-Footnote-1\7f797952
20659 Node: env invocation\7f798814
20660 Node: nice invocation\7f804570
20661 Node: nohup invocation\7f810845
20662 Node: stdbuf invocation\7f815116
20663 Node: timeout invocation\7f819216
20664 Node: Process control\7f823474
20665 Node: kill invocation\7f823706
20666 Node: Delaying\7f828797
20667 Node: sleep invocation\7f829010
20668 Node: Numeric operations\7f830512
20669 Node: factor invocation\7f830907
20670 Node: numfmt invocation\7f833196
20671 Node: General options in numfmt\7f834624
20672 Node: Possible UNITs\7f842680
20673 Node: Examples of using numfmt\7f846874
20674 Node: seq invocation\7f851165
20675 Node: File permissions\7f857247
20676 Node: Mode Structure\7f858196
20677 Node: Symbolic Modes\7f864240
20678 Node: Setting Permissions\7f865833
20679 Node: Copying Permissions\7f869989
20680 Node: Changing Special Mode Bits\7f871117
20681 Node: Conditional Executability\7f874285
20682 Node: Multiple Changes\7f875194
20683 Node: Umask and Protection\7f877638
20684 Node: Numeric Modes\7f879635
20685 Node: Operator Numeric Modes\7f882725
20686 Node: Directory Setuid and Setgid\7f884199
20687 Node: Date input formats\7f890114
20688 Node: General date syntax\7f894025
20689 Node: Calendar date items\7f898445
20690 Node: Time of day items\7f901255
20691 Node: Time zone items\7f904310
20692 Node: Combined date and time of day items\7f906191
20693 Node: Day of week items\7f907333
20694 Node: Relative items in date strings\7f909194
20695 Node: Pure numbers in date strings\7f913117
20696 Node: Seconds since the Epoch\7f914605
20697 Node: Specifying time zone rules\7f917004
20698 Node: Authors of parse_datetime\7f920609
20699 Ref: Authors of get_date\7f920798
20700 Node: Opening the software toolbox\7f922112
20701 Node: Toolbox introduction\7f922957
20702 Node: I/O redirection\7f927166
20703 Node: The who command\7f931757
20704 Node: The cut command\7f933027
20705 Node: The sort command\7f934500
20706 Node: The uniq command\7f935498
20707 Node: Putting the tools together\7f936501
20708 Ref: Putting the tools together-Footnote-1\7f954147
20709 Node: About the translation\7f954255
20710 Node: GNU Free Documentation License\7f963246
20711 Node: Concept index\7f988619
20712 \1f
20713 End Tag Table
20714
20715 \1f
20716 Local Variables:
20717 coding: utf-8
20718 End: