1 This is coreutils-ja.info, produced by makeinfo version 4.13 from
4 INFO-DIR-SECTION Basics (in Japanese)
6 * Coreutils-ja: (coreutils-ja). Core GNU (file, text, shell) utilities.
7 * Common options-ja: (coreutils-ja)Common options.
8 * File permissions-ja: (coreutils-ja)File permissions. Access modes.
9 * Date input formats-ja: (coreutils-ja)Date input formats.
12 INFO-DIR-SECTION Individual utilities (in Japanese)
14 * arch-ja: (coreutils-ja)arch invocation. Print machine hardware name.
15 * base64-ja: (coreutils-ja)base64 invocation. Base64 encode/decode data.
16 * basename-ja: (coreutils-ja)basename invocation. Strip directory and suffix.
17 * cat-ja: (coreutils-ja)cat invocation. Concatenate and write files.
18 * chcon-ja: (coreutils-ja)chcon invocation. Change SELinux CTX of files.
19 * chgrp-ja: (coreutils-ja)chgrp invocation. Change file group
20 * chmod-ja: (coreutils-ja)chmod invocation. Change access permissions.
21 * chown-ja: (coreutils-ja)chown invocation. Change file owners and groups.
22 * chroot-ja: (coreutils-ja)chroot invocation. Specify the root directory.
23 * cksum-ja: (coreutils-ja)cksum invocation. Print POSIX CRC checksum.
24 * comm-ja: (coreutils-ja)comm invocation. Compare sorted files by line.
25 * cp-ja: (coreutils-ja)cp invocation. Copy files.
26 * csplit-ja: (coreutils-ja)csplit invocation. Split by context.
27 * cut-ja: (coreutils-ja)cut invocation. Print selected parts of lines.
28 * date-ja: (coreutils-ja)date invocation. Print/set system date and time.
29 * dd-ja: (coreutils-ja)dd invocation. Copy and convert a file.
30 * df-ja: (coreutils-ja)df invocation. Report file system disk usage.
31 * dir-ja: (coreutils-ja)dir invocation. List directories briefly.
32 * dircolors-ja: (coreutils-ja)dircolors invocation. Color setup for ls.
33 * dirname-ja: (coreutils-ja)dirname invocation. Strip last file name component.
34 * du-ja: (coreutils-ja)du invocation. Report on disk usage.
35 * echo-ja: (coreutils-ja)echo invocation. Print a line of text.
36 * env-ja: (coreutils-ja)env invocation. Modify the environment.
37 * expand-ja: (coreutils-ja)expand invocation. Convert tabs to spaces.
38 * expr-ja: (coreutils-ja)expr invocation. Evaluate expressions.
39 * factor-ja: (coreutils-ja)factor invocation. Print prime factors.
40 * false-ja: (coreutils-ja)false invocation. Do nothing, unsuccessfully.
41 * fmt-ja: (coreutils-ja)fmt invocation. Reformat paragraph text.
42 * fold-ja: (coreutils-ja)fold invocation. Wrap long input lines.
43 * groups-ja: (coreutils-ja)groups invocation. Print group names a user is in.
44 * head-ja: (coreutils-ja)head invocation. Output the first part of files.
45 * hostid-ja: (coreutils-ja)hostid invocation. Print numeric host identifier.
46 * hostname-ja: (coreutils-ja)hostname invocation. Print or set system name.
47 * id-ja: (coreutils-ja)id invocation. Print user identity.
48 * install-ja: (coreutils-ja)install invocation. Copy and change attributes.
49 * join-ja: (coreutils-ja)join invocation. Join lines on a common field.
50 * kill-ja: (coreutils-ja)kill invocation. Send a signal to processes.
51 * link-ja: (coreutils-ja)link invocation. Make hard links between files.
52 * ln-ja: (coreutils-ja)ln invocation. Make links between files.
53 * logname-ja: (coreutils-ja)logname invocation. Print current login name.
54 * ls-ja: (coreutils-ja)ls invocation. List directory contents.
55 * md5sum-ja: (coreutils-ja)md5sum invocation. Print or check MD5 digests.
56 * mkdir-ja: (coreutils-ja)mkdir invocation. Create directories.
57 * mkfifo-ja: (coreutils-ja)mkfifo invocation. Create FIFOs (named pipes).
58 * mknod-ja: (coreutils-ja)mknod invocation. Create special files.
59 * mktemp-ja: (coreutils-ja)mktemp invocation. Create temporary files.
60 * mv-ja: (coreutils-ja)mv invocation. Rename files.
61 * nice-ja: (coreutils-ja)nice invocation. Modify niceness.
62 * nl-ja: (coreutils-ja)nl invocation. Number lines and write files.
63 * nohup-ja: (coreutils-ja)nohup invocation. Immunize to hangups.
64 * nproc-ja: (coreutils-ja)nproc invocation. Print the number of processors.
65 * numfmt-ja: (coreutils-ja)numfmt invocation. Reformat numbers.
66 * od-ja: (coreutils-ja)od invocation. Dump files in octal, etc.
67 * paste-ja: (coreutils-ja)paste invocation. Merge lines of files.
68 * pathchk-ja: (coreutils-ja)pathchk invocation. Check file name portability.
69 * pr-ja: (coreutils-ja)pr invocation. Paginate or columnate files.
70 * printenv-ja: (coreutils-ja)printenv invocation. Print environment variables.
71 * printf-ja: (coreutils-ja)printf invocation. Format and print data.
72 * ptx-ja: (coreutils-ja)ptx invocation. Produce permuted indexes.
73 * pwd-ja: (coreutils-ja)pwd invocation. Print working directory.
74 * readlink-ja: (coreutils-ja)readlink invocation. Print referent of a symlink.
75 * realpath-ja: (coreutils-ja)realpath invocation. Print resolved file names.
76 * rm-ja: (coreutils-ja)rm invocation. Remove files.
77 * rmdir-ja: (coreutils-ja)rmdir invocation. Remove empty directories.
78 * runcon-ja: (coreutils-ja)runcon invocation. Run in specified SELinux CTX.
79 * seq-ja: (coreutils-ja)seq invocation. Print numeric sequences.
80 * sha1sum-ja: (coreutils-ja)sha1sum invocation. Print or check SHA-1 digests.
81 * sha2-ja: (coreutils-ja)sha2 utilities. Print or check SHA-2 digests.
82 * shred-ja: (coreutils-ja)shred invocation. Remove files more securely.
83 * shuf-ja: (coreutils-ja)shuf invocation. Shuffling text files.
84 * sleep-ja: (coreutils-ja)sleep invocation. Delay for a specified time.
85 * sort-ja: (coreutils-ja)sort invocation. Sort text files.
86 * split-ja: (coreutils-ja)split invocation. Split into pieces.
87 * stat-ja: (coreutils-ja)stat invocation. Report file(system) status.
88 * stdbuf-ja: (coreutils-ja)stdbuf invocation. Modify stdio buffering.
89 * stty-ja: (coreutils-ja)stty invocation. Print/change terminal settings.
90 * sum-ja: (coreutils-ja)sum invocation. Print traditional checksum.
91 * sync-ja: (coreutils-ja)sync invocation. Synchronize memory and disk.
92 * tac-ja: (coreutils-ja)tac invocation. Reverse files.
93 * tail-ja: (coreutils-ja)tail invocation. Output the last part of files.
94 * tee-ja: (coreutils-ja)tee invocation. Redirect to multiple files.
95 * test-ja: (coreutils-ja)test invocation. File/string tests.
96 * timeout-ja: (coreutils-ja)timeout invocation. Run with time limit.
97 * touch-ja: (coreutils-ja)touch invocation. Change file timestamps.
98 * tr-ja: (coreutils-ja)tr invocation. Translate characters.
99 * true-ja: (coreutils-ja)true invocation. Do nothing, successfully.
100 * truncate-ja: (coreutils-ja)truncate invocation. Shrink/extend size of a file.
101 * tsort-ja: (coreutils-ja)tsort invocation. Topological sort.
102 * tty-ja: (coreutils-ja)tty invocation. Print terminal name.
103 * uname-ja: (coreutils-ja)uname invocation. Print system information.
104 * unexpand-ja: (coreutils-ja)unexpand invocation. Convert spaces to tabs.
105 * uniq-ja: (coreutils-ja)uniq invocation. Uniquify files.
106 * unlink-ja: (coreutils-ja)unlink invocation. Removal via unlink(2).
107 * uptime-ja: (coreutils-ja)uptime invocation. Print uptime and load.
108 * users-ja: (coreutils-ja)users invocation. Print current user names.
109 * vdir-ja: (coreutils-ja)vdir invocation. List directories verbosely.
110 * wc-ja: (coreutils-ja)wc invocation. Line, word, and byte counts.
111 * who-ja: (coreutils-ja)who invocation. Print who is logged in.
112 * whoami-ja: (coreutils-ja)whoami invocation. Print effective user ID.
113 * yes-ja: (coreutils-ja)yes invocation. Print a string indefinitely.
116 このマニュアルは、GNU core utilities version 8.22
117 の詳細な解説である。 core utilities
118 には、テキストやファイルを操作するための標準的な
121 Copyright (C) 1994-2013 Free Software Foundation, Inc.
123 Japanese translation copyright (C) 2014 Linux JM project
125 Permission is granted to copy, distribute and/or modify this
126 document under the terms of the GNU Free Documentation License,
127 Version 1.3 or any later version published by the Free Software
128 Foundation; with no Invariant Sections, with no Front-Cover Texts,
129 and with no Back-Cover Texts. A copy of the license is included
130 in the section entitled "GNU Free Documentation License".
132 【訳者から御注意】 この文書を info コマンドで閲覧なさっている場合
133 には、info コマンドは日本語の行末の表示があまり上手ではないため、
134 しばしば行末に余計な文字が入って、読みにくいことがある。そうしたときは、
135 Ctrl キーと l (エル) キーを同時に押して、画面を再描画していただきたい。
138 お手元の coreutils のバージョンが 8.22 以外の場合、この文書の
139 説明と動作が違うことがあるかもしれない (たとえば、この文書に書いてある
140 オプションが使えない、あるいは、使えるはずのオプションの説明がないなど)。
141 そうした場合は、お使いの coreutils と同じバージョンの info マニュアルや
142 man ページに当ってみていただきたい。そちらの方が正しいはずである。
145 File: coreutils-ja.info, Node: Top, Next: Introduction, Up: (dir)
150 このマニュアルは、GNU core utilities version 8.22 の詳細な解説である。
151 core utilities には、テキストやファイルを操作するための標準的な
154 Copyright (C) 1994-2013 Free Software Foundation, Inc.
156 Japanese translation copyright (C) 2014 Linux JM project
158 Permission is granted to copy, distribute and/or modify this
159 document under the terms of the GNU Free Documentation License,
160 Version 1.3 or any later version published by the Free Software
161 Foundation; with no Invariant Sections, with no Front-Cover Texts,
162 and with no Back-Cover Texts. A copy of the license is included
163 in the section entitled "GNU Free Documentation License".
165 【訳者から御注意】 この文書を info コマンドで閲覧なさっている場合
166 には、info コマンドは日本語の行末の表示があまり上手ではないため、
167 しばしば行末に余計な文字が入って、読みにくいことがある。そうしたときは、
168 Ctrl キーと l (エル) キーを同時に押して、画面を再描画していただきたい。
171 お手元の coreutils のバージョンが 8.22 以外の場合、この文書の
172 説明と動作が違うことがあるかもしれない (たとえば、この文書に書いてある
173 オプションが使えない、あるいは、使えるはずのオプションの説明がないなど)。
174 そうした場合は、お使いの coreutils と同じバージョンの info マニュアルや
175 man ページに当ってみていただきたい。そちらの方が正しいはずである。
179 * Introduction:: 注意事項、概観、著者
180 * Common options:: 共通オプション
181 * Output of entire files:: ファイル全体の出力 (cat tac nl od base64)
182 * Formatting file contents:: ファイルの整形 (fmt numfmt pr fold)
183 * Output of parts of files:: ファイルの部分出力 (head tail split csplit)
184 * Summarizing files:: チェックサムなど (wc sum cksum md5sum sha1sum sha2)
185 * Operating on sorted files:: ソートなど (sort shuf uniq comm ptx tsort)
186 * Operating on fields:: フィールド操作 (cut paste join)
187 * Operating on characters:: 文字操作 (tr expand unexpand)
188 * Directory listing:: ディレクトリ一覧 (ls dir vdir dircolors)
189 * Basic operations:: 基本操作 (cp dd install mv rm shred)
190 * Special file types:: 特殊ファイル型 (mkdir rmdir unlink mkfifo mknod
192 * Changing file attributes:: ファイルの属性変更 (chgrp chmod chown touch)
193 * Disk usage:: ディスク使用量など (df du stat sync truncate)
194 * Printing text:: テキストの表示 (echo printf yes)
195 * Conditions:: 条件 (false true test expr)
196 * Redirection:: リダイレクション (tee)
197 * File name manipulation:: ファイル名の操作 (dirname basename pathchk
199 * Working context:: 作業環境 (pwd stty printenv tty)
200 * User information:: ユーザ情報 (id logname whoami groups users who)
201 * System context:: システム情報 (date arch nproc uname hostname
203 * SELinux context:: SELinux コンテキスト (chcon runcon)
204 * Modified command invocation:: 実行環境の変更 (chroot env nice nohup stdbuf
206 * Process control:: プロセス制御 (kill)
207 * Delaying:: 一時停止 (sleep)
208 * Numeric operations:: 数値の操作 (factor seq)
209 * File permissions:: アクセス・モード
210 * Date input formats:: 日付文字列の指定法
211 * Opening the software toolbox:: ソフトウェア工具という考え方
212 * About the translation:: 翻訳について
213 * GNU Free Documentation License:: Copying and sharing this manual
214 * Concept index:: General index
220 * Exit status:: プログラムが実行に成功したか失敗したかの指標
221 * Backup options:: バックアップ・オプション
222 * Block size:: ブロックサイズ
223 * Floating point:: 浮動小数点数の表現
224 * Signal specifications:: シグナルの指定
225 * Disambiguating names and IDs:: chgrp や chown のシンタクス
226 * Random sources:: ランダムデータのソース
227 * Target directory:: 出力先ディレクトリ
228 * Trailing slashes:: 末尾のスラッシュ
229 * Traversing symlinks:: ディレクトリを指すシンボリックリンクのたどり方
230 * Treating / specially:: / (ルート) を特別扱いする
231 * Standards conformance:: 規格への準拠
235 * cat invocation:: ファイルを結合して、書き出す
236 * tac invocation:: ファイルを結合して、ファイルごとに逆順で書き出す
237 * nl invocation:: 行番号を付けて、ファイルを書き出す
238 * od invocation:: ファイルを 8 進数などの形式で書き出す
239 * base64 invocation:: データを ASCII 文字で表示可能なデータに変換する
243 * fmt invocation:: パラグラフに分かれたテキストを整形し直す
244 * numfmt invocation:: 数値を整形し直す
245 * pr invocation:: ページ付けや段組みをしてファイルを表示する
246 * fold invocation:: 入力行を指定された幅に合わせて折り返す
250 * General options in numfmt:: 一般オプション
251 * Possible UNITs:: 使用できる UNIT
252 * Examples of using numfmt:: numfmt の使用例
256 * head invocation:: ファイルの先頭部分を出力する
257 * tail invocation:: ファイルの末尾部分を出力する
258 * split invocation:: ファイルを一定のサイズに分割する
259 * csplit invocation:: ファイルを内容を目印にして分割する
263 * wc invocation:: 行数、単語数、バイト数を表示する
264 * sum invocation:: チェックサムとブロック数を表示する
265 * cksum invocation:: CRC チェックサムとバイト数を表示する
266 * md5sum invocation:: MD5 ダイジェストの表示、または検査をする
267 * sha1sum invocation:: SHA-1 ダイジェストの表示、または検査をする
268 * sha2 utilities:: SHA-2 ダイジェストの表示、または検査をする
272 * sort invocation:: テキストファイルを並べ替える
273 * shuf invocation:: テキストファイルをシャッフルする
274 * uniq invocation:: ファイルから重複を省く
275 * comm invocation:: ソート済みの二つのファイルを一行づつ比較する
276 * ptx invocation:: ファイル内容の permuted index を作成する
277 * tsort invocation:: トポロジカル・ソート
279 `ptx': パミューテド・インデックスを作成する
281 * General options in ptx:: プログラム全体の動作に関係するオプション
282 * Charset selection in ptx:: 使用している文字セットについて
283 * Input processing in ptx:: 入力のフィールドと文脈、及びキーワードの選択
284 * Output formatting in ptx:: 出力フォーマットのタイプ、及びフィールドの幅
285 * Compatibility in ptx:: GNU による `ptx' の拡張
289 * cut invocation:: 各行の選択した部分を表示する
290 * paste invocation:: 複数のファイルの各行をマージする
291 * join invocation:: 共通のフィールドに基づいて行を連結する
295 * tr invocation:: 文字の置換、圧縮、削除を行う
296 * expand invocation:: タブをスペースに変換する
297 * unexpand invocation:: スペースをタブに変換する
301 * Character sets:: 文字集合の指定
302 * Translating:: ある文字集合を別の文字集合に変換する
303 * Squeezing:: 連続する文字の圧縮と文字の削除
307 * ls invocation:: ディレクトリの内容を一覧表示する
308 * dir invocation:: ディレクトリの内容を簡潔に表示する
309 * vdir invocation:: ディレクトリの内容を詳細に表示する
310 * dircolors invocation:: `ls' のカラー設定
312 `ls': ディレクトリの内容を一覧表示する
314 * Which files are listed:: 表示対象にするファイル
315 * What information is listed:: 表示する情報
316 * Sorting the output:: 出力のソート
317 * Details about version sort:: バージョン・ソートの詳細
318 * General output formatting:: 出力全体の形式
319 * Formatting file timestamps:: タイムスタンプのフォーマット
320 * Formatting the file names:: ファイル名のフォーマット
324 * cp invocation:: ファイルやディレクトリをコピーする
325 * dd invocation:: ファイルの変換とコピー
326 * install invocation:: ファイルをコピーし属性をセットする
327 * mv invocation:: ファイルの移動 (名前の変更) を行う
328 * rm invocation:: ファイルやディレクトリを削除する
329 * shred invocation:: セキュリティを向上させたファイルの削除
333 * link invocation:: システムコール link を使って、ハードリンクを作成する
334 * ln invocation:: ファイル間のリンクを作成する
335 * mkdir invocation:: ディレクトリを作成する
336 * mkfifo invocation:: FIFO (名前付きパイプ) を作成する
337 * mknod invocation:: ブロック型やキャラクタ型のスペシャルファイルを作成する
338 * readlink invocation:: シムリンクの値、または正規化されたファイル名を表示する
339 * rmdir invocation:: 空のディレクトリを削除する
340 * unlink invocation:: システムコール unlink を使って、ファイルを削除する
344 * chown invocation:: ファイルの所有者やグループを変更する
345 * chgrp invocation:: ファイルの所有グループを変更する
346 * chmod invocation:: アクセス権を変更する
347 * touch invocation:: ファイルのタイムスタンプを変更する
351 * df invocation:: ファイルシステムのディスク使用状態を報告する
352 * du invocation:: ファイルのディスク使用量を概算する
353 * stat invocation:: ファイルやファイルシステムの状態を報告する
354 * sync invocation:: ディスク上のデータをメモリと同期する
355 * truncate invocation:: ファイルサイズの短縮・伸長を行う
359 * echo invocation:: テキストを 1 行表示する
360 * printf invocation:: データを整形して表示する
361 * yes invocation:: 中断されるまで文字列を表示する
365 * false invocation:: 何もせず、実行失敗のステータスを返す
366 * true invocation:: 何もせず、正常終了する
367 * test invocation:: ファイルタイプのチェックや値の比較を行う
368 * expr invocation:: 式を評価する
370 `test': ファイルタイプのチェックや値の比較を行う
372 * File type tests:: ファイルタイプのテスト
373 * Access permission tests:: アクセス許可のテスト
374 * File characteristic tests:: ファイル特性のテスト
375 * String tests:: 文字列のテスト
376 * Numeric tests:: 数値のテスト
380 * String expressions:: 文字列式 (+ : match substr index length)
381 * Numeric expressions:: 数式 (+ - * / %)
382 * Relations for expr:: 論理結合と関係表現 (| & < <= = == != >= >)
383 * Examples of expr:: `expr' の使用例
387 * tee invocation:: 出力を複数のファイルやプロセスにリダイレクトする
391 * basename invocation:: ファイル名からディレクトリと接尾辞を取り除く
392 * dirname invocation:: ファイル名から最後の要素を取り除く
393 * pathchk invocation:: ファイル名の有効性や可搬性を検査する
394 * mktemp invocation:: テンポラリファイルやディレクトリを作成する
395 * realpath invocation:: ファイル名を展開して表示する
399 * pwd invocation:: 現在作業中のディレクトリを表示する
400 * stty invocation:: 端末の諸特性を表示・変更する
401 * printenv invocation:: 環境変数のすべて、あるいは一部を表示する
402 * tty invocation:: 標準出力に接続している端末のファイル名を表示する
404 `stty': 端末の諸特性を表示・変更する
410 * Combination:: 組み合わせ設定
416 * id invocation:: ユーザの ID を表示する
417 * logname invocation:: 現在のログイン名を表示する
418 * whoami invocation:: 実効ユーザ ID を表示する
419 * groups invocation:: ユーザが所属しているグループ名を表示する
420 * users invocation:: 現在ログインしている全ユーザのログイン名を表示する
421 * who invocation:: 現在誰がログインしているかを表示する
425 * arch invocation:: マシンのハードウェア名を表示する
426 * date invocation:: システムの日付や時刻を表示、設定する
427 * nproc invocation:: プロセッサ数を表示する
428 * uname invocation:: システムについて情報を表示する
429 * hostname invocation:: システム名を表示、設定する
430 * hostid invocation:: 数値によるホストの識別名を表示する
431 * uptime invocation:: システムの連続稼働時間と負荷を表示する
433 `date': システムの日付や時刻を表示、設定する
435 * Time conversion specifiers:: 時刻関係の変換指定子 %[HIklMNpPrRsSTXzZ]
436 * Date conversion specifiers:: 日付関係の変換指定子 %[aAbBcCdDeFgGhjmuUVwWxyY]
437 * Literal conversion specifiers:: 文字変換指定子 %[%nt]
438 * Padding and other flags:: 0 や空白による空き埋め、その他。
439 * Setting the time:: システムクロックの変更
440 * Options for date:: 現在時以外の指定
441 * Date input formats:: 日付文字列の指定法
442 * Examples of date:: 用例
446 * chcon invocation:: ファイルの SELinux コンテキストを変更する
447 * runcon invocation:: 指定された SELinux コンテキストでコマンドを実行する
451 * chroot invocation:: ルートディレクトリを変更して、コマンドを実行する
452 * env invocation:: 変更した環境でコマンドを実行する
453 * nice invocation:: niceness を変更して、コマンドを実行する
454 * nohup invocation:: ハングアップ・シグナルで終了しないコマンドを実行する
455 * stdbuf invocation:: 入出力バッファリングを変更して、コマンドを実行する
456 * timeout invocation:: タイムリミット付きでコマンドを実行する
460 * kill invocation:: プロセスにシグナルを送る。
464 * sleep invocation:: 指定された時間、停止する
468 * factor invocation:: 素因数を表示する
469 * seq invocation:: 数列を表示する
473 * Mode Structure:: ファイルのモードビットの構成
474 * Symbolic Modes:: ファイルのモードビットの憶えやすい表記
475 * Numeric Modes:: ファイルのモードビットの 8 進数による表記
476 * Directory Setuid and Setgid:: ディレクトリの Set-User-ID と
481 * General date syntax:: 共通規則
482 * Calendar date items:: 19 Dec 1994
483 * Time of day items:: 9:20pm
484 * Time zone items:: EST, PDT, UTC, ...
485 * Combined date and time of day items:: 1972-09-24T20:02:00,000000-0500
486 * Day of week items:: Monday, Tuesday
487 * Relative items in date strings:: next tuesday, 2 years ago
488 * Pure numbers in date strings:: 19931219, 1440
489 * Seconds since the Epoch:: @1078100502
490 * Specifying time zone rules:: TZ="America/New_York", TZ="UTC0"
491 * Authors of parse_datetime:: Bellovin, Eggert, Salz, Berets, et al.
495 * Toolbox introduction:: はじめに
496 * I/O redirection:: I/O リダイレクション
497 * The who command:: `who' コマンド
498 * The cut command:: `cut' コマンド
499 * The sort command:: `sort' コマンド
500 * The uniq command:: `uniq' コマンド
501 * Putting the tools together:: 工具を組み合わせる
505 * About the translation:: 翻訳について
509 * GNU Free Documentation License:: Copying and sharing this manual
512 File: coreutils-ja.info, Node: Introduction, Next: Common options, Prev: Top, Up: Top
517 このマニュアルは作成の途上にある。たとえば、多くのセクションで、基本的な
518 概念を初心者にわかりやすく説明するといった試みがなされていない。そこで、
519 お願いがある。もし、関心がおありなら、このマニュアルの改良に参加して
520 いただきたい。そうしていただければ、GNU コミュニティ全体が恩恵に浴する
523 このマニュアルで解説している GNU ユーティリティは、POSIX の規格に
524 おおむね準拠している。 バグの報告は、<bug-coreutils@gnu.org> になさって
525 いただきたい。そのとき、バージョン番号、マシンのアーキテクチャ、入力に
526 使ったファイルといった情報はもとより、バグの再現に必要な他のいかなる
527 情報も、忘れずに記載していただきたい。たとえば、どんな入力をしたか、
528 どんな結果を期待していたか、実際の結果はどうだったか、それがおかしいと
529 考える理由は何なのかといったことである。差分の投稿は歓迎するが、何がどう
530 問題なのかの説明もやはり付けていただきたい。推測するのが難しいこともある
531 からだ。*Note Bugs: (gcc)Bugs.
533 このマニュアルは、ユーティリティ・プログラムの配布に含まれる Unix
534 man page を元にして作られたものである。そうした man page は、David
535 MacKenzie によって書かれ、Jim Meyering によって改訂されていた。現在読者
536 がお読みになっているこのマニュアルは、そうしたユーティリティについての
537 公式文書であり、man page の方は、今では改訂作業が行われていない。なお、
538 `fmt' の最初の man page の著者は、 Ross Paterson だった。Texinfo 形式
539 への変換を最初に行ったのは、Franc,ois Pinard である。Karl Berry が索引を
540 作成し、構成に若干の変更を加えて、その結果に手を入れた。Free Software
541 Foundation の職員である Brian Youman が textutils, fileutils, sh-utils
542 のマニュアルを統合し、多数の項目を含む現在のマニュアルを作成した。こうした
543 作業全般に渡って、Richard Stallman が例によって洞察力に富む貴重な意見を
547 File: coreutils-ja.info, Node: Common options, Next: Output of entire files, Prev: Introduction, Up: Top
550 ***********************
552 いくつかのオプションは、このマニュアルで取り上げるすべてのプログラムで
553 利用することができる。そうしたオプションについては、個々のプログラムで
554 同じ説明を繰り返すことはせず、この場で説明しておく (実のところ、こうした
555 オプションは、GNU のすべてのプログラムで使用できる (はずである))。
557 通常、オプションとオペランドは、どんな順番で指定してもよい。プログ
558 ラムは、すべてのオプションがいかなるオペランドよりも前にあるかのごとく
559 振る舞うようになっている。たとえば、`sort -r passwd -t :' は、`:' が
560 `-t' のオプション引数 (option-argument) なので、`sort -r -t : passwd'
561 と同じ動作をする。しかしながら、環境変数 `POSIXLY_CORRECT' が設定されて
562 いる場合は、オプションはオペランドの前に置かなければならない。ただし、
563 オプションとオペランドの順番について、そのコマンドに別の決まりがある
566 若干のプログラムでは、二番目以降のオペランドとして先頭に `-' が付く
567 オペランドが使えると都合がよい。そうしたプログラムでは、`POSIXLY_CORRECT'
568 が設定されていない場合でも、オプションをオペランドの前に置く必要がある。
569 そこで、そうしたプログラムの説明には、その旨注意書きを付けておいた。
570 たとえば、`env' コマンドのオプションは、オペランドの前に置かなければ
571 ならない。オペランドとして指定したコマンドが、それ自身のオプションを
574 ロングオプションが使えるたいていのプログラムは、誤解の余地がない
575 かぎり、そうしたオプションの省略形を認識する。たとえば、`rmdir
576 --ignore-fail-on-non-empty' は、`rmdir --ignore-fail' という形でも
577 起動できるし、`rmdir --i' でも大丈夫だ。`ls --h' のような誤解の余地の
578 あるオプションは、まさに曖昧だと判定される。
580 このマニュアルで説明するプログラムの中には、`--help' や `--version'
581 オプションを、それが唯一のコマンドライン引数である場合にしか、認識
582 しないものがある。そうしたプログラムの場合、ロングオプションの省略形
586 使用法を表示して利用できるすべてのオプションを列挙し、正常終了する。
592 オプション群の末尾を示す。これ以降に引数があれば、それが `-' で
593 始まっている場合でも、オペランドとして扱われる。たとえば、`sort --
594 -r' は、`-r' という名前のファイルから読み込むということである。
597 単独の `-' はオペランドであって、オプションのように見えるが、オプ
598 ションでは全くない。単独の `-' は、標準入力、または標準出力を表して
599 いる。後者は、前後の状況からそれが明らかな場合だ。たとえば、`sort -'
600 は、標準入力から読み込むということであり、ただの `sort' と同じである。
601 また、`tee -' は、入力したもののコピーを標準出力に二重に書き出す。使用
602 できないとはっきり断っていないかぎり、`-' は、ファイル名が要求される
603 いかなるところでもオペランドとして使用することができる。
607 * Exit status:: プログラムが成功したか失敗したかの指標。
608 * Backup options:: バックアップ・オプション (-b と -S)。
609 * Block size:: ブロックサイズ (BLOCK_SIZE と --block-size)。
610 * Floating point:: 浮動小数点数の表現。
611 * Signal specifications:: --signal オプションによるシグナルの指定。
612 * Disambiguating names and IDs:: chgrp や chown のシンタクス。
613 * Random sources:: ランダムデータのソース (--random-source)。
614 * Target directory:: 出力先ディレクトリの指定。
615 * Trailing slashes:: 末尾のスラッシュ (--strip-trailing-slashes)。
616 * Traversing symlinks:: シムリンクをたどる (-H, -L, -P)。
617 * Treating / specially:: --preserve-root や --no-preserve-root の使用。
618 * Special built-in utilities:: 組み込みコマンド `break', `:' など。
619 * Standards conformance:: POSIX 規格への準拠。
622 File: coreutils-ja.info, Node: Exit status, Next: Backup options, Up: Common options
625 =========================
627 ほとんどすべてのコマンドは、実行すると、整数の終了ステータス ("exit
628 status") を返し、それは他のコマンドの動作を変更するために使用することが
629 できる。大多数のコマンドにとって、終了ステータス `0' は成功を意味して
630 いる。失敗は `0' 以外の値によって示され、通常は `1' であるが、非標準的な
631 プラットフォームでは違うこともある。POSIX の規定が、`0' 以外であること
634 しかしながら、ここで詳述しているプログラムの中にも、終了ステータスと
635 して上記以外の値を返すものがあり、`0' や `1' という値に別の意味を与えて
636 いるプログラムさえ、少数ながら存在する。そうした例外的なプログラムとして
637 は、`chroot', `env', `expr', `nice', `nohup', `numfmt', `printenv',
638 `sort', `stdbuf', `test', `timeout', `tty' などを挙げることができる。
641 File: coreutils-ja.info, Node: Backup options, Next: Block size, Prev: Exit status, Up: Common options
644 ========================================
646 GNU のプログラムの中には、ファイルの新しいバージョンを書き出す前に、
647 もしそうしたければ、バックアップを作成できるものがある (少なくとも
648 `cp', `install', `ln', `mv' がそうだ)。下記のオプションは、そうした
649 バックアップを細かく制御する。こうしたオプションについては、個々の
654 通常では上書きされたり、消去されたりする各ファイルのバックアップを
655 作成する。このオプションを指定しないと、元のバージョンは破棄される
656 わけだ。作成するバックアップのタイプを決めるには、METHOD を使用
657 する。METHOD を指定せずに、このオプションを使った場合は、環境変数
658 `VERSION_CONTROL' の値が使用される。`VERSION_CONTROL' が設定されて
659 いない場合、デフォルトのバックアップタイプは `existing' である。
661 このオプションの短縮形である `-b' は、引数を取らないことに注意して
662 いただきたい。`-b' の使用は、`--backup=existing' を使用するのと
665 このオプションは、Emacs の `version-control' 変数に対応している。
666 すなわち、METHOD に指定する値は、Emacs で使用される値と同じもの
667 である。とは言え、このオプションでは、より説明的な名前も使用できる。
668 METHOD の有効な値は、以下のものである (他と区別できるならば、省略
677 どんな場合でも番号付きのバックアップを作成する。
681 番号付きのバックアップがすでに存在する場合は番号付きで、それ
682 以外の場合は単純形式で、ファイルのバックアップを作成する。
683 (訳注: 単純形式というのは、バックアップファイル名に番号を付け
684 ない形式である、`--suffix=SUFFIX' の説明を参照。)
688 どんな場合でも単純形式のバックアップを作成する。`never' と
689 `none' を混同なさらないようにしていただきたい。
694 `-b' で作成される各バックアップファイルの名前の末尾に SUFFIX を
695 付ける。このオプションが指定されていない場合は、環境変数
696 `SIMPLE_BACKUP_SUFFIX' の値が使用される。`SIMPLE_BACKUP_SUFFIX'
697 が設定されていない場合、デフォルトの SUFFIX は Emacs の場合と
702 File: coreutils-ja.info, Node: Block size, Next: Floating point, Prev: Backup options, Up: Common options
705 =========================
707 GNU プログラムには、ディスクの使用量を「ブロック数」で表示するものが
708 いくつかある (少なくとも、`df', `du',`ls' がそうだ)。ブロックのサイズや
709 表示の書式は、使用量をわかりやすくするために、変更することができる。
710 表示に使用されるブロックサイズは、ファイルシステムのブロックサイズとは、
711 無関係である。ブロック数に端数が出る場合は、切り上げて整数にする。
713 デフォルトのブロックサイズの選択は、次の環境変数を順番に調べることで
714 行われる。設定されている最初のものがブロックサイズを決めることになる。
717 この環境変数は、`df' コマンドで使うデフォルトのブロックサイズを
718 指定している。同様に、`DU_BLOCK_SIZE' は `du' のデフォルトを、
719 `LS_BLOCK_SIZE' は `ls' のデフォルトを指定している。
722 この環境変数は、上記のようなコマンド専用の環境変数が設定されて
723 いない場合に、三つのコマンドのすべてが使用するデフォルトの
727 この環境変数は、上記のようなコマンド専用の環境変数と `BLOCK_SIZE'
728 のどちらも設定されていない場合に、通常、ブロック数として表示される
729 すべての値が使用するデフォルトのブロックサイズを指定している。
730 ほかの環境変数とは違って、`BLOCKSIZE' は、たとえば `ls -l' の出力に
731 含まれるファイルサイズのような、通常バイト数として表示される値には
735 `COMMAND_BLOCK_SIZE', `BLOCK_SIZE', `BLOCKSIZE' のいづれも
736 設定されていず、この変数が設定されている場合は、ブロックサイズの
740 上記の環境変数のいづれも設定されていない場合、ブロックサイズの
741 デフォルトは、現在のところたいていの場合、 1024 バイトである。ただし、
742 この数値は、将来変更されるかもしれない。なお、`ls' の表示するファイル
743 サイズについては、ブロックサイズのデフォルトは 1 バイトである。
745 ブロックサイズの指定には、1 ブロックあたりのバイト数を示す正の整数を
746 使えばよい。あるいは、`human-readable' や `si' を指定して、「人間に読み
747 やすい」書式を選ぶこともできる。整数には接尾辞 (suffix) を付けることが
748 できるが、そうした接尾辞は、`10' の累乗倍 (訳注: 10^3 倍、10^6 倍など)
749 を示す場合は、SI (国際単位系) の単位の前に付ける接頭辞 (prefix) の上位
750 互換であり、`2' の累乗倍 (訳注: 2^10 倍、2^20 倍など) を示す場合は、
751 ISO/IEC 80000-13 (以前は IEC 60027-2 だった) の接頭辞の上位互換である。
752 単位の前に付ける接頭辞については、次の URL を参照していただきたい。
754 (http://www.bipm.org/en/si/si_brochure/chapter3/prefixes.html).
755 ISO/IEC 80000-13 prefixes:
756 (http://physics.nist.gov/cuu/Units/binary.html).
758 「人間に読みやすい」書式の場合、出力するサイズの後ろに、メガバイト
759 なら `M' といった、大きさを表す文字が続く。`BLOCK_SIZE=human-readable'
760 の方は、1024 の累乗を使うので、`M' は 1,048,576 バイトを意味している。
761 `BLOCK_SIZE=si' も似ているが、こちらは 1000 の累乗を使用し、さらに `B'
762 という文字を追加する。そこで、`MB' は 1,000,000 バイトを意味すること
765 ブロックサイズの指定の先頭に `'' を付けると、出力するサイズを数桁
766 ごとに区切って表示することができる。区切りに使う記号や区切りの位置は、
767 `LC_NUMERIC' のロケールによって決まる。たとえば、アメリカ英語のロケール
768 では、`--block-size="'1kB"' と指定すれば、1234000 バイトという容量が
769 `1,234' と表示されることになるだろう。デフォルトの C ロケールの場合は、
770 区切り記号が存在しないので、先頭の `'' に効果はない。
772 ブロックサイズを指定する整数の後ろには、接尾辞を付けて、その整数の
773 何倍かを示すことができる。大きさを表す (訳注: M, G などの) 文字の後ろに
774 何も続けないときや、`iB' を続けるときは、1024 の累乗倍ということである。
775 それに対して、大きさを表す文字に `B' を続ける場合は、1000 の累乗倍
776 ということになる。たとえば、`1M' や `1MiB' は `1048576' と同じであり、
777 `1MB' は `1000000' と同じである。
779 整数を前に付けずに、接尾辞だけを指定したときの動作は、`1' が前に
780 付いているときとほぼ同じだが、大きさの表示が出力の後ろに付く点が違う。
781 たとえば、`--block-size="kB"' は、3000 を `3kB' という形で表示する。
783 以下の接尾辞が定義されている。`1Y' のような大きな量は、算術計算の
784 限界のためにお使いのコンピュータでは使用できないかもしれない。
787 キロバイト (kilobyte): 10^3 = 1000 バイト。
792 キビバイト (kibibyte): 2^10 = 1024 バイト。`K' も使えるのは、おまけ
793 である。なお本来、SI の接頭辞 (訳注: すなわち 10^3 倍を表す接頭辞)
794 が `k' であり、ISO/IEC 80000-13 の接頭辞 (訳注: すなわち 2^10 倍を
795 表す接頭辞) が `Ki' だが、これまでの習慣や POSIX の用法では、`KiB'
799 メガバイト (megabyte): 10^6 = 1,000,000 バイト。
803 メビバイト (mebibyte): 2^20 = 1,048,576 バイト。
806 ギガバイト (gigabyte): 10^9 = 1,000,000,000 バイト。
810 ギビバイト (gibibyte): 2^30 = 1,073,741,824 バイト。
813 テラバイト (terabyte): 10^12 = 1,000,000,000,000 バイト。
817 テビバイト (tebibyte): 2^40 = 1,099,511,627,776 バイト。
820 ペタバイト (petabyte): 10^15 = 1,000,000,000,000,000 バイト。
824 ペビバイト (pebibyte): 2^50 = 1,125,899,906,842,624 バイト。
827 エクサバイト (exabyte): 10^18 = 1,000,000,000,000,000,000 バイト。
831 エクスビバイト (exbibyte): 2^60 = 1,152,921,504,606,846,976
835 ゼタバイト (zettabyte): 10^21 = 1,000,000,000,000,000,000,000
840 ゼビバイト (zebibyte): 2^70 = 1,180,591,620,717,411,303,424
844 ヨタバイト (yottabyte): 10^24 = 1,000,000,000,000,000,000,000,000
849 ヨビバイト (yobibyte): 2^80 = 1,208,925,819,614,629,174,706,176
852 デフォルトのブロックサイズは、コマンドに対して `--block-size=SIZE'
853 オプションを明示的に指定することで、上書きすることができる。`-k'
854 オプションは、`--block-size=1K' と同じであり、環境変数 `POSIXLY_CORRECT'
855 が設定されていないときのデフォルトである。`-h' オプションや `--human
856 -readable' オプションは、`--block-size=human-readable' と同じである。
857 `--si' オプションは、`--block-size=si' と同じだ。なお、`ls' コマンドの
858 場合、`-k' オプションはファイルの見かけのサイズの表示に影響しないのに
859 対し、`--block-size' オプションは影響することに注意していただきたい。
862 File: coreutils-ja.info, Node: Floating point, Next: Signal specifications, Prev: Block size, Up: Common options
865 ======================
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) をご覧になるとよい。
878 浮動小数点数をオプションやオペランドや入力として受け取るコマンドは、
879 C の標準関数 `strtod' や `strtold' を使って、テキストを浮動小数点数に
880 変換している。従って、そうした浮動小数点数には、`1.0e-34' や `-10e100'
881 といった指数表現が使用できる。最近の C の実装では、16 進の浮動小数点数
882 も使える。たとえば、`-0x.ep-3' といったものだが、これは -14/16 掛ける
883 2^-3 を表し、-0.109375 に等しい。小数点を表す記号が何になるかは、
884 `LC_NUMERIC' のロケールによって決まる。*Note Parsing of Floats:
885 (libc)Parsing of Floats.
888 File: coreutils-ja.info, Node: Signal specifications, Next: Disambiguating names and IDs, Prev: Floating point, Up: Common options
891 =========================
893 SIGNAL の指定には、`HUP' のようなシグナル名や `1' のようなシグナル番号、
894 それに、シグナルによって終了させられるときのプロセスの終了ステータスを
895 使うことができる (訳注: 最後のものは、GNU coreutils の `kill' コマンド
896 では使用できるが、シェルの組み込みコマンドのような、他の系統の `kill'
897 では使えないかもしれない)。シグナル名は、標準的な形式でも、頭に `SIG'
898 を付けた形式でも構わない。大文字小文字は区別されない。以下に挙げる
899 シグナル名とシグナル番号は、POSIX の規格に従っているすべてのシステムで
906 2. 端末からの割り込みシグナル (Terminal interrupt)。
909 3. 端末からの中止シグナル (Terminal quit)。
912 6. プロセスの中断 (Process abort)。
915 9. 強制終了 (Kill) (キャッチすることも無視することもできない)。
918 14. アラームクロック (Alarm Clock)。
921 15. 終了 (Termination)。
923 これ以外にもサポートされているシグナル名があるが、それに対応する
924 シグナル番号はシステムによって様々である。POSIX 1003.1-2001
925 に準拠しているすべてのシステムでは、以下のシグナルも使用できる。
928 メモリオブジェクトの未定義領域へのアクセス。
931 チャイルドプロセスが終了 (terminate)、一時停止 (stop)、または再開
935 実行が停止 (stop) しているならば、再開 (continue) する。
950 実行を一時停止する (stop) (キャッチすることも無視することも
957 バックグラウンドプロセスが端末から読み込もうとしている。
960 バックグラウンドプロセスが端末へ書き出そうとしている。
971 XSI 拡張に対応している POSIX 1003.1-2001 のシステムでは、以下の
978 プロファイリング・タイマーがタイムアウトした。
984 Trace/breakpoint トラップ。
995 XRT 拡張に対応している POSIX 1003.1-2001 のシステムでは、上記以外にも、
996 少なくとも 8 個のリアルタイム・シグナルが使用できる。すなわち、`RTMIN',
997 `RTMIN+1', ..., `RTMAX-1', `RTMAX' などだ。
1000 File: coreutils-ja.info, Node: Disambiguating names and IDs, Next: Random sources, Prev: Signal specifications, Up: Common options
1002 2.6 chown と chgrp: ユーザ名かユーザ ID かを明確にする
1003 ======================================================================
1005 `chown' や `chgrp' コマンドでは、引数として OWNER や GROUP を渡す際に
1006 名前で指定しても、ID 番号で指定してもよい。この指定法が曖昧であること
1007 は明らかである。もし、ユーザ名やグループ名が数字の連続だったら、どう
1008 だろう? (1) コマンドはそれをユーザ名と解釈すべきだろうか? ID 番号と
1009 解釈すべきだろうか? POSIX では、「`chown' や `chgrp' は、指定された
1010 文字列をまず名前として解決することを試み、それに失敗した場合のみ、ID
1011 番号として解釈しようとすること」と規定している。この規定では、ユーザが
1012 引数として ID 番号、たとえば 42 を指定しようとすると、厄介なことになる。
1013 42 というユーザ名が存在し、それにユーザ ID として別の数字、たとえば
1014 1000 が割り当てられているといったややこしい状況でも、うまく処理でき
1015 なければならないとすると、困ったことになるのだ。単に `chown 42 F' を
1016 実行したのでは、ファイル `F' の所有者の ID 番号が 1000 になってしまう。
1019 GNU の `chown' や `chgrp' は、この問題に対する回避策を提供している。
1020 この回避策を使用すると、データベースの検索を省略するので、処理速度が
1021 著しく向上することがあるというおまけまである。ユーザ ID 番号やグループ
1022 ID 番号を指定する際には、その前に `+' を付けさえすればよいのだ。そうする
1023 ことで、整数として解釈するように強制できるのである。
1026 chgrp +$numeric_group_id another-file
1029 GNU の `chown' や `chgrp' は、`+' が前に付く各文字列に対してユーザ名
1030 の検索プロセスを省略する。何故なら、`+' を含む文字列が有効なユーザ名や
1031 グループ名であることは絶対にないからだ。この書き方は、よく使われている
1032 たいていの Unix システムで使用できるが、Solaris 10 では使用できない。
1034 ---------- Footnotes ----------
1036 (1) 環境によっては、ユーザ名に数字を使うのは、よくあることである。
1039 File: coreutils-ja.info, Node: Random sources, Next: Target directory, Prev: Disambiguating names and IDs, Up: Common options
1042 =====================================
1044 `shuf', `shred', `sort' コマンドは、作業を行うためにランダムデータを
1045 必要とすることがある。たとえば、`sort -R' ではハッシュ関数をランダムに
1046 選ばねばならず、その選択のためにランダムデータを必要としている。
1048 デフォルトでは、こうしたコマンドは、プログラム内部の擬似乱数ジェネ
1049 レータを、少量のエントロピーによって初期化して使用するが、
1050 `--random-source=FILE' オプションで、外部ソースを使うように指示すること
1051 も可能だ。FILE の中身のバイト数が不十分なときは、エラーが通知される。
1053 たとえば、デバイスファイル `/dev/urandom' を、ランダムデータのソース
1054 として使用してもよい。通常、このデバイスは、デバイスドライバーなどのソース
1055 から環境ノイズを集めて、エントロピー・プールに入れ、そのプールを使って、
1056 ランダムなビットを生成する。プールにデータが足りない場合は、内部プールを
1057 再利用し、暗号的に安全な擬似乱数ジェネレータを使って、より多くのビットを
1058 作り出す。とは言え、このデバイスは、大量のランダムデータの生成のために
1059 設計されたものではなく、比較的動作が遅いことは、承知しておいた方がよい。
1061 たいていの実用には、`/dev/urandom' で十分だが、プライベートなデータの
1062 高度で長期に渡る保護が必要になるアプリケーションでは、`/dev/random' や
1063 `/dev/arandom' のような他のデータソースが必要になるかもしれない。どんな
1064 データソースが利用できるかは、ご使用のオペレーティング・システム次第である。
1066 前回コマンドを実行したときの結果を再現するには、何らかのランダム
1067 データをファイルに保存しておき、そのコマンドの一回目の実行でも二回目
1068 の実行でも、ランダムソースとしてそのファイルを使用すればよい。
1071 File: coreutils-ja.info, Node: Target directory, Next: Trailing slashes, Prev: Random sources, Up: Common options
1074 ===============================
1076 通常、`cp', `install', `ln', `mv' といったコマンドは、最後のオペランドが
1077 ディレクトリやディレクトリへのシンボリックリンクの場合、それを特別
1078 扱いする。たとえば、`cp source dest' は、`dest' がディレクトリならば、
1079 `cp source dest/source' と同じことである。時には、そうした動作が、
1080 ユーザが求めている動作とは違うこともある。そこで、こうしたコマンドは、
1081 よりきめ細かな制御ができるように、以下のオプションをサポートしている。
1084 `--no-target-directory'
1085 最後のオペランドが、ディレクトリやディレクトリへのシンボリック
1086 リンクであっても、それを特別扱いしない。このオプションは、共有領域
1087 で作業する複数のプログラムが、競合状態にならないようにしてくれる。
1088 たとえば、`mv /tmp/source /tmp/dest' というコマンドが正常終了して
1089 も、`/tmp/source' が `/tmp/dest' にリネームされたという保証はない。
1090 もし、何かほかのプロセスが `/tmp/dest' をディレクトリとして作成して
1091 いたら、`/tmp/dest/source' という名前のファイルになってしまうかも
1092 しれないのだ。それに対して、`mv -T /tmp/source /tmp/dest' が正常
1093 終了した場合は、`/tmp/source' は間違いなく `/tmp/dest' にリネーム
1096 反対に、最後のオペランドをディレクトリとして扱わせたい、それが
1097 できない場合は、エラーメッセージを出したい、ということもある。
1098 そういうときは、`--target-directory' (`-t') オプションを使用すれば
1099 よい。(訳注: ターゲット・ディレクトリをコマンドラインの最後に置く
1100 代わりに、`--target-directory' オプションの引数にするということ
1104 `--target-directory=DIRECTORY'
1105 DIRECTORY を、出力されるファイルすべてのディレクトリ部分として
1108 ほとんどのプログラムで、コマンドラインの扱いは次のようになって
1109 いる。オプションや、一定数の (0 個のこともある) 位置の固定した
1110 引数の処理が終われば、引数リストにはもう何も残っていないか、
1111 残っているとすれば、それはすべて同じように処理されることになる
1112 項目 (通常はファイル) のリストのはずある。`xargs' プログラムは、
1113 こうした約束ごとに沿ってうまく動くように作られている。
1115 `mv' ファミリーのコマンドが変わっているのは、引数の数が不定であり、
1116 しかも最後の引数を特別扱いするという点である (すなわちターゲット・
1117 ディレクトリとして扱う)。そのため、ある種の作業の実行は、一筋縄では
1118 いかない。たとえば、「すべてのファイルをここから ../d/ に移動する」
1119 がそうだ。何故なら、`mv * ../d/' では、引数を入れておくための領域を
1120 使い切ってしまうかもしれないし、そうかと言って、`ls | xargs ...'
1121 には、実行対象コマンド (訳注: ここでは、`mv') を起動するたびに
1122 最後の引数を特別に指定するためのすっきりした方法がないからである。
1123 (あるシェル・コマンドを駆使すれば、やることができるが、それでは、
1124 人間の労力と脳力を過当に要求することになる。)
1126 `--target-directory' (`-t') オプションを使用すると、`cp', `mv',
1127 `ln', `install' といったプログラムを `xargs' と一緒に使うとき、
1128 たいへん都合がよい。たとえば、カレントディレクトリから、同じディ
1129 レクトリ階層にある `d' ディレクトリへファイルを移動するには、
1132 ls | xargs mv -t ../d --
1134 しかし、これでは、ファイル名の先頭に `.' の付くファイルが移動しな
1135 い。GNU `find' プログラムを使用しているなら、次のコマンドでそうした
1138 find . -mindepth 1 -maxdepth 1 \
1141 とは言え、上記のどちらの方法も、カレントディレクトリにファイルが
1142 一つもない場合や、空白などの特殊文字を名前に含むファイルがある場合
1143 には、うまく行かない。次の例はそうした制限を一掃しているが、GNU
1144 `find' と GNU `xargs' の両方が必要である。
1146 find . -mindepth 1 -maxdepth 1 -print0 \
1147 | xargs --null --no-run-if-empty \
1151 `--target-directory' (`-t') オプションと `--no-target-directory' (`-T')
1155 File: coreutils-ja.info, Node: Trailing slashes, Next: Traversing symlinks, Prev: Target directory, Up: Common options
1158 ============================
1160 いくつかの GNU プログラム (少なくとも、`cp' と `mv') では、SOURCE 引数を
1161 処理する前に、その引数の末尾にスラッシュが付いていたら、それを除去する
1162 ことができるようになっている。`--strip-trailing-slashes' オプションを
1163 使用することによって、この動作が有効になる。
1165 これが役に立つのは、SOURCE 引数の末尾にスラッシュが付いていて、
1166 しかも、その引数がディレクトリへのシンボリックリンクを指定している
1167 かもしれないときだ。そうした状況は、実のところ、それほど珍しくない。
1168 と言うのも、シェルの中には、そうしたシンボリックリンクに対して
1169 ファイル名の補完を行うとき、末尾にスラッシュを自動的に付加するものが
1170 あるからだ。このオプションを指定しないと、たとえば `mv' は、(システムの
1171 rename 関数を通してだが、) 末尾にスラッシュが付いていることを、「シン
1172 ボリックリンクの参照をたどれ」という指示として解釈しなければならず、
1173 その結果、シンボリックリンクではなく、間接的に参照されているディレク
1174 トリの方をリネームしなければならなくなる。こうした動作がデフォルトに
1175 なっているのは意外に思えるかもしれないが、POSIX で要求されている動作
1176 であり、POSIX 規格のほかの部分とも首尾一貫している。
1179 File: coreutils-ja.info, Node: Traversing symlinks, Next: Treating / specially, Prev: Trailing slashes, Up: Common options
1182 ============================================
1184 以下のオプションは、`--recursive' (`-R') オプションも同時に指定されて
1185 いるとき、`chown' コマンドや `chgrp' コマンドがディレクトリ階層をどう
1186 たどるか、そのたどり方を変更する。以下のオプションを複数個指定した
1187 場合は、最後に指定したものだけが効果を持つ。こうしたオプションが指定
1188 しているのは、ディレクトリに対するシンボリックリンクを処理する際に、
1189 そのシンボリックリンクそのものを操作の対象にするのか、それとも、その
1190 ディレクトリ以下の階層にあるすべてのファイルを操作の対象にするのかと
1193 こうしたオプションは、`--dereference' や `--no-dereference' (`-h')
1194 とは、全く別のものである。あちらは、シンボリックリンクを変更するのか、
1195 それとも、その参照先を変更するのかを制御している。
1198 `--recursive' (`-R') オプションが指定されている場合に、コマンド
1199 ラインで指定された引数がディレクトリへのシンボリックリンクならば、
1203 ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
1204 リックリンクに出会ったら、必ずそれをたどる。
1207 シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
1208 どれも指定されていないときの、デフォルトである。
1212 File: coreutils-ja.info, Node: Treating / specially, Next: Special built-in utilities, Prev: Traversing symlinks, Up: Common options
1214 2.11 `/' (ルート) を特別扱いする
1215 ==========================================
1217 ある種のコマンドは、ディレクトリ階層全体に対して破壊的な作用を及ぼす
1218 可能性がある。たとえば、しかるべき特権を持ったユーザが、間違えて `rm
1219 -rf / tmp/junk' を実行したら、システム全体のすべてのファイルが消えて
1220 しまうかもしれないのだ。そうしたコマンドの使用が正当であることは、
1221 めったにないので、GNU の `rm' は、`/' に還元されるようないかなる
1222 ディレクトリに対しても、通常では、操作を拒否するようになっている。
1223 もし、本当にシステムのすべてのファイルを消去しようと思うのなら、
1224 `--no-preserve-root' オプションを使用すればよい。とは言え、ほとんどの
1225 用途で、デフォルトの動作 (明示的に指定するには、`--preserve-root'
1228 `chgrp', `chmod', `chown' などのコマンドも、ディレクトリ階層全体に
1229 対して破壊的な作用を及ぼす可能性がある。従って、こうしたコマンドもまた、
1230 上記のオプションをサポートしている。こうしたコマンドは、`rm' とは
1231 違って、ファイルを実際に削除してしまうわけではないが、`/' から再帰的に
1232 働くときは、一層危険だと言うこともできる。と言うのは、たいていの場合、
1233 処理速度がずっと早いので、注意力のあるユーザがコマンドを中断できるより
1234 前に、`rm' の場合より、もっと多くのファイルに被害を与えてしまうからだ。
1235 Unix の習慣も POSIX の規格も、こうしたコマンドが `/' から再帰的に働く
1236 ことを要求している。それ故、デフォルトが `--no-preserve-root' になって
1237 いるのだが、こうしたコマンドは、`--preserve-root' オプションを使った方
1238 が、ほとんどの用途でより安全である。面倒ならば、エイリアスか、シェル関数
1239 を作って、`--preserve-root' を指定しておけばよいのだ。
1241 また、`--preserve-root' を指定すると、`/' を指しているシンボリック
1242 リンクの参照をたどる場合でも、`chgrp' や `chown' が、`/' のグループや
1243 所有者を変更しなくなることも、憶えておいていただきたい。(訳注: `chgrp'
1244 や `chown' の解説を見ていただけばわかるが、これは、`--recursive' (`-R')
1248 File: coreutils-ja.info, Node: Special built-in utilities, Next: Standards conformance, Prev: Treating / specially, Up: Common options
1250 2.12 特殊ビルトイン・ユーティリティ
1251 ==================================================
1253 プログラムの中には、`nice' のように、ほかのプログラムを起動できるものが
1254 ある。たとえば、`nice cat file' というコマンドは、コマンド `cat file' を
1255 実行することによって、`cat' プログラムを起動する。しかしながら、`exit'
1256 のような特殊ビルトイン・ユーティリティ ("special built-in utilities")
1257 は、この方法で起動することができない。一例を挙げれば、`nice exit' と
1258 いうコマンドは、どんな動作をするかが明確に定義されていない。終了する
1259 代わりに、エラーメッセージを出すかもしれないのだ。
1261 POSIX 1003.1-2004 の規格では、特殊ビルトイン・ユーティリティとして
1264 . : break continue eval exec exit export readonly return set shift
1267 たとえば、`.', `:', `exec' は、特殊ビルトイン・ユーティリティなので、
1268 `nice . foo.sh', `nice :', `nice exec pwd' といったコマンドの動作は、
1269 読者が予想なさるかもしれないようなものにはならない。
1271 (訳注: exec, exit など対して、同じシェルの組み込みコマンドでも、cd,
1272 alias, fg, kill, pwd, true, umask などは、通常ビルトイン・ユーティリティ
1273 ("regular built-in utilities") と呼ばれている。もっとも、nice などから
1274 実行できないという点では、特殊ビルトイン・ユーティリティも通常ビルト
1275 イン・ユーティリティも変わりがない。nice などから起動できるとすれば、
1276 それは同名の実行ファイルが存在するからだ)。
1278 多くのシェルは、上記のリストを拡張している。たとえば、bash では、
1279 `history' や `suspend' といったコマンドが特殊ビルトイン・ユーティリティ
1280 に追加されている。そこで、bash の場合、`nice suspend' というコマンドを
1281 実行すると、シェルのサスペンドは起こらず、エラーメッセージが出力される。
1284 File: coreutils-ja.info, Node: Standards conformance, Prev: Special built-in utilities, Up: Common options
1287 =======================
1289 GNU ユーティリティのデフォルトの動作が POSIX の規格と一致しない場合
1290 が、若干ながら存在する。そうした非互換性を抑制するには、環境変数
1291 `POSIXLY_CORRECT' を設定すればよい。もっとも、POSIX に準拠しているか
1292 否かを点検しているのでもないかぎり、`POSIXLY_CORRECT' を設定する必要は、
1295 POSIX の新しいバージョンが、古いバージョンと非互換であることが、
1296 ときどきある。たとえば、POSIX の昔のバージョンでは、`sort +1' という
1297 コマンドは、各入力行の二番目以後のフィールドに基づいて、行の並べ替えを
1298 行うことになっていた。ところが、POSIX 1003.1-2001 以降では、同じコマンド
1299 が `+1' という名前のファイルの行を並べ替えることになっている。そこで、
1300 フィールドに基づいた並べ替えを行うには、`sort -k 2' という別のコマンド
1303 通常 GNU のユーティリティは、お使いのシステムが規格として採用して
1304 いる POSIX のバージョンに従っている。GNU ユーティリティを POSIX の別の
1305 バージョンに準拠させるには、環境変数 `_POSIX2_VERSION' を設定すれば
1306 よい。この環境変数の値は、YYYYMM という形式であり、その規格が何年の
1307 何月に採択されたかを示している。`_POSIX2_VERSION' の値としては、現在
1308 のところ、次の三つがサポートされている。すなわち、`199209', `200112',
1309 `200809' であり、それぞれ POSIX 1003.2-1992, POSIX 1003.1-2001, POSIX
1310 1003.1-2008 を表している。一例を挙げよう。使っているシステムが比較的
1311 新しいのに、動かしているソフトウェアが POSIX の昔のバージョンを前提と
1312 していて、`sort +1' や `tail +10' を使用している場合は、環境に
1313 `_POSIX2_VERSION=199209' を設定することで、互換性の問題を回避する
1317 File: coreutils-ja.info, Node: Output of entire files, Next: Formatting file contents, Prev: Common options, Up: Top
1320 *****************************
1322 次のコマンドはファイル全体を読み込んで、書き出す。内容に対して何らかの
1327 * cat invocation:: ファイルを結合して、書き出す。
1328 * tac invocation:: ファイルを結合し、ファイルごとに逆順で書き出す。
1329 * nl invocation:: 行番号を付けて、ファイルを書き出す。
1330 * od invocation:: ファイルを 8 進数などの形式で書き出す。
1331 * base64 invocation:: データを ASCII 文字で表示可能なデータに変換する。
1334 File: coreutils-ja.info, Node: cat invocation, Next: tac invocation, Up: Output of entire files
1336 3.1 `cat': ファイルを結合して、書き出す
1337 =====================================================
1339 `cat' は、各 FILE (`-' は標準入力を意味する) を標準出力にコピーする。
1340 FILE が一つも指定されていない場合は、標準入力から読み込む。
1344 cat [OPTION] [FILE]...
1346 このプログラムでは以下のオプションが使用できる。参照: *note Common
1355 空行以外のすべての出力行に、1 から始まる番号を付ける。
1366 すべての出力行に、1 から始まる番号を付ける。このオプションは、`-b'
1371 連続する空行の表示を抑制する。すなわち、連続する複数の空行の代わりに、
1382 無視される。POSIX との互換のためにある。
1385 `--show-nonprinting'
1386 LFD と TAB 以外の制御文字を `^' 表記を使って表示する。高位ビットの
1387 セットされている文字の前には、`M-' を付ける。
1390 テキストファイルとバイナリファイルを区別する MS-DOS のようなシステム
1391 では、`cat' は通常、バイナリモードで読み書きを行う。しかしながら、
1392 `-bensAE' といったオプションの一つが使われている場合や、読み込みの
1393 対象が標準入力で、しかも、標準入力が端末である場合は、`cat' はテキスト
1394 モードで読み込みを行う。同様に出力においても、`-bensAE' といったオプ
1395 ションの一つが使用されていたり、標準出力が端末である場合は、`cat' は
1398 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1402 # f の内容、標準入力、g の内容の順で出力する。
1409 File: coreutils-ja.info, Node: tac invocation, Next: nl invocation, Prev: cat invocation, Up: Output of entire files
1411 3.2 `tac': ファイルを結合し、ファイルごとに逆順で書き出す
1412 ================================================================================
1414 `tac' は、各 FILE (`-' は標準入力を意味する) を、FILE ごとにレコード
1415 (records、デフォルトでは行) の順番を逆にして、標準出力にコピーする。
1416 FILE が一つも指定されていない場合は、標準入力から読み込む。
1420 tac [OPTION]... [FILE]...
1422 レコード ("records") は、ある文字列 (デフォルトでは改行) が出現する
1423 ことによって区切られる。出力の際、デフォルトでは、この区切り文字列は、
1424 ファイル中でその区切り文字列の直前にあるレコードの末尾に付加される。
1426 このプログラムでは以下のオプションが使用できる。参照: *note Common
1431 出力の際、区切り文字列は、ファイル中でその区切り文字列の直後に来る
1439 `--separator=SEPARATOR'
1440 改行の代わりに、SEPARATOR をレコード区切り文字列 (record separator)
1444 テキストファイルとバイナリファイルを区別する MS-DOS のようなシステム
1445 では、`tac' はバイナリモードで読み書きを行う。
1447 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1455 File: coreutils-ja.info, Node: nl invocation, Next: od invocation, Prev: tac invocation, Up: Output of entire files
1457 3.3 `nl': 行番号を付けて、ファイルを書き出す
1458 =============================================================
1460 `nl' は、各 FILE (`-' は標準入力を意味する) を、全部の行、または、
1461 一部の行に行番号を付けて、標準出力に書き出す。FILE が一つも指定されて
1466 nl [OPTION]... [FILE]...
1468 `nl' は、入力されたものを (論理) ページに分解する。デフォルトでは、
1469 行番号は各論理ページの先頭で 1 にリセットされる。`nl' は、すべての
1470 入力ファイルをまとめて、一つのドキュメントとして扱う。従って、入力
1471 ファイルが変わるたびに、論理ページや行番号がリセットされることはない。
1473 論理ページは、三つのセクションからなる。すなわち、ヘッダ、本文、
1474 フッタである。どのセクションも空であって構わない。セクションごとに
1475 他のセクションとは異なる番号付けの方式を選ぶこともできる。
1477 入力ファイル中で論理ページの各セクションが始まる位置を指示するには、
1478 以下の区切り文字列の一つのみからなる行を使用する。
1489 上記の文字列を構成する二文字は、オプションを使って (下記参照)、`\'
1490 と `:' の組み合わせ以外のものに、変更することができる。だが、各文字列
1491 のパターンや長さは、変えることができない。
1493 セクションの区切りは、出力では空行に置き換えられる。入力ファイル中の
1494 最初のセクション区切り文字列より前にあるテキストは、いかなるテキストも、
1495 本文セクションの一部と見なされる。従って、`nl' は、セクションの区切りを
1496 全く含まないファイルを、一個の本文セクションとして扱う。
1498 このプログラムでは以下のオプションが使用できる。参照: *note Common
1502 `--body-numbering=STYLE'
1503 各論理ページの本文セクションにおける行の番号付けの方式を選択する。
1504 行に番号が付かない場合、行番号の現在値は増加しないが、それでも
1505 行番号の区切り文字は行の前に付く (訳注: ここで言う行番号の区切り
1506 文字 (line number separator character) とは、行番号とテキストの
1507 区切り文字ではなく、行番号を揃えるために行頭と行番号との間に
1508 置かれる空白のことらしい)。番号付けの方式には、以下のものがある。
1514 空ではない行にのみ番号を振る (本文のデフォルト)。
1517 行番号を付けない (ヘッダとフッタのデフォルト)。
1520 基本正規表現 BRE にマッチする部分を含む行にのみ番号を振る。
1521 *Note Regular Expressions: (grep)Regular Expressions.
1524 `--section-delimiter=CD'
1525 セクションの区切り文字を CD にする。デフォルトは `\:'。C のみを指定
1526 すると、二番目の文字は、デフォルトと同じ `:' になる。(`\' などの
1527 メタ文字は、シェルが展開しないように、引用符やバックスラッシュで保護
1531 `--footer-numbering=STYLE'
1532 `--body-numbering' と同様。
1535 `--header-numbering=STYLE'
1536 `--body-numbering' と同様。
1539 `--line-increment=NUMBER'
1540 行番号を NUMBER づつ増やす (デフォルトは 1)。
1543 `--join-blank-lines=NUMBER'
1544 空行にも番号を付けるとき、連続する NUMBER (デフォルトは 1) 行の
1545 空行を 1 論理行と数え、最後の空行にのみ番号を振る。連続する空行が
1546 NUMBER 行未満のときは、番号を振らない。空行というのは、文字を全く
1547 含まない、スペースやタブさえも含まない行のことである。
1550 `--number-format=FORMAT'
1551 行番号付けのフォーマットを選択する (デフォルトは `rn')。
1564 論理ページの先頭で行番号をリセットしない。
1567 `--number-separator=STRING'
1568 出力中で行番号とテキスト部分との区切りに STRING を使う (デフォルト
1572 `--starting-line-number=NUMBER'
1573 論理ページごとに行番号を NUMBER から始める (デフォルトは 1)。
1576 `--number-width=NUMBER'
1577 行番号に NUMBER 個の文字を使用する (デフォルトは 6 文字)。
1580 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1583 File: coreutils-ja.info, Node: od invocation, Next: base64 invocation, Prev: nl invocation, Up: Output of entire files
1585 3.4 `od': ファイルを 8 進数などの形式で書き出す
1586 ================================================================
1588 `od' は、各 FILE (`-' は標準入力を意味する) の内容を、曖昧さの余地がない
1589 形で標準出力に書き出す。FILE が一つも指定されていない場合は、標準入力
1594 od [OPTION]... [FILE]...
1595 od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
1596 od [OPTION]... --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
1598 各出力行の構成は、入力中の位置をオフセットで表したものの後に、
1599 ファイルのデータをいくつかのまとまりに分けたものが続くという形に
1600 なっている。デフォルトでは、`od' はオフセットを 8 進数で表示する。
1601 ファイル・データの個々のまとまりは、入力を C 言語の `short int' ごとに
1602 分けたものであり、1 個の 8 進数として表示される。
1604 OFFSET を指定した場合、それは、整形と出力を始める前に、入力を
1605 何バイト読み飛ばすかを示している。デフォルトでは、OFFSET は 8 進数と
1606 見なされるが、数字の後ろに小数点を付ければ、10 進数と見なされる。
1607 小数点が指定されず、オフセットの数字が `0x' や `0X' で始まっている場合
1608 は、16 進数として解釈される。もし、数字の後ろに `b' が付いているなら
1609 ば、読み飛ばすバイト数は、OFFSET に 512 を掛けたものになる。
1611 (訳注: 数字の後ろに小数点を付けることで OFFSET が 10 進数であること
1612 を示す方法は、現在では無効のようである。オフセットを 10 進数で指定した
1613 ければ、`-j' オプションを使用した方がよい。)
1615 コマンドが「書式」における第一の型と第二の型のどちらとも取れるとき
1616 は、最後のオペランドが `+' で始まっている場合や、オペランドが 2 個で 2
1617 番目のオペランドが数字で始まっている場合は、第二の型だと見なされる。
1618 たとえば、`od foo 10' や `od +10' では、`10' はオフセットである。
1619 それに対して、`od 10' では、`10' はファイル名である。
1621 このプログラムでは以下のオプションが使用できる。参照: *note Common
1625 `--address-radix=RADIX'
1626 ファイル・オフセットの表示に使う基数を選択する。RADIX には、
1644 `--skip-bytes=BYTES'
1645 整形と出力を行う前に、入力を BYTES バイト読み飛ばす。BYTES が `0x'
1646 や `0X' で始まっている場合は、16 進数と見なされる。`0' のみで
1647 始まっている場合は、8 進数だ。どちらでもない場合は、10 進数である。
1648 BYTES は、整数であり、 以下に挙げるような何倍かを示す接尾辞を
1649 後ろに付けることもできる。 接尾辞だけ指定してもよい (訳注:
1650 その場合は、1 が前にあるものと 見なされる)。
1651 `b' => 512 ("blocks")
1652 `KB' => 1000 (KiloBytes)
1653 `K' => 1024 (KibiBytes)
1654 `MB' => 1000*1000 (MegaBytes)
1655 `M' => 1024*1024 (MebiBytes)
1656 `GB' => 1000*1000*1000 (GigaBytes)
1657 `G' => 1024*1024*1024 (GibiBytes)
1658 `T', `P', `E', `Z', `Y' についても同様。
1661 `--read-bytes=BYTES'
1662 入力から最大で BYTES バイト出力する。`bytes' に接頭辞や接尾辞を
1663 付けると、`-j' オプションの場合と同じように解釈される。
1667 通常の出力はせず、文字列定数 ("string constants") のみを出力する。
1668 すなわち、BYTES バイト以上の連続する ASCII 表示文字で、ゼロバイト
1669 (ASCII NUL) が続くものを出力するわけだ。BYTES に接頭辞や接尾辞を
1670 付けると、`-j' オプションの場合と同じように解釈される。
1672 `--strings' に続く BYTES が省略された場合、デフォルトは 3 である。
1676 ファイルデータの出力形式を選択する。TYPE は、1 個以上の下記の形式
1677 指定文字からなる文字列である。一つの TYPE 文字列に複数の形式指定
1678 文字が含まれている場合や、このオプションを複数回使用した場合は、`od'
1679 は出力行ごとに、指定された各データ形式で表現したその行を、指定された
1682 どんな形式指定であれ、その最後に "z" を付けると、形式指定によって
1683 生成された出力行の後ろに、表示可能文字を 1 バイト文字によって表現
1687 文字の名称 (訳注: たとえば、A は A、改行文字は nl)。最上位
1691 表示可能な 1 バイト文字、C 言語のバックスラッシュ・
1692 エスケープ、あるいは 3 桁の 8 進数。
1698 浮動小数点数 (*note Floating point::)
1709 `a' 形式の出力では、空白文字は `sp'、改行文字は `nl'、ゼロバイトは
1710 `nul' といった具合に表現される。このとき、各バイトの下位 7 ビット
1711 のみが使われ、最上位ビットは無視される。`c' 形式の出力では、上記の
1712 例は、それぞれ ` '、`\n'、`\0' になる。
1714 `a' と `c' 形式を除き、形式指定文字の後ろに 10 進数の整数を続ける
1715 ことによって、入力データの各数値を読み込んで、指定されたデータ形式に
1716 変換して行く際に、何バイトづつ使用するかを指定することができる。
1717 あるいは、形式指定文字の後ろに以下の文字の一つを続けることによって、
1718 C コンパイラの組み込みデータ型のいづれかのサイズを指定することも
1719 可能だ。すなわち、整数 (`d', `o', `u', `x') に対しては、以下を
1734 浮動小数点数 (`f') に対しては、次のものが使用できる。
1746 `--output-duplicates'
1747 連続する行が同一であっても出力する。デフォルトでは、出力する行が、
1748 二行以上連続して全く同一になりそうな場合、`od' は最初の行だけを
1749 出力し、次の行にはアステリスクのみを置いて、二行目以下を省略した
1754 1 出力行当たり、`n' バイトの入力をダンプする。この値は、指定した
1755 各出力形式に結び付いているサイズの最小公倍数の倍数でなければ
1758 このオプションが全く指定されないときのデフォルトは 16 である。
1759 このオプションが N なしで指定されたときのデフォルトは 32 である。
1762 以下に挙げるいくつかのオプションは、形式指定の簡易版である。GNU `od'
1763 では、形式指定オプションと簡易版オプションをどのように組み合わせても
1764 構わない。こうしたオプションは、累加されていく。
1767 文字の名称で出力する。`-t a' と同じ。
1770 1 バイトづつ 8 進数として出力する。`-t o1' と同じ。
1773 表示可能な 1 バイト文字か、C 言語のバックスラッシュ・エスケープ、
1774 あるいは 3 桁の 8 進数として出力する。`-t c' と同じ。
1777 2 バイトづつ符号なし 10 進数として出力する。`-t u2' と同じ。
1780 浮動小数点数として出力する。`-t fF' と同じ。
1783 10 進数の int として出力する。`-t dI' と同じ。
1786 10 進数の long int として出力する。`-t dL' と同じ。
1789 2 バイトづつ 8 進数として出力する。`-t o2' と同じ。
1792 2 バイトづつ 10 進数として出力する。`-t d2' と同じ。
1795 2 バイトづつ 16 進数として出力する。`-t x2' と同じ。
1798 昔の `od' で使用できた、オプションではない引数 LABEL を認識する。
1801 od --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
1803 この書式を使用すると、ファイルは 1 個までしか指定できないが、必要
1804 なら、オフセットを示す引数や、LABEL という、開始位置の仮アドレス
1805 を示す引数を、続けて指定することができる。引数 LABEL は OFFSET と
1806 全く同じように解釈されるが、出力を開始する位置の仮アドレスを指定
1807 している。仮アドレスは、通常のアドレスの後ろに、カッコで囲まれて、
1811 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1814 File: coreutils-ja.info, Node: base64 invocation, Prev: od invocation, Up: Output of entire files
1816 3.5 `base64': データを表示可能データ (printable data) に変換する
1817 ================================================================================
1819 "`base64' はファイル、または標準入力から読み込んだデータを、base64 で
1820 エンコードした形式に変換する (あるいは、その逆を行う)。base64 で
1821 エンコードした形式は、表示可能な ASCII 文字を用いて、バイナリデータを
1826 base64 [OPTION]... [FILE]
1827 base64 --decode [OPTION]... [FILE]
1829 base64 でエンコードすると、データが元のデータのほぼ 133% に増大する。
1830 base64 エンコード形式は、RFC4648 に準拠している。
1831 `ftp://ftp.rfc-editor.org/in-notes/rfc4648.txt'
1833 このプログラムでは以下のオプションが使用できる。参照: *note Common
1838 エンコード中に、出力が COLS 文字に達したら改行する。この値は、正の
1841 デフォルトでは、76 文字で改行する。改行を全く行わないようにする
1846 動作モードを変更する。デフォルトの、データをエンコードするモード
1847 ではなく、データをデコードするモードになる。入力には、base64 で
1848 エンコードしたデータが期待され、出力は、エンコードする前のデータ
1853 デコードする際、改行文字がどこに現れても、適切に処理する。デコード
1854 中に ASCII 表示可能文字以外を表すバイトが現れたら、一部壊れたデータ
1855 でもデコードできるように、それを無視する。
1858 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1861 File: coreutils-ja.info, Node: Formatting file contents, Next: Output of parts of files, Prev: Output of entire files, Up: Top
1864 *****************************
1866 以下のコマンドは、ファイルの内容を整形し直す。
1870 * fmt invocation:: パラグラフに分かれたテキストを整形し直す。
1871 * numfmt invocation:: 数値を整形し直す。
1872 * pr invocation:: ページ付けや段組みをしてファイルを表示する。
1873 * fold invocation:: 入力行を指定された幅に合わせて折り返す。
1876 File: coreutils-ja.info, Node: fmt invocation, Next: numfmt invocation, Up: Formatting file contents
1878 4.1 `fmt': パラグラフに分かれたテキストを整形し直す
1879 =======================================================================
1881 `fmt' は行を折り返したり、結合したりして、出力する各行が指定された
1882 文字数に納まるように調整する。1 行のデフォルトはアスキー文字で 75 文字
1883 である。(訳注: 日本語のテキストは、通常単語を空白で区切らないので、
1888 fmt [OPTION]... [FILE]...
1890 `fmt' は、指定された引数 FILE から (指定されていない場合は、標準
1891 出力から) テキストを読み込んで、標準出力に書き出す。
1893 デフォルトでは、空行、単語間の空白、インデント (字下げ) は、出力でも
1894 そのまま維持される。インデントの違う入力行が連続する場合は、行の結合は
1895 行われない。タブは入力のときにスペースに展開され、出力でタブに戻される。
1897 `fmt' は、できるだけ文の終わりで改行しようとする。また、文の最初の
1898 単語の直後や、文の最後の単語の直前で改行するのは避けようとする。「文の
1899 終わり ("sentence break")」の定義は、パラグラフがそこで終わっているか、
1900 あるいは、単語の末尾に `.?!' のどれかが付き、さらにスペースが 2 個
1901 続くか、行末が来ることである。後者の場合、ピリオドなどとスペース 2 個、
1902 あるいは行末の間にカッコや引用符が入っていてもよい。TeX と同様、`fmt'
1903 は、どこで行を折り返すかを決める前に、パラグラフ全体を読み込む。使用して
1904 いるアルゴリズムは、Donald E. Knuth と Michael F. Plass が "Breaking
1905 Paragraphs Into Lines" で提示しているものに変更を加えたものである
1906 (`Software--Practice & Experience 誌'、第 11 巻 第 11 号 (November
1907 1981) 1119-1184 ページ)。
1909 このプログラムでは以下のオプションが使用できる。参照: *note Common
1914 クラウンマージン・モード ("Crown margin" mode) である。パラグラフの
1915 最初の 2 行のインデントはそのまま踏襲し、それに続く各行の左の余白を
1919 `--tagged-paragraph'
1920 タグ付きパラグラフ・モード ("Tagged paragraph" mode)。クラウンマー
1921 ジン・モードに似ているが、次の点が違う。パラグラフの最初の行と
1922 二番目の行のインデントが同じ場合、最初の行は 1 行からなるパラグラフ
1927 行の分割のみを行う。短い行を結合して、長い行を作ることはしない。
1928 その結果、サンプル・コードの行のような、すでに整形されたテキストを
1933 空白の数を一定にする。すなわち、単語間の空白は 1 個に、文の間の
1939 出力する各行を、長くても WIDTH 文字までにする (デフォルトは 75
1940 文字。GOAL が指定されている場合は、GOAL プラス 10 文字)。
1944 とりあえず、各行を GOAL 文字の長さにしてみようとする。これは、
1945 デフォルトでは WIDTH より 7% 短い。
1949 PREFIX で始まる行のみを整形の対象にする (PREFIX の前にホワイト
1950 スペースがあってもよい)。PREFIX とそれに先行するホワイトスペース
1951 は、整形の際に取り除かれ、整形後に各出力行に付け直される。この
1952 オプションの用途を一つ挙げると、プログラムのコメントのような行
1953 だけを整形し、コードには手を加えないことが考えられる。
1956 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1959 File: coreutils-ja.info, Node: numfmt invocation, Next: pr invocation, Prev: fmt invocation, Up: Formatting file contents
1961 4.2 `numfmt': 数値を整形し直す
1962 ======================================
1964 `numfmt' はさまざまな表記の数値を読み込んで、それを要求された形に
1965 整形し直す。一番よく使うのは、数値を人間が読みやすい形に変換する場合や、
1966 その逆を行う場合である (たとえば、`4G' ==> `4,000,000,000')。
1968 numfmt [OPTION]... [NUMBER]
1970 `numfmt' は、コマンドラインで与えられた各 NUMBER を、指定された
1971 オプション (以下の節を参照) に従って変換する。NUMBER の指定がない
1972 場合は、標準入力から数値を読み込む。また、`numfmt' は、入力行中の
1973 特定のフィールドから数値を取り出すこともできる。その場合、列が揃う
1974 ようにパディング (訳注: フィールドの空き埋め) が行われていれば、
1977 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
1979 終了ステータスについては追加情報がある。`--invalid' をご覧になって
1984 * General options in numfmt:: 一般オプション
1985 * Possible UNITs:: 使用できる UNIT
1986 * Examples of using numfmt:: numfmt の使用例
1989 File: coreutils-ja.info, Node: General options in numfmt, Next: Possible UNITs, Up: numfmt invocation
1992 ---------------------------
1994 このプログラムでは以下のオプションが使用できる。参照: *note Common
1998 間違えた使い方をしている疑いがあるとき、それについて警告メッセージを
2003 文字 D を入力フィールドの区切りとして使用する (デフォルトはホワイト
2004 スペース)。区切りにデフォルト以外の文字を使うと、自動的なパディングが
2008 N 番目の入力フィールドの数値を変換する (N のデフォルトは 1)。
2011 浮動小数点数を表す printf 形式の FORMAT 文字列を出力の整形に
2012 使用する。文字列 FORMAT には、1 個の `%f' 変換指定子が含まれて
2013 いなければならない。なお、そうしたければ、`'' や `-' 修飾子、
2014 あるいは、フィールド幅修飾子 (訳注: 数値) を `%f' に付けることも
2015 できる。`'' 修飾子は `--grouping' オプションを有効にし、`-' 修飾子
2016 は `--padding' オプションを左詰めで有効に、フィールド幅修飾子は
2017 `--padding' オプションを右詰めで有効にする。(訳注: `-' 修飾子は、
2018 数値であるフィールド幅修飾子と併せて用いなければならない。)
2021 入力された数値の大きさや桁数を UNIT に従って自動調整 (auto-scaling)
2022 する (訳注: 一例を挙げると、入力数値が `1K' だったとき、`--from=si'
2023 が指定されていれば 1000 に変換し、`--from=iec' が指定されていれば
2024 1024 に変換する)。UNIT については、次節「使用できる UNIT」を参照
2025 していただきたい。デフォルトでは数値の大きさや桁数の調節を行わない。
2026 それはまた、入力数値に接尾辞 (たとえば、`M', `G' など) が付いて
2027 いると、エラーになるということでもある。
2030 入力の 1 単位の大きさを (すなわち、デフォルトの 1 に代えて使う
2031 大きさを) 指定する。入力する数値の 1 単位の大きさが、デフォルトの
2032 1 以外の場合に、このオプションを使用するわけだ (たとえば、入力する
2033 数値の `10' が、1 単位 512 バイトの 10 単位を表している場合には、
2034 `--from-unit=512' を使用する)。
2037 現在のロケールの桁区切りルールに従って、出力する数値を数桁ごとに
2038 区切る (たとえば、3 桁ごとの区切り記号は、たいてい `.' (ドット) か
2039 `,' (コンマ) である)。ロケールが `POSIX/C' の場合は、このオプション
2043 最初の N (デフォルトは 1) 行を、いかなる変換もせずに出力する。
2046 入力エラーに出会ったときのデフォルトの動作は、ステータスコード 2 で
2047 即座に終了することである。`--invalid=`abort'' は、このデフォルト
2048 の動作を明示的に指定することになる。MODE に `fail' を指定すると、
2049 変換エラーがあるごとに警告メッセージを表示して、ステータス 2 で終了
2050 する。MODE が `warn' の場合は、変換エラーがあっても、ステータス 0
2051 で終了する。MODE が `ignore' の場合は、ステータス 0 で終了する
2052 だけでなく、診断メッセージを出すことすらしない。
2055 出力する数値が N 字分を占めるように、スペースを加えることで
2056 パディングをする。N が正の数の場合は、数値が右詰めになり、負の
2057 数の場合は、数値が左詰めになる。デフォルトでは、数値は、入力行の
2058 幅に基づいて (訳注: 詳しく言うと、入力各行の数値のあるフィールド
2059 が固定幅の場合、その幅に基づいて)、自動的に揃えられる (これが
2060 行われるのは、フィールドの区切り文字がデフォルトの場合だけである)。
2063 数値の表現を変換するときに、METHOD に従って、数値を丸める。METHOD
2064 には、`up', `down', `from-zero' (デフォルト), `towards-zero',
2065 `nearest' が使用できる。(訳注: `up' は切り上げ、`down' は切り下げ、
2066 `from-zero' はゼロから離れる方向へ、`towards-zero' はゼロに近づく
2067 方向へ、`nearest' は四捨五入である。)
2070 出力する数値に `SUFFIX' を付ける。また、入力する数値に `SUFFIX'
2074 出力する数値の大きさや桁数を UNIT に従って自動調整する。UNIT に
2075 ついては、次節「使用できる UNIT」を参照していただきたい。デフォルト
2076 では、数値の大きさや桁数の調節をしないので、数値を構成するすべての
2080 出力の 1 単位の大きさを (すなわち、デフォルトの 1 に代えて使う
2081 大きさを) 指定する。出力する数値の 1 単位の大きさが、デフォルトの
2082 1 以外の場合に、このオプションを使用するわけだ (たとえば、1
2083 ブロック 1KB のブロック数で `4,000,000' バイトを表現するには、
2084 `--to=si --to-unit=1000' が使用できる)。
2088 File: coreutils-ja.info, Node: Possible UNITs, Next: Examples of using numfmt, Prev: General options in numfmt, Up: numfmt invocation
2091 --------------------------
2093 `--from=UNIT' や `--to=UNIT' で指定する UNIT には、次のものを選択する
2094 ことができる。(訳注: UNIT の名前は、大文字ではなく、si, iec などの
2098 数値の大きさや桁数の調整を行わない。入力する数値には、いかなる
2099 接尾辞も付けることができない。従って、数値の直後に文字が続くと
2100 エラーになる。出力する数値については、その数値を構成するすべての
2104 国際単位系 (International System of Units (SI)) の規格に従って、
2105 数値の大きさや桁数を自動調整する。入力する数値には、以下の接尾辞の
2106 一つが使用できる。出力する数値については、1000 以上の値は丸められ
2107 て、以下の接尾辞の一つを付けて表示される。
2109 `K' => 1000^1 = 10^3 (Kilo)
2110 `M' => 1000^2 = 10^6 (Mega)
2111 `G' => 1000^3 = 10^9 (Giga)
2112 `T' => 1000^4 = 10^12 (Tera)
2113 `P' => 1000^5 = 10^15 (Peta)
2114 `E' => 1000^6 = 10^18 (Exa)
2115 `Z' => 1000^7 = 10^21 (Zetta)
2116 `Y' => 1000^8 = 10^24 (Yotta)
2119 International Electronical Commission (IEC) の規格に従って、数値の
2120 大きさや桁数を自動調整する。入力する数値では、以下の接尾辞の一つが
2121 使用できる。出力する数値については、1024 以上の値は丸められて、
2124 `K' => 1024^1 = 2^10 (Kibi)
2125 `M' => 1024^2 = 2^20 (Mebi)
2126 `G' => 1024^3 = 2^30 (Gibi)
2127 `T' => 1024^4 = 2^40 (Tebi)
2128 `P' => 1024^5 = 2^50 (Pebi)
2129 `E' => 1024^6 = 2^60 (Exbi)
2130 `Z' => 1024^7 = 2^70 (Zebi)
2131 `Y' => 1024^8 = 2^80 (Yobi)
2133 `iec' を選択すると、接尾辞に (`G' など) 1 文字の記号が使用される
2134 ことになるが、これは規格に完全にかなってるとは言えない。IEC の
2135 規格では (`Gi' など) 2 字の記号を推奨しているからだ。しかし、実際の
2136 使用では、1 文字の表記法が普通に使われている。`iec-i' を指定した
2140 International Electronical Commission (IEC) の規格に従って、数値の
2141 大きさや桁数を自動調整する。入力する数値では、以下の接尾辞の一つが
2142 使用できる。出力する数値については、1024 以上の値は丸められて、
2145 `Ki' => 1024^1 = 2^10 (Kibi)
2146 `Mi' => 1024^2 = 2^20 (Mebi)
2147 `Gi' => 1024^3 = 2^30 (Gibi)
2148 `Ti' => 1024^4 = 2^40 (Tebi)
2149 `Pi' => 1024^5 = 2^50 (Pebi)
2150 `Ei' => 1024^6 = 2^60 (Exbi)
2151 `Zi' => 1024^7 = 2^70 (Zebi)
2152 `Yi' => 1024^8 = 2^80 (Yobi)
2154 `iec-i' を選択すると、接尾辞に (`Gi' など) 2 文字の記号が使用
2155 されることになる。これは、IEC の規格が推奨しているとおりだが、
2156 実際の使用では、必ずしもよく使われているわけではない。`iec'
2157 を指定した場合と、比較していただきたい。
2160 `auto' は `--from' でしか使えない。これを選んだ場合、`K',`M',
2161 `G',`T',`P',`E',`Z',`Y' といった接尾辞が付いていれば、数値は SI
2162 の値と見なされる。接尾辞が `Ki',`Mi',`Gi',`Ti',`Pi',`Ei',`Zi',
2163 `Yi' などの場合は、数値は IEC の値と見なされることになる。
2167 File: coreutils-ja.info, Node: Examples of using numfmt, Prev: Possible UNITs, Up: numfmt invocation
2170 ---------------------------
2172 1 個の数値を人間に読みやすい形に変換する (あるいは、その逆を行う)。
2173 $ numfmt --to=si 500000
2176 $ numfmt --to=iec 500000
2179 $ numfmt --to=iec-i 500000
2182 $ numfmt --from=si 1M
2185 $ numfmt --from=iec 1M
2188 # '--from=auto' を使用する。M=Mega, Mi=Mebi
2189 $ numfmt --from=auto 1M
2191 $ numfmt --from=auto 1Mi
2194 `SI' 表記を `IEC' 表記に換算する (たとえば、ハードディスクの容量が
2195 メーカー表示では `1TB' となっているが、実際に容量をチェックすると、
2198 $ numfmt --from=si --to=iec 1T
2201 ファイルやパイプから読み込んだ入力行にある、ある一つのフィールドを
2202 変換する (ここに示す数例は、あくまでも説明のために作ったものである。
2203 実際には、`ls' と `df' のどちらにも、人間に読みやすい形式でサイズを
2204 表示するための `--human-readable' オプションが存在している)。
2206 # 3 番目のフィールド (ファイルサイズ) を SI 表記で表示する
2207 $ ls -log | numfmt --field 3 --header --to=si | head -n4
2208 -rw-r--r-- 1 94K Aug 23 2011 ABOUT-NLS
2209 -rw-r--r-- 1 3.7K Jan 7 16:15 AUTHORS
2210 -rw-r--r-- 1 36K Jun 1 2011 COPYING
2211 -rw-r--r-- 1 0 Jan 7 15:15 ChangeLog
2212 (訳注: 実際には、この一番下の行は表示されず、一番上に「total ...
2215 # 二番目のフィールド (サイズ) を IEC 表記で表示する
2216 $ df --block-size=1 | numfmt --field 2 --header --to=iec | head -n4
2217 File system 1B-blocks Used Available Use% Mounted on
2218 rootfs 132G 104741408 26554036 80% /
2219 tmpfs 794M 7580 804960 1% /run/shm
2220 /dev/sdb1 694G 651424756 46074696 94% /home
2222 出力は `--padding' や `--format' オプションを使って加工することが
2225 # フィールド幅が 10 字になるまで空白で埋める。右詰め表示。
2226 $ du -s * | numfmt --to=si --padding=10
2232 # フィールド幅が 10 字になるまで空白で埋める。左詰め表示。
2233 $ du -s * | numfmt --to=si --padding=-10
2239 # `--format' オプションを使用して、フィールド幅が 10 文字になるまで
2241 $ du -s * | numfmt --to=si --format="%10f"
2247 # `--format' オプションを使用して、フィールド幅が 10 文字になるまで
2249 $ du -s * | numfmt --to=si --padding="%-10f"
2255 桁区切りをサポートしているロケールでは、`--grouping' や `--format'
2256 オプションを使って、数値を数桁ごとに区切ることができる。ロケールが
2257 `POSIX' や `C' の場合は、桁区切りを指定しても、単に無視される。
2259 $ LC_ALL=C numfmt --from=iec --grouping 2G
2262 $ LC_ALL=en_US.utf8 numfmt --from=iec --grouping 2G
2265 $ LC_ALL=ta_IN numfmt --from=iec --grouping 2G
2268 $ LC_ALL=C numfmt --from=iec --format="==%'15f==" 2G
2271 $ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'15f==" 2G
2274 $ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'-15f==" 2G
2277 $ LC_ALL=ta_IN numfmt --from=iec --format="==%'15f==" 2G
2281 File: coreutils-ja.info, Node: pr invocation, Next: fold invocation, Prev: numfmt invocation, Up: Formatting file contents
2283 4.3 `pr': ページ付けや段組みをしてファイルを表示する
2284 =========================================================================
2286 `pr' は、各 FILE (`-' は標準入力を表す) を標準出力に書き出す。FILE が
2287 指定されていない場合は、標準入力を対象にする。その際、ページ付けを行い、
2288 指定があれば段組みをして出力する。また、すべての FILE を一つに統合し、
2289 1 段 1 ファイルの形式で平行して表示することもできる。(訳注: `pr' の
2290 日本語対応は完全ではない。とくに段組みがうまく行かない。)
2294 pr [OPTION]... [FILE]...
2296 デフォルトでは、5 行のヘッダが各ページに付く。2 行の空行、日付・
2297 ファイル名・ページ番号からなる 1 行、そしてもう 2 行の空行である。 5
2298 行の空行からなるフッタも出力される。デフォルトのページ長 (PAGE_LENGTH)
2299 は 66 行なので、本文に使用されるデフォルトの行数は、56 行である。
2300 ヘッダのテキスト行は、`DATE STRING PAGE' の形を取り、STRING の両側に
2301 空白を入れて、行の幅がページ幅 (PAGE_WIDTH) いっぱいになるように
2302 している。DATE は日付であり (詳細については、`--date-format' (`-D')
2303 オプションを参照)、STRING は中央揃えのヘッダ文字列 (訳注: デフォルト
2304 ではファイル名)、PAGE はページ番号である。PAGE という単語の綴りは、
2305 `LC_MESSAGES' ロケール・カテゴリによって変わってくる。デフォルトの C
2306 ロケールでは、`Page NUMBER' であり、NUMBER は 10 進数のページ番号だ。
2308 入力にフォームフィード (Form feed) があると、出力では改ページが行われ
2309 る。フォームフィードが続くと、白紙のページが生ずる。
2311 段組みをした場合、どの段の幅も同じであり、段と段の間には任意の文字列
2312 (デフォルトはスペース) が置かれる。多段組みの出力では、`-J' オプション
2313 を使用しないかぎり、各行は常に PAGE_WIDTH (デフォルトは 72) 文字までに
2314 切り詰められる (訳注: これは、各段や段間の空白などを合計した 1 行の
2315 長さが、最長でも PAGE_WIDTH 文字までになるということであって、各段が
2316 それぞれ PAGE_WIDTH 文字になるということではない)。1 段のみの出力では、
2317 デフォルトでは行の切り詰めは行われない。その場合でも、行の切り詰めを
2320 このプログラムでは以下のオプションが使用できる。参照: *note Common
2323 `+FIRST_PAGE[:LAST_PAGE]'
2324 `--pages=FIRST_PAGE[:LAST_PAGE]'
2325 表示を FIRST_PAGE ページから始めて、 LAST_PAGE ページで終了する。
2326 `:LAST_PAGE' の指定を省略するのは、ファイルの最後までということで
2327 ある。スキップするページ数を計算する際、入力ファイル中にフォーム
2328 フィードがあると、そのたびに 1 ページ進むことになる。ページ番号
2329 は、`+FIRST_PAGE' があってもなくても、同じになる。デフォルトでは、
2330 入力ファイルの最初のページからページ数を数えるからだ (表示される
2331 最初のページからではない)。行番号については `-N' オプションで変更す
2336 個々の FILE に対して COLUMN 段に段組みした出力を生成する (デフォ
2337 ルトは 1 段)。`-a' オプションを使用しない場合、ページ内で本文は、
2338 段内を上から下へと進む。段が増えると、段の幅は自動的に狭くなる。
2339 ただし、`-W/-w' を同時に使用して、PAGE_WIDTH を増加させている
2340 場合は、そのかぎりではない。このオプションを使うと、切り詰められる
2341 行がおそらく生じるだろう。ページごとの各段の行数は、できるだけ揃え
2342 られる。多段組みの本文出力では、オプション `-e' と `-i' が
2343 有効になる。`-J' オプションと一緒に使った場合は、段の整列と行の
2344 切り詰めは行われない。各行は、元の長さのまま、不定長フィールド
2345 として (free field format) 結合されるのである。その際、`-S' オプ
2346 ションによってフィールド・セパレータを指定することが可能だ。なお
2347 `-COLUMN' は、`-m' オプションと一緒に使用できない。
2351 個々の FILE を段組みで表示するとき、本文の各行が、段内を上から
2352 下へではなく、左の段から右の段へと進むようにする。`-COLUMN'
2353 オプションに指定する段の数は、2 以上でなければならない。行が
2354 段の幅に納まらないほど長い場合、その行は切り詰められる。
2357 `--show-control-chars'
2358 制御文字をハット表記 (たとえば、`^G') を使って表示する。他の非表示
2359 文字は、バックスラッシュ付きの 8 進数表記になる。`pr' のデフォルト
2360 では、非表示文字の表示文字化は行われない。
2364 ダブルスペースで出力する (訳注: すなわち、行間を 1 行分あける)。
2367 `--date-format=FORMAT'
2368 ヘッダの日付を FORMAT を用いて整形する。FORMAT には、コマンド
2369 `date +FORMAT' で使うのと同じ指定法が使用できる。*Note date
2370 invocation::. `%' で始まる日時の指定を除いて、FORMAT 中の文字は
2371 そのまま表示される。従って、このオプションを使用すれば、ヘッダの
2372 日付の位置に任意の文字列を指定することもできるわけだ。たとえば、
2373 `--date-format="Monday morning"' といった具合に。
2375 デフォルトの日付書式は `%Y-%m-%d %H:%M' という形である (たとえば、
2376 `2001-12-04 23:59')。だが、環境変数 `POSIXLY_CORRECT' が設定され、
2377 しかも `LC_TIME' ロケール・カテゴリが POSIX ロケールを指定して
2378 いる場合は、デフォルトの書式は `%b %e %H:%M %Y' になる (たとえば、
2379 `Dec 4 23:59 2001')。
2381 タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
2382 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
2383 いない場合は、システムのデフォルトのルールに従って表示される。
2384 *Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
2386 `-e[IN-TABCHAR[IN-TABWIDTH]]'
2387 `--expand-tabs[=IN-TABCHAR[IN-TABWIDTH]]'
2388 入力の際にタブをスペースに展開する。省略できる引数 IN-TABCHAR は、
2389 入力で使われるタブ文字である (デフォルトは TAB 文字)。これも省略
2390 できる二番目の引数 IN-TABWIDTH は、入力で使われるタブ文字の幅で
2396 複数個の改行文字ではなく、1 個のフォームフィードを使用して、出力
2397 する各ページを分離する。このオプションによって、66 行というデフォ
2402 ヘッダのファイル名の部分を、中央揃えの HEADER という文字列で置き換
2403 える。シェル上では、HEADER はクォートするべきである。また、`-h'
2406 `-i[OUT-TABCHAR[OUT-TABWIDTH]]'
2407 `--output-tabs[=OUT-TABCHAR[OUT-TABWIDTH]]'
2408 出力の際にスペースをタブで置き換える。省略できる引数 OUT-TABCHAR
2409 は、出力で使われるタブ文字である (デフォルトは TAB 文字)。これも
2410 省略できる二番目の引数 OUT-TABWIDTH は、出力で使われるタブ文字の
2415 長い行は長いまま結合する。段組みオプション `-COLUMN', `-a -COLUMN',
2416 `-m' と併せて使用する。`-W/-w' による行の切り詰めが無効になる。段の
2417 整列も行わなくなる。`--sep-string[=STRING]' と併せて使ってもよい。
2418 `-J' というオプションが (`-W' や `--sep-string' とともに) 新たに
2419 設けられたのは、`-w' や `-s' という、前からある (POSIX に準拠した)
2420 オプションを 3 種の段組みオプションと組み合わせて使ったときの混乱を
2424 `--length=PAGE_LENGTH'
2425 1 ページの行数を、ヘッダ行 (及び フッタ行) を含めて、PAGE_LENGTH
2426 行にする (デフォルトは 66 行)。PAGE_LENGTH が 10 行以下だったら、
2427 `-t' オプションが指定されたかのように、 ヘッダとフッタは省略する。
2431 すべての FILE を統合し、各段に 1 ファイルを割り当てて、平行表示
2432 する。長すぎて段に納まらない行があれば、`-J' オプションが使用
2433 されていないかぎり、切り詰めが行われる。`--sep-string[=STRING]' を
2434 指定してもよい。いづれかの FILE に (フォームフィードの指定により)
2435 空白のページが存在すると、空白の段が生ずるが、それでも段を分離する
2436 記号の STRING は表示される。すなわち、統合されたファイルの最初から
2437 最後まで、行番号と (訳注: これはもちろん、`-n' オプションが指定され
2438 ている場合) 段の分離記号は、連続して表示されるわけだ。ただし、統合
2439 されたページのどの段も空白の場合は、分離記号も行番号も表示されない。
2440 デフォルトのヘッダは、`DATE PAGE' という形式になり、中央には空白が
2441 挿入される。`-h' や `--header' オプションを `-m' と一緒に使えば、
2442 この中央の空白部分に文字列を入れることができる。
2444 `-n[NUMBER-SEPARATOR[DIGITS]]'
2445 `--number-lines[=NUMBER-SEPARATOR[DIGITS]]'
2446 DIGITS の幅の行番号を表示する (DIGITS のデフォルトは 5 桁)。通常の
2447 多段組みの出力では、行番号は、各段ごとに本文の最初の DIGITS 桁分の
2448 位置を占めるが、`-m' の出力の場合は、各行の先頭だけに表示される。
2449 1 段組みでは、`-m' の場合と同様、各行の先頭に付く。デフォルトでは、
2450 行数は、入力ファイルの最初の行から数え始める (表示される最初の行
2451 からではない。`--page' や `-N' オプションを参照)。省略可能な引数
2452 NUMBER-SEPARATOR は、行番号の後ろに付けて、後に続く本文と区別する
2453 ための文字であり、デフォルトのセパレータはタブ文字である。厳密に
2454 言うと、常にタブが表示されるのは、1 段組みの出力のときだけである。
2455 タブの幅は、本来タブの現れる位置によって変化し、たとえば、`-o'
2456 オプションで指定される左の余白 (MARGIN) によって変わってくるもの
2457 である。しかし、多段組みの出力では、「出力される段の幅が同じになる」
2458 ことが優先されるため (POSIX の仕様)、タブの幅は、最初の段における
2459 値に固定され、左の余白の値が変わっても、変化することはない。従って、
2460 NUMBER-SEPARATOR であるタブの位置には、常に一定数のスペースが表示
2461 されることになる。スペースをタブに置き換えるかどうかは、出力される
2465 `--first-line-number=LINE_NUMBER'
2466 表示される最初のページの最初の行を LINE_NUMBER として行を数えて
2467 行く (入力ファイルの最初の行以外から表示を始めるときによく使う)。
2471 スペース MARGIN 個分の余白で各行をインデントする (デフォルトは、
2472 スペース 0 個)。ページの横幅は、`-W/-w' で指定した PAGE_WIDTH と
2473 余白を合計したサイズになる。行番号付きの 1 段組み出力では、行から
2474 少しはみ出す文字が生ずるかもしれない (`-n' オプション参照)。
2477 `--no-file-warnings'
2478 引数 FILE がオープンできないときも、警告メッセージを表示しない
2479 (終了ステータスは、それでもやはり 0 以外になる)。
2482 `--separator[=CHAR]'
2483 段と段の区切りに 1 個の文字 CHAR を使う。`-s' オプションを
2484 指定したときのデフォルトの CHAR は、`-w' オプションを同時に
2485 指定しなければタブ、指定すれば「なし」である。なお、`-s'
2486 オプションを指定しない場合のデフォルトのセパレータはスペースだ。
2487 `-s[char]' オプションを使用すると、`-w' も同時に指定しないかぎり、
2488 3 種の段組みオプション (`-COLUMN'|`-a -COLUMN'|`-m')
2489 のすべてにおいて、行の切り詰めが行われない。 これは、POSIX
2493 `--sep-string[=STRING]'
2494 出力される段の区切りに、文字列 STRING を使用する。`-s' オプション
2495 が `-W/-w' オプションに影響を及ぼすのとは異なり、`-S' オプション
2496 は `-W/-w' オプションに影響を及ぼさない。また、行の切り詰めや段の
2497 整列にも影響しない。`-S' オプションを指定せずに、`-J' オプション
2498 を指定すると、`pr' はデフォルトの出力セパレータであるタブを使用
2499 する (訳注: `-J' 使用時のデフォルトということだと思う)。`-S' も
2500 `-J' も指定しない場合、`pr' が区切りに使用するのはスペースである
2501 (`-S" "' と同じこと)。`-S' だけで、引数の `STRING' を指定しないと、
2502 空文字列 (`""') を指定したことになる。
2506 常とは異なり、各ページにヘッダ (とフッタ) を表示しない。また、
2507 ページの最下部を (空行やフォームフィードで) 埋めることもしない。
2508 ページ構成は行わないが、入力ファイルにあるフォームフィードは、
2509 そのままにしておく。つまり、あらかじめ決めておいたページ分割は、
2510 変わらないわけだ。`-t' や `-T' オプションは、他のオプションと
2511 組み合わせて使うと、便利なことがある。たとえば、`-t -e4' は、入力
2512 ファイルのタブ文字を 4 個のスペースに展開するが、それ以外何の
2513 変更も行わない。`-t' オプションを使用すると、`-h' オプションが
2518 ヘッダ (とフッタ) を表示しない。さらに、入力ファイルにあるフォーム
2522 `--show-nonprinting'
2523 非表示文字をバックスラッシュ付きの 8 進数表記で表示する。
2526 `--width=PAGE_WIDTH'
2527 本文を多段組み出力にしたときのみ、ページの幅を PAGE_WIDTH 文字に
2528 する (PAGE_WIDTH のデフォルトは 72 字)。多段組みで `-w' オプション
2529 を指定せず、`-s[CHAR]' オプションだけ指定すると、デフォルトの
2530 ページ幅が無効になり、行の切り詰めや段の整列も行われなくなる。
2531 すなわち、多段組みのオプションが指定されているのに、各行が、
2532 長いものは長いまま結合されてしまうのだ。なお、1 段組みの出力では、
2533 PAGE_WIDTH の指定はできない。以上は、POSIX に準拠した仕様である。
2536 `--page_width=PAGE_WIDTH'
2537 ページの幅を PAGE_WIDTH 文字にする。この指定は、段組みオプションが
2538 あってもなくても、有効である。`-J' オプションを使用しないかぎり、
2539 本文の行が切り詰められる。3 種の段組みオプション (`-COLUMN', `-a
2540 -COLUMN', `-m') と組み合わせて使った場合、段の整列が常に行われる。
2541 セパレータを指定するオプションの `-S' や `-s' は、`-W' オプションに
2542 影響を及ぼさない。デフォルトは 72 文字である。`-W PAGE_WIDTH' も
2543 なく、段組みオプションも全く指定されていない場合に、行の切り詰めが
2544 行われることは絶対にない (下位互換を維持しつつ、よく行われる作業の
2545 ほとんどに対応するために、そうなっている)。この動作は、`-W 72 -J'
2546 と同じである。なお、ヘッダ行が切り詰められることは絶対にない。
2549 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2552 File: coreutils-ja.info, Node: fold invocation, Prev: pr invocation, Up: Formatting file contents
2554 4.4 `fold': 入力行を指定された幅に合わせて折り返す
2555 =====================================================================
2557 `fold' は、各 FILE (`-' は標準入力を表す) を、長い行は折り返して、標準
2558 出力に書き出す。FILE が指定されていない場合は、標準入力を対象にする。
2559 (訳注: `fold' の日本語対応は完全ではない。出力行の長さによっては、
2560 あるいは、日本語にアルファベットが混じると、文字化けすることがある。)
2564 fold [OPTION]... [FILE]...
2566 デフォルトでは、`fold' は 80 桁よりも長い行を折り返す。出力は必要なら
2569 `fold' はデフォルトでは、画面上の桁数を数える。従って、タブは 2 桁
2570 以上に数えられるかもしれないし、バックスペースは桁数を減らすことになる。
2571 また、復帰文字 (carriage return) は、桁数を 0 にする。
2573 このプログラムでは以下のオプションが使用できる。参照: *note Common
2578 桁数ではなく、バイト数を数える。従って、タブ、バックスペース、復帰
2579 文字も、他の文字と全く同じように、それぞれ 1 桁を占めるものとして
2584 単語境界で折り返す。行は、行の最大長より前にある最後の空白の後ろで
2585 折り返される。行にそうした空白がない場合は、通常通り、行の最大長で
2590 行の最大長に 80 桁ではなく、WIDTH 桁を使用する。
2592 互換性のために、`fold' は古い書式のオプション `-WIDTH' もサポート
2593 している。新しいスクリプトでは、`-w WIDTH' の方を使用すべきである。
2596 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2599 File: coreutils-ja.info, Node: Output of parts of files, Next: Summarizing files, Prev: Formatting file contents, Up: Top
2602 *****************************
2604 以下のコマンドは、入力の一部を出力する。
2608 * head invocation:: ファイルの先頭部分を出力する。
2609 * tail invocation:: ファイルの末尾部分を出力する。
2610 * split invocation:: ファイルを分割する
2611 * csplit invocation:: ファイルを内容を目印にして分割する。
2614 File: coreutils-ja.info, Node: head invocation, Next: tail invocation, Up: Output of parts of files
2616 5.1 `head': ファイルの先頭部分を出力する
2617 ======================================================
2619 `head' は、各 FILE の先頭部分 (デフォルトでは 10 行) を表示する。
2620 ファイルが指定されていない場合や、FILE として `-' が指定されている
2625 head [OPTION]... [FILE]...
2627 指定された FILE が 2 個以上あると、`head' は、次のような 1 行
2632 このヘッダは、各 FILE の出力の前に置かれる。
2634 このプログラムでは以下のオプションが使用できる。参照: *note Common
2639 ファイルの先頭数行を表示する代わりに、先頭から K バイトを表示する。
2640 ただし、K が `-' で始まっている場合は、各ファイルについて、末尾の
2641 K バイトを除いたすべてを表示することになる。K は、整数であり、
2642 以下に挙げるような何倍かを示す接尾辞を 後ろに付けることもできる。
2643 接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと
2645 `b' => 512 ("blocks")
2646 `KB' => 1000 (KiloBytes)
2647 `K' => 1024 (KibiBytes)
2648 `MB' => 1000*1000 (MegaBytes)
2649 `M' => 1024*1024 (MebiBytes)
2650 `GB' => 1000*1000*1000 (GigaBytes)
2651 `G' => 1024*1024*1024 (GibiBytes)
2652 `T', `P', `E', `Z', `Y' についても同様。
2656 ファイルの先頭から K 行を表示する。ただし、K が `-' で始まっている
2657 場合は、各ファイルについて、末尾の K 行を除いたすべてを表示すること
2658 になる。サイズの乗数接尾辞は、`-c' オプションの場合と同様である。
2670 `head' は、互換性を考慮して、`-COUNT[OPTIONS]' というオプション指定
2671 の古い書式もサポートしている。ただし、この書式が認識されるのは、最初の
2672 オプションとして指定されたときだけである。COUNT は 10 進数であり、`-c'
2673 オプションの場合と同様、サイズを示す文字 (`b', `k', `m') を後ろに続けて
2674 もよく、また、行数であることを明示する `l' や、ほかのオプション文字
2675 (`cqv') を続けることもできる。標準的なホストで使うことを意図したスク
2676 リプトでは、古い書式ではなく、`-c COUNT' や `-n COUNT' を使用するべきで
2677 ある。そのスクリプトが、古い書式にしか対応していないホストでも動作する
2678 必要がある場合は、`head' を使わないで済ました方が、たいていの場合
2679 簡明である。たとえば、`head -5' の代わりに、`sed 5q' を使用するわけだ。
2681 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2684 File: coreutils-ja.info, Node: tail invocation, Next: split invocation, Prev: head invocation, Up: Output of parts of files
2686 5.2 `tail': ファイルの末尾部分を出力する
2687 ======================================================
2689 `tail' は、各 FILE の末尾部分 (デフォルトでは 10 行) を表示する。
2690 ファイルが指定されていない場合や、FILE として `-' が指定されている
2695 tail [OPTION]... [FILE]...
2697 指定された FILE が 2 個以上あると、`tail' は、以下のような 1 行
2702 このヘッダは、各 FILE の出力の前に置かれる。
2704 GNU の `tail' は、出力するデータの量に制限がない (ほかの系統の
2705 `tail' には、制限があるものもある)。また、GNU の `tail' には、 `-r'
2706 オプション (逆順で表示する) が存在しない。ファイルを逆順にするのは、
2707 ファイルの末端部分を表示するのとは、全く別の仕事だからだ。BSD の `tail'
2708 には、`-r' があるが、バッファの大きさまでのファイルしか逆順にできず、
2709 それは通常 32 KiB である。ファイルを逆順にするなら、GNU の `tac'
2710 コマンドの方が、信頼性という点でも、用途の広さという点でも優れている。
2712 このプログラムでは以下のオプションが使用できる。参照: *note Common
2717 ファイルの末尾数行を出力する代わりに、末尾の K バイトを出力する。
2718 ただし、K が `+' で始まっている場合は、各ファイルの末端から K
2719 バイト目ではなく、先頭から K バイト目を始点として出力を開始する。
2720 K は、整数であり、 以下に挙げるような何倍かを示す接尾辞を
2721 後ろに付けることもできる。 接尾辞だけ指定してもよい (訳注:
2722 その場合は、1 が前にあるものと 見なされる)。
2723 `b' => 512 ("blocks")
2724 `KB' => 1000 (KiloBytes)
2725 `K' => 1024 (KibiBytes)
2726 `MB' => 1000*1000 (MegaBytes)
2727 `M' => 1024*1024 (MebiBytes)
2728 `GB' => 1000*1000*1000 (GigaBytes)
2729 `G' => 1024*1024*1024 (GibiBytes)
2730 `T', `P', `E', `Z', `Y' についても同様。
2734 ファイルの末端まで達しても、さらに文字を読み込もうとして、無限
2735 ループする。たぶん、ファイルのサイズが増加し続けているからである。
2736 複数のファイルが指定されている場合、`tail' は、異なるファイル
2737 から出力があるたびに、その出力がどのファイルから来たものかわかる
2740 このオプションを使ってファイルの追跡をするとき、二つの方法が選択
2741 できるが、その違いがわかるのは、追いかけているファイルが消去され
2742 たり、名前を変更されたりしたときだけである。もし、増大しつつある
2743 ファイルが削除されたあとでも、そのファイルの末尾の追跡を続行したい
2744 ならば、`--follow=descriptor' を使用すればよい。これがデフォルト
2745 の動作だが、ログファイルを追跡している際には、役に立たない。ログ
2746 ファイルは、ローテートされる (すなわち、消去、または名前を変更
2747 されてから、改めてオープンされる) 可能性があるからだ。そうした
2748 場合には、`--follow=name' を使用すれば、指定した名前のファイルを
2749 追跡することができる。おそらく追跡には、定期的にその名前のファイル
2750 をオープンし直すことで、何らかのプログラムによってファイルが消去
2751 されてから再作成されなかったかどうかを確かめるといった方法が、
2752 使われることだろう。なお、inotify をベースにした実装では、こうした
2753 ケースを処理するのに、ファイルを定期的に再オープンする必要がない
2756 どちらの方法を使った場合でも、追跡中のファイルのサイズが小さく
2757 なっていることがわかると、 `tail' は、ファイルが短縮されたという
2758 メッセージを出し、ファイルの末端と改めて判断したところからファイル
2761 ファイルが消去されたときの `tail' の動作は、追いかけているものが、
2762 名前か (`--follow=name')、ディスクリプタか (`--follow=descriptor')
2763 によって異なっている。名前による追跡の場合、tail はファイルが消去
2764 されたことを検出できるので、その旨メッセージを表示する。このとき、
2765 `--retry' も指定されていると、同じ名前のファイルが再作成されている
2766 かどうか、定期的な検査を継続して行う。ディスクリプタを追跡する場合は、
2767 ファイルが削除されたり、名前の変更が行われたりしても、tail はそれを
2768 検出しないので、メッセージを出さない。そうしたファイルが、もはや元の
2769 名前ではアクセスできなくなっていても、なお増大し続けているということ
2772 `descriptor' や `name' というオプションの値は、長い方のオプションの
2773 形式によってのみ指定できる。`-f' では指定できない。
2775 オペランド FILE が全く指定されていず、しかも標準入力が FIFO や
2776 パイプである場合、`-f' オプションは無視される。また、標準入力が
2777 FIFO やパイプである場合には、`-' という形で指定されたオペランドが
2778 あっても、`-f' はそれに対して効果を持たない。
2780 カーネルが inotify をサポートしていると、出力はファイルの変更が
2781 引き金になるので、一般に反応がキビキビしている。それに対して、
2782 カーネルが inotify をサポートしていないと、`tail' はチェック
2783 ごとに 1 秒間スリープするので (このデフォルトを変更するには、
2784 `--sleep-interval=N' を使用する)、出力の反応がやや遅めに感じられ
2785 たり、断続的に感じられたりするかもしれない。inotify のサポート
2786 なしで tail を使用する場合、反応を向上させるには、sleep する間隔を
2787 1 秒以下に設定すればよい。たとえば、次のようなエイリアスを作成する
2790 alias tail='tail -s.1'
2793 このオプションは `--follow=name --retry' と同じである。すなわち、
2794 ファイルが消去された場合、tail はその名前のファイルをオープン
2795 し直そうとする。それに失敗しても、ファイルに再びアクセスできるように
2799 指定された名前のファイルを繰り返し何度でもオープンしようとする。
2800 このオプションが役に立つのは、ファイルの末尾を追跡している場合が
2801 ほとんどである (それ以外の場合は、警告メッセージを出す)。
2803 ファイル・ディスクリプタによって追跡している場合は (すなわち、
2804 `--follow=descriptor' の場合は)、このオプションは、最初に
2805 ファイルをオープンするときの動作にしか影響しない。ひとたび
2806 オープンに成功してしまえば、`tail' は、ファイル名ではなく、
2807 ファイル・ディスクリプタを追跡することになるからである。
2809 ファイル名によって追跡している場合は (すなわち、`--follow=name'
2810 の場合は)、`tail' は、ユーザによって中断 (kill) されるまで、
2811 いつまでも繰り返しその名前のファイルを再オープンしようとする。
2813 このオプションを付けないと、 `tail' は、ファイルが存在しなく
2814 なったり、何かほかの理由でファイルにアクセスできなくなったりする
2815 ことがあっても、その旨報告するだけで、以後再検査を行うことがない。
2817 `--sleep-interval=NUMBER'
2818 何秒間隔で追尾・表示動作を行うかを変更する (デフォルトは 1.0 秒
2819 間隔)。`tail' は動作の繰り返しごとに、指定されたすべてのファイル
2820 について、サイズが変わっていないかどうかのチェックを行う。`tail'
2821 の伝統的な実装では、NUMBER は整数でなければならなかったが、GNU の
2822 `tail' では、任意の浮動小数点数を指定することが可能になっている。
2823 *Note Floating point::. `tail' が inotify を使用していると、
2824 このポーリング関係の (polling-related) オプションは通常無視される。
2825 ただし、`--pid=P' も一緒に指定されている場合は別で、その場合は、
2826 プロセス P が生きているかどうかを、`tail' が少なくとも NUMBER
2830 追跡が名前によって行われていようと、ディスクリプタによって行われて
2831 いようと、FILE 引数で指定されたすべてのファイルに書き込みを行う
2832 プログラムがたった一つならば、そのプログラムのプロセス番号 PID
2833 を指定することができる。そうしておくと、そのプロセスが終了する直後に
2834 tail も終了するようになるのだ。これがきちんと動作するのは、書き込み
2835 プログラムと tail のプロセスが、同じマシンで動いているときだけで
2836 ある。たとえば、プログラムをビルドするとき、その出力をファイルに
2837 保存しながら、ファイルが増大して行くのを見守りたいならば、下記の
2838 ように `make' と `tail' を実行すればよい。そうすれば、ビルドが完了
2839 したとき、tail のプロセスも終了する。このオプションを使わない
2840 場合は、`tail -f' のプロセスを自分で止めなければならないだろう。
2842 $ make >& makerr & tail --pid=$! -f makerr
2844 使用されていない PID を指定した場合や、tail が対象とするファイルに
2845 書き込んでいるプロセスとは別のプロセスの PID を指定した場合は、
2846 `tail' は、FILE の増大が止まるずっと前に終了してしまうかもしれ
2847 ないし、実際に書き込んでいるプログラムが終了してしまっても、当分
2848 の間終了しないかもしれない。気をつけてほしいが、システムによっては、
2849 `--pid' が使えないことがある。その場合、`tail' は警告メッセージ
2852 `--max-unchanged-stats=N'
2853 名前によってファイルの追尾を行っているとき、連続して N 回 (デフォ
2854 ルトは n=5) 追尾動作を実行しても、その間にファイルに変更がなかった
2855 場合に、ファイルを `open' し、`fstat' して、そのファイル名と結び
2856 ついている「デバイス番号/inode 番号」の組み合わせが、今でも前と同じ
2857 ままかどうかを確認する。ローテートを行うログファイルを追跡している
2858 場合、この N は、tail がローテートする前に最後の行を表示してから、
2859 新しいログファイルに溜まっている行を表示するまでの秒数に、ほぼ等
2860 しい。このオプションに意味があるのは、ポーリングを使用して (すな
2861 わち、inotify を使わずに)、名前による追跡を行うときだけである。
2865 末尾の K 行を出力する。ただし、K が `+' で始まっている場合は、
2866 各ファイルの末端から K 行目ではなく、先頭から K 行目を始点として
2867 出力を開始する。サイズの乗数接尾辞は、`-c' の場合と同様である。
2879 `tail' は互換性のために、`tail -[COUNT][bcl][f] [FILE]' という古い
2880 用法もサポートしているが、それが認識されるのは、上で説明した用法と衝突
2881 しないときだけである。この旧式の書式では、オプションはただ 1 個しか指定
2882 できず、ファイルも 1 個までしか指定できない。オプション中の COUNT は、
2883 省略可能な 10 進数であり、サイズを表す文字 (`b', `c', `l') を後ろに
2884 続けて、1 ブロック当たり 512 バイトのブロック数か、バイト数か、行数かを
2885 示すことができる。また、`-f' と同じ意味を持つ、`f' を続けてもよい。
2887 古いシステムでは、旧式のオプション書式において、先頭の `-' を `-c'
2888 や `-n' オプションの場合と同じ意味で `+' に置き換えることができる。
2889 また、そうしたシステムでは、古い用法と標準の用法が衝突する場合には、
2890 古い用法が優先される。そうした古い動作を有効にしたり、無効にしたりする
2891 には、環境変数 `_POSIX2_VERSION' を使用すればよい (*note Standards
2894 標準的なホストで使用するためのスクリプトでは、古い書式を使わずに、
2895 `-c COUNT[b]', `-n COUNT' オプションや `-f' オプションの方を使うべきで
2896 ある。そのスクリプトが、古い書式にしか対応していないホストでも動作しな
2897 ければならない場合でも、問題を起こしかねない表現を避けるように書き直す
2898 ことが、たいていはできるものだ。たとえば、`tail -1' の代わりに、 `sed
2899 -n '$p'' を使うといった具合である。それさえ不可能な場合は、どちらの
2900 書式を使うべきかを判断するために、`if tail -c +1 </dev/null >/dev/null
2901 2>&1; then ...' といった条件文をスクリプトで使用すればよい。
2903 作成するスクリプトが標準的な動作を想定している場合でも、POSIX の
2904 バージョンによって動作に違いのある用法には、気を付けた方がよい。
2905 たとえば、`tail - main.c' は避けるべきである。`tail main.c' と解釈する
2906 ことも、`tail -- - main.c' と解釈することもできるからだ。`tail -c 4'
2907 も避けるべきである。`tail -c4' を意味するかもしれないし、`tail -c 10 4'
2908 を意味するかもしれない。`tail +4' も使わない方がよい。`tail ./+4' の
2909 意味にも、`tail -n +4' の意味にも取れるからである。
2911 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
2914 File: coreutils-ja.info, Node: split invocation, Next: csplit invocation, Prev: tail invocation, Up: Output of parts of files
2916 5.3 `split': ファイルを分割する。
2917 ===========================================
2919 `split' は、入力ファイル INPUT を分割して複数の出力ファイルを作成する。
2920 各出力ファイルには、INPUT の断片が、連続した形で、あるいは 1 行づつ
2921 順番に分配された形で含まれることになる (訳注: 前者は単純な分割であり、
2922 後者は後述の「ラウンド・ロビン方式」である。`-n' オプションを参照)。
2923 INPUT が指定されていない場合や、`-' である場合には、標準入力から
2928 split [OPTION] [INPUT [PREFIX]]
2930 デフォルトでは、`split' は INPUT を 1000 行づつ各出力ファイルに
2931 書き込む (最後の断片については、何行であれ残っている行を書き込む)。
2933 出力ファイルの名前は、上記書式の PREFIX (デフォルトでは `x') に複数
2934 の文字 (デフォルトでは、`aa', `ab', ...) を続けたものであり、各出力
2935 ファイルをファイル名による伝統的なソート順で結合すると、元の入力ファイル
2936 が再構成されるようになっている (ただし、`-nr/N' オプションを指定した場合
2937 は除く)。デフォルトでは、split はまず、作成するファイルに 2 文字からなる
2938 接尾辞 (訳注: suffix、すなわち上記の `aa', `ab' など) を生成して付け、
2939 その接尾辞の 1 番目の文字がアルファベットの最後に達した時点で、接尾辞を
2940 2 文字づつ増やして行く (`yz' の次は `zaaa', `zaab', ... という具合)。
2941 こうした命名法を使えば、出力ファイルがいくつあっても対応できるし、また
2942 `--additional-suffix' オプションを付けたときでも、出力ファイルが上で
2943 述べたような順に並ぶことになるわけだ。`-a' オプションが指定されている
2944 場合に、出力ファイルの名前が種切れになってしまうと、`split' はエラー
2945 メッセージを出すが、作成した出力ファイルを消去することはない。
2947 このプログラムでは以下のオプションが使用できる。参照: *note Common
2952 INPUT から LINES 行づつ各出力ファイルに書き込む。
2954 互換性を考慮して、`split' は `-LINES' という古いオプションの書式も
2955 サポートしている。新規にスクリプトを書くなら、`-l LINES' の方を使う
2960 INPUT から SIZE バイトづつ各出力ファイルに書き込む。 SIZE
2961 は、整数であり、 以下に挙げるような何倍かを示す接尾辞を
2962 後ろに付けることもできる。 接尾辞だけ指定してもよい (訳注:
2963 その場合は、1 が前にあるものと 見なされる)。
2964 `b' => 512 ("blocks")
2965 `KB' => 1000 (KiloBytes)
2966 `K' => 1024 (KibiBytes)
2967 `MB' => 1000*1000 (MegaBytes)
2968 `M' => 1024*1024 (MebiBytes)
2969 `GB' => 1000*1000*1000 (GigaBytes)
2970 `G' => 1024*1024*1024 (GibiBytes)
2971 `T', `P', `E', `Z', `Y' についても同様。
2975 各出力ファイルに、ファイルサイズが SIZE バイトを超過しない範囲で、
2976 INPUT の完全な行をできるだけ多く書き込む。1 行の長さが SIZE バイト
2977 を越える行は、複数のファイルに分割される。SIZE の書式は、`--bytes'
2981 このオプションを使用すると、各出力は、そのままファイルに書き出さ
2982 れるのではなく、パイプを通して一つづつ、指定されたシェルコマンド
2983 COMMAND に引き渡される。COMMAND 中では、環境変数 $FILE を使用する
2984 べきであり、この変数には、シェルコマンドを実行するごとに、異なる
2985 出力ファイル名が代入される。たとえば、1TiB の圧縮ファイルがあると
2986 しよう。伸長したら、サイズが大きすぎて、ディスクに納まり切らない。
2987 しかし、それを分割して、もっと扱いやすいサイズの、それぞれ圧縮した
2988 ファイルを作らねばならない。そうした課題を解決するには、次のような
2991 xz -dc BIG.xz | split -b200G --filter='xz > $FILE.xz' - big-
2993 圧縮率が 10:1 だとすると、上のコマンドは 20GiB のファイルを 50 個
2994 ほど生成することになるだろう。ファイルの名前は、`big-aa.xz',
2995 `big-ab.xz', `big-ac.xz' などになる。
2999 INPUT を CHUNKS 個の出力ファイルに分割する。CHUNKS の部分には以下の
3002 N INPUT の現在のサイズに基づいて N 個のファイルを生成する。
3003 K/N N 個中の K 番目のみを標準出力へ出力する。
3004 l/N N 個のファイルを生成する。行の途中で分割しない。
3005 l/K/N 同上。ただし、N 個中の K 番目のみを標準出力に出力する。
3006 r/N `l' に似ている。ただし、行をラウンド・ロビン方式で分配する。
3007 (訳注: トランプの親がカードを 1 枚づつ子に配るように、
3008 入力から 1 行づつ各出力ファイルに分配して行く。)
3009 r/K/N 同上。ただし、N 個中の K 番目のみを標準出力に出力する。
3011 INPUT を N 個の「部分 (chunk)」に分けたときに出た余りのバイトは、
3012 最後の「部分」に割り振られる。最初に行われる分割のための計算の後で
3013 追加されるバイトがあっても、それは捨て去られる (`r' モードを使用
3016 INPUT の行数が N 行に足りなかったり、INPUT が短縮された場合でも、
3019 `l' モードについて言うと、「部分」の大きさは、「INPUT サイズ / N」
3020 前後になる。INPUT は、まず N 個の同一サイズの区画 (partition) に
3021 分割され、余りがあれば、それは最後の区画に割り当てられる。ある行の
3022 先頭が、ある区画の内側にある場合、その行は行末まで、その区画に対応
3023 するファイルに書き込まれる。行は、たとえ後続する区画にまではみ出して
3024 いても分割されないので、書き出されるファイルは、区画のサイズより
3025 大きくなることもあれば、小さくなることもある。行が後続する区画を
3026 すっぽり覆ってしまうほど長い場合には、空っぽのファイルができること
3029 `r' モードでは、INPUT のサイズは問題にならない。だから、入力は、
3030 たとえば、パイプからであっても構わない。
3033 `--suffix-length=LENGTH'
3034 使用する接尾辞の長さを LENGTH 文字にする。LENGTH に 0 を指定する
3035 と、`-a' オプションを (すでに指定していた場合でも) 全く指定しな
3036 かったのと、同じことになり、従って、デフォルトの動作が有効になる。
3037 すなわち、接尾辞は、2 文字から始まり、`-n' や `--numeric-suffixes
3038 =FROM' オプションが指定されていないかぎり、必要になるごとに、2 文字
3042 `--numeric-suffixes[=FROM]'
3043 接尾辞にアルファベットの小文字ではなく、数字を使用する。数字の接尾
3044 辞では、 FROM が指定されていれば FROM から、指定されていなければ 0
3045 から数を数えて行く。注意していただきたいが、FROM の値を指定すると、
3046 上で述べた接尾辞の長さを自動的に増やして行くデフォルトの機能まで無効
3047 になる。そこで、ユーザとしては、99 を越える数字を接尾辞として使える
3048 ようにするため、`-a' オプションも併せて指定したくなるかもしれない。
3050 `--additional-suffix=SUFFIX'
3051 出力ファイル名の末尾に SUFFIX をさらに追加する。SUFFIX 中に
3055 `--elide-empty-files'
3056 サイズ 0 の出力ファイルができないようにする。そうしたものが生成
3057 されることがあるのは、`--number' を使ったときである。入力ファイル
3058 が (短縮されて) 指定された数の出力ファイルを作るには分量が
3059 足りなくなっている場合や、1 行が長すぎて、後続する「部分」を
3060 すっぽり飲み込んでしまっている場合などがそれに当たる。この
3061 オプションが指定されているときでも、出力ファイルの連続番号が、
3066 `--number r/...' モードにおいて入力を即座に出力する。このモードは、
3070 各出力ファイルをオープンする直前に、診断メッセージを表示する。
3073 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3075 `--number' (`-n') の動作を理解していただくために、用例をいくつか
3078 デフォルトでは、1 行が 2 行以上に分割されることがあるのに、注目して
3081 $ seq -w 6 10 > k; split -n3 k; head xa?
3093 "l/" 修飾子を使用して、行の途中で分割しないようにする。
3095 $ seq -w 6 10 > k; split -nl/3 k; head xa?
3107 "r/" 修飾子を使用して、ラウンド・ロビン方式で分配する。
3109 $ seq -w 6 10 > k; split -nr/3 k; head xa?
3121 K 番目の「部分」だけ取り出すこともできる。次の例は、33 の「部分」に
3122 分け、そのうちの 7 番目だけを取り出して、表示している。
3124 $ seq 100 > k; split -nl/7/33 k
3130 File: coreutils-ja.info, Node: csplit invocation, Prev: split invocation, Up: Output of parts of files
3132 5.4 `csplit': ファイルを内容を目印にして分割する。
3133 ====================================================================
3135 `csplit' は、入力ファイル INPUT を分割して 0 個以上の出力ファイルを
3136 生成する。INPUT が `-' である場合は、標準入力から読み込む。
3140 csplit [OPTION]... INPUT PATTERN...
3142 出力ファイルの中身がどうなるかは、以下で詳しく述べるように、引数
3143 PATTERN によって決まってくる。引数 PATTERN が、入力ファイル中に存在
3144 しない行を指している場合は、エラーになる (たとえば、入力の残りの
3145 部分に、指定された正規表現にマッチする行がもう存在しない場合)。
3146 すべてのパターン・マッチが終わったとき、残っている入力があれば、
3149 デフォルトでは、`csplit' は、出力ファイルを生成した後で、各出力
3150 ファイルに書き込んだバイト数を表示する。
3152 パターン引数 PATTERN には、以下のタイプがある。
3155 入力の最初から N 行目の直前までを含む (つまり、N-1 行目までの)
3156 出力ファイルを作成する (N は正の整数)。繰り返し回数の指定が後に
3157 続く場合は、繰り返しごとに、入力ファイルの次の N 行分を含む出力
3161 現在行から、入力ファイル中の次に REGEXP にマッチする行の直前までを
3162 内容とする (すなわち、マッチする行は含まない) 出力ファイルを作成
3163 する。整数の OFFSET を指定してもよい。指定した場合は、マッチする行
3164 にプラス/マイナス OFFSET した行の直前までの入力が (つまり、その行は
3165 含まない)、出力ファイルに書き込まれ、書き込まれた次の行から入力の
3169 上記のタイプと同様だが、出力ファイルを作成しない点が異なる。要するに、
3170 入力ファイルのその部分は捨てられることになるわけだ。
3173 直前に行ったパターンの検索を、さらに REPEAT-COUNT 回繰り返す。
3174 REPEAT-COUNT には正の整数か、アステリスクを指定できる。後者は、
3175 入力がなくなるまで、必要なだけ何回でも繰り返すことを意味する。
3176 (訳注: `csplit INPUT '/PATTERN_1/' '{3}' '/PATTERN_2/' '{*}''
3180 出力ファイルの名前は、接頭辞 (prefix、デフォルトでは `xx') に接尾辞
3181 (suffix) を続けたものになる。デフォルトの接尾辞は、二桁の 10 進数を `00'
3182 から `99' まで順番に増やして行ったものである。いかなる場合でも、出力
3183 ファイルを、ファイルの名前によってソートした順番で結合すると、元の入力
3186 `csplit' のデフォルトでは、エラーになった場合や、ハングアップ、
3187 割り込み、中止、終了といったシグナルを受け取った場合には、それまでに
3188 作成した出力ファイルをすべて消去してから終了する。
3190 このプログラムでは以下のオプションが使用できる。参照: *note Common
3195 PREFIX を出力ファイル名の接頭辞として使用する。
3199 SUFFIX を出力ファイル名の接尾辞として使用する。このオプションを
3200 指定する場合、接尾辞として指定する文字列には、`printf(3)' 方式の
3201 変換指定が必ず一つは (それも、一つだけ) 含まれていなければなら
3202 ない。変換指定には、形式指定フラグ、フィールド幅、精度指定と
3203 いった修飾子を付けてもよく、3 種の修飾子をすべて付けることも
3204 できる。フォーマット文字は、バイナリの符号なし整数である引数を、
3205 人間に読みやすい形式に変換するものでなければならない。フォーマット
3206 文字の `d' と `i' は、`u' の別名であり、`u', `o', `x', `X' 変換が
3207 可能である。SUFFIX の全体が (現在の出力ファイルが何番目かという
3208 情報とともに) `sprintf(3)' 関数に引き渡され、出力ファイルの一つ一つ
3209 に対して、ファイル名に使う接尾辞が順番に作られることになる。なお、
3210 このオプションを使用すると、`--digits' オプションは無視される。
3214 出力ファイル名に含まれる数字の桁数を、デフォルトの 2 桁から DIGITS
3219 エラーが起きても、出力ファイルを消去しない。
3221 `--suppress-matched'
3222 指定した PATTERN にマッチする行を出力しない。言い換えれば、境界に
3223 なる行が、分割されたファイルの 2 番目以降の断片の先頭に現れない
3224 ようにする。(coreutils-8.22 の新機能。訳注: PATTERN が正規表現の
3225 場合には、境界になる行がファイル中にたとえ 1 箇所しかなくても、
3226 その行の表示を抑制するには、`csplit --suppress-matched INPUT
3227 PATTERN '{*}'' などと、繰り返しの指定をする必要があるようだ。)
3230 `--elide-empty-files'
3231 サイズ 0 の出力ファイルができないようにする (入力ファイルを各部分
3232 に区切る行が、どの部分においても最初の行になることを期待している
3233 場合に、このオプションを使わないと、一番目の出力ファイルがたいてい
3234 サイズ 0 になる)。このオプションが指定されているときでも、出力
3235 ファイルの連続番号が 0 から始まって、順番に増えていくことに変わり
3245 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3247 用例を挙げてみよう。まず、練習用に空のディレクトリを作って、そこに
3252 次に、1 から 14 まで連続する数を、0 または 5 で終わる行で分割する。
3254 $ seq 14 | csplit - '/[05]$/' '{*}'
3259 ここで表示された各数字は、csplit が今作成した出力ファイルのサイズ
3260 である。その出力ファイルの名前をリストする。
3290 $ csplit --suppress-matched INPUT.TXT '/^$/' '{*}'
3293 File: coreutils-ja.info, Node: Summarizing files, Next: Operating on sorted files, Prev: Output of parts of files, Up: Top
3295 6 ファイルの要約 (行数、単語数、チェックサム)
3296 *****************************************************************
3298 以下のコマンドは、ファイル内容全体を表現する若干の数字を生成する。
3302 * wc invocation:: 行数、単語数、バイト数を表示する。
3303 * sum invocation:: チェックサムとブロック数を表示する。
3304 * cksum invocation:: CRC チェックサムとバイト数を表示する。
3305 * md5sum invocation:: MD5 ダイジェストの表示、または検査をする。
3306 * sha1sum invocation:: SHA-1 ダイジェストの表示、または検査をする。
3307 * sha2 utilities:: SHA-2 ダイジェストの表示、または検査をする。
3310 File: coreutils-ja.info, Node: wc invocation, Next: sum invocation, Up: Summarizing files
3312 6.1 `wc': 行数、単語数、バイト数を表示する
3313 ==========================================================
3315 `wc' は、指定された各 FILE に含まれる、バイト数、文字数、ホワイト
3316 スペース (訳注: 空白、タブ、改行など) で区切られた単語数、改行数を算出
3317 する。FILE が指定されなかった場合や、FILE として `-' が指定された
3322 wc [OPTION]... [FILE]...
3324 `wc' は各ファイルにつき、一行の算出結果を出力する。引数として
3325 ファイルが指定されていれば、そのファイル名を数値の後ろに表示する。
3326 複数の FILE が指定されている場合は、最後の行で合計を表示し、ファイル
3327 名の部分に、`total' と書き込む。表示される数値の順番は、改行数、単語数、
3328 文字数、バイト数、最長行の長さになる。各数値は、フィールドに右詰めで
3329 表示され、フィールド間には、少なくとも一個の空白が置かれる。そうする
3330 ことで、複数の数字とファイル名が、たいていの場合きちんと整列するように
3331 なっているのだ。数値の入るフィールドの幅は、入力に応じて変化するので、
3332 一定のフィールド幅を当てにするべきではない。ただし、GNU の拡張として、
3333 表示される数値がただ 1 個だけの場合は、その数値の頭に空白を入れない
3336 デフォルトでは、`wc' は 3 個の数値を表示する。すなわち、改行数、単語
3337 数、バイト数である。オプションによって、特定の数値のみを表示するように
3338 指定することもできる。どんなオプションも、それ以前に指定されたオプション
3343 上記のコマンドは、バイト数と単語数の両方を表示することになる。
3345 `--max-line-length' を指定すると、`wc' はファイルごとの最長行の
3346 長さを表示する。さらに、複数のファイルが存在する場合は、(各最長行の
3347 合計ではなく) 最長行中の最長のものを表示する。ここで言う行の長さは、
3348 画面に表示される桁数のことである。表示桁数の計算は現在のロケールに
3349 従って行われ、タブ位置は 8 桁ごとに来るものとされる。
3351 このプログラムでは以下のオプションが使用できる。参照: *note Common
3374 `--files0-from=FILE'
3375 コマンドラインで名前を指定されたファイルの処理を行わない。その代わり
3376 に、ファイル FILE に名前が書き込まれているファイルの処理を行う。
3377 なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL)
3378 で終端されていなければならない。このオプションは、ファイル名のリスト
3379 が長すぎて、コマンドライン長の上限を超過してしまいそうなときに、
3380 便利である。そうした場合、`wc' を `xargs' 経由で実行するのは、
3381 望ましくない。なぜなら、`xargs' はファイルのリストをいくつかの部分
3382 に分割して `wc' に渡すので、`wc' はリスト全体の合計ではなく、
3383 部分リストごとの合計を表示してしまうからである。 ASCII NUL
3384 で終端されたファイル名のリストを得る方法の一つは、 GNU `find' に
3385 `-print0' を付けて使うことである。FILE に `-' を指定すれば、 ASCII
3386 NUL で終端されたファイル名を標準入力から読み込むことが できる。
3388 たとえば、カレント・ディレクトリ以下にある、すべての `.c' ファイル
3389 や `.h' ファイルの内で、最長の行の長さを知るには、次のようにする。
3391 find . -name '*.[ch]' -print0 |
3392 wc -L --files0-from=- | tail -n1
3395 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3398 File: coreutils-ja.info, Node: sum invocation, Next: cksum invocation, Prev: wc invocation, Up: Summarizing files
3400 6.2 `sum': チェックサムとブロック数を表示する
3401 ==============================================================
3403 `sum' は、指定された各 FILE の 16-bit チェックサムを計算する。 FILE
3404 が指定されなかった場合や、FILE として `-' が指定された場合は、
3409 sum [OPTION]... [FILE]...
3411 `sum' は各 FILE のチェックサムを表示し、その後にファイルのブロック数
3412 (整数に切り上げたもの) を続ける。複数の FILE が指定されていると、
3413 ファイル名も表示される (デフォルト)。(`--sysv' オプションが指定されて
3414 いる場合は、引数に一つでもファイルがあれば、そのファイル名が表示される。)
3416 デフォルトでは、GNU の `sum' は、BSD の `sum' と互換性のある
3417 アルゴリズムを使って、チェックサムを計算し、1 ブロック 1024 バイトの
3420 このプログラムでは以下のオプションが使用できる。参照: *note Common
3424 デフォルトの (BSD と互換性のある) アルゴリズムを使用する。この
3425 オプションが存在しているのは、System V の `sum' との互換性のため
3426 である。前方に `-s' オプションも指定されているとき以外、このオプ
3431 System V の `sum' のデフォルトと互換性のあるアルゴリズムを使って、
3432 チェックサムを計算し、1 ブロック 512 バイトのブロック数でファイル
3436 `sum' は、互換性のために提供されている。新しいアプリケーションでは、
3437 `cksum' プログラム (次のセクションを参照) を使う方がよい。
3439 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3442 File: coreutils-ja.info, Node: cksum invocation, Next: md5sum invocation, Prev: sum invocation, Up: Summarizing files
3444 6.3 `cksum': CRC チェックサムとバイト数を表示する
3445 =================================================================
3447 `cksum' は、指定された各 FILE の CRC (cyclic redundancy check、巡回
3448 冗長検査) チェックサムを計算する。FILE が指定されなかった場合や、 FILE
3449 として `-' が指定された場合は、標準入力を対象とする。
3453 cksum [OPTION]... [FILE]...
3455 `cksum' は、各ファイルの CRC チェックサムとバイト数を表示する。また、
3456 引数が指定されていない場合を除いて、ファイル名も表示する。
3458 `cksum' は通常、信頼性の低い方法 (たとえば、netnews) によって転送
3459 されたファイルに損傷がないことを確認するために使用される。受信した
3460 ファイルに対する `cksum' の出力を、転送元のファイルに対する `cksum'
3461 の出力 (たいてい、配布物中に入っている) と比較するわけである。
3463 CRC のアルゴリズムは、POSIX 規格によって規定されており、BSD や
3464 System V の `sum' のアルゴリズム (直前のセクションを参照) と互換性が
3465 ない。CRC アルゴリズムの方が信頼性が高い。
3467 オプションは、`--help' と `--version' だけである。*Note Common
3470 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3473 File: coreutils-ja.info, Node: md5sum invocation, Next: sha1sum invocation, Prev: cksum invocation, Up: Summarizing files
3475 6.4 `md5sum': MD5 ダイジェストの表示、または検査をする
3476 ========================================================================
3478 `md5sum' は、指定された各 FILE の 128-bit チェックサムを計算する。
3479 チェックサムは、指紋 ("fingerprint") とか、メッセージ・ダイジェスト
3480 ("message-digest") とも呼ばれる (訳注: ハッシュ値と呼ばれることもある)。
3482 注意: MD5 ダイジェストは、ファイルの不測の損傷を検知することに
3483 関して、単純な CRC (`cksum' コマンドで使用できる) よりも信頼性が高い。
3484 二つのファイルがたまたま同一の MD5 値を持っている確率は、ほとんどゼロ
3485 だからである。だからと言って、悪意のある改竄に対して安全だと考えては
3486 ならない。ある特定の MD5 指紋を持つファイルを見つけ出すことは、現在の
3487 ところ事実上不可能だと考えられているが、デジタル証明書などのファイルが
3488 署名に MD5 ダイジェストを使用しているとき、そうしたファイルに手を
3489 加えて、正当に見えるようする方法なら、周知のことだからである。もっと
3490 安全なハッシュ値が必要なら、SHA-2 の使用を考慮した方がよい。 *Note sha2
3493 指定された FILE が `-' の場合や、ファイルが全く指定されなかった
3494 場合は、`md5sum' は標準入力のチェックサムを計算する。また、`md5sum' は、
3495 ファイルとチェックサムの間に矛盾がないかどうかを判定することもできる。
3499 md5sum [OPTION]... [FILE]...
3501 各 FILE に対して `md5sum' は、MD5 チェックサム、入力モードがバイ
3502 ナリかテキストかを示すフラグ、それにファイル名を出力する。FILE に
3503 バックスラッシュや改行文字が含まれている場合は、出力する行の先頭に
3504 バックスラッシュを付け、さらに、ファイル名中の問題のある各文字を
3505 バックスラッシュでエスケープする。そうすることで、わがままなファイル
3506 名があっても、出力に誤解の余地がないようにしているわけだ。FILE が
3507 指定されていなかったり、`-' という形で指定されている場合は、標準入力
3510 このプログラムでは以下のオプションが使用できる。参照: *note Common
3515 各入力ファイルをバイナリとして扱う。すなわち、入力ファイルをバイナリ
3516 モードで読み込み、出力に `*' というフラグを付ける。このオプションは
3517 `--text' の反対である。バイナリファイルとテキストファイルを区別しな
3518 い GNU のようなシステムでは、このオプションは入力モードがバイナリ
3519 であるとのフラグを付けるだけであり、MD5 チェックサムの値には影響を
3520 及ぼさない。このオプションは、バイナリファイルとテキストファイルを
3521 区別する MS-DOS のようなシステムでは、デフォルトである。だだし、
3522 読み込みを標準入力から行い、その標準入力が端末であるときは除く。
3526 各 FILE から (FILE が指定されなかった場合は、標準入力から)、ファ
3527 イル名とチェックサム情報を読み込み (FILE をチェックサム計算の対象と
3528 なるデータとして読み込むわけはない)、そのチェックサム情報が、名前を
3529 挙げられているファイルの内容に対応しているかどうかを報告する。この
3530 モードの `md5sum' に対する入力は、たいていの場合、事前に `md5sum'
3531 を実行してチェックサムを作成したときの出力である。入力の有効な行は
3532 それぞれ、MD5 チェックサム、バイナリかテキストかのフラグ、ファイル
3533 名の順になっている。バイナリモードには `*' の指標が付き、テキスト
3534 モードには、` ' (空白) の指標が付く。そうした各行に対して、`md5sum'
3535 は、そこに名前を挙げられたファイルを読み込み、その MD5 チェックサム
3536 を計算する。そして、算出したメッセージダイジェストが、そのファイル名
3537 と同じ行にあるチェックサムと一致しない場合は、そのファイルがテストに
3538 失敗したことを報告するのである。両者が一致した場合は、テストにパス
3539 したことになる。デフォルトでは、有効な各行に対して標準出力にメッ
3540 セージを 1 行づつ書き出し、指名されたファイルがテストにパスしたか
3541 どうかを明かにする。また、すべてのチェックが完了したとき、テストに
3542 失敗したものが一つでもあれば、警告メッセージを標準エラーに出力する。
3543 この出力を抑制したければ、`--status' オプションを使用すればよい。
3544 リストされたファイルの中に、オープンできなかったり、読み込めなかっ
3545 たりするものがあった場合や、有効な行に書いてあるチェックサムが対応
3546 するファイルの実際の値と一致しなかった場合、それに、有効な行が全く
3547 存在しなかった場合は、`md5sum' は 0 以外のステータスで終了する。
3548 それ以外の場合は正常終了することになる。
3551 このオプションが役に立つのは、チェックサムを照合するときだけである。
3552 このオプションを指定すると、チェックサムを照合する際、検査に成功した
3553 ファイルごとに 'OK' (訳注: 日本語では、「成功」または「完了」) の
3554 メッセージを出さなくなる。ただし、ファイルが照合に失敗した場合は、
3555 デフォルトと同じ 1 ファイル 1 行の形式で結果を報告する。チェック
3556 サムに何らかの不一致があった場合は、失敗を総括した警告メッセージも
3560 このオプションが役に立つのは、チェックサムを照合するときだけである。
3561 このオプションを指定すると、チェックサムを照合する際、デフォルトの
3562 1 ファイルに付き 1 行の判定メッセージを出さなくなる。また、照合の
3563 失敗があっても、それを総括した警告メッセージを出力することがない。
3564 とは言え、ファイルのオープンや読み込みに失敗した場合は、やはり
3565 それぞれの診断結果を標準エラーに表示する。リストされたすべての
3566 ファイルを読み込むことができ、しかも、すべてのファイルについて、
3567 対応する MD5 チェックサムと矛盾がなければ、正常終了する。それ以外
3568 の場合は、失敗があったことを示すステータスコードで終了する。
3571 BSD スタイルのチェックサムを出力する。つまり、使用したチェックサム
3572 のアルゴリズムも表示するということだ。GNU の拡張として、問題を起こ
3573 しかねない文字を含むファイル名は、上述したようにエスケープされ、
3574 さらに、行の先頭に エスケープの指標に使われたのと同じ `\' 文字が
3575 付けられる。`--tag' オプションはバイナリ・モードを意味し、`--text'
3576 オプションと一緒に使うことは認められていない。そんなことをサポート
3577 しても、出力の書式をむやみに繁雑にするだけで、利益はほとんどない
3582 各入力ファイルをテキストとして扱う。すなわち、入力ファイルをテキスト
3583 モードで読み込み、出力に ` ' というフラグを付ける。このオプションは
3584 `--binary' の反対である。バイナリファイルとテクストファイルを区別
3585 しない GNU のようなシステムでは、このオプションはデフォルトである。
3586 ほかのシステムでも、読み込みを標準入力から行い、その標準入力が端末で
3587 あるときは、デフォルトになる。ただし、`--tag' が使用されているとき
3588 に、このモードがデフォルトになることはない。
3592 チェックサムを照合する際、MD5 チェックサムを記載した行の書式に
3593 正しくないものがあると、その旨警告を発する。このオプションが
3594 役に立つのは、チェックされる入力中の、数行を除いたすべての行が、
3598 チェックサムを照合する際、無効な入力行が 1 行でもあれば、そうした
3599 行のすべてについて警告を発したのち、0 以外の終了ステータスで終了
3603 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
3606 File: coreutils-ja.info, Node: sha1sum invocation, Next: sha2 utilities, Prev: md5sum invocation, Up: Summarizing files
3608 6.5 `sha1sum': SHA-1 ダイジェストの表示、または検査をする
3609 ===========================================================================
3611 `sha1sum' は、指定された各 FILE の 160-bit チェックサムを計算する。
3612 このコマンドの使用法やオプションは、`md5sum' と全く同じである。 *Note
3613 md5sum invocation::.
3615 注意: SHA-1 ダイジェストは MD5 より安全であり、コリジョン
3616 (collision、衝突。別のファイルが同一の指紋を持つこと) が起きたという
3617 話を聞いたことはない。しかしながら、大量の -- と言っても非現実的な
3618 ほどではない -- リソースがあれば、コリジョンを作り出せることがわかって
3619 いる。この理由から、SHA-1 は、もっと安全な SHA-2 ハッシュ・アルゴリズム
3620 に徐々に移行すべきだと、一般に考えられている。 *Note sha2 utilities::.
3623 File: coreutils-ja.info, Node: sha2 utilities, Prev: sha1sum invocation, Up: Summarizing files
3625 6.6 sha2 utilities: SHA-2 ダイジェストの表示、または検査をする
3626 ================================================================================
3628 コマンド `sha224sum', `sha256sum', `sha384sum', `sha512sum' は、一まとめ
3629 にして SHA-2 ハッシュと呼ばれる様々な長さのチェックサムを計算する
3630 (それぞれ、224, 256, 384, 512 bits である)。こうしたコマンドの使用法
3631 とオプションは、`md5sum' と全く同じである。*Note md5sum invocation::.
3633 注意: SHA384 と SHA512 のダイジェストは、SHA224 や SHA256 に比べて、
3634 計算にかなり時間がかかる。32 ビットのコンピュータではなおさらである。
3637 File: coreutils-ja.info, Node: Operating on sorted files, Next: Operating on fields, Prev: Summarizing files, Up: Top
3640 **************************************
3642 以下のコマンドは、ソートしたファイルを操作 (生成) する。
3646 * sort invocation:: テキストファイルを並べ替える。
3647 * shuf invocation:: テキストファイルをシャッフルする。
3648 * uniq invocation:: ファイルから重複を省く。
3649 * comm invocation:: ソート済みの二つのファイルを一行づつ比較する。
3650 * ptx invocation:: ファイル内容の permuted index を作成する。
3651 * tsort invocation:: トポロジカル・ソート。
3654 File: coreutils-ja.info, Node: sort invocation, Next: shuf invocation, Up: Operating on sorted files
3656 7.1 `sort': テキストファイルを並べ替える
3657 ======================================================
3659 `sort' は、指定されたファイルから読み込んだすべての行に対して、ソート
3660 (sort、一定の基準に従った並べ替え)、マージ (merge、統合)、比較を行う。
3661 ファイルが一つも指定されなかった場合や、FILE として `-' が指定された
3662 場合は、標準入力から読み込む。デフォルトでは、`sort' は結果を標準出力
3667 sort [OPTION]... [FILE]...
3669 `sort' には三つの動作モードがある。ソート (これがデフォルト)、
3670 マージ、それに、すでにソートされているかどうかのチェックである。
3671 動作モードの変更には、以下のオプションを使用する。
3675 `--check=diagnose-first'
3676 指定されたファイルがすでにソートされているかどうかをチェックする。
3677 ファイル全体がソート済みでない場合は、診断メッセージを出し、順番
3678 から外れている最初の箇所を示してから、ステータス 1 で終了する。
3679 ファイルがソート済みの場合は、正常終了する。入力ファイルは、1 個
3685 指定されたファイルがすでにソート済みだったら、正常終了する。
3686 さもなければ、ステータス 1 で終了。入力ファイルは、1 個しか指定
3687 できない。このオプションは `-c' と同様だが、診断メッセージを
3692 指定された複数のファイルを、一つのグループとしてソートすることで
3693 統合を行う。各入力ファイルは、必ずそれぞれがソート済みでなければ
3694 ならない。マージモードの代わりにソートモードを使えば、そうした条件
3695 なしで、ソートとマージを行うことができる。マージモードがあるのは、
3696 それが使える場合は、その方が高速だからである。
3699 二つの行の比較は、次のように行われる。`sort' は、対になる各フィールド
3700 を、コマンドラインで指定された順番で、そのフィールドに結びついた順序関係
3701 のオプションに従いつつ比較し、相違が見つかるか、比較するフィールドが
3702 なくなるまでそれを続ける。キーとなるフィールドが指定されていない場合は、
3703 デフォルトのキーである行全体が比較に使用される。最後に、すべてのキーが
3704 同じだったときは、最後の手段として、`--reverse' (`-r') 以外の順序関係の
3705 どんなオプションも指定されていないかのように、行全体を比較する。
3706 `--stable' オプションを指定すると、この最後の手段の比較 ("last-resort
3707 comparison") を行わないようになり、その結果、すべてのキー・フィールドが
3708 等価である行は、互いに対する元の順序がそのまま維持される。 `--unique'
3709 (`-u') オプションも、最後の手段の比較を無効にする。
3711 別の指定がなされていないかぎり、すべての比較は、`LC_COLLATE' の
3712 ロケールによって指定されている、文字の照合順序で行われる。 (1)
3714 GNU の `sort' では (GNU のすべてのユーティリティについて規定されて
3715 いるとおり)、入力行の長さに上限がない。言い換えれば、各行に含まれる
3716 バイト数に制限がない。また、入力ファイルの最後のバイトが改行でなければ、
3717 GNU の `sort' は黙って改行を追加する。なお、行末の改行は、比較に当たって
3723 1: `-c' や `-C' を付けて実行した際に、入力がソートされていなかった。
3726 環境変数 `TMPDIR' が設定されていれば、`sort' はその値をテンポラリ・
3727 ファイルを置くディレクトリとして `/tmp' の代わりに使用する。
3728 `--temporary-directory' (`-T') オプションは、環境変数よりさらに優先さ
3731 以下に挙げるオプションは、出力する行の順序に影響を与える。こうした
3732 オプションは、グローバルなオプションとして指定することもできるし、キー
3733 となる特定のフィールドに対してのみ働くように指定することもできる。キー
3734 となるフィールドが全く指定されていない場合は、グローバルなオプションが
3735 行全体の比較に使用される。キー・フィールドの指定がある場合は、グローバル
3736 なオプションは、キー・フィールドのうち、それ自身のオプションが特に指定
3737 されていないフィールドに継承される。POSIX 以前の `sort' のバージョンを
3738 使用している場合、グローバルなオプションが効果を持つのは、それより後で
3739 指定されるキー・フィールドに対してだけなので、移植を考慮したシェルスク
3740 リプトでは、グローバル・オプションを最初に指定した方がよい。
3743 `--ignore-leading-blanks'
3744 各行中でソートに使うキーを捜すときに、文字の前にある空白を無視する。
3745 デフォルトの空白は、スペースまたはタブだが、`LC_CTYPE' のロケールに
3746 よっては違うかもしれない。なお、次のことに留意してほしい。空白は、
3747 使用しているロケールの照合ルールによっては無視されることがあるが、
3748 このオプションを指定しておかないと、`-k' オプションで指定される
3749 キー中の文字の位置に関して、空白が意味を持つことになる。
3752 `--dictionary-order'
3753 電話帳 ("phone directory") 順にソートする。ソートする際、表示可能
3754 文字、数字、空白以外のすべての文字を無視する。デフォルトの表示可能
3755 文字と数字は ASCII のそれであり、空白はスペースまたはタブだが、後者
3756 は `LC_CTYPE' のロケールによっては違うかもしれない。
3760 アルファベットの小文字を、一回すべて対応する大文字に直してから、
3761 比較する。その結果、たとえば、`b' と `B' は等価なものとしてソート
3762 される。どの文字がどのタイプに属するか (訳注: たとえば、大文字か
3763 小文字か) を決めているのは、`LC_CTYPE' のロケールである。`--unique'
3764 オプションと一緒に使用したとき、小文字を使っている等価な行があると、
3765 その小文字の行は捨てられることになる。(大文字を使っている等価な行の
3766 方を捨てる方法は、現在のところ存在しない。(`--reverse' オプションが
3767 あっても、それが効果を発揮するのは、小文字の行が捨てられた後の最終
3768 結果に対してだけなのだ。)) (訳注: 実際の動作はこの説明と少し違う。
3769 最近の `sort' では、`--unique' と併せて使用した場合、小文字を
3770 使っている行が捨てられるのではなく、等価な行のうち、最初に現れた
3771 行が残り、それ以外のすべてが捨てられるようである。)
3774 `--general-numeric-sort'
3775 `--sort=general-numeric'
3776 各行の先頭部分を倍精度浮動小数点数 (long double-precision floating
3777 point number) に変換して、数値としてソートする。 *Note Floating
3778 point::. オーバーフロー、アンダーフロー、変換エラーが起きても、
3779 通知しない。行の並ぶ順番は以下のようになる。
3781 * 数字で始まっていない行 (すべて同じ数値と見なされる)。
3783 * NaN (IEEE の浮動小数点演算で使う "Not a Number" を表す値) を
3784 一貫した、ただし、マシンに依存する順番で並べる。
3788 * 有限数を数値として昇順で並べる (-0 と +0 は等価とする)。
3792 このオプションを使うのは、他に方法がないときのみにすること。
3793 処理速度が `--numeric-sort' (`-n') よりずっと遅いし、浮動小数点数に
3797 `--human-numeric-sort'
3798 `--sort=human-numeric'
3799 数値としてソートする。その際、ソートを、まず数が正か負かによって
3800 行い (負の数、ゼロ、正の数の順)、次に SI 接尾辞 によって行い
3801 (接尾辞なし、`k' や `K'、そして `MGTPEZY' の順 *note Block
3802 size::)、 最後に数値によって行う。たとえば、`1023M' は `1G' の
3803 前に来る。SI 接尾辞として `M'(メガ) は `G' (ギガ) の前になるから
3804 だ。つまり、このオプションでソートする対象は、接尾辞の意味が 1000
3805 の累乗か、1024 の累乗かを問わず、一貫したやり方で、数値の規模に
3806 もっともふさわしい接尾辞を付けられている数値である。従って、この
3807 オプションは、`df', `du', `ls' などのコマンドに `--human-readable'
3808 や `--si' オプションを付けて実行したときの、一回分の出力をソート
3809 するのに用いられる。数値の書式は、`--numeric-sort' の場合と同じ
3810 であり (訳注: すなわち、数値の前に付けた `+' 符号を理解しない)、
3811 SI 接尾辞は、数値の後ろに直接続いていなければならない。なお、
3812 `numfmt' コマンドを使用することも考慮していただきたい。`numfmt'
3813 を使用すれば、数値をソートした後で、人間に読みやすい形に整形し直す
3814 ことができるので、たいていの場合 `sort' の対象に、より精密な数値を
3818 `--ignore-nonprinting'
3819 表示できない文字を無視する。どの文字がどのタイプに属するかを決めて
3820 いるのは、 `LC_CTYPE' のロケールである。より強力なオプションである
3821 `--dictionary-order' (`-d') が一緒に指定されていると、このオプ
3827 比較する部分の先頭が、0 個以上の空白に続いて、月名の短縮形になって
3828 いるとき、すべての文字を大文字に直して `JAN' < `FEB' < ... < `DEC'
3829 の順序で比較する。月名として無効な名前は、有効な月名より前に置かれる。
3830 月名のつづりを決めているのは、`LC_TIME' カテゴリのロケールである
3831 (訳注: だから、英語の月名によってソートするには、ロケールを英語か
3832 C にしておく必要がある)。デフォルトの空白は、スペースまたはタブ
3833 だが、`LC_CTYPE' のロケールによっては違うかもしれない。
3838 数値としてソートする。数値は行頭から始まり (訳注: 比較する位置が
3839 指定されていれば、実は行頭でなくてもよい)、任意個の空白、必要なら
3840 `-' 符号、それに、0 個以上の数字から構成される。数値は、区切り
3841 記号で 3 桁づつ区切られていてもよく、小数点記号と 0 個以上の数字
3842 が続いていてもよい。数字がない場合は、`0' と見なされる。小数点記号
3843 や桁区切りの記号を規定しているのは、`LC_NUMERIC' のロケールである。
3844 デフォルトの空白は、スペースまたはタブだが、`LC_CTYPE' のロケール
3847 比較は厳密であり、丸めによるエラーはない。
3849 このオプションは、数値に前置した `+' 符号や、指数表記を理解しない。
3850 そうした文字列を数値として比較するには、`--general-numeric-sort'
3855 バージョン名とバージョン番号によってソートする。標準用法のソートと
3856 動作が似ているが、10 進数の数字が連続する各部分をインデックス番号や
3857 バージョン番号と見なし、(文字列としてではなく) 数値として取り扱う
3858 点が違う。(*Note Details about version sort::.)
3862 比較の結果を逆順にする。その結果、出力ではより大きなキーの値を
3868 ソートを行うのに、入力中のキーをハッシュしてから、そのハッシュ値
3869 をソートするという方法を用いる。ハッシュ関数はランダムに選択する。
3870 その際、衝突 (collision) が絶対起きないように関数を選択するので、
3871 値の違うキーは必ず違うハッシュ値を持つようになる。これは、入力の
3872 ランダムな並び替えに似ているが (*note shuf invocation::)、同じ値を
3873 持つキーは一緒に並べるという点が、異なっている。
3875 ランダムソートを行うフィールドが複数指定されている場合は、ランダムに
3876 選択された一つの同じハッシュ関数が、すべてのフィールドで使用される。
3877 フィールドごとに別のランダムなハッシュ関数を使うようにするには、
3880 ハッシュ関数の選択は、 `--random-source' オプションの影響を受ける。
3885 `--compress-program=PROG'
3886 テンポラリ・ファイルを PROG というプログラムで圧縮する。
3888 PROG プログラムは、引数が一つも存在しない場合に、標準入力を圧縮
3889 して標準出力に書き出し、`-d' オプションの指定があれば、標準入力を
3890 展開して標準出力に書き出すものでなければならない。
3892 PROG が 0 以外のステータスで終了した場合は、エラーメッセージを
3893 出して、`sort' の実行を中止する。
3895 PROG の指定中でホワイトスペース (訳注: 空白、タブ、改行など) や
3896 バックスラッシュ文字を使ってはならない。そうした文字は、将来の
3899 `--files0-from=FILE'
3900 コマンドラインで名前を指定されたファイルの処理を行わない。その代わり
3901 に、ファイル FILE に名前が書き込まれているファイルの処理を行う。
3902 なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL)
3903 で終端されていなければならない。このオプションは、ファイル名のリスト
3904 が長すぎて、コマンドライン長の上限を超過してしまいそうなときに、
3905 便利である。そうした場合、`sort' を `xargs' 経由で実行するのは、
3906 望ましくない。なぜなら、`xargs' はファイルのリストをいくつかの部分
3907 に分割して `sort' に渡すので、`sort'
3909 部分リストごとのソートした結果を表示してしまうからである。 ASCII
3910 NUL で終端されたファイル名のリストを得る方法の一つは、 GNU `find'
3911 に `-print0' を付けて使うことである。FILE に `-' を指定すれば、
3912 ASCII NUL で終端されたファイル名を標準入力から読み込むことが
3917 行中の POS1 から POS2 までの部分 (両者を含む) を、ソートの対象
3918 となる場所として指定する。POS2 が省略されている場合は、POS1 から
3921 各 POS は、`F[.C][OPTS]' という形式を取る。F は、比較に使用する
3922 フィールドは何番目かということであり、C は、そのフィールドの始め
3923 から数えて何番目の文字かということである。フィールドや文字の位置は、
3924 1 から数える。なお、POS2 の文字の位置として 0 を指定すると、その
3925 フィールドの最後の文字を指すことになる。`.C' が、POS1 で省略されて
3926 いる場合は、デフォルトの 1 (フィールドの最初の文字) を指定したこと
3927 になり、POS2 で省略されている場合は、デフォルトの 0 (フィールドの
3928 最後の文字) を指定したことになる。OPTS は順序関連のオプションで
3929 あり、これを指定することで、各キーを異なったルールでソートすること
3930 が可能になる。詳細については後述しているので、参照していただきたい。
3931 なお、キーは複数のフィールドにまたがることができる。
3933 たとえば、二番目のフィールドでソートするには、`--key=2,2' (`-k
3934 2,2') を使用する。後述部分で、キーについてさらに説明し、用例も
3935 もっとたくさん挙げているので、ご覧になっていただきたい。また、
3936 `--debug' オプションの説明もご覧になるとよい。`--debug' オプション
3937 を使うと、行中のどの部分がソートに使用されているかが明らかになる。
3940 各行のソートに使われている部分を強調表示する。また、使用法に問題が
3941 あるときは、標準エラーに警告メッセージを出す。
3943 `--batch-size=NMERGE'
3944 一度にマージする入力ファイルの数を多くても NMERGE 個までとする。
3946 NMERGE 個を越える入力ファイルをマージしなければならない場合、`sort'
3947 は NMERGE 個のファイルからなるグループを作ってマージし、その結果を
3948 テンポラリ・ファイルに保存する。そして、今度はそれを入力として使用
3951 NMERGE の値が大きいと、実行速度が向上し、ハードディスクの一時的な
3952 使用が減るかもしれないが、その分、メモリの使用量と I/O が増加する。
3953 逆に、NMERGE の値が小さいと、メモリに対する要求と I/O は減少する
3954 かもしれないが、その分、ハードディスクの一時的な使用が増え、実行速度
3957 NMERGE の値は、2 以上でなければならない。デフォルトの値は 16 だが、
3958 これは実装次第なので、将来は変わるかもしれない。
3960 NMERGE の値は、オープンできるファイル・ディスクリプタの上限によって
3961 制限されているかもしれない。`ulimit -n' や `getconf OPEN_MAX'
3962 コマンドを使えば、使用しているシステムの上限を知ることができる。
3963 ただし、そうした上限がさらに小さくなっていることもあり、使用中の
3964 プログラムがすでにファイルをいくつかオープンしている場合や、オープン
3965 できるファイルの数についてオペレーティング・システムに他の制限がある
3966 場合が、それに当たる。NMERGE がリソースの上限を越えているときは、
3967 `sort' は警告メッセージを出さずに、より小さい値を使用する。
3970 `--output=OUTPUT-FILE'
3971 出力を標準出力ではなく、OUTPUT-FILE に書き出す。通常、`sort' は、
3972 入力をすべて読み込んでから、OUTPUT-FILE をオープンする。従って、
3973 `sort -o F F' や "`cat F | sort -o F' といったコマンドを使って、
3974 ファイルを直接書き変えるやり方で、ソートをしても問題がない。
3975 これに対して、`--merge' (`-m') オプションを指定した場合は、 `sort'
3976 は、入力をすべて読み込む前に、出力ファイルをオープンするかも
3977 しれない。そのため、`cat F | sort -m -o F - G' といったコマンドは
3978 安全ではない。`cat' が `F' の読み込みを済ます前に、 `sort' が `F'
3979 への書き込みを始めてしまうかもしれないからだ。
3981 比較的新しいシステムでも、環境変数 `POSIXLY_CORRECT' を設定して
3982 いる場合は、たとえば `sort F -o F' のように、入力ファイルの後に
3983 `-o' オプションを置くことはできない。移植を考慮したスクリプトでは、
3984 `-o OUTPUT-FILE' を入力ファイルの前で指定するべきである。
3986 `--random-source=FILE'
3987 FILE をランダムデータのソースとして使用する。そのランダムデータは、
3988 `-R' オプションでどのランダムハッシュ関数を使うかを決めるのに使用
3989 される。 *Note Random sources::.
3993 最後の手段の比較 (last-resort comparison) を行うのを止めて、`sort'
3994 を入力順尊重 (stable) にする。このオプションは、フィールド指定オプ
3995 ションや、`--reverse' (`-r') 以外のグローバルな順序関係のオプション
3996 が指定されていなければ、効果を持たない。(訳注: いわゆる stable sort
3997 (普通、安定ソート、固定ソートと訳される) である。たとえば、`-b'
3998 オプションを使って、先行する空白を無視して比較した場合に、等価となる
3999 行があったとしよう。通常では、それでも、最後の手段の比較によって、
4000 先行する空白の有無も考慮に入れた行全体の比較が行われ、等価な行に
4001 順序を付けることになるが、`--stable' オプションが指定されていると、
4002 それをしないので、等価な行は入力されたときの順序で出力される)。
4005 `--buffer-size=SIZE'
4006 指定された SIZE のメインメモリをソート用のバッファとして使用する。
4007 デフォルトでは、SIZE は 1024 バイトを 1 単位とする数値である。`%'
4008 を後ろに付けると、SIZE は、物理メモリの何パーセントの意味になる。
4009 後置するのが `K' ならば、SIZE は 1024 倍され (デフォルトと同じ)、
4010 `M' なら 1,048,576 倍、`G' なら 1,073,741,824 倍される。`T', `P',
4011 `E', `Z', `Y' の後置も、同じ理屈である。`b' を後置すると、SIZE は
4012 バイト数と見なされ、掛け算は行われない。
4014 このオプションを指定すると、`sort' は作業を始めるとき、デフォルト
4015 よりも大きかったり、小さかったりするソート用のバッファを使用する
4016 ことになり、そのために動作速度が向上することがある。とは言え、この
4017 オプションは起動直後のバッファサイズにしか影響を持たない。`sort' が
4018 SIZE を越える入力行に出会うと、バッファのサイズは SIZE 以上に拡大
4022 `--field-separator=SEPARATOR'
4023 各行でソートに使うキーを探すとき、文字 SEPARATOR をフィールド・
4024 セパレータとして使用する。デフォルトでフィールドを区分するのは、
4025 非空白文字と空白文字の間の空文字列である。デフォルトの空白は、
4026 スペースとタブだが、`LC_CTYPE' のロケールによっては、違うかも
4029 たとえば、入力行が ` foo bar' だったとしよう。`sort' はこれを
4030 ` foo' と ` bar' のフィールドに分割する。フィールド・セパレータは
4031 前後どちらのフィールドにも属さないことになっている。そこで、 `sort
4032 -t " "' を使用した場合は、同じ入力行が、空っぽのフィールド、
4033 `foo'、それに `bar' という 3 個のフィールドを持つことになる。
4034 とは言え、キー・フィールドが、`-k 2' のように、行末まで続く場合や、
4035 `-k 2,3' のように、範囲からなる場合は、範囲の両端の間に存在する
4036 フィールド・セパレータは、キー・フィールド中にそのまま保持される。
4038 ASCII NUL をフィールド・セパレータに指定するには、二文字からなる
4039 文字列 `\0' を使用すればよい。`sort -t '\0'' のようにだ。
4042 `--temporary-directory=TEMPDIR'
4043 テンポラリファイルの置き場所にディレクトリ TEMPDIR を使用する。
4044 この指定は、環境変数 `TMPDIR' に優先する。このオプションを二回
4045 以上指定すると、テンポラリファイルの置き場所として、指定された
4046 すべてのディレクトリが使用されることになる。大規模なソートや
4047 マージを行って、I/O が足枷になる場合、このオプションを使って、
4048 別のディスク上にあり、別のコントローラを使用している複数の
4049 ディレクトリを指定すると、実行速度が向上することがよくある。
4052 平行して実行するソートの数を N に設定する。デフォルトでは、 N
4053 は、利用できるプロセッサーの数になっている。ただし、上限は 8
4054 であり、これは、それ以上にしても、速度の向上が頭打ちになるからだ。
4055 N 個のスレッドを使用すると、メモリの使用量が log N 倍になること
4056 にも注意していただきたい。参照 *note nproc invocation::.
4060 通常は、等価と評価される複数の行の内、最初のもののみを出力する。
4061 `--check' (`-c' または `-C') オプションが指定されている場合は、
4062 等価と評価される行が、2 行連続していないかをチェックする (訳注:
4063 等価な行の連続があると、終了ステータスが 1 になる)。
4065 また、このオプションを指定すると、デフォルトでは実行する、最後の
4068 コマンド `sort -u' と `sort | uniq' は等価である。しかし、その
4069 等価性は、`sort' に何か他のオプションが付いたときにまでは及ばない。
4070 たとえば、`sort -n -u' は、唯一性のチェックをするとき、行頭にある
4071 数字の並びの値しか調べないが、`sort -n | uniq' の方は、行全体を検査
4072 するのである。*Note uniq invocation::.
4076 項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
4077 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
4078 各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
4079 `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
4080 ことがある。そうしたコマンドも、わがままなファイル名を (空白など
4081 の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
4085 `sort' の従来の (すなわち BSD と System V の) 実装では、いくつかの
4086 オプションの解釈が互いに異なっていた。とりわけ、`-b', `-f', `-n' に
4087 ついてそうだった。GNU の sort は、POSIX 規格の動作に従っており、これは、
4088 たいていの場合 (常にではない!)、System V の動作と同じである。POSIX
4089 によると、`-n' はもはや `-b' を自動的に設定しない。そこで、動作の
4090 一貫性のために、`-M' も同様に変更した。この変更によって、フィールドを
4091 指定するとき、文字の位置がどこを指すかが、微妙なケースでは変わってくる
4092 かもしれない。これに対する唯一の対処法は、明示的に `-b' オプションを
4095 `-k' によってソート・フィールドを指定するとき、その位置指定の後ろに
4096 オプション文字 `MbdfghinRrV' のうち任意のものを付けることができる。その
4097 場合、そのフィールドは、グローバルな順序関係のオプションを一切引き継が
4098 ないことになる。`-b' オプションは、フィールド限定のオプションとしては、
4099 フィールド指定の開始位置と終端位置の片方、あるいは両方に付けることが
4100 できるが、グローバル・オプションから継承した場合は、両方に付いている
4101 ことになる。入力行が、行頭やフィールド間に複数の空白を含んでいる可能性
4102 があって、しかも `-t' を使っていない場合は、`-k' を使用するとき、`-b'
4103 と組み合わせるか、先行する空白を暗黙のうちに無視するオプション (すなわち
4104 `Mghn') と組み合わせるのが普通だ。そうしないと、フィールドにある先行する
4105 空白の数の違いのせいで、結果がわけのわからないものになりかねないからで
4108 ソートフィールド指定の開始位置が、行末より後ろや、終端側のフィールド
4109 より後ろに来てしまうと、そのフィールドは空になる。`-b' オプションを
4110 指定した場合、フィールド指定の `.C' の部分は、そのフィールドの最初の
4113 古いシステムの `sort' では、ソート・キーの指定に、`+POS1 [-POS2]'
4114 という 0 から数える旧式の書式が使用できる。`sort +A.X -B.Y' という
4115 旧式の表現は、もし Y が `0' であるか、指定されていない場合は、 `sort -k
4116 A+1.X+1,B' と同じである。それ以外の場合は、 `sort -k A+1.X+1,B+1.Y'
4119 (訳注: 旧式の書式と新しい書式の違いは、フィールドやフィールド中の
4120 文字の位置を 0 から数えるか、1 から数えるかだけではない。終端指定の
4121 位置が旧式の書式ではキー・フィールドに含まれないのに対し (つまり、
4122 その直前までなのに対し)、新しい書式では含まれるという違いもある。
4125 この旧式の動作は、環境変数 `_POSIX2_VERSION' を使って (*note
4126 Standards conformance::) 有効にしたり、無効にしたりすることができる。
4127 また、`POSIXLY_CORRECT' が設定されていないときに、`-POS2' が存在する旧式
4130 標準的なホストで使用することを意図したスクリプトでは、旧式の書式は
4131 使わずに、`-k' の方を使用するべきである。たとえば、`sort +2' は使わない
4132 方がよい。`sort ./+2' と解釈されるか、`sort -k 3' と解釈されるか、わから
4133 ないからである。そのスクリプトが、旧式の書式にしか対応していないホスト
4134 でも動作しなければならないのなら、スクリプト中で
4135 `if sort -k 1 </dev/null >/dev/null 2>&1; then ...' といったテストを
4136 行って、どちらの書式を使うべきかを判断すればよい。
4138 用例をいくつか挙げて、オプションの様々な組み合わせを説明する。
4140 * 数値としてソートし、降順に (つまり、通常の逆に) 並べる。
4144 * 同時にソートを 4 つまで行う。バッファサイズを 10M にする。
4146 sort --parallel=4 -S 10M
4148 * 1 番目と 2 番目のフィールドを無視し、さらに 3 番目のフィールドの
4149 先頭の空白も無視して、アルファベット順に並べる。ここで使っている
4150 キーは一つであり、それは 3 番目のフィールドの最初の非空白文字に
4151 始まって、各行の末尾まで続くすべての文字からなっている。
4155 * 2 番目のフィールドを数値としてソートし、同点の決着を付けるために、
4156 5 番目のフィールドの 3 番目と 4 番目の文字をアルファベット順で
4157 ソートする。フィールドの区切りには `:' を使用する。
4159 sort -t : -k 2,2n -k 5.3,5.4
4161 ここで注意していただきたいが、もし `-k 2,2n' の代わりに `-k 2n'
4162 と書いたなら、`sort' は、2 番目のフィールドに始まり、行末まで
4163 続くすべての文字を、主キー (primary key) として、それも「数値」の
4164 キーとして使用したことだろう。`sort' を実行するたいていの場合に
4165 ついて言えることだが、複数のフィールドにまたがるキーを数値として
4166 使用しても、期待する結果は得られないものである。
4168 もう一つ注意していただきたい。上の例では、`n' 修飾子を最初のキーの
4169 フィールド終端指定に付けている。これは、`-k 2n,2' とか `-k 2n,2n'
4170 とか指定しても、同じことだったろう。`b' を除くすべての修飾子は、
4171 キー指定のフィールド開始側に付けるか、フィールド終端側に付けるか、
4172 あるいは、その両方に付けるかにかかわりなく、付けられた「キー・
4175 * パスワードファイルを 5 番目のフィールドでソートする。このとき、
4176 先頭の空白は無視する。5 番目のフィールドが同じ値になる行について
4177 は、3 番目のフィールドのユーザ ID 番号でソートする。フィールドの
4180 sort -t : -k 5b,5 -k 3,3n /etc/passwd
4181 sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
4182 sort -t : -b -k 5,5 -k 3,3n /etc/passwd
4184 この三つのコマンドは同じ働きをする。1 番目のコマンドは、最初の
4185 キーの開始位置では先行する空白を無視し、二番目のキーを数値として
4186 ソートするように指定している。他の二つのコマンドは、グローバル・
4187 オプションは修飾子がないソート・キーによって継承されるという
4188 特性を利用している。この場合、継承がうまく働くのは、`-k 5b,5b' と
4189 `-k 5b,5' が同じことだからだ (訳注: 「`-b' オプションは ...
4190 グローバル・オプションから継承した場合は、(開始位置と終端位置の)
4191 両方に付いていることになる」ので、3 番目のコマンドは、`-k 5b,5b'
4192 と指定するのと事実上等しい)。両者が同じになるのは、`.C' という
4193 文字位置を欠いたフィールド終端の指定では、先頭の空白をスキップしても
4194 しなくても、終端位置は変わらないからである。
4196 * 一群のログファイルをソートする。主キーとして IPv4 アドレスを
4197 使用し、副キーとしてタイムスタンプを使用する。二つの行の
4198 主キーと副キーが全く同じ場合は、入力されたときと同じ順番で、
4199 その行を出力する。ログファイルは、次のような行からなっている。
4201 4.150.156.3 - - [01/Apr/2004:06:31:51 +0000] message 1
4202 211.24.3.231 - - [24/Apr/2004:20:17:39 +0000] message 2
4204 フィールドは、ただ 1 個の空白で区切られている。IPv4 アドレスの
4205 ソートは辞書順で行う。たとえば、212.61.52.2 は 212.129.233.201 の
4206 前に来る。61 は 129 よりも小さいからだ。
4208 sort -s -t ' ' -k 4.9n -k 4.5M -k 4.2n -k 4.14,4.21 file*.log |
4209 sort -s -t '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n
4211 この例の場合は、`sort' を一回起動するだけでは、ことがすまない。
4212 日付が空白 1 個のすぐ後に置かれているだけなのに対して、IPv4 の
4213 構成要素は `.' で区切られているからである。そこで、作業を分割し、
4214 `sort' を 2 回起動している。1 回目はタイムスタンプでソートし、 2
4215 回目は IPv4 アドレスでソートするわけだ。タイムスタンプは、年、月、
4216 日のフィールドの順番でソートし、最後に、時・分・秒のフィールドで
4217 ソートしているが、それは `-k' オプションを使って、各フィールドを
4218 分離することで実現している。時・分・秒を除いて、各キー・フィールド
4219 の終端を指定する必要はない。`n' や `M' 修飾子は、フィールドの先頭
4220 にある数値や月名の短縮形に基づいてソートを行うが、そうしたものは、
4221 フィールドの境界を越えられないからである。IPv4 アドレスのソートは、
4222 辞書順で行っている。なお、二回目のソートで `-s' を使っているのは、
4223 主キーで一ヶ所にまとめられる行が、副キーによってソートされている
4224 ようにするためである。それに対して、一回目のソートで `-s' を使って
4225 いるのは、二つのソートの組み合わせ全体を入力順尊重 (stable) にする
4228 * アルファベットの大文字小文字の違いを無視してソートし、その順番で
4231 find src -type f -print0 | sort -z -f | xargs -0 etags --append
4233 この例では、`-print0', `-z', `-0' といったオプションを使っている。
4234 そのため、空白などの特殊文字を含んでいるファイル名が、ソート操作に
4237 * 慣用句 DSU (Decorate Sort Undecorate) の手法 (訳注: 指標を付けて、
4238 ソートして、指標を取る) を採用して、短いものから長いものへと、
4241 awk '{print length, $0}' /etc/passwd | sort -n | cut -f2- -d' '
4243 一般に、あるデータが `sort' コマンドでは直接ソートできないとか、
4244 効率が悪いというとき、そうしたデータをソートするのに、この手法が
4247 * ディレクトリをランダムな順番でで並べる。ただし、各ディレクトリ内の
4248 ファイルについては、その順番を維持する。一例を挙げると、この方法で
4249 演奏リストを作成すれば、アルバムはシャッフルするけれど、各アルバム
4250 内の曲は通常のソート順で演奏するといったことが可能になる。
4252 ls */* | sort -t / -k 1,1R -k 2,2
4255 ---------- Footnotes ----------
4257 (1) POSIX 以外のロケールを使用すると (たとえば、`LC_ALL' を `en_US'
4258 に設定すると)、`sort' の出力が、見慣れない順序でソートされたものに
4259 なるかもしれない。その場合は、環境変数 `LC_ALL' を `C' にすればよい。
4260 注意すべきは、`LC_COLLATE' だけを設定したのでは、二つの問題が生じて
4261 しまうということだ。一つは、`LC_ALL' も設定されている場合、`LC_COLLATE'
4262 は無効だということ。二つ目は、`LC_CTYPE' が (`LC_CTYPE' が設定されて
4263 いないときは、`LANG' が) `LC_COLLATE' と矛盾する値に設定されている場合、
4264 動作が未定義だということである。たとえば、`LC_CTYPE' が `ja_JP.PCK' で
4265 あるのに、`LC_COLLATE' が `en_US.UTF-8' の場合、`sort' の動作は未定義
4269 File: coreutils-ja.info, Node: shuf invocation, Next: uniq invocation, Prev: sort invocation, Up: Operating on sorted files
4271 7.2 `shuf': テキストをシャッフルする
4272 ================================================
4274 `shuf' は、入力された行をランダムに並べ替えてから出力することによって、
4275 入力のシャッフルを行う。どの並び替えが出力されるかは、確率的に等しい。
4279 shuf [OPTION]... [FILE]
4280 shuf -e [OPTION]... [ARG]...
4281 shuf -i LO-HI [OPTION]...
4283 `shuf' には三つの動作モードがあり、それぞれ、入力行をどこから取得
4284 するかが違っている。デフォルトでは、標準入力から行を読み込む。以下の
4289 コマンドラインの各オペランドを入力行として扱う。
4292 `--input-range=LO-HI'
4293 LO から HI の範囲の符号なしの 10 進整数を 1 行に 1 個含むファイル
4297 `shuf' の他のオプションは、どの動作モードでも、その動作に影響を
4301 `--head-count=COUNT'
4302 最大でも COUNT 行までしか出力しない。デフォルトでは、入力された
4306 `--output=OUTPUT-FILE'
4307 出力を、標準出力ではなく、OUTPUT-FILE に書き出す。`shuf' は、
4308 入力をすべて読み込んでから、OUTPUT-FILE をオープンする。従って、
4309 `shuf -o F <F' や `cat F | shuf -o F' というコマンドを使って、
4310 ファイルを直接書き変える形でシャッフルしても安全である。
4312 `--random-source=FILE'
4313 ランダムデータのソースとして FILE を使用する。そのランダムデータは
4314 どんな並べ替えになるかを決めるのに使用される。*Note Random
4319 値の反復出力を行う。別の言い方をすると、置き換えるものについて
4320 そのつど選択を行う。このオプションを使用した場合、出力は入力を
4321 並び替えたものになるのではない。そうではなく、各出力行がすべての
4322 入力からランダムに選ばれるのである。このオプションは、たいてい
4323 `--head-count' と組み合わせて使用する。`--head-count' を指定
4324 しないと、`shuf' はいつまでも出力を続けることになる。
4325 (coreutils-8.22 の新機能)
4329 項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
4330 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
4331 各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
4332 `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
4333 ことがある。そうしたコマンドも、わがままなファイル名を (空白など
4334 の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
4347 上記の結果は、こんな出力になるかもしれない。
4356 shuf -e clubs hearts diamonds spades
4365 下記は、`shuf -i 1-4' というコマンドの出力の一例である。
4372 上記のどの例でも、入力行は 4 行である。従って、入力は 24 とおりに並べ
4373 替えることが可能であり、`shuf' が生成するのは、そのどれか一つである。
4374 一般的に言うと、入力行が N 行なら、N! とおりに (N の階乗、すなわち、
4375 N * (N - 1) * ... * 1 とおりに) 並べ替えて、出力することができる。
4377 それぞれが 0 から 9 までの範囲にある数値を 50 回ランダムに出力する
4380 shuf -r -n 50 -i 0-9
4382 コイン・トス 100 回をシミュレートする。
4384 shuf -r -n 100 -e Head Tail
4386 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4389 File: coreutils-ja.info, Node: uniq invocation, Next: comm invocation, Prev: shuf invocation, Up: Operating on sorted files
4391 7.3 `uniq': ファイルから重複を省く
4392 =============================================
4394 `uniq' は、指定された INPUT ファイルにある行を、重複を省いて書き出す。
4395 ファイルが指定されていない場合や、INPUT として `-' が指定されている
4400 uniq [OPTION]... [INPUT [OUTPUT]]
4402 デフォルトでは、`uniq' は入力された行を表示するとき、隣接する同一行
4403 があれば、出力に重複する行が現れないように、最初の行だけを残して、残りの
4404 行を捨ててしまう。また、オプションによっては、重複しない行を捨てることや、
4405 すべての隣接する同一行を捨てることもできる。
4407 入力はソートされている必要はないが、重複する入力行が検出されるのは、
4408 それが隣接しているときだけである。もし、隣接していない重複行も捨てたい
4409 のなら、`sort -u' を使うとよいだろう。 *Note sort invocation::.
4411 比較には `LC_COLLATE' ロケール・カテゴリが指定しているルールを使用
4414 OUTPUT ファイルが指定されていない場合、`uniq' は標準出力に書き出す。
4416 このプログラムでは以下のオプションが使用できる。参照: *note Common
4421 重複の検査を行う前に、各行のフィールドを N 個スキップする。その行に
4422 N 個より少ないフィールドしかない場合は、比較に null 文字列を使用
4423 する。フィールドとは、少なくとも 1 個以上のスペースやタブで間を区切
4424 られた、スペースやタブを含まない文字の連続である。
4426 互換性のために、`uniq' は `-N' という古いオプションの書式をサポート
4427 している。新しいスクリプトでは、`-f N' の方を使うべきである。
4431 重複の検査を行う前に、N 文字スキップする。その行に N 個より少ない
4432 文字しかない場合は、比較に null 文字列を使用する。フィールドを
4433 スキップするオプションと、文字をスキップするオプションの両方を
4434 使っている場合は、フィールドのスキップが先に行われる。
4436 古めのシステムでは、`uniq' が `+N' という古いオプションの書式を
4437 サポートしている。環境変数 `_POSIX2_VERSION' を使えば、この旧式の
4438 動作を有効したり、無効にしたりできる (*note Standards
4439 conformance::)。 とは言え、移植を考慮したスクリプトでは、
4440 この環境変数に動作が依存するコマンドの使用は、避けた方がよい。
4441 たとえば、`uniq +10' ではなく、`uniq ./+10' や `uniq -s 10' を使う
4442 べきである。前者では、`+10' が、オプションかファイル名か、まぎらわ
4451 行を比較するとき、アルファベットの大文字小文字を区別しない。
4455 重複していない行を除去する。このオプションを単独で使った場合、`uniq'
4456 は、連続する同一行のうち、最初の 1 行だけを表示し、それ以外の何も
4460 `--all-repeated[=DELIMIT-METHOD]'
4461 入力行のうち、連続する同一行の二行目以降を除去せず、重複していない
4462 行だけを除去する。このオプションが役に立つのは、主として、大文字
4463 小文字を無視するとか、選択したフィールドのみを比較するとかいった、
4464 他のオプションと組み合わせて使うときである。DELIMIT-METHOD は
4465 省略可能であり、指定した場合は、重複行のグループ間の区切り方を
4466 指示することになる。DELIMIT-METHOD は、以下の一つでなければ
4470 重複行のグループ間に、区切りの印を置かない。`--all-repeated'
4471 (`-D') とのみ指定するのと同じことである。
4474 重複行の各グループの前に改行を出力する。 `--zero-terminated'
4475 (`-z') を指定している場合は、区切りの印として 改行の代わりに、
4476 ゼロバイト (ASCII NUL) を使用する。
4479 重複行のグループ間を 1 個の改行で分離する。これは、`prepend'
4480 を使うのとほぼ同じだが、最初のグループの前に区切りの印を挿入
4481 しないのが異なっている。それ故、ユーザが出力を直接見る場合に、
4482 より適しているかもしれない。`--zero-terminated' (`-z')
4483 を指定している場合は、区切りの印として 改行の代わりに、
4484 ゼロバイト (ASCII NUL) を使用する。
4486 注意していただきたいが、グループ同士を改行で分離しているとき、
4487 入力ストリームに連続する 2 行以上の空行があると、出力がまぎらわ
4488 しいものになる。これを避けるには、入力を `tr -s '\n'' でフィルタ
4489 リングして、連続する改行をそれぞれの場所で 1 個の改行に置き換え
4492 このオプションは、GNU による拡張である。
4494 `--group[=DELIMIT-METHOD]'
4495 すべての行を出力し、他と区別される各グループの間に区切りを入れる。
4496 `--zero-terminated' (`-z') を指定している場合は、区切りの印として
4497 改行の代わりに、 ゼロバイト (ASCII NUL) を使用する。 DELIMIT-METHOD
4498 は省略可能であり、指定した場合は、グループ間の区切り方を指示する
4499 ことになる。DELIMIT-METHOD は、以下の一つでなければならない。
4500 (coreutils-8.22 の新機能)
4503 他と区別されるグループを 1 個の区切りの印で分離する。これが、
4504 何も指定されていないときの、デフォルトの区切り方であり、出力を
4508 他と区別される各グループの前に区切りの印を出力する。
4511 他と区別される各グループの後ろに区切りの印を出力する。
4514 他と区別される各グループの前後に区切りの印を出力する。
4516 注意していただきたいが、グループ同士を改行で分離しているとき、
4517 入力ストリームに連続する 2 行以上の空行があると、出力がまぎらわ
4518 しいものになる。これを避けるには、入力を `tr -s '\n'' でフィルタ
4519 リングして、連続する改行をそれぞれの場所で 1 個の改行に置き換え
4522 このオプションは、GNU による拡張である。
4526 連続する同一行は、1 行目も除去する。このオプションを単独で使うと、
4527 `uniq' はユニークな (訳注: この場合、同一行が直後に続かないという
4528 意味) 行だけを表示し、それ以外の何も表示しない。
4532 各行で (フィールドや文字をスキップする指定があれば、スキップした
4533 後で) 文字を何個まで比較するかを指定する。デフォルトでは、行の残り
4538 項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
4539 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
4540 各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
4541 `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
4542 ことがある。そうしたコマンドも、わがままなファイル名を (空白など
4543 の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
4547 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4550 File: coreutils-ja.info, Node: comm invocation, Next: ptx invocation, Prev: uniq invocation, Up: Operating on sorted files
4552 7.4 `comm': ソート済みの二つのファイルを一行づつ比較する
4553 ==============================================================================
4555 `comm' は、二つの入力ファイルの共通する行と独自な行を、標準出力に区別
4556 して書き出す。`-' というファイル名は、標準入力を意味している。
4560 comm [OPTION]... FILE1 FILE2
4562 入力ファイルは、`comm' に渡す前に、`LC_COLLATE' のロケールによって
4563 規定された照合順序でソートされていなければならない。入力ファイルが
4564 改行以外の文字で終わっている場合は、自動的に改行が追加される。 `sort'
4565 コマンドをオプションなしで実行すると、`comm' の入力にふさわしい
4568 オプションを付けずに実行すると、`comm' は 3 列の出力を生成する。 1
4569 列目は FILE1 にのみある行であり、2 列目は FILE2 にのみある行、そして 3
4570 列目は両方のファイルに共通する行である。各列は、1 個のタブ文字で
4573 `-1', `-2', `-3' というオプションは、対応する列 (と区切り記号) を
4574 表示しないようにする。オプションについては、「共通オプション」の章も
4575 参照すること。*note Common options::.
4577 比較のための他のユーティリティとは違って、`comm' の終了ステータスは、
4578 比較結果の如何によらない。`comm' は、正常終了すると 0 の終了コードを
4579 返す。エラーがあれば、0 以外のステータスで終了する。
4581 `--check-order' を指定した場合、入力がソートされていないと、エラー
4582 メッセージを出して、実行を中断する。`--nocheck-order' オプションを指定
4583 した場合は、入力がソートされていなくても、エラーメッセージを出すことは
4584 ない。どちらのオプションも指定されていない場合に、入力がソートされて
4585 いないとの診断を下すのは、 片方の入力ファイルにもう一方と対にならない
4586 行が見つかったときだけである。 入力ファイルがソートされていないと診断
4587 すると、`comm' は 0 以外のステータスで終了する (従って、そうした出力は
4590 入力ファイルがきちんとソートされていず、しかも、対にならない行を
4591 含む場合に、`--nocheck-order' を指定して、そうしたファイルを `comm' で
4592 無理矢理処理しても、何か特定の結果をもたらすことは保証できない。おそらく
4593 出力は、期待に添わないものになるだろう。
4596 入力ファイルのどちらかの内容がきちんとソートされていないと、
4597 エラーメッセージを出して、実行に失敗する。
4600 入力ファイルの内容がソートされた順番になっているかどうかを、
4601 どちらのファイルについてもチェックしない。
4605 `--output-delimiter=STR'
4606 出力における隣り合う列の間に、デフォルトのタブ文字 1 個ではなく、
4609 区切り記号の STR は、空であってはならない。
4613 File: coreutils-ja.info, Node: ptx invocation, Next: tsort invocation, Prev: comm invocation, Up: Operating on sorted files
4615 7.5 `ptx': パミューテド・インデックスを作成する
4616 =================================================================
4618 `ptx' の基本的な働きは、テキストファイルを読み込んで、パミューテド・
4619 インデックスを作成することである。パミューテド・インデックスというのは、
4620 各キーワードに前後の文脈を付けて索引項目にするインデックスのことだ。
4622 (訳注: パミューテド・インデックスは、KWIC (Key Word In Context)
4623 インデックスとも言われる。簡単に言えば、本文にあるとおり、キーワードに
4624 前後の文脈を付けて項目として立てる索引のことである。たとえば、"The cow
4625 jumped over the moon." という文があるとしよう。今、キーワードを
4626 角カッコ ([]) で示すとすると、`ptx' による一番素朴なパミューテド・
4628 "[The] cow jumped over the moon.", "The [cow] jumped over the moon.",
4629 "The cow [jumped] over the moon.", "The cow jumped [over] the moon.",
4630 "The cow jumped over [the] moon.", "The cow jumped over the [moon]."
4631 という、キーワードの位置だけが違う 6 個の索引項目が作られ、キーワード
4632 によってソートされて、出力されるのである。「パミューテド (permuted)」
4633 というのは、文中でキーワードが順番に移動するのを、円順列 (cyclic
4634 permutation) に見立てているかららしい。「順列索引」と訳されることも
4635 ある。パミューテド・インデックスの代表的な例としては、英語などの聖書の
4636 巻末に付属している文脈付きの語句索引、「コンコーダンス」を挙げることが
4637 できる。実際、この文書でもコンコーダンスをパミューテド・インデックスの
4638 同義語として使用している。なお、この `ptx' プログラムは、日本語に
4641 `ptx' 実行の書式は次のうちのどちらかである。
4643 ptx [OPTION ...] [FILE ...]
4644 ptx -G [OPTION ...] [INPUT [OUTPUT]]
4646 `-G' (または、それと等価な `--traditional') オプションを指定すると、
4647 GNU によるすべての拡張が無効になり、従来のモードで動作するようになる。
4648 従って、いくつかの制限が課されるようになり、プログラムのオプションの
4649 デフォルトの値がいくつか変更される。`-G' が指定されていない場合は、GNU
4650 による拡張が常に有効になる。`ptx' に対する GNU の拡張については、
4651 この文書では折に触れて説明している。拡張の詳細なリストについては、
4652 「GNU による `ptx' の拡張」の節を御覧になっていただきたい。 *Note
4653 Compatibility in ptx::.
4655 個々のオプションについては、以下に続く節で説明する。
4657 GNU による拡張が有効になっていれば、オプションの後ろに 0 個以上の
4658 FILE を指定することができる。FILE を一つも指定しない場合は、標準入力が
4659 読み込まれる。FILE を 1 個以上指定した場合、それは入力ファイルの名前で
4660 あり、入力ファイルはすべて順番に、あたかもすべてのファイルが結合されて
4661 いるかのように読み込まれる。とは言え、各ファイル同士は文脈的に完全に分離
4662 しており、参照先情報の自動作成を指定している場合に、参照先のファイル名や
4663 行番号が指し示すのは、個々の入力テキストファイルのそれである。どの場合
4664 でも、`ptx' は、パミューテド・インデックスを標準出力に出力する。
4666 GNU による拡張が有効になっていない場合、すなわち、プログラムが従来
4667 モードで動作する場合は、オプションのほかに 0 から 2 個のパラメータを
4668 指定できる。パラメータがない場合、プログラムは標準入力を読み込んで、
4669 標準出力にパミューテド・インデックスを出力する。パラメータが 1 個だけ
4670 の場合、それが示しているのは、標準入力の代わりに読み込まれるテキスト
4671 ファイル (訳注: 上記書式の INPUT) の名前である。パラメータが二つある
4672 場合、それぞれが示しているのは、読み込み対象の INPUT ファイルと出力先
4673 の OUTPUT ファイルの名前だ。この場合、二番目のパラメータによって指定
4674 されたファイルの内容が破壊されることに、くれぐれも気をつけていただき
4675 たい。この動作は、System V の `ptx' との互換性を維持するために必要に
4676 なっているものだが、通常 GNU の規格では、オプションによって指定される
4677 のではない出力パラメータを、使用しないように勧めている。
4679 オプションの値や入力テキストファイルとして指定するいかなるファイルに
4680 対しても、ファイル名の代わりに 1 個のダッシュ `-' を使用することが
4681 できる。その場合は、標準入力が使われることになる。もっとも、この習慣を
4682 プログラム 1 回の起動につき 1 回以上使うのは、たぶん理屈に合わない。
4686 * General options in ptx:: プログラム全体の動作に関係するオプション。
4687 * Charset selection in ptx:: 使用している文字セットについて。
4688 * Input processing in ptx:: 入力のフィールドと文脈、及びキーワードの選択。
4689 * Output formatting in ptx:: 出力フォーマットのタイプ、及びフィールドの幅。
4690 * Compatibility in ptx::
4693 File: coreutils-ja.info, Node: General options in ptx, Next: Charset selection in ptx, Up: ptx invocation
4696 ---------------------------
4700 すでに述べたように、このオプションは `ptx' に対する GNU による
4701 拡張のすべてを無効にして、動作を従来モードに切り替える。
4704 簡単なヘルプメッセージを標準出力に表示し、それ以上の処理をせずに
4708 プログラムのバージョンを標準出力に表示し、それ以上の処理をせずに
4712 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
4715 File: coreutils-ja.info, Node: Charset selection in ptx, Next: Input processing in ptx, Prev: General options in ptx, Up: ptx invocation
4717 7.5.2 `ptx' が使用する文字セット
4718 ------------------------------------------
4720 現在の設定では、`ptx' プログラムは、入力ファイルが符号化に 8-bit の ISO
4721 8859-1 コード (Latin-1 文字セットとも言われる) を使用しているものと
4722 見なすようになっている。ただし、MS-DOS 用にコンパイルされている場合は
4723 別で、その場合は、IBM-PC の文字セットを使用する (GNU の `ptx' が小型の
4724 MS-DOS マシンで使えるかどうか、今ではわからないけれど)。7-bit ASCII と
4725 比べると、ISO 8859-1 の文字セットは、アルファベットの部分が異なって
4726 いる。そのため、正規表現におけるマッチングの振る舞いが変わってくる。
4727 キーワードに対するデフォルトの正規表現が (訳注: つまり、GNU の拡張が
4728 有効なときの `\w+' が)、英語で使用しない文字や、ウムラウトやアクセント
4729 のような発音区別符の付いた文字を受け入れることになるわけである。
4730 とは言え、キーワードのソート方法は今だに大雑把であり、使用している
4731 文字セットの順序にきわめて盲目的に従っている。
4735 ソートするとき、小文字を大文字と同じものとして扱う。
4739 File: coreutils-ja.info, Node: Input processing in ptx, Next: Output formatting in ptx, Prev: Charset selection in ptx, Up: ptx invocation
4742 ---------------------------------------
4746 このオプションを使えば、単語を構成するのはどんな文字かを、`-W' とは
4747 別のやり方で定義することができる。このオプションでファイルを指名し、
4748 そこに、単語の構成要素になることができない文字のリストを入れておく
4749 のである。このファイルは、"Break file" と呼ばれる。Break file に
4750 含まれていないいかなる文字も、単語の構成要素になるわけだ。`-b' と
4751 `-W' の両方のオプションが指定されている場合は、`-W' の方が優先
4754 GNU の拡張が有効になっているとき、改行を単語区切り文字 (break
4755 character) にしない唯一の方法は、単語区切り文字をすべて Break file
4756 に書き込み、そこに改行を全く含めないことである。Break file 末尾の
4757 改行も除かなければならない。GNU の拡張が無効な場合、スペース、
4758 タブ、改行は、それが Break file に含まれていなくても、常に単語
4762 `--ignore-file=FILE'
4763 このオプションで指名するファイルには、出力するコンコーダンスで
4764 キーワードとして採用しない単語のリストを入れておく。このファイルは、
4765 "Ignore file" と呼ばれる。このファイルは、1 行 1 単語の形式であり、
4766 単語の分離は常に行末によって行われて、`-S' オプションの値の影響を
4771 このオプションで指名するファイルには、出力するコンコーダンスで
4772 キーワードとして採用する単語のリストを入れておく。このファイルに
4773 書かれていないどんな単語も、キーワードとして採用されることはない。
4774 このファイルは、"Only file" と呼ばれる。このファイルは、1 行 1 単語
4775 の形式であり、単語の分離は常に行末によって行われて、`-S' オプション
4778 Only file として使われるデフォルトのファイルは存在しない。Only file
4779 と Ignore file の両方が指定されている場合に、ある単語がキーワードと
4780 見なされるのは、その単語が Only file に存在し、しかも Ignore file
4785 各入力行において、行頭にあるホワイトスペース以外の文字の連続を
4786 参照先情報 (訳注: たとえば、ファイル名、ページ番号、行番号など)
4787 として扱うようにする。この参照先情報は、その入力行がどこにあるか
4788 を、作成されるパミューテド・インデックス中で示すために用いられる。
4789 参照先情報の生成についての詳細は、次節「出力のフォーマット」を
4790 御覧いただきたい。*Note Output formatting in ptx::. このオプション
4791 を使用すると、`-S' オプションのデフォルトの値が変更されること
4794 このオプションを使用したとき、`ptx' プログラムは、参照先情報が
4795 出力される文脈に混入しないようにするが、その試みはそれほど徹底した
4796 ものではない。しかし、文脈が改行できちんと終止していれば、`ptx'
4797 はその試みに成功する。もし、`-r' オプションが `-S' オプションの
4798 デフォルト値とともに使われているか、あるいは、GNU の拡張が無効に
4799 なっているならば、この条件は必ず満たされることになる。従って、
4800 その場合は、参照先情報が出力される文脈からきちんと分離される。
4802 (訳注: 文脈 (context) というのは、出力については、キーワードと
4803 その前後と考えておけばよいが、入力について言うと、`ptx' が操作の
4804 対象にする本文の単位 -- 入力のまとまり -- を指すことになる。`-S'
4808 `--sentence-regexp=REGEXP'
4809 このオプションでは、行の終わり、または文の終わりを示す正規表現を
4812 (訳注: もう少し説明すると、このオプションで指定するのは、入力を
4813 何で区切るかということである。改行で区切れば、いわゆる行が、`ptx'
4814 の操作の対象となる入力のまとまり (入力の単位) になり、ピリオド
4815 などで区切れば、いわゆる文が、入力のまとまりになる。このまとまりが
4816 `ptx' にとっての文脈でもある。ただし、出力では、文脈のすべてが
4817 表示されるとはかぎらない。なお、そうしたければ、行末や文末以外で
4820 実際のテキストでは、ここで指定される正規表現のみが、行の終わりや
4821 文の終わりの指標として使われているとはかぎらない。また、入力の
4822 区切りに何を指定しようとも、このオプションの外で特別な意味を
4823 持つことはない (訳注: すなわち、オプション `-A', `-i', `-o' など
4824 には影響が及ばない)。デフォルトでは、GNU の拡張が有効なとき、`-r'
4825 オプションが使われていなければ、文の終わりの方が入力の区切りとして
4826 使用される。その場合、次の正規表現が GNU Emacs から取り込まれる。
4828 [.?!][]\"')}]*\\($\\|\t\\| \\)[ \t\n]*
4830 GNU の拡張が無効になっている場合や、`-r' オプションが指定されて
4831 いる場合は、行の終わりの方が入力の区切りとして使用される。その場合、
4832 デフォルトの正規表現は、単に次のものである。
4836 空の REGEXP を使用するのは、行末や文末の認識を全く無効にするのと
4837 同じである。その場合、ファイル全体が、たった 1 個の長い行、
4838 あるいは、長い文と見なされることになる。ユーザとしては、オプション
4839 `-F ""' を使用して、省略の印の生成も全く行わないようにしたくなる
4840 かもしれない。*Note Syntax of Regular Expressions: (emacs)Regexps.
4842 キーワードがたまたま入力行や入力文の先頭近くにあると、出力する
4843 文脈行の行頭に、使用しない領域が生ずることがよくある。また、
4844 キーワードが入力行や入力文の末尾近くにあると、出力する文脈行の
4845 行末に、使用しない領域がしばしば生ずる。`ptx' プログラムは、
4846 その文脈を折り返して、そうした不使用領域を埋めようと試みる。
4847 すなわち、その入力行や入力文の後続する部分 (TAIL) を使って、
4848 出力する行の左にある不使用領域を埋め、その入力行や入力文の
4849 先行する部分 (HEAD) を使って、出力する行の右にある不使用領域を
4852 このオプションの引数中では、ユーザーの便宜のために、C 言語由来の
4853 よく使うバックスラッシュ・エスケープシーケンスの多くが、`ptx'
4854 そのものによって認識され、対応する文字に変換されるようになっている。
4857 `--word-regexp=REGEXP'
4858 このオプションでは、各キーワードとなる単語とはどのようなものかを
4859 示す正規表現を指定する。デフォルトでは、GNU の拡張が有効になって
4860 いれば、単語とはアルファベットの文字の連続である。すなわち、使用
4861 される正規表現は `\w+' だ。GNU の拡張が無効な場合、デフォルトで
4862 単語と見なされるのは、何であれ、スペース、タブ、改行で区切られる
4863 ものである。この場合、使用される正規表現は `[^ \t\n]+' になる。
4865 REGEXP に空の文字列を指定するのは、このオプションを使用しないのと
4866 同じことである。*Note Syntax of Regular Expressions:
4869 このオプションの引数中では、ユーザーの便宜のために、C 言語で
4870 見られるような、よく使うバックスラッシュ・エスケープシーケンスの
4871 多くが、`ptx' そのものによって認識され、対応する文字に変換される
4876 File: coreutils-ja.info, Node: Output formatting in ptx, Next: Compatibility in ptx, Prev: Input processing in ptx, Up: ptx invocation
4879 ---------------------------------
4881 出力のフォーマットを決めるのは、主として `-O' と `-T' オプションだが、
4882 両者については、以下のオプション一覧で説明している。`-O' も `-T' も
4883 指定されず、しかも、GNU の拡張が有効な場合、`ptx' プログラムは、
4884 ダム端末に適した出力フォーマットを選択する。各キーワードは一行の
4885 中央に表示され、前後の文脈がその左右に出力される。コンコーダンス
4886 としての出力が一目でわかるように、各フィールドはきちんと揃えられる。
4887 おまけの機能として、次のものがある。自動参照が `-A' オプションに
4888 よって選択されて、左側の文脈の前に表示される場合 (すなわち、`-R'
4889 オプションが選択されていない場合)、参照先情報の後ろにコロンが追加
4890 される。こうしておくと、参照先情報を GNU Emacs の `next-error' 処理に
4891 うまく渡せるようになるのである。このデフォルトの出力フォーマットでは、
4892 改行やタブのようなホワイトスペース文字は、それぞれ単にただ 1 個の
4893 スペースに変換されるだけであり、連続するスペースをわざわざ圧縮する
4894 ようなことは行われない。この動作は、将来変更されるかもしれない。
4895 そうしたホワイトスペース文字を除いて、使用している 256 文字からなる
4896 文字セット中のほかのすべての文字は、入力から出力へと手を加えずに
4899 出力フォーマットは、以下のオプションによって、さらに制御される。
4903 出力行の各フィールドは、ホワイトスペースによって区切られるが、
4904 そのフィールド同士の間隔の最小サイズを指定する。
4908 最終的に出力される各行の最大長を指定する。参照先情報を使用する際、
4909 その長さが最大長に含まれるかどうかは、`-R' オプションを付けるか
4910 付けないかよって決まる。`-R' オプションを指定しない場合、すなわち、
4911 参照先情報が左の文脈より前に表示される場合は、すべての参照先情報中
4912 の最大長が、出力行の最大長の長さの内に含まれることになる。`-R'
4913 オプションを指定した場合、すなわち、参照先情報が右の文脈より後に
4914 表示される場合は、参照先情報や、それに先行するフィールドの区切りが
4915 占める領域は、出力行の最大長の長さに含まれない。
4919 参照先情報の自動生成を選択する。ファイル名と行番号からなる参照先
4920 情報が自動的に生成されて、各入力行に付くことになる。ファイル名と
4921 行番号は 1 個のコロンで区切られる。ただし、標準入力から読み込んで
4922 いる場合は、ファイル名は空になる。`-A' と `-r' の両方のオプションが
4923 指定されている場合は、入力にある参照先情報はやはり読み込まれた上で、
4924 本文としては無視されるが、出力時に使用されるのは、自動生成された
4925 参照先情報の方である。すなわち、入力にある参照先情報は、上書きされる。
4929 デフォルトの出力フォーマットでは、`-R' オプションを使用しない場合、
4930 `-r' や `-A' オプションの働きによって生成される参照先情報は、出力行
4931 の左の端、すなわち、左の文脈の前に表示される。それに対して、デフォ
4932 ルトの出力フォーマットで `-R' オプションを指定した場合、参照先情報
4933 が表示されるのは、各出力行の右端、すなわち、右の文脈の後ろになる。
4934 ほかのいかなる出力フォーマットにおいても、基本的に `-R' オプション
4935 は無視されるが (訳注: デフォルト以外の出力フォーマットでは、`-R'
4936 オプションがあってもなくても、参照先情報は右端に出力される)、
4937 それでも、`-R' オプションが付いていると、参照先情報の長さが、`-w'
4938 で指定した出力行全体の長さの内に入らないという働きだけは残る。
4940 このオプションは、GNU の拡張が無効であるときは、常に自動的に選択
4944 `--flac-truncation=STRING'
4945 このオプションを指定すると、出力に省略があった場合、それを示す
4946 ために文字列 STRING を使用するようになる。ほとんどの出力フィールド
4947 は、理論上では、`-S' オプションで何を選択するかによって、現在の行、
4948 または、現在の文の、先頭や末尾に向かって伸びて行くものである。
4949 しかし、`-w' オプションによって長さを変更できるとは言え、出力行には
4950 許される最大長というものがあり、その最大長はさらにさまざまな出力
4951 フィールドで使用する領域に分割されている。従って、フィールドは、
4952 それを収納する現在の出力行の先頭や末尾を越えて伸ばすことができない
4953 ために、切り詰めなければならないことがあり、そういうときに、省略が
4954 行われるのである。省略の指標として使用されるデフォルトの文字列は、
4955 1 個のスラッシュである。これは、`-F /' と指定した場合と同じだ。
4957 STRING には、`-F ...' のように 1 個以上の文字を指定してもよい。
4958 また、STRING が空文字列 (`-F ""') の場合には、省略のフラグは
4959 立てられないことになり、従って、省略の指標は一切付加されない。
4961 このオプションの引数中では、ユーザーの便宜のために、C 言語で
4962 見られるような、よく使うバックスラッシュ・エスケープシーケンスの
4963 多くが、`ptx' そのものによって認識され、対応する文字に変換される
4967 `--macro-name=STRING'
4968 `nroff' や `troff'、あるいは TeX で処理するのにふさわしい出力
4969 フォーマットを生成するとき、`xx' の代わりに使用する別の文字列
4970 STRING を指定する。(訳注: `-O' や `-T' オプションを参照。)
4974 出力フォーマットとして、`nroff' や `troff' で処理するのに適した
4975 形式を選択する。各出力行は次のようになる。
4977 (訳注: 下記の TAIL と HEAD については、前節 `--sentence-regexp'
4978 オプションの説明の終わりから 2 番目のパラグラフをご覧いただきたい。
4981 .xx "TAIL" "BEFORE" "KEYWORD_AND_AFTER" "HEAD" "REF"
4983 従って、あとは、出力の整形を担当する roff のマクロ `.xx' を出力
4984 ファイルに書き込めばよいことになる。この出力フォーマットは、GNU の
4985 拡張が無効なときのデフォルトである。`xx' を別のマクロ名に変更する
4986 には、`-M' オプションを使用すればよい (訳注: `-M "xx"' のように、
4989 この出力フォーマットでは、改行やタブのような非表示文字は、それぞれ
4990 たった 1 個のスペースに変換され、連続するスペースをわざわざ圧縮する
4991 ようなことは行われない。ダブルクォート文字 `"' はそれぞれ二重化
4992 されるので、`nroff' や `troff' によって正しく処理される。
4996 出力フォーマットとして、TeX で処理するのに適した形式を選択する。
4999 (訳注: 下記の TAIL と HEAD については、前節 `--sentence-regexp'
5000 オプションの説明の終わりから 2 番目のパラグラフをご覧いただきたい。
5003 \xx {TAIL}{BEFORE}{KEYWORD}{AFTER}{HEAD}{REF}
5005 従って、あとは、出力の整形を担当する `\xx' コマンドの定義を
5006 出力ファイルに書き込めばよいことになる。なお、参照先情報の生成が
5007 行われていない場合、すなわち、`-A' オプションも `-r' オプションも
5008 指定されていない場合は、各 `\xx' 呼び出しの最後の引数は出力
5009 されないことに注意していただきたい。`xx' を別のマクロ名に変更する
5010 には、`-M' オプションを使用すればよい (訳注: `-M "xx"' のように、
5013 この出力フォーマットでは、`$', `%', `&', `#', `_' のような特殊文字
5014 のいくつかは、自動的にバックスラッシュで保護される。中カッコ `{',
5015 `}' は、一対のドル記号とバックスラッシュとで保護される (強引に
5016 数式モードにするわけだ)。バックスラッシュそのものは、`\backslash{}'
5017 というシーケンスになる。同形の他の文字と区別するために文字の上下に
5018 付ける発音区別符のうち、サーカムフレックスとチルダは、それぞれ
5019 `\^{ }' と `\~{ }' というシーケンスになる (訳注: 実際には `{}'
5020 の位置に a なり e なりといった文字が来る)。使用している文字セット
5021 中の他の発音区別符が付いている文字についても、可能なかぎり、適切な
5022 TeX のシーケンスが生成される。改行やタブのような他の非表示文字や、
5023 ASCII の文字セットに属さない他のすべての文字は、単にただ 1 個の
5024 スペースに変換され、連続するスペースをわざわざ圧縮するようなことは
5025 行われない。TeX のための特殊文字の処理は以上のようなものだが、
5026 改善する方法があれば、作者までお知らせいただきたい。
5030 File: coreutils-ja.info, Node: Compatibility in ptx, Prev: Output formatting in ptx, Up: ptx invocation
5032 7.5.5 GNU による `ptx' の拡張
5033 -----------------------------------
5035 このバージョンの `ptx' には、System V の `ptx' には存在しない機能が
5036 いくつかある。そうした追加機能は、コマンドラインオプションの `-G' を
5037 使えば、働かなくなるが、ほかのコマンドラインオプションによって上書き
5038 されれば、話は別である。もっとも、GNU の拡張の中には、上書きによって
5039 回復できないものもあるので、GNU の拡張を使いたければ、`-G' オプション
5040 を最初から使わないのが、すっきりした方法だ。以下に、このプログラムと
5041 System V の `ptx' の相違点を挙げておく。
5043 * このプログラムでは、一度に複数の入力ファイルを読み込むことが
5044 できる。また、生成したコンコーダンスは、常に標準出力に書き出さ
5045 れる。それに対して、System V の `ptx' は、ファイルをたった 1 個
5046 しか読み込まず、結果を書き出すのは、標準出力のこともあるが、
5047 コマンドに 2 番目の FILE パラメータが指定されていれば、その FILE
5050 オプションで指定しない出力パラメータを持つのは、危険な習慣であり、
5051 GNU では、できるだけ避けるようにしている。従って、`ptx' を GNU と
5052 System V のどちらでも、問題なく同じように使いたいなら、入力ファイル
5053 を常に一つしか使わず、実行結果は常に標準出力に出力されるものと考えて
5054 おいた方がよい。また、`ptx' を使用してアプリケーションを作成する
5055 場合には、インストールされている `ptx' が `-G' オプションを受け
5056 入れることに気がついたら、`ptx' を呼び出すとき、`-G' オプションを
5057 必ず付けるようにしておきたくなるかもしれない。
5059 * System V の `ptx' で利用できるオプションは、`-b', `-f', `-g', `-i',
5060 `-o', `-r', `-t', `-w' だけである。他のオプションは、すべて GNU の
5061 拡張だが、今この箇条書きで繰り返すことはしない。なお、オプション
5062 の中には、以下で述べるように、GNU の拡張が有効になっていると、
5065 * GNU の拡張のデフォルトでは、コンコーダンス出力のフォーマットは、
5066 `troff' や `nroff' 向けになっていない。むしろ、ダム端末向けの
5067 フォーマットになっている。`troff' や `nroff' 向けの出力を選択し
5068 たかったら、`-O' オプションを使用すればよい。
5070 * `-R' オプションを使用しないと、参照先情報の最大長が、出力行全体
5071 の長さから差し引かれる。GNU の拡張を無効にすると、参照先情報の
5072 長さは、出力行の長さの勘定に入らないことになる。
5074 * GNU の拡張が無効になっていても、256 バイトの文字セットのすべての
5075 文字が -- ASCII NUL バイト含めて -- 常に入力ファイルから読み込
5076 まれて処理され、有害な作用をもたらすことはない。それに対して、
5077 System V の `ptx' は、8-bit の文字を受け付けない。若干の制御文字
5078 も拒否する。また、チルダ `~' も拒否する。
5080 * GNU の拡張が無効になっていても、入力行の長さは、利用できるメモリに
5081 よってしか制限されない。それに対して、System V の `ptx' が処理の
5082 対象にするのは、各行に付き最初の 200 文字だけである。
5084 * 単語区切り文字 (break character、単語を構成しない文字) のデフォルト
5085 は、使用している文字セットにおけるアルファベットのすべての文字
5086 (発音区別符のあるなしを問わない) 以外のあらゆる文字である。GNU の
5087 拡張が無効な場合は、単語区切り文字のデフォルトは、スペース、タブ、
5090 * このプログラムは、出力行の長さを System V の `ptx' より上手に処理
5091 する。GNU の拡張が無効になっている場合、このプログラムは System V
5092 の `ptx' の動作をなるべく真似ようとするが、それでも、System V の
5093 ちょっとした癖のいくつかは、完全には再現できない。
5095 * ユーザは Ignore file と Only file の両方を指定することができる。
5096 System V の `ptx' では、そんなことはできない。
5100 File: coreutils-ja.info, Node: tsort invocation, Prev: ptx invocation, Up: Operating on sorted files
5102 7.6 `tsort': トポロジカル・ソート
5103 ===========================================
5105 `tsort' は、指定された FILE に対してトポロジカル・ソートを行う。
5106 入力ファイルが指定されていない場合や、FILE として `-' が指定されて
5107 いる場合は、標準入力を対象にする。より詳しい説明や、このコマンドが
5108 作成された事情については、次節「`tsort': 誕生の背景」を御覧に
5109 なっていただきたい。 *note tsort background::
5113 tsort [OPTION] [FILE]
5115 `tsort' は入力を、空白で区切られた 2 個一組の文字列として読み込む。
5116 そうした文字列の各組は、部分的な順序を示している。出力は、与えられた
5117 部分的な順序に対応する全体としての順序である。
5128 (訳注: 上の例は、"a b/c d/e f/b c/d e" という組を与えている。)
5139 もっと現実的な例を考えてみよう。たくさんの関数をすべて一つのファイル
5140 に書いているとしよう。しかも、一つを除いて、他のすべての関数を static
5141 として宣言している。現在のところ、その例外 (`main' ということにする)
5142 が、ファイル中で定義されている最初の関数であり、それが直接呼び出す
5143 関数群がそれに続き、さらにその後に、その関数群が呼び出す関数が続く ...
5144 という形になっている。さて、ここで、プロトタイプを利用することにしたと
5145 しよう。そうなると、呼び出される関数のすべてを宣言するか (そのためには、
5146 定義の部分から情報をどっさりコピーしなければならない)、あるいは、
5147 できるだけ多くの関数が、使用される前に定義されているように、関数群を
5148 並べ替えるか、どちらかを選ばなければならない。後者の作業を自動化する
5149 方法の一つが、各関数についてそれが直接呼び出す関数のリストを作成する
5150 ことである。そうしたリストを生成するプログラムはたくさんある。いわゆる
5151 コール・グラフを作成するプログラムだ。以下のリストをご覧になって
5152 いただきたい。各行は、左側の関数が右側の関数を直接呼び出していることを
5158 tail_file pretty_name
5159 tail_file write_header
5161 tail_forever recheck
5162 tail_forever pretty_name
5163 tail_forever write_header
5164 tail_forever dump_remainder
5167 tail_lines start_lines
5168 tail_lines dump_remainder
5169 tail_lines file_lines
5170 tail_lines pipe_lines
5172 tail_bytes start_bytes
5173 tail_bytes dump_remainder
5174 tail_bytes pipe_bytes
5175 file_lines dump_remainder
5178 ここで `tsort' を使用すると、こうした関数について、上記の後者の要求を
5179 満たすような順番を作成することができる。
5181 example$ tsort call-graph | tac
5200 `tsort' は、入力にループがあれば検出し、出会った最初のループを
5203 一般に、ある部分的な順序に対して、唯一の全体的な順序というものは存在
5204 しないことに、留意していただきたい。上記のコール・グラフの場合で言えば、
5205 関数 `parse_options' は、`main' の前でありさえすれば、リストのどこに
5208 オプションは、`--help' と `--version' だけである。*Note Common
5211 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5215 * tsort background:: tsort が誕生した経緯。
5218 File: coreutils-ja.info, Node: tsort background, Up: tsort invocation
5220 7.6.1 `tsort': 誕生の背景
5221 ------------------------------
5223 `tsort' が存在しているのは、Unix のリンカのごく初期のバージョンでは、
5224 一つのアーカイブファイルの処理をたった一回しか行わず、それも、
5225 ファイルの最初から最後へと順番に見ていくだけだったからである。当時の
5226 `ld' は、アーカイブ中の各オブジェクトを読み込むとき、そのオブジェクトが
5227 プログラムに必要かどうかの判断を、リンク作業のその時点でまだ定義
5228 されていない何らかのシンボルを定義しているかどうかを基準にして
5231 そのため、アーカイブ中の依存関係には、特別な扱いが必要になった。
5232 たとえば、`scanf' はたぶん `read' を呼んでいる。それは、リンカが
5233 アーカイブをたった一回最初から順番に読んで行くとき、`scanf.o' が
5234 `read.o' より前にあることが重要だったということである。なぜなら、
5235 そうなっていないと、`scanf' を呼ぶけれど、`read' を呼ばないプログラム
5236 では、`read' に対する参照が、予期に反して "unresolved" になってしまい
5239 この問題に対処する方法は、次のようなものだった。まず、オブジェクト
5240 ファイル同士の依存関係の集合を生成した。この作業は、`lorder' という
5241 シェルスクリプトによって行われていた。筆者の知るかぎり、現在 GNU では
5242 lorder というツールを提供していないが、BSD 系のディストリビューション
5245 次に、この `lorder' の出力に対して `tsort' を実行した。そして、
5246 そのソートされた結果を使って、アーカイブにオブジェクトを追加する順番を
5249 こうした作業全体が、1980 年ごろから時代遅れのものになった。
5250 というのは、Unix のアーカイブは現在ではシンボル・テーブルを内蔵して
5251 おり (従来は `ranlib' によって作られていたが、今ではたいてい `ar'
5252 そのものによって作られている)、Unix のリンカはこのシンボル・テーブルを
5253 使用して、アーカイブファイルに対する複数回の読み込みを効率的に行うから
5256 ともあれ、これが tsort が誕生した経緯である。すなわち、当時のリンカ
5257 のアーカイブファイルを取り扱う方法に問題があり、その問題を解決するため
5258 の工夫だったのだ。そして、その問題は、その後、別のやり方で解決される
5262 File: coreutils-ja.info, Node: Operating on fields, Next: Operating on characters, Prev: Operating on sorted files, Up: Top
5265 ***********************
5269 * cut invocation:: 各行の選択した部分を表示する。
5270 * paste invocation:: 複数のファイルの各行をマージする。
5271 * join invocation:: 共通のフィールドに基づいて行を連結する。
5274 File: coreutils-ja.info, Node: cut invocation, Next: paste invocation, Up: Operating on fields
5276 8.1 `cut': 各行の選択した部分を表示する
5277 =====================================================
5279 `cut' は、各ファイルから各行の一部を抜き出して、標準出力に書き出す。
5280 ファイルが指定されていない場合や、ファイル名として `-' が指定されて
5285 cut OPTION... [FILE]...
5287 以下のオプション一覧で BYTE-LIST, CHARACTER-LIST, FIELD-LIST と
5288 表記されているものは、コンマで区切られた、1 個以上の数字や範囲から
5289 なるリストである (範囲は、ダッシュを間に挟む 2 個の数字)。バイト、
5290 文字、フィールドは 1 から数える。不完全な範囲を指定することもでき、
5291 `-M' は `1-M' と同じことであり、`N-' は `N' から行末、あるいは最後の
5292 フィールドまでと同じことである。リストの要素は、繰り返してもよく、
5293 部分的に重なり合ってもよく、どんな順序で指定してもよい。ただし、
5294 入力中の選択した部分が書き出されるのは、読み込まれたときと同じ順序
5295 であり、しかも、ただ一度だけである。(訳注: たとえば、`-f 3,1,3'
5296 などと指定することはできるが、出力されるときは field-1, field-3
5297 の順番であり、field-3 が二度出力されることもない。)
5299 このプログラムでは以下のオプションが使用できる。参照: *note Common
5304 BYTE-LIST で指定された位置にあるバイトのみを選択して、表示する。
5305 タブやバックスペースも他の文字と同様に扱う。すなわち、そうした
5306 ものも 1 バイトを占める。出力用のデリミタ (delimiter、区切りの印)
5307 が指定されている場合は (`--output-delimiter' の説明を参照)、選択
5308 されたバイトからなる範囲同士の間にデリミタ文字列を出力する。
5311 `--characters=CHARACTER-LIST'
5312 CHARACTER-LIST で指定された位置にある文字のみを選択して、表示する。
5313 現在のところ、`-b' と同じだが、プログラムの国際化が進むと、動作が
5314 変わることになるだろう。タブやバックスペースも他の文字と同様に
5315 扱う。すなわち、そうしたものも 1 文字と数える。出力用のデリミタが
5316 指定されている場合は (`--output-delimiter' の説明を参照)、選択
5317 された文字からなる範囲同士の間にデリミタ文字列を出力する。
5320 `--fields=FIELD-LIST'
5321 FIELD-LIST で指定されたフィールドのみを選択して、表示する。
5322 フィールドの区切りは、デフォルトではタブ文字 1 個である。なお、
5323 `--only-delimited' (`-s') オプションが指定されていない場合は、
5324 デリミタ文字を全く含まない行も表示する。
5326 一言言っておくと、`awk' を使えば、もっと洗練されたフィールド処理が
5327 可能になる。また、`awk' ならデフォルトで、フィールドの区切りに空白
5328 文字の連続を使用し (すなわち、フィールドの前後から除去し)、さらに、
5329 行頭と行末の空白を無視してくれるだろう。
5330 awk '{print $2}' # 2 番目のフィールドを表示する
5331 awk '{print $(NF-1)}' # 最後から 2 番目のフィールドを表示する
5332 awk '{print $2,$1}' # 最初の 2 フィールドを逆に並べる
5334 ありそうにないことだが、`awk' が利用できない状況だとしよう。その
5335 場合は、`join' コマンドを使えば、上記で `awk' がやっているように、
5337 join -a1 -o 1.2 - /dev/null # 2 番目のフィールドを表示する
5338 join -a1 -o 1.2,1.1 - /dev/null # 最初の 2 フィールドを逆に並べる
5340 `-d INPUT_DELIM_BYTE'
5341 `--delimiter=INPUT_DELIM_BYTE'
5342 `-f' と併せて使うと、入力のフィールド区切りに INPUT_DELIM_BYTE の
5343 最初のバイトを使用する (デフォルトはタブ)。
5346 マルチバイト文字を分割しない (現在のところ、機能しない)。
5350 `-f' を使うとき、フィールド区切り文字を含まない行の表示をしない。
5351 通常は、フィールド区切り文字を含まない行は、行全体がそのまま表示
5354 `--output-delimiter=OUTPUT_DELIM_STRING'
5355 `-f' と一緒に使った場合は、出力フィールド間が OUTPUT_DELIM_STRING
5356 で区切られる。`-f' を指定したときのデフォルトは、入力時のデリミタを
5357 使用することである。`-b' や `-c' を使用して、(フィールドの範囲では
5358 なく) バイト位置や文字位置の範囲を選択した場合は、選択されたバイト
5359 の重なり合わない範囲同士の間に OUTPUT_DELIM_STRING が出力される。
5362 このオプションは GNU の拡張である。`-b', `-c', `-f' オプションで
5363 選択されたバイト、文字、フィールドを含まない部分を選択して、表示する。
5364 言い換えれば、そうしたオプションによって指定されたバイトや文字や
5365 フィールドは「表示しない」ということだ。このオプションは、フィールドが
5366 たくさんあるとき、そのうちの一部を除いたすべてを表示したい場合に
5370 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5373 File: coreutils-ja.info, Node: paste invocation, Next: join invocation, Prev: cut invocation, Up: Operating on fields
5375 8.2 `paste': 複数のファイルの各行をマージする
5376 =============================================================
5378 `paste' は、指定された各ファイルの行番号が同じ行を、タブ文字を
5379 間にはさんで連結して、標準出力に書き出す。入力ファイルが全く
5380 指定されていない場合や、ファイル名が `-' だった場合は、標準入力が
5385 paste [OPTION]... [FILE]...
5387 たとえば、次のような 2 個のファイルに対して、
5403 $ paste num2 let3 num2
5409 $ paste - let3 - < num2
5414 連続する行を、スペースを間にはさんで結合する。
5415 $ seq 4 | paste -d ' ' - -
5419 このプログラムでは以下のオプションが使用できる。参照: *note Common
5424 各ファイルから 1 行づつ取り出して連結するのではなく、一つの
5425 ファイルのすべての行をまとめて 1 行に連結する。上の例のデータを
5428 $ paste -s num2 let3
5433 `--delimiters=DELIM-LIST'
5434 連結する行の区切りに、タブではなく、DELIM-LIST の各文字を順番に
5435 使用する。DELIM-LIST を使い切ってしまった場合は、最初の文字に
5436 戻って使用して行く。上記のデータを例に取ると、
5438 $ paste -d '%_' num2 let3 num2
5444 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5447 File: coreutils-ja.info, Node: join invocation, Prev: paste invocation, Up: Operating on fields
5449 8.3 `join': 共通のフィールドに基づいて行を結合する
5450 =====================================================================
5452 `join' は、二つの入力ファイルを対象に、同一の共通フィールド (join
5453 field) を持つことで「対」になっている各行を、1 行にまとめて、標準出力
5458 join [OPTION]... FILE1 FILE2
5460 FILE1 と FILE2 の片方は `-'、すなわち標準入力であってもよい (両方とも
5461 標準入力は不可)。FILE1 と FILE2 は、共通フィールドに基づいてソートされて
5464 通常、ソート順は、`LC_COLLATE' のロケールが規定している照合順序で
5465 ある。`-t' オプションが指定されていない場合は、両ファイルについて
5466 並び方を比較する際、`sort -b' の場合と同様に、共通フィールドの先頭に
5467 ある空白が無視される。また、`--ignore-case' が指定されている場合は、
5468 `sort -f' と同様、共通フィールドでアルファベットの大文字と小文字は
5471 `sort' の出力を `join' に渡すなら、`sort' と `join' が使用する
5472 ロケールやオプションは首尾一貫していなければならない。`sort -k 1b,1'
5473 のようなコマンドを使用すれば、デフォルトの共通フィールドに基づいて、
5474 ファイルをソートすることができる。しかし、ロケール、共通フィールド、
5475 区切り記号、比較オプションなどにデフォルト以外のものを使用する場合は、
5476 `join' と `sort' の間で矛盾が起きないように、そうしたものを選択
5477 しなければならないのだ。`join -t ''' が指定された場合は、行全体が共通
5478 フィールドとして考慮の対象になるが、これは、sort のデフォルトの動作に
5481 入力のすべての行が対になっている場合は、GNU による拡張が利用できる。
5482 この場合、並んでいる順番は、対になる二つのフィールドが同じであると判断
5483 されるならば、どんな順番でもよい。ただし、並び方の比較を上述のように
5484 行ったとき、二つのフィールドが同じだと判断される場合であり、その場合
5500 `--check-order' を指定した場合、入力がソートされていないと、エラー
5501 メッセージを出して、実行を中断する。`--nocheck-order' オプションを指定
5502 した場合は、入力がソートされていなくても、エラーメッセージを出すことは
5503 ない。どちらのオプションも指定されていない場合に、入力がソートされて
5504 いないとの診断を下すのは、 片方の入力ファイルにもう一方と対にならない
5505 行が見つかったときだけであり、それも入力ファイルのどちらも空ではなく、
5506 中身を持っているときだけである。 入力ファイルがソートされていないと診断
5507 すると、`join' は 0 以外のステータスで終了する (従って、そうした出力は
5510 入力ファイルがきちんとソートされていず、しかも、対にならない行を
5511 含む場合に、`--nocheck-order' を指定して、そうしたファイルを `join' で
5512 無理矢理処理しても、何か特定の結果をもたらすことは保証できない。おそらく
5513 出力は、期待に添わないものになるだろう。
5515 デフォルトの動作は次のようになっている。
5516 * 共通フィールド (join field) は、各行の最初のフィールドである。
5518 * 入力の各フィールドは、1 個以上の空白 (スペースやタブ)
5519 で区切られる。 行頭の空白は無視される。
5521 * 出力の各フィールドは、1 個のスペースで区切られる。
5523 * 各出力行の構成は、共通フィールド、FILE1 の残りのフィールド、 FILE2
5526 このプログラムでは以下のオプションが使用できる。参照: *note Common
5530 FILE-NUMBER (`1' か `2') のファイルに、もう一方のファイルと対に
5531 ならない行がある場合、通常の出力のほかに、その行も表示する。
5534 入力ファイルのどちらかの内容がきちんとソートされていないと、
5535 エラーメッセージを出して、実行に失敗する。
5538 入力ファイルの内容がソートされた順番になっているかどうかを、どちらの
5539 ファイルについてもチェックしない。これが、デフォルトである。
5542 入力では欠けているフィールドを、出力では STRING で補う。すなわち、
5543 オプション `-1', `-2', `-j', `-o' などを指定したときに、欠けている
5547 各入力ファイルの最初の行をヘッダ行と見なす。ヘッダ行も結合され、
5548 最初の出力行として表示される。`-o' を使って、出力フォーマットを
5549 指定している場合は、ヘッダ行もそのフォーマットに従って出力される。
5550 ヘッダ行は、`--check-order' が指定されていても、並び順のチェックを
5551 受けない。なお、両ファイルのヘッダ行がマッチしない場合は、一番目の
5552 ファイルのヘッダ・フィールドが使用される。
5556 キーを比較する際、アルファベットの大文字小文字を区別しない。この
5557 オプションを使用するときは、両方の入力ファイルの行が、同じように
5558 大文字小文字を区別せず並んでいなければならない。そうした順番で並
5559 べるには、`sort -f' を使えばよい。
5562 ファイル 1 では FIELD 番目のフィールドを共通フィールドとする
5566 ファイル 2 では FIELD 番目のフィールドを共通フィールドとする
5570 `-1 FIELD -2 FIELD' と等価。
5574 キーワードの `auto' が指定されると、`join' は各ファイルの最初の
5575 行を元にして、出力フォーマットを推測する。それは、デフォルトの
5576 出力フォーマットとほぼ同じだが、それだけでなく、各行に必ず同数の
5577 フィールドを出力するようにする。また、欠けているフィールドがあれば、
5578 `-e' オプションの指定する文字列で補う。余分なフィールドは除去する。
5580 `auto' が指定されていない場合は、FIELD-LIST のフォーマットに従っ
5581 て、各出力行を構成する。FIELD-LIST の各要素は、`0' 一文字か、M.N
5582 という形を取る。ここで、M はファイル番号であり、`1' か `2' である。
5583 N はフィールド番号であり、正の整数である。
5585 `0' というフィールド指定は、共通フィールドを指している。ほとんどの
5586 場合、`0' というフィールド指定と同じことが、共通フィールドを明示的
5587 に M.N で示すことでも、実現できるだろう。しかしながら、(`-a' オプ
5588 ションなり `-v' オプションなりを使用して)、対にならない行を表示
5589 する場合、対にならない行が両方のファイルに存在すると、FIELD-LIST で
5590 M.N をどう使おうとも、共通フィールドを指定できないのだ。`join' で
5591 共通フィールドの指定が常に可能になるように、POSIX は `0' という
5594 FIELD-LIST の各要素は、コンマ、または空白で区切られる。区切りに空白
5595 を使用するときは、シェルによって解釈されないように、たいていの場合
5596 引用符で囲む必要がある。たとえば、コマンド `join -o 1.2,2.2' と
5597 `join -o '1.2 2.2'' は、同じ動作になる。
5599 FIELD-LIST の指定は、すべての出力行に適用される。これは、`-a' や
5600 `-v' オプションによって出力されるものにも当てはまる。
5603 入出力のフィールドの区切りに、文字 CHAR を使用する。CHAR は、入力
5604 ファイルに現れる一つ一つが、有意なものとして扱われる。`sort -t
5605 CHAR' を `-b' なしで実行すれば、このオプションに対応する順序に行を
5606 並べることができる。`join -t ''' を指定すると、行全体が共通フィー
5607 ルドとして考慮の対象になり、これは sort のデフォルトの動作に対応
5608 している。`-t '\0'' を指定すると、ASCII NUL 文字がフィールドの
5612 通常の出力はせず、FILE-NUMBER (`1' か `2' である) のファイルに存在
5617 項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。
5618 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する
5619 各項目の末尾に ASCII NUL を付加する。このオプションは、`perl -0',
5620 `find -print0', `xargs -0' などと組み合わせて使用すると、便利な
5621 ことがある。そうしたコマンドも、わがままなファイル名を (空白など
5622 の特殊文字を含んでいる場合でも) きちんと確実に処理するために、
5626 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5629 File: coreutils-ja.info, Node: Operating on characters, Next: Directory listing, Prev: Operating on fields, Up: Top
5634 以下のコマンドは、個々の文字に対して操作を行う。
5638 * tr invocation:: 文字の置換、圧縮、削除を行う。
5639 * expand invocation:: タブをスペースに変換する。
5640 * unexpand invocation:: スペースをタブに変換する。
5643 File: coreutils-ja.info, Node: tr invocation, Next: expand invocation, Up: Operating on characters
5645 9.1 `tr': 文字の置換、圧縮、削除を行う
5646 ====================================================
5650 tr [OPTION]... SET1 [SET2]
5652 `tr' は標準入力を標準出力にコピーする際に、次の操作の一つを行う。
5654 * 文字を置換する。置換した結果に同一文字の連続があるときは、それを 1
5657 * 同一文字の連続を 1 文字に圧縮する。
5661 * 文字を削除する。さらに、削除した結果に同一文字の連続があるときは、
5664 上記書式の SET1 と (もし、指定しているなら) SET2 の二つの引数には、
5665 順序が意味を持つ文字の集合を指定する。以下の説明で、それぞれ SET1、SET2
5666 と呼ばれることになるそうした文字集合こそ、入力中に存在する文字のうちで
5667 `tr' が操作の対象とする文字群である。`--complement' (`-c', `-C')
5668 オプションを指定すると、SET1 の代わりにその補集合 (SET1 に含まれない
5671 現在のところ、`tr' が完全に対応しているのは、シングルバイト文字
5672 だけである。将来は、マルチバイト文字もサポートすることになるだろうが、
5673 そのときは、`-C' オプションで文字集合の補集合を作り、`-c' オプションで
5674 値 (訳注: いわゆる文字コード) の集合の補集合を作ることになるだろう。
5675 この区別が意味を持つのは、指定する値の中に文字ではないものがあるとき
5676 だけだが、そういった事態は、マルチバイト・エンコーディングを使用して
5677 いるロケールで、入力にエンコーディング・エラーが含まれるときしか起き
5680 このプログラムでは、`--help' や `--version' オプションも使える。
5681 *Note Common options::. なお、オプションは、オペランドの前で指定しなけ
5684 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
5688 * Character sets:: 文字集合の指定。
5689 * Translating:: ある文字集合の別の文字集合への変換。
5690 * Squeezing:: 連続する同一文字の圧縮と文字の削除。
5693 File: coreutils-ja.info, Node: Character sets, Next: Translating, Up: tr invocation
5696 ---------------------------
5698 SET1 や SET2 引数の書式は、正規表現の書式に似ているが、正規表現では
5699 なく、文字のリストにすぎない。そうした文字列中のほとんどの文字は、単に
5700 その文字自身を表しているだけだが、便宜のため文字列中では以下に列挙する
5701 簡易記法も使うことができる。簡易記法によっては、以下で述べているように、
5702 SET1 と SET2 のどちらか一方でしか使えないこともある。
5705 以下のバックスラッシュ・エスケープ・シーケンスを認識する。
5711 Control-H (バックスペース).
5714 Control-L (フォームフィード).
5729 1 から 3 桁の 8 進数 OOO によって表される値を持つ 8 ビット
5730 文字。`\400' は、`\040' `0' という連続する 2 バイトに解釈
5736 上記以外の 1 個の文字がバックスラッシュに続く場合は、その文字
5737 として解釈される。またバックスラッシュには、特別な意味を打ち消す
5738 働きもあるので、`[', `]', `*', `-' をエスケープするのにも使用
5742 `M-N' という表記は、昇順で M から N までのすべての文字に展開
5743 される。M は文字の照合順序で N より前のものでなければならず、
5744 さもないと、エラーになる。たとえば、`0-9' は `0123456789'
5747 System V の書式では、範囲は、角カッコ (square brackets)を使って
5748 囲むことになっているが、GNU の `tr' はこの書式をサポートして
5749 いない。System V の書式で指定した場合でも、置換が期待どおり行われる
5750 こともあるが、それは、たいていの場合、角カッコが角カッコに置換される
5751 からである。そうだとしても、予想外の動作をすることもあるので、
5752 角カッコの使用は避けた方がよい。たとえば、`tr -d '[0-9]'' は、数字
5755 昔からよく使われている範囲の指定法の多くが -- 正しい用法として
5756 認められているものでさえ -- 他のシステムで使えるとはかぎらない。
5757 たとえば、EBCDIC のホストでは、 `A-Z' という範囲の指定をしても、
5758 たいていの人が予想するような結果は得られないだろう。なぜなら、
5759 そこでは `A' から `Z' までが、ASCII におけるように隣り合っては
5760 いないからである。POSIX 準拠の `tr' を使うことができるならば、
5761 この問題を回避する最善の方法は、文字クラスを使用することである
5762 (下記参照)。それができない場合は、範囲の要素を一つ一つ書き込むのが、
5763 一番可搬性のある方法だ (一番野暮ったい方法でもあるけれど)。
5766 SET2 における `[C*N]' という表記は、文字 C の N 個の連続に展開
5767 される。従って、`[y*6]' は `yyyyyy' と同じである。また、SET2 に
5768 おける `[C*]' という表記は、SET2 を SET1 と同じ長さにするのに
5769 必要な数の C の連続に展開される。N が `0' で始まっている場合は、 8
5770 進数として扱われる。それ以外の場合は、10 進数である。
5773 `[:CLASS:]' という表記は、(あらかじめ定義されている) 文字クラス
5774 CLASS に属するすべての文字に展開される。展開された文字に特定の
5775 順序はないが、`upper' と `lower' の文字クラスは別で、この二つは、
5776 昇順に展開される。`--delete' (`-d') と `--squeeze-repeats' (`-s')
5777 オプションの両方を指定している場合は、SET2 で任意の文字クラスを
5778 使用することができる。それ以外の場合 SET2 で使えるのは、`lower' と
5779 `upper' の文字クラスだけであり、それも、対応する文字クラスを
5780 (すなわち、`upper' に対しては `lower'、`lower' に対しては `upper'
5781 を)、SET1 の対応する位置で指定しているときだけである。その場合は、
5782 大文字小文字の変換を指定していることになるわけだ。以下に文字クラス
5783 の名前を列挙する。なお、無効なクラス名を指定すると、エラーになる。
5792 水平方向の空白 (Horizontal whitespace)。
5801 表示可能文字。空白を含まない (訳注: スペースもタブも改行も、
5802 すなわち、ホワイトスペースを一切含まない)。
5808 表示可能文字。空白を含む (訳注: タブや改行は含まないが、
5815 水平方向や垂直方向の空白 (Horizontal or vertical whitespace)。
5824 `[=C=]' という書式は、C と等価な文字のすべてに展開される。
5825 展開される文字の間に特定の順序はない。等価クラスは、比較的最近の
5826 発明であり、英語以外のアルファベットをサポートするためのものである。
5827 しかしながら、等価クラスを定義したり、何が等価クラスに含まれるかを
5828 決定したりする標準的な方法は存在しないようだ。そのため、GNU の
5829 `tr' は、等価クラスを十分に実装していない。各文字の等価クラスには
5830 その文字しか含まれていないので、あまり使い道がない。
5834 File: coreutils-ja.info, Node: Translating, Next: Squeezing, Prev: Character sets, Up: tr invocation
5839 `tr' は、SET1 と SET2 の両方が指定され、`--delete' (`-d') オプションが
5840 指定されていない場合は、文字の置換を行う。`tr' は入力の中に SET1 に存在
5841 する文字が現れるたびに、それを SET2 の対応する文字に置き換える。入力中の
5842 SET1 に存在しない文字は、読み飛ばして、変更しない。ある文字が SET1 中に
5843 2 個以上存在し、SET2 中のそれに対応する文字がすべて同じでない場合、置換
5844 に使用するのは、最後の文字だけである。たとえば、次の二つのコマンドは、
5850 `tr' がよく使われるのは、アルファベットの小文字を大文字に変換する
5851 ときである。それには、いろいろな方法がある。例を三つほど挙げてみる。
5853 tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
5855 tr '[:lower:]' '[:upper:]'
5857 ただし、上記の `a-z' のような範囲指定の使用は、可搬性がないことに
5860 `tr' で置換を行う際には、普通 SET1 と SET2 を同じ長さにする。SET1 が
5861 SET2 より短いと、SET2 の後尾にある余分な文字が無視されることになる。
5863 逆に、SET1 が SET2 より長い場合は、可搬性がなくなる。POSIX の規定で
5864 は、結果は未定義なのだ。こうした場合、BSD の `tr' は、SET2 の最後の
5865 文字を必要なだけ繰り返して、SET2 が SET1 と同じ長さになるようにする。
5866 System V の `tr' は、SET1 を SET2 と同じ長さに切り詰める。
5868 デフォルトでは、GNU 版の `tr' は、この問題を BSD の `tr' と同じ
5869 やり方で処理する。そして、`--truncate-set1' (`-t') オプションが指定
5870 されている場合のみ、System V の `tr' のように処理するのである。
5871 このオプション (`--truncate-set1') は、置換以外の操作では無視される。
5873 この問題で System V の `tr' の動作を選ぶと、比較的よく使われる、 BSD
5876 tr -cs A-Za-z0-9 '\012'
5878 なぜなら、System V の動作では、アルファベットと数字以外のすべての文字を
5879 改行文字に変換するのではなく、ゼロバイトしか (ASCII NUL 文字、それが
5880 SET1 の補集合の最初の要素である) 改行文字に変換しないからだ。
5882 ちなみに、上記の慣用表現は、システムによってはうまく動作しない。
5883 なぜなら、範囲指定を使っているからであり、また、改行の 8 進数による
5884 コードを 012 と決め込んでいるからでもある。`tr' が POSIX に準拠して
5885 いるなら、以下の方が、よりよい書き方である。
5887 tr -cs '[:alnum:]' '[\n*]'
5890 File: coreutils-ja.info, Node: Squeezing, Prev: Translating, Up: tr invocation
5892 9.1.3 連続する文字の圧縮と文字の削除
5893 ---------------------------------------------------
5895 `--delete' (`-d') オプションのみが指定された場合、`tr' は、SET1 に
5896 存在する文字が入力中にあれば、それを削除する。
5898 `--squeeze-repeats' (`-s') オプションのみが指定された場合、`tr' は、
5899 SET1 に存在する文字が入力中に連続して現れるたびに、その部分をただ 1 個
5902 `--delete' と `--squeeze-repeats' の両方が指定された場合、`tr' は、
5903 まず SET1 を使って削除を行い、その後で、残っている文字に対して、 SET2
5906 `--squeeze-repeats' オプションは、置換の際に使用することもできる。
5907 その場合、`tr' は、まず置換を実行し、その後で、置換結果に対して、 SET2
5910 例をいくつか挙げて、オプションの様々な組み合わせを説明する。
5916 * 入力中のすべての単語 (訳注: 空白などで前後を区切られた文字列) を 1
5917 行に 1 個づつ書き出す。このコマンドは、アルファベットと数字以外の
5918 すべてを改行文字に変換し、さらに、改行が連続して現れるそれぞれの
5919 箇所を 1 個の改行文字に圧縮している。
5921 tr -cs '[:alnum:]' '[\n*]'
5923 * 連続する改行文字が現れるごとに、それを一個の改行文字に変換する。
5927 * 文書中の単語の重複を探し出す。たとえば、 改行を挟んで同じ単語を
5928 繰り返して、"the the" のように書いてしまうとことは、よくあること
5929 である。以下の Bourne シェルのスクリプトは、次のように動作する。
5930 まず、句読点や空白文字が 1 個以上続けて現れるたびに、それを 1 個の
5931 改行文字に置き換える。そうすることで、単語が 1 行に 1 個づつ
5932 出力されることになるわけだ。次には、すべての大文字を小文字に
5933 変換する。そして、最後に、`uniq' を `-d' オプション付きで実行して、
5938 | tr -s '[:punct:][:blank:]' '[\n*]' \
5939 | tr '[:upper:]' '[:lower:]' \
5942 * 文字のちょっとした集団を削除するのは、たいていの場合ごく簡単
5943 である。たとえば、`a', `x', `M' という文字をすべて消すには、次の
5948 ところが、削除する文字の一つに `-' があると、`-' は特殊な意味を
5949 もっているので、厄介なことになりかねない。上記と同様の作業を行う
5950 けれど、今度は `-' という文字もついでにすべて削除するとしよう。
5951 `tr -d -axM' をやってみるかもしれないが、うまく行かないだろう。
5952 `tr' が `-a' をコマンドライン・オプションとして解釈しようとする
5953 からである。それではと、ハイフンを文字列の内側に入れてみることも
5954 できる。`tr -d a-xM' のようにだ。だが、これもうまく行きそうにない。
5955 `tr' が `a-x' を 3 個の文字としてではなく、`a'...`x' という文字の
5956 範囲として解釈することになるからだ。この問題を解決する方法の一つは、
5957 ハイフンを文字のリストの最後に置くことである。
5961 あるいは、`--' を使って、オプション処理はここで終わりと明示する
5966 より普遍的な方法は、等価クラスの記法 `[=c=]' を、`c' を `-' で
5967 (あるいは、他の任意の文字で) 置き換えて使うことである。
5971 上記の例では、角カッコがシェルによって解釈されないように、シングル
5972 クォートを使っていることに注意していただきたい。
5976 File: coreutils-ja.info, Node: expand invocation, Next: unexpand invocation, Prev: tr invocation, Up: Operating on characters
5978 9.2 `expand': タブをスペースに変換する
5979 ==================================================
5981 `expand' は指定された各 FILE の内容を標準出力に書き出し、その際に
5982 タブ文字を適切な数のスペースに変換する。FILE が指定されていない
5983 場合や、FILE として `-' が指定されている場合は、標準入力を対象にする。
5987 expand [OPTION]... [FILE]...
5989 デフォルトでは、`expand' はすべてのタブをスペースに変換する。
5990 バックスペース文字は、出力にそのまま残しておく。バックスペースには、
5991 タブ幅を計算する際に、桁数を減らす働きがあるのだ。デフォルトの動作は、
5992 `-t 8' を指定したときと同じである (タブ位置を 8 桁ごとにする)。
5994 このプログラムでは以下のオプションが使用できる。参照: *note Common
5998 `--tabs=TAB1[,TAB2]...'
5999 タブ位置 (tab stop) が一つだけ指定された場合には、(訳注: 入力行に
6000 おける) タブ位置が TAB1 桁ごとあるものとする (デフォルトは 8
6001 桁ごと)。それ以外の場合は、タブ位置を TAB1, TAB2, ... 桁目に置き
6002 (行頭を 0 桁目として数える)、指定された最後のタブ位置より後ろに
6003 あるタブは 1 個のスペースで置き換える。タブ位置の指定は、コンマで
6006 互換性を考慮して、GNU の `expand' は、`-TAB1[,TAB2]...' という、
6007 このオプションの古い書式も認めている。新しいスクリプトでは、 `-t
6008 TAB1[,TAB2]...' の方を使うべきである。
6012 各行の行頭にあるタブ群だけを (言い換えれば、スペースでもタブでも
6013 ないどんな文字よりも前にある 1 個以上のタブだけを) スペースに変換
6017 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
6020 File: coreutils-ja.info, Node: unexpand invocation, Prev: expand invocation, Up: Operating on characters
6022 9.3 `unexpand': スペースをタブに変換する
6023 ====================================================
6025 `unexpand' は、指定された各 FILE の内容を標準出力に書き出し、その際に
6026 各行の先頭にある複数の空白 (blank) を、必要な数のタブ文字に変換する。
6027 FILE が指定されていない場合や、FILE として `-' が指定されている場合は、
6028 標準入力を対象にする。デフォルトの POSIX ロケールでは、空白 ("blank")
6029 とは、スペースかタブのことである。他のロケールでは、ほかの空白文字が
6034 unexpand [OPTION]... [FILE]...
6036 デフォルトでは、`unexpand' が変換するのは、各行の行頭にある複数の
6037 空白だけである (言い換えれば、空白以外のどんな文字よりも前にある複数
6038 の空白だけ)。バックスペース文字は、出力にそのまま残しておく。バック
6039 スペースには、タブ幅を計算する際に、桁数を減らす働きがあるのだ。
6040 デフォルトでは、タブ位置は 8 桁ごとに置かれる。
6042 このプログラムでは以下のオプションが使用できる。参照: *note Common
6046 `--tabs=TAB1[,TAB2]...'
6047 タブ位置 (tab stop) が一つだけ指定された場合には、(訳注: 入力行に
6048 おける) タブ位置をデフォルトの 8 桁ごとではなく、TAB1 桁ごとに
6049 設定する。それ以外の場合は、タブ位置を TAB1, TAB2, ... 桁目に置き
6050 (行頭を 0 桁目として数える)、指定された最後のタブ位置より後ろに
6051 ある空白は、変換せず、そのままにする。タブ位置の指定は、コンマで
6052 区切ってもよく、空白で区切ってもよい。このオプションを指定すると、
6053 `-a' オプションが自動的に設定される。
6055 (訳注: 一例を挙げておく。たとえば、`-t 8,12' なら、入力行は、先頭を
6056 0 桁目として、8 桁目、12 桁目にタブ位置があると見なされる。そこで、
6057 先頭に 12 個のスペースがある行に対して `unexpand -t 8,12' を行う
6058 と、空白がタブ 2 個に変換される。出力におけるタブ位置はデフォルトの
6059 ままなので、出力ではその行は、 0 から数えて 16 桁目から文字が始まる
6062 互換性を考慮して、GNU の `unexpand' は、`-TAB1[,TAB2]...' という、
6063 このオプションの古い書式も認めている。そちらを使う場合は、タブ位置を
6064 必ずコンマで区切らなければならない。なお、`-t' とは違って、この古い
6065 オプションは、`-a' を自動的に設定しない。新しいスクリプトでは
6066 (訳注: 古い書式と同じ動作をさせたい場合)、古い書式に代えて、
6067 `--first-only -t TAB1[,TAB2]...' を使うべきである。
6071 空白の連続が、行の中で空白以外の文字の後ろにある場合でも、タブ位置の
6072 直前にある 2 個以上の空白の連続は、すべて変換する。
6075 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
6078 File: coreutils-ja.info, Node: Directory listing, Next: Basic operations, Prev: Operating on characters, Up: Top
6081 ************************************
6083 この章では、`ls' とその変種の `dir' 及び `vdir' について説明する。
6084 こうしたコマンドは、ファイルに関する情報を一覧表示する。
6088 * ls invocation:: ディレクトリの内容を一覧表示する。
6089 * dir invocation:: 簡潔な ls。
6090 * vdir invocation:: 詳細な ls。
6091 * dircolors invocation:: ls のカラー設定など。
6094 File: coreutils-ja.info, Node: ls invocation, Next: dir invocation, Up: Directory listing
6096 10.1 `ls': ディレクトリの内容を一覧表示する
6097 ===========================================================
6099 `ls' プログラムはファイルに関する情報を一覧表示する (ファイルは、
6100 いかなるタイプでもよく、ディレクトリでもよい)。オプションとファイルを
6101 示す引数は、ほとんどのコマンドと同様、どんな順番で指定しても構わない。
6103 コマンドラインで指定したオプション以外の引数がディレクトリならば、
6104 デフォルトでは、`ls' はそのディレクトリの内容を一覧表示する。その際、
6105 再帰的な表示はせず、名前が `.' で始まるファイルも表示しない。
6106 オプション以外の引数がディレクトリでなければ、単にそのファイルの名前を
6107 表示するのが、`ls' のデフォルトの動作である。オプション以外の引数が
6108 一つも指定されていない場合は、`ls' はカレントディレクトリを対象にし、
6109 あたかも `.' という引数を一つだけ付けて起動したかのように動作する。
6111 デフォルトでは、出力を、現在のロケール設定に従って、アルファベット
6112 順でソートする (1)。 標準出力が端末の場合は、出力を多段組みで (訳注:
6113 すなわち、1 行に複数ファイルの形式で) 表示し、制御文字を疑問符として
6114 出力する (ソートは縦方向に行う)。それ以外の場合は、出力が 1 行 1
6115 ファイルの形式になり、制御文字はそのまま手を加えずに出力する。
6117 `ls' はきわめて基本的なプログラムなので、長年の間にオプションが
6118 どんどん増えてしまった。以下のサブセクションでは、そうしたオプション
6119 について説明している。各サブセクション内では、オプションを (大文字
6120 小文字を無視して) アルファベット順に並べている。このようにオプションを
6121 サブセクションに分けてはみたが、この分類法は完全なものではない。オプ
6122 ションの中には、`ls' の動作の複数の側面に作用するものもあるからである。
6127 1: 軽微な問題 (たとえば、コマンドライン引数として指定されていない
6128 ファイルやディレクトリにアクセスできなかった場合。ディレクトリの
6129 内容を一覧表示しようとしたとき、その中にあるエントリが今まさに
6130 削除やリネームの最中だと、そういうことが起きる)
6131 2: 深刻なトラブル (たとえば、メモリの不足、無効なオプション、
6132 コマンドライン引数として指定されたファイルやディレクトリに
6133 アクセスできなかった場合、ディレクトリのループなど)
6135 参照 *note Common options::.
6139 * Which files are listed:: 表示対象にするファイル。
6140 * What information is listed:: 表示する情報。
6141 * Sorting the output:: 出力のソート。
6142 * Details about version sort:: バージョン・ソートの詳細。
6143 * General output formatting:: 出力全体の形式。
6144 * Formatting file timestamps:: タイムスタンプのフォーマット。
6145 * Formatting the file names:: ファイル名のフォーマット。
6147 ---------- Footnotes ----------
6149 (1) POSIX 以外のロケールを使用している場合は (たとえば、`LC_ALL' を
6150 `en_US' に設定している場合は)、`ls' の出力が、見慣れない順序で並んで
6151 いるかもしれない。そうした場合は、環境変数 `LC_ALL' を `C' にしてみる
6155 File: coreutils-ja.info, Node: Which files are listed, Next: What information is listed, Up: ls invocation
6158 ----------------------------------------
6160 以下のオプションは、どんなファイルについて `ls' が情報を表示するか
6161 を決定する。デフォルトで `ls' が表示するのは、コマンドラインで指定
6162 されたファイルだが、ディレクトリが指定された場合は、その内容になる。
6163 ただし、ディレクトリの内容のうち、名前が `.' で始まるファイルは表示
6168 ディレクトリの内容を表示する際、`.' で始まるファイル名も無視
6173 ディレクトリの内容を表示する際、`.' と `..' は無視するが、
6174 それ以外の `.' で始まるいかなるファイル名も無視しない。`--all'
6175 (`-a') オプションは、このオプションに優先する。
6179 ディレクトリの内容表示において、`~' で終わるファイルを無視する。
6180 このオプションは、`--ignore='*~' --ignore='.*~'' と同じである。
6184 ディレクトリについても、ディレクトリ内容の一覧ではなく、他のタイプ
6185 のファイルの場合と同じように、名前だけを表示する。また、
6186 `--dereference-command-line' (`-H'), `--dereference' (`-L'),
6187 `--dereference-command-line-symlink-to-dir' といったオプションが
6188 指定されていないかぎり、コマンドラインでシンボリックリンクが指定
6192 `--dereference-command-line'
6193 コマンドライン引数がシンボリックリンクを指定している場合、リンク
6194 そのものではなく、リンクが参照しているファイルの情報を表示する。
6196 `--dereference-command-line-symlink-to-dir'
6197 原則としてシンボリックリンクの参照を行わないが、一つだけ例外が
6198 ある。すなわち、コマンドライン引数がシンボリックリンクを指定し、
6199 それがディレクトリを指している場合は、リンクそのものではなく、
6200 そのディレクトリの情報を表示する。この動作は、リンクの参照に関係
6201 する他のオプションが全く指定されていないときの、`ls' のデフォルトの
6202 動作である (リンクの参照に関係する他のオプションには、`--classify'
6203 (`-F'), `--directory' (`-d'), `-l', `--dereference' (`-L'),
6204 `--dereference-command-line' (`-H') がある)。
6206 `--group-directories-first'
6207 すべてのディレクトリをまとめてファイルの前に置き、その上で、選択
6208 したソート・キーを使って (`--sort' オプション参照)、ディレクトリと
6209 ファイルをそれぞれ別々にソートする。別の言い方をすると、このオプ
6210 ションはソートする際の主キーを設定し、`--sort' オプションが副キー
6211 を設定するということだ。ただし、`--sort=none' (`-U') を使ったり
6212 すると、このオプションは全く無効になる。
6215 ディレクトリの内容表示において、`--all' (`-a') や `--almost-all'
6216 (`-A') が同時に指定されていないかぎり、シェルのパターン PATTERN
6217 に名前がマッチするファイルを無視する。このオプションの動作は、
6218 `--ignore=PATTERN' とほぼ同じだが、`--all' (`-a') や `--almost-all'
6219 (`-A') が併せて指定されていると、効果がないという点が違う。
6221 このオプションは、シェルのエイリアスで使うと、便利かもしれない。
6222 たとえば、`lx' が `ls --hide='*~'' のエイリアスで、`ly' は `ls
6223 --ignore='*~'' のエイリアスだとしよう。その場合、`lx -A' という
6224 コマンドは、ファイル `README~' を表示するが、`ly -A' は表示しない
6229 ディレクトリの内容表示において、シェルのパターン (正規表現ではない)
6230 PATTERN に名前がマッチするファイルを無視する。シェルの場合と同様、
6231 ファイル名の先頭にある `.' は PATTERN の先頭のワイルドカードと
6232 マッチしない。このオプションを二度以上使うと、便利なことがある。
6235 $ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'
6237 最初のオプションは `.' で始まる 3 文字以上のファイル名を無視する。
6238 二番目のオプションは `.' で始まる二文字のファイル名のうち、 `..'
6239 を除くすべて無視し、三番目のオプションは `#' で始まるファイル名を
6244 シンボリックリンクについてファイル情報を表示する際、リンクそのもの
6245 ではなく、リンクが参照しているファイルの情報を表示する。とは言え、
6246 このオプションを使用した場合でも、表示されるファイル名については、
6247 リンクそのものの名前のままであり、リンクが指しているファイルの名前
6252 すべてのディレクトリの内容を再帰的に一覧表示する。
6256 File: coreutils-ja.info, Node: What information is listed, Next: Sorting the output, Prev: Which files are listed, Up: ls invocation
6259 -------------------------
6261 以下のオプションは、`ls' がどんな情報を表示するかに関係している。 `ls'
6262 がデフォルトで表示するのは、ファイル名だけである。
6265 詳細形式でディレクトリ内容のリストを出力する際、各ファイルの作成者
6266 情報を表示する。GNU/Hurd では、ファイルの作成者 (author) はファイル
6267 の所有者 (owner) と別人であることがあるが、他のオペレーティング・
6272 詳細表示形式 (`-l') と併せて使用すると、出力本体の後ろに以下の
6275 //DIRED// BEG1 END1 BEG2 END2 ...
6277 BEGN や ENDN は符号なしの整数であり、出力における各ファイル名の
6278 開始バイト位置と終了バイト位置を示している。このようにすることで、
6279 ファイル名に空白や改行のような普段使わない文字が含まれている場合
6280 でも、手の込んだ検索をするまでもなく、Emacs が簡単にファイル名を
6283 ディレクトリを再帰的にリストしている場合には (`-R')、
6284 各サブディレクトリ名のオフセットを記した同様の行も出力する。
6286 //SUBDIRED// BEG1 END1 ...
6290 //DIRED-OPTIONS// --quoting-style=WORD
6292 ここで、WORD はクォートの方式である (*note Formatting the file
6297 $ mkdir -p a/sub/deeper a/sub2
6299 $ touch a/sub/deeper/file
6300 $ ls -gloRF --dired a
6303 -rw-r--r-- 1 0 Jun 10 12:27 f1
6304 -rw-r--r-- 1 0 Jun 10 12:27 f2
6305 drwxr-xr-x 3 4096 Jun 10 12:27 sub/
6306 drwxr-xr-x 2 4096 Jun 10 12:27 sub2/
6310 drwxr-xr-x 2 4096 Jun 10 12:27 deeper/
6314 -rw-r--r-- 1 0 Jun 10 12:27 file
6318 //DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
6319 //SUBDIRED// 2 3 167 172 228 240 290 296
6320 //DIRED-OPTIONS// --quoting-style=literal
6322 上記 `//DIRED//' 行の 2 個づつ組になっているオフセットは、次の 6
6323 個の名前の区切りとなるバイト位置を示している (訳注: 別の言い方を
6324 するなら、出力の先頭からある名前の直前までのバイト数と、その名前の
6325 最後の文字までのバイト数を示している)。6 個の名前とは、すなわち
6326 `f1', `f2', `sub', `sub2', `deeper', `file' である。`//SUBDIRED//'
6327 の行のオフセットが示しているのは、次のディレクトリ名の区切りである。
6328 `a', `a/sub', `a/sub/deeper', `a/sub2'。
6330 下記の例では、5 番目の項目の名前 `deeper' を抜き出してみせている。
6331 この項目の名前は、217 と 223 のオフセットの組に対応している。
6333 $ ls -gloRF --dired a > out
6334 $ dd bs=1 skip=217 count=6 < out 2>/dev/null; echo
6337 上記のファイル一覧表示では、`deeper' という項目の後ろにスラッシュ
6338 が付いているが、オフセットが名前として選択しているのは、後ろの
6339 スラッシュを除いた部分であることに注目していただきたい。しかしながら、
6340 `ls' を `--dired' とともに `--escape' (短縮形は `-b') のような
6341 オプションを付けて実行し、名前に特殊文字が入っているファイルを処理の
6342 対象にする場合には、バックスラッシュがオフセットの示す範囲のうちに
6346 $ ls -blog --dired 'a b'
6347 -rw-r--r-- 1 0 Jun 10 12:28 a\ b
6349 //DIRED-OPTIONS// --quoting-style=escape
6351 引用符を付加するクォート方式を使用している場合には (たとえば、
6352 `--quoting-style=c')、引用符もオフセットの示す範囲に含まれる。
6353 そこで、ユーザが環境変数 `QUOTING_STYLE' を設定して、そうした
6354 クォート方式を選択しているかもしれないことに気を付けなければ
6355 ならない。要するに、`--dired' を使用するアプリケーションでは、
6356 コマンドラインで明示的に `--quoting-style=literal' オプションを
6357 指定するか (`-N' や `--literal' と指定しても同じことだ)、あるいは、
6358 エスケープされた名前を解析できるするようにしておくか、どちらかを
6362 詳細形式でディレクトリ内容のリストを生成し、日時の情報を省略なしで
6363 表示する。これは、`--format=long' を `--time-style=full-iso' と
6364 一緒に使うのと同じである (*note Formatting file timestamps::)。
6367 詳細形式でディレクトリ内容のリストを生成するが、所有者情報は表示しない。
6371 詳細形式でディレクトリ内容をリスト表示する際に、グループ情報を
6372 表示しない (GNU 版以外の `ls' には、この動作がデフォルトの
6373 ものがある。そこで、互換性のために、このオプションを用意している)。
6377 各サイズの後ろに、メビバイトなら `M' といった、大きさを示す文字を
6378 付ける。1000 ではなく、1024 の累乗が使われるので、`M' は 1,048,576
6379 バイトを表している。このオプションは、`--block-size=human-readable'
6380 と同じである。1000 の累乗が使いたければ、"`--si' オプションを使用
6385 ファイル名の左側にそのファイルの inode 番号を表示する (inode
6386 番号は、ファイル連続番号とか、インデックスナンバーとも呼ばれる。
6387 この番号は、ある特定のファイルシステムにある各ファイルを、一意に
6393 各ファイルの名前のほかに、(訳注: 行頭から順に) ファイルのタイプ、
6394 ファイルのモードビット(訳注: 一般に「アクセス権」とか「許可属性」
6395 と言われるもの)、ハードリンク数、所有者名、グループ名、サイズ、
6396 タイムスタンプを表示する (*note Formatting file timestamps::)。
6397 タイムスタンプは、通常は更新日時 (訳注: いわゆる mtime) である。
6398 特定することのできない情報については、疑問符を表示する。
6400 通常、サイズは、桁を区切る記号を付けずに、バイト数で表示されるが、
6401 この表示法は変更することができる (*note Block size::)。たとえば、
6402 `-h' オプションを指定すると、人間に読みやすい短縮表示になり、
6403 `--block-size="'1"' を指定すると、現在のロケールの区切り記号で 3
6406 ディレクトリの内容をリストする場合は、対象となるディレクトリ
6407 ごとに、ファイルのリストの前に `total BLOCKS' という行を置く。
6408 ここで、BLOCKS は、そのディレクトリにあるすべてのファイルに
6409 割り当てられたディスク容量の合計である。現在のところブロック
6410 サイズはデフォルトでは 1024 バイトであるが、この値は変更する
6411 ことができる (*note Block size::)。BLOCKS の計算では、
6412 各ハードリンクを別のものとして計算している。これはバグだと
6415 ファイルタイプには、以下の文字の一つが使われる。
6427 ハイパフォーマンス ("contiguous data") ファイル
6439 オフライン ("migrated") ファイル (Cray DMF)
6442 ネットワーク・スペシャルファイル (HP-UX)
6456 ファイルのモードビットの表示は、アクセス権を設定する際のシンボ
6457 リックモードの仕様とほぼ同じである (*note Symbolic Modes::)。
6458 ただし、`ls' は、以下のように、複数のモードビットを一つに
6459 まとめて、アクセス権の各セットの 3 番目の文字で表現している。
6462 set-user-ID ビット、または set-group-ID ビットと、対応する
6466 set-user-ID ビット、または set-group-ID ビットが立っているが、
6470 削除制限フラグ、またはスティキー・ビット (sticky bit) と、
6471 その他のユーザ (other) の実行ビットの両方が立っている場合。
6472 削除制限フラグは、スティッキー・ビットの別名である。*Note
6476 削除制限フラグ、またはスティキー・ビットが立っているが、その他の
6480 実行ビットが立っていて、上記のどれにも当てはまらない場合。
6485 ファイルのモードビットの後に続く 1 個の文字は、アクセス・コント
6486 ロール・リスト (ACL) のような他のアクセス方式が、そのファイルに
6487 使われているかどうかを表している。ファイルのモードビットに続く
6488 文字が空白の場合は、他のアクセス方式を使用していないということ
6489 である。表示文字が続く場合は、そうしたアクセス方式を使用している
6492 GNU の `ls' は、SELinux セキュリティ・コンテキストを持つが、
6493 それ以外に他のアクセス方式を使用していないファイルを示すのに、
6496 それ以外で、ファイルが、標準以外のアクセス方式の何らかの組み
6497 合わせを使用している場合には、`+' 文字が印として付く。
6501 詳細形式でディレクトリの内容をリストするが、所有者やグループの
6502 名前の代わりに、数字の user-ID や group-ID を表示する。
6505 詳細形式でディレクトリの内容をリストするが、グループ情報を表示
6506 しない。これは、`--format=long' を `--no-group' と併せて使うのと
6511 各ファイルに対するディスク割り当て量をファイル名の左側に表示する。
6512 これはファイルが使用しているディスクスペースの量であり、普通は
6513 ファイルのサイズより少し多いが、穴空きファイル (sparse file) の
6516 通常、ディスク割り当て量は 1024 バイトを単位として表示されるが、
6517 これは変更することができる (*note Block size::)。
6519 ファイルが HP-UX のシステムから BSD のシステムに NFS マウント
6520 されている場合、このオプションで報告されるディスク使用量は、正確な
6521 値の半分である。それに対して、HP-UX システムの場合は、BSD システム
6522 から NFS マウントされているファイルについて、このオプションは正確な
6523 値の 2 倍の量を報告する。これは、HP-UX システムにある欠陥のせい
6524 であり、HP-UX の `ls' プログラムも、そのとばっちりを受けている
6528 各サイズにの後ろに、メガバイトなら `M' といった、SI 形式の略号
6529 を付ける。1024 ではなく、1000 の累乗が使用されるので、`M' は
6530 1,000,000 バイトを表している。このオプションは、`--block-size=si'
6531 と同じことである。1024 の累乗が使いたければ、`-h' や
6532 `--human-readable' を使用すればよい。
6536 SELinux セキュリティ・コンテキストを表示する。ない場合は、`?' を
6537 表示する。`-l' オプションと一緒に使った場合は、サイズの左に
6542 File: coreutils-ja.info, Node: Sorting the output, Next: Details about version sort, Prev: What information is listed, Up: ls invocation
6545 -------------------------
6547 以下のオプションは、`ls' が出力する情報を並べる際の順序を変更する。
6548 デフォルトでは、情報は文字コードによってソートされる (たとえば ASCII
6554 詳細表示形式 (たとえば、`-l', `-o') を使用しているときは、更新日時
6555 (modification time) の代わりに、ステータス変更日時 (status change
6556 time、inode の `ctime') を表示する。日時によって明示的にソートして
6557 いるときや (`--sort=time' あるいは `-t')、詳細表示形式を使用して
6558 いないときは、ステータス変更日時によってソートする。
6561 主な働きは、`-U' と同じで、ソートしないことである。すなわち、
6562 ファイルをリストする際、ファイルがディレクトリにどんな順序で
6563 格納されていようと、そのままの順序で出力する。それだけでなく、
6564 `-a' (すべてのファイルをリストする) を有効にし、`-l', `--color',
6565 `-s' を (`-f' より前で指定されていたら) 無効にする働きもある。
6569 どんな方法でソートされていようと、逆順にする。たとえば、ファイルを
6570 並べる際に、アルファベットの後ろから並べる、最新バージョンから先に
6571 並べる、サイズの小さいものから先に並べる、などなど。
6575 ファイルのサイズによってソートし、大きいものから順に並べる。
6579 更新日時 (modification time、inode の `mtime') によってソートし、
6586 詳細表示形式 (たとえば、`--format=long') を使用しているときは、
6587 最終アクセス日時 (last access time、inode の `atime') を表示する。
6588 日時によって明示的にソートしているときや (`--sort=time' あるいは
6589 `-t')、詳細表示形式を使用していないときは、アクセス日時によって
6594 ソートを行わない。すなわち、ファイルをリストする際、ファイルが
6595 ディレクトリにどんな順序で格納されていようと、そのままの順序で
6596 出力する (`-f' が行う、ソートに無関係な他のことは、何もしない)。
6597 このオプションは非常に大きなディレクトリを一覧表示するとき、
6598 ことのほか役に立つ。ソートを全くしないことで、作業速度が著しく
6603 バージョン名とバージョン番号によってソートし、低いバージョンから
6604 順に並べる。デフォルトのソート方法と動作が似ているが、 10 進数の
6605 数字が連続する各部分を、インデックス番号やバージョン番号と見なし、
6606 (文字列としてではなく) 数値として取り扱う点が違う。 (*Note Details
6607 about version sort::.)
6611 ディレクトリの内容をファイルの拡張子 (最後の `.' の後に続く文字)
6612 によってアルファベット順でソートする。拡張子のないファイルは、
6617 File: coreutils-ja.info, Node: Details about version sort, Next: General output formatting, Prev: Sorting the output, Up: ls invocation
6620 -------------------------------------------
6622 ファイル名にはインデックス番号やバージョン番号が含まれていることが
6623 しばしばあるが、バージョン・ソートは、そうした状況に対処している。
6624 通常のソートでは、1 文字づつ文字の比較を行うので、結果がこちらの
6625 期待する順番にならないことがよくあるのだ。バージョン・ソートが特に
6626 役に立つのは、インデックス番号やバージョン番号を名前に含むファイルが
6627 たくさんあるディレクトリを一覧するときである。
6630 abc.zml-1.gz abc.zml-1.gz
6631 abc.zml-12.gz abc.zml-2.gz
6632 abc.zml-2.gz abc.zml-12.gz
6634 バージョン・ソートにおける文字列の比較は、次のように行われる。 VER1
6635 と VER2 がバージョン番号で、PREFIX (前置部分) と SUFFIX (後置部分)
6636 が文字列だとしよう (SUFFIX は正規表現の `(\.[A-Za-z~][A-Za-z0-9~]*)*'
6637 にマッチするもの)。その場合、VER1 < VER2 ならば、"PREFIX VER1 SUFFIX"
6638 から構成される名前は "PREFIX VER2 SUFFIX" より前に来る。
6640 数字の部分の先行する 0 は無視されることにも注意していただきたい。
6643 abc-1.007.tgz abc-1.01a.tgz
6644 abc-1.012b.tgz abc-1.007.tgz
6645 abc-1.01a.tgz abc-1.012b.tgz
6647 この機能は gnulib の `filevercmp' 関数を使って実装されている。
6648 そこで、知っておいた方がよい注意事項がいくつかある。
6650 * `LC_COLLATE' は無視される。そのため、`ls -v' や `sort -V' は、
6651 数値ではない PREFIX (前置部分) を、`LC_COLLATE' ロケール・カテゴリ
6652 が `C' に設定されているかのようにソートする。
6654 * SUFFIX (後置部分) に上記の正規表現がマッチしてくれないことがある。
6655 従って、以下の例は、期待通りの順序ではないかもしれない。
6660 abc-1.2.3.4.x86_64.rpm
6661 abc-1.2.3.x86_64.rpm
6664 File: coreutils-ja.info, Node: General output formatting, Next: Formatting file timestamps, Prev: Details about version sort, Up: ls invocation
6667 ----------------------------
6669 以下のオプションは出力全体の見かけに影響を及ぼす。
6672 `--format=single-column'
6673 1 行 に 1 ファイルを表示する。標準出力が端末でないときの `ls'
6678 ファイルのリストを多段組みで (訳注: すなわち、1 行に複数ファイル
6679 の形式で) 表示し、ソートは縦方向に行う。これは、標準出力が端末の
6680 ときの `ls' のデフォルトである。`dir' コマンドにとっては、これが
6681 常にデフォルトになる。GNU の `ls' は、できるだけ少ない行数でできる
6682 だけ多くのファイルを表示するために、段の幅を可変にしている。
6685 ファイルのタイプを区別するためにカラー表示を使用するかどうかを
6686 指定する。WHEN は省略してもよく、以下の一つでもよい。
6687 * none カラー表示を全く使用しない。これがデフォルトである。
6689 * auto 標準出力が端末の場合のみ、カラー表示を使用する。
6691 * always 常にカラー表示を使用する。
6692 `--color' を WHEN を付けずに指定するのは、"`--color=always' と
6693 同じことである。カラー表示にしたファイル・リストをパイプで `more'
6694 や `less' のようなページャに送ると、たいての場合、判読に苦しむ
6695 羽目になる。ただし、`more -f' を使うと、うまく行くようだ。(訳注:
6696 訳者の手元では、`less -R' や `lv -c' で一応問題なくカラー表示が
6699 留意すべきは、`--color' オプションを使用すると、大量のファイルが
6700 あるディレクトリで `ls' を実行したとき、目に見えて動作速度が低下
6701 するかもしれないことである。これは、カラー表示のデフォルトの設定
6702 では、`ls' は、リストするファイルを一つづつ `stat' システムコールで
6703 調べる必要があるからだ。とは言え、ファイルタイプのカラー表示は
6704 おおむね使用したいけれど、他の色付けオプションは使わなくてもよい
6705 こともある (たとえば、実行属性、リンク切れ、スティッキー・ビット、
6706 その他のユーザの書き込み権限、ケーパビリティなどは、色で表示しなく
6707 てもよい)。その場合は、こんなふうに、`dircolors' コマンドを使用
6708 して、環境変数 `LS_COLORS' を設定すればよい。
6709 eval $(dircolors -p | perl -pe \
6710 's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)
6711 そうすれば、`dirent.d_type' が使えるファイルシステムなら、`ls' は
6712 各コマンドライン引数に対してたった一回だけ `stat' システムコールを
6717 `--indicator-style=classify'
6718 各ファイル名の後ろに、ファイルタイプを示す 1 文字を付ける。
6719 通常ファイルの場合も、実行可能ファイルならば、`*' を後置する。
6720 ファイルタイプの指標は、ディレクトリならば `/'、シンボリック
6721 リンクならば `@'、FIFO ならば `|'、ソケットならば `='、ドアならば
6722 `>' であり、通常ファイルを表す指標はない。なお、
6723 `--dereference-command-line' (`-H'), `--dereference' (`-L'),
6724 `--dereference-command-line-symlink-to-dir' といったオプションが
6725 指定されていないかぎり、コマンドラインで指定されたシンボリックリンク
6729 `--indicator-style=file-type'
6730 各ファイル名の後ろに、ファイルタイプを示す 1 文字を付ける。 `-F'
6731 に似ているが、こちらは、実行ファイルに指標を付けない。
6733 `--indicator-style=WORD'
6734 ファイル名の後ろに指標文字を付けるとき、WORD というスタイルを
6735 使用する。WORD には次のものがある。
6738 指標文字を全く付けない。これがデフォルトである。
6741 ディレクトリの後ろに `/' を付ける。これは、`-p' オプションと
6745 ディレクトリ、シンボリックリンク、FIFO、ソケットの後ろに、
6746 それぞれ `/', `@', `|', `=' を付け、通常ファイルの後ろには
6747 何も付けない。これは、`--file-type' オプションと同じである。
6750 実行可能な通常ファイルの後ろに `*' を付ける。それ以外は、
6751 `file-type' の場合と同じ動作をする。これは、`-F' や
6752 `--classify' オプションと同じである。
6756 デフォルトのブロックサイズを標準の値の 1024 バイトに設定する。
6757 そのとき、環境変数でそれ以外のどんな値が設定されていても、
6758 それを上書きする (*note Block size::)。このオプション自身も、
6759 `--block-size', `--human-readable' (`-h'), `--si' オプションが
6762 `--kibibytes' (`-k') オプションが影響を及ぼすのは、`-l' などの
6763 オプションが書き出すディレクトリごとのブロック数や、`--size'
6764 (`-s') オプションが表示するディスク割り当て量に対してである。 `-l'
6765 の表示するファイルサイズには影響を及ぼさない。
6769 ファイルを横に並べ、各行に収まる範囲でできるだけ多くの項目を
6770 表示する。ファイル同士は `, ' (コンマとスペース) で区切る。
6773 `--indicator-style=slash'
6774 ディレクトリ名の後ろに `/' を付ける。
6778 `--format=horizontal'
6779 ファイルのリストを多段組みで (訳注: すなわち、1 行に複数ファイル
6780 の形式で) 表示し、ソートは横方向に行う。
6784 タブ位置が COLS 桁ごとにあると想定する。デフォルトは 8 桁ごと。
6785 `ls' は効率を考慮し、使えるときはタブを出力で使用する。 COLS が 0
6788 端末エミュレータの中には、ASCII 以外のバイトが前にあると、列を
6789 タブ位置の右にきちんと揃えてくれないものがあるかもしれない。
6790 この問題を回避するには、`-T0' オプションを使うか、環境変数
6791 `TABSIZE=0' を設定するかして、列を揃えるのにタブではなく、
6792 スペースを使うよう、`ls' に指示すればよい。
6796 スクリーンの横幅が COLS 桁だと想定する。デフォルトの値は、
6797 可能ならば端末の設定から取得する。取得できないときは、環境変数
6798 `COLUMNS' を使用し、それも設定されていなければ、80 をデフォルト
6803 File: coreutils-ja.info, Node: Formatting file timestamps, Next: Formatting the file names, Prev: General output formatting, Up: ls invocation
6805 10.1.6 タイムスタンプのフォーマット
6806 -------------------------------------------------
6808 デフォルトでは、ファイルのタイムスタンプは短縮形式で表示される。
6809 すなわち、最近のタイムスタンプ以外は、`Mar 30 2002' といった
6810 日付表示になり、最近のタイムスタンプは、`Mar 30 23:45' といった
6811 年度なしの日付と時刻の表示になる。この書式は、後で詳しく述べる
6812 ように、現在のロケールによっては違ったものになるかもしれない。
6814 タイムスタンプは、ここ 6 ヶ月以内のもので、未来の日付が付いて
6815 いなければ、最近 ("recent") として扱われる。今日の日付のタイム
6816 スタンプが、最近用の書式で表示されない場合、そのタイムスタンプは
6817 未来扱いされている。それは、おそらく時計に狂いが生じているという
6818 ことであり、`make' のような、ファイルのタイムスタンプに頼っている
6819 プログラムは、まともに動かないかもしれない。
6821 タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
6822 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
6823 いない場合は、システムのデフォルトのルールに従って表示される。 *Note
6824 Specifying the Time Zone with `TZ': (libc)TZ Variable.
6826 以下のオプションは、ファイルのタイムスタンプの表示方法を変更する。
6828 `--time-style=STYLE'
6829 タイムスタンプを STYLE 形式で表示する。STYLE は以下の一つで
6833 FORMAT を使って、タイムスタンプを表示する。その場合、FORMAT
6834 は、`date' コマンドの書式引数と同じように解釈される (*note
6835 date invocation::)。 たとえば、`--time-style="+%Y-%m-%d
6836 %H:%M:%S"' と指定すると、 `ls' の表示するタイムスタンプは、
6837 `2002-03-30 23:45:56' のようになる。`date' の場合と同様、
6838 FORMAT の解釈は、`LC_TIME' ロケール・カテゴリの影響を受ける。
6840 FORMAT に改行で分離された二つの書式文字列がある場合、前半は
6841 最近のファイル以外に使用され、後半は最近のファイルに使用される。
6842 出力される列をきちんと揃えたいならば、二つの書式のどちらかに、
6843 空白をいくつか入れる必要があるかもしれない。
6846 タイムスタンプを省略なしで表示する。すなわち、ISO 8601 の
6847 日付、時刻、タイムゾーンという書式を nanosecond (10 億分の 1
6848 秒) の精度で使用するわけだ。一例を挙げると、`2002-03-30
6849 23:45:56.477817180 -0700' といった表示になる。この形式は、
6850 `+%Y-%m-%d %H:%M:%S.%N %z' と同じである。
6852 これが有用なのは、タイムスタンプが、オペレーティング・システム
6853 から取得できる時間関係のすべての情報を含んでいるからである。
6854 たとえば、GNU の `make' は、あるファイルが古いかどうかを
6855 判定するのに、省略なしのタイムスタンプを使用する。そのため、
6856 この情報が、`make' の動作を説明してくれるのである。
6859 ISO 8601 の書式で日付と時刻を分の単位まで表示する。たとえば、
6860 `2002-03-30 23:45'。このタイムスタンプは、`full-iso' タイム
6861 スタンプより短く、日常作業にはたいてい十分である。この形式は
6862 `+%Y-%m-%d %H:%M' と同じである。
6865 最近以外のタイムスタンプでは、ISO 8601 書式の日付を表示し
6866 (たとえば `2002-03-30 ')、最近のタイムスタンプでは、ISO 8601
6867 書式の月・日・時・分を表示する (たとえば `03-30 23:45')。
6868 この形式は、`long-iso' の形式に比べて見かけがよくないが、より
6869 狭いスペースでほぼ同量の情報を伝えており、また、簡潔なので
6870 `ls' の出力を伝統的な 1 行 80 桁の出力行に納めるのに都合が
6871 よい。`ls' を実行する以下の二つの方法は、同じことである。
6875 ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
6876 ls -l --time-style="iso"
6879 タイムスタンプをロケール依存形式で表示する。たとえば、
6880 フィンランド語のロケールだと、最近以外のタイムスタンプを
6881 `maalis 30 2002' のように表示し、最近のタイムスタンプは
6882 `maalis 30 23:45' のように表示するかもしれない。ロケール
6883 依存のタイムスタンプは、概して `iso' のタイムスタンプより
6884 長くなるし、ロケールごとの規則の違いは非常に大きいので、
6885 プログラムによる解析がずっと難しくなる。だが、こちらの方が
6888 タイムスタンプの書式を決めているのは、`LC_TIME' ロケール・
6889 カテゴリである。デフォルトの POSIX ロケールでは、`Mar 30
6890 2002' や `Mar 30 23:45' といったタイムスタンプを使っている。
6891 POSIX ロケールでは、`ls' を実行する次の二つの方法は、同じこと
6896 ls -l --time-style="+%b %e %Y$newline%b %e %H:%M"
6897 ls -l --time-style="locale"
6899 しかし、他のロケールでは動作が違う。たとえば、ドイツ語の
6900 ロケールだと、`--time-style="locale"' は `--time-style="+%e.
6901 %b %Y $newline%e. %b %H:%M"' とおそらく同じになり、`30. Ma"r
6902 2002 ' や `30. Ma"r 23:45' といったタイムスタンプを生成する
6906 `LC_TIME' ロケール・カテゴリが POSIX なら、POSIX ロケールの
6907 タイムスタンプを表示し、それ以外なら、STYLE 形式のタイム
6908 スタンプを表示する。たとえば、`posix-long-iso' という指定は、
6909 POSIX ロケールでは `Mar 30 2002' や `Mar 30 23:45' といった
6910 タイムスタンプを表示し、それ以外のロケールでは `2002-03-30
6911 23:45' といったタイムスタンプを表示する。
6913 `--time-style' オプションのデフォルト値は、環境変数 `TIME_STYLE'
6914 を使って指定することができる。`TIME_STYLE' が設定されていない場合、
6915 デフォルトの形式は `locale' である。GNU Emacs のバージョン 21.3
6916 以降では、`ls' の `--dired' オプションを使用しており、従って、
6917 どんな日付のフォーマットでも解析することができる。しかし、Emacs 21.1 や
6918 21.2 を使っていて、POSIX 以外のロケールを指定している場合は、
6919 `TIME_STYLE="posix-long-iso"' を設定する必要があるかもしれない。
6921 ある種のサービス不能化攻撃 (denial-of-service attacks) を回避する
6922 ため、1000 バイトより長くなりそうなタイムスタンプは、エラーとして処理
6926 File: coreutils-ja.info, Node: Formatting the file names, Prev: Formatting file timestamps, Up: ls invocation
6929 -------------------------------------------
6931 以下のオプションは、ファイル名の表示方法を変更する。
6935 `--quoting-style=escape'
6936 ファイル名中の非表示文字 (nongraphic characters) を、C 言語で
6937 使うような、バックスラッシュにアルファベットや 8 進数を続ける方法を
6942 `--quoting-style=literal'
6943 ファイル名をクォートしない。とは言え、`ls' では、出力先が端末の
6944 場合、`--show-control-chars' が指定されていなければ、非表示文字を
6945 疑問符として表示するぐらいのことは行う。
6948 `--hide-control-chars'
6949 ファイル名中の非表示文字に代えて、疑問符を表示する、この動作は、
6950 出力先が端末で、プログラムが `ls' の場合のデフォルトである。
6955 ファイル名をダブル・クォートで囲み、非表示文字を C 言語と同じ
6958 `--quoting-style=WORD'
6959 ファイル名などの文字列には、通常使われない文字が含まれているかも
6960 しれない。このオプションを指定すると、WORD というスタイルを使って、
6961 そうした文字列をクォートすることになる。WORD は、以下に挙げるものの
6965 文字列に手を加えず、そのまま出力する。これは、`-N' や
6966 `--literal' オプションと同じである。
6969 文字列にシェルのメタ文字がある場合や、出力が誤解を招くものに
6970 なりそうな場合に、シェル向けのクォートを施す。このクォート
6971 方法は、`bash' のような POSIX 互換のシェルにはふさわしいもの
6972 だが、`csh' のような非互換のシェルでは、必ずしもうまく働く
6976 普通ならクォートが不要な場合でも、文字列にシェル向けのクォートを
6980 C 言語の文字列リテラルをクォートするときのように、文字列を
6981 クォートする。文字列をダブル・クォートで囲むことも行う。
6982 これは、`-Q' や `--quote-name' オプションと同じである。
6985 C 言語の文字列リテラルをクォートするときのように、文字列を
6986 クォートする。ただし、文字列をダブル・クォートで囲むことは
6987 しない。これは、`-b' や `--escape' と同じである。
6990 C 言語の文字列リテラルをクォートするときのように、文字列を
6991 クォートする。ただし、文字列を囲む引用符には、ロケールに
6995 C 言語の文字列リテラルをクォートするときのように、文字列を
6996 クォートする。ただし、文字列を囲む引用符には、ロケールに
6997 ふさわしいものを使い、さらに、デフォルトの C ロケールで
6998 言うと、"like this" ではなく、'like this' のように
6999 クォートを行う。この方が見栄えのよいディスプレイが多い。
7001 `--quoting-style' オプションのデフォルト値は、環境変数
7002 `QUOTING_STYLE' によって指定することができる。この環境変数が
7003 設定されていない場合、デフォルトの値は `literal' だが、
7004 このパッケージの将来のバージョンでは、デフォルトを `shell' に
7007 `--show-control-chars'
7008 ファイル名中の非表示文字に手を加えず、そのまま出力する。
7009 この動作は、出力先が端末ではない場合や、プログラムが `ls' では
7010 ない場合の (訳注: たとえば、`wc' や `du' の) デフォルトである。
7014 File: coreutils-ja.info, Node: dir invocation, Next: vdir invocation, Prev: ls invocation, Up: Directory listing
7016 10.2 `dir': ディレクトリの内容を簡潔に表示する
7017 ===============================================================
7019 `dir' の動作は、`ls -C -b' と同じである。すなわち、デフォルトでは、
7020 ファイルのリストを多段組みで (訳注: 1 行に複数ファイルの形式で) 表示し、
7021 ソートは縦方向に行う。また、特殊文字は、バックスラッシュ・エスケープ
7024 *Note `ls': ls invocation.
7027 File: coreutils-ja.info, Node: vdir invocation, Next: dircolors invocation, Prev: dir invocation, Up: Directory listing
7029 10.3 `vdir': ディレクトリの内容を詳細に表示する
7030 ================================================================
7032 `vdir' の動作は、`ls -l -b' と同じである。すなわち、デフォルトでは、
7033 詳細形式でファイルをリストし、特殊文字は、バックスラッシュ・エスケープ
7037 File: coreutils-ja.info, Node: dircolors invocation, Prev: vdir invocation, Up: Directory listing
7039 10.4 `dircolors': `ls' のカラー設定
7040 =========================================
7042 `dircolors' は、`ls' (や `dir' など) でカラー出力をするのに必要な
7043 端末設定のためのシェル・コマンドのシーケンスを出力する。通常、次の
7046 eval "$(dircolors [OPTION]... [FILE])"
7048 FILE が指定されていると、`dircolors' はそれを読み込んで、
7049 どのファイルタイプや拡張子に対してどの色を使うかを決定する。 FILE
7050 が指定されていない場合は、プログラムに埋め込まれているデータベース
7051 が使用される。そうした設定ファイルの書式について詳しいことを知りた
7052 かったら、`dircolors --print-database' を実行してみるとよい。
7054 ファイル `~/.dircolors' が存在していたら、`dircolors' がそれを
7055 読み込むようにするには、以下の行を自分の `~/.bashrc' に書き込めばよい
7056 (お気に入りのシェルが bash でないなら、適切に書き直すこと)。
7059 test -r $d && eval "$(dircolors $d)"
7061 `dircolors' の出力は、環境変数 `LS_COLORS' を設定するシェル・
7062 コマンドである。どのシェルの文法にするかは、コマンドラインで
7063 指定することができる。指定しない場合は、環境変数 `SHELL' の値から
7066 このプログラムでは以下のオプションが使用できる。参照: *note Common
7072 Bourne シェルのコマンドを出力する。これが、環境変数 `SHELL' が
7073 設定されていて、その値が `csh' や `tcsh' で終わっていないときの
7079 C シェルのコマンドを出力する。これは、環境変数 `SHELL' の値が、
7080 `csh' や `tcsh' で終わっているときのデフォルトである。
7084 (プログラムに埋め込まれている) デフォルトのカラー設定データベースを
7085 出力する。この出力は、それ自体有効な設定ファイルであり、どういう
7086 設定が可能かについてかなり詳しく説明している。
7089 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7092 File: coreutils-ja.info, Node: Basic operations, Next: Special file types, Prev: Directory listing, Up: Top
7095 *********************************
7097 この章では、基本的なファイル操作のためのコマンドを説明する。
7098 すなわち、コピー、移動 (名前の変更)、消去 (削除) といった操作である。
7102 * cp invocation:: ファイルをコピーする。
7103 * dd invocation:: ファイルの変換とコピー。
7104 * install invocation:: ファイルをコピーし属性をセットする。
7105 * mv invocation:: ファイルの移動 (名前の変更) を行う。
7106 * rm invocation:: ファイルやディレクトリを削除する。
7107 * shred invocation:: セキュリティを向上させたファイルの削除。
7110 File: coreutils-ja.info, Node: cp invocation, Next: dd invocation, Up: Basic operations
7112 11.1 `cp': ファイルやディレクトリをコピーする
7113 ==============================================================
7115 `cp' はファイルをコピーする (もしそうしたければ、ディレクトリの
7116 コピーもできる)。コピーによって作られたファイルは、コピー元から全く
7117 独立したものになる。一つのファイルを別のファイルにコピーすることも
7118 できるし、好きなだけたくさんのファイルをコピー先のディレクトリに
7123 cp [OPTION]... [-T] SOURCE DEST
7124 cp [OPTION]... SOURCE... DIRECTORY
7125 cp [OPTION]... -t DIRECTORY SOURCE...
7127 * ファイル名を二つ指定すると、`cp' は最初のファイルを 2 番目の
7130 * `--target-directory' (`-t') オプションを指定した場合や、あるいは
7131 それを指定しないでも、最後のファイルがディレクトリであり、しかも
7132 `--no-target-directory' (`-T') オプションを指定していない場合は、
7133 `cp' は、各コピー元 (SOURCE) ファイルを、指定されたディレクトリに
7134 コピー元 (SOURCE) と同じ名前でコピーする。
7136 ほとんどの場合、ファイルは読み込まれたとおりに書き出される。例外に
7137 ついては、後述の `--sparse' オプションをご覧になっていただきたい。
7139 デフォルトでは、`cp' はディレクトリをコピーしない。ただし、 `-R',
7140 `-a', `-r' オプションを指定すると、`cp' は再帰的なコピーを行う。
7141 すなわち、コピー元のディレクトリを段階的に下って、対応するコピー先の
7142 ディレクトリにファイルをコピーすることになる。
7144 コピー元がシンボリックリンクの場合、`cp' がリンクをたどるのは、
7145 (訳注: すなわち、リンクそのものではなく、参照先の実ファイルをコピー
7146 するのは)、通常では、再帰的なコピーをしていないときか、あるいは、
7147 `--link' (`-l') オプションが使用されているときだけである。このデフォ
7148 ルトの動作は、次に挙げるオプションによって上書きすることができる。
7149 `--archive' (`-a'), `-d', `--dereference' (`-L'), `--no-dereference'
7150 (`-P'), `-H'。こうしたオプションを二つ以上指定すると、`cp' は警告を
7151 出さず、最後のオプションで他のものを上書きする。
7153 (訳注: coreutils-8.22 の `cp' では `--link' オプションの動作が変更
7154 になった。コピー元がシンボリックリンクの場合、coreutils-8.21 までは、
7155 デフォルトでは、シンボリックリンクのハードリンクを作っていたが、8.22 の
7156 `cp' では参照先ファイルのハードリンクを作るようになっている。)
7158 コピー先がシンボリックリンクの場合、`cp' がリンクをたどるのは、
7159 (訳注: すなわち、コピー元ファイルで、リンクそのものではなく、参照先の
7160 ファイルを上書きするのは)、そのリンクが、存在する通常ファイルを指して
7161 いるときだけである。それに対して、コピー先のシンボリックリンクがリンク
7162 切れしている場合は、`cp' は、デフォルトではコピーを拒否し、エラーメッ
7163 セージを出して、実行に失敗する。そうした操作は、本質的に危険だからで
7164 ある。この動作は、伝統的な習慣や POSIX の仕様に反している。たとえリスク
7165 があろうとも、リンク切れしたシンボリックリンクの参照先を `cp' が作成する
7166 ようにしたいなら、環境変数 `POSIXLY_CORRECT' を設定すればよい。なお
7167 `--backup' や `--link' といったオプションが、コピーする前にコピー先
7168 ファイルの名前変更や削除を行う場合、`cp' は、リンクが指しているファイル
7169 ではなく、シンボリックリンクの名前変更や削除を行う。
7171 デフォルトでは、`cp' がスペシャルファイルの内容をコピーするのは、
7172 再帰的なコピーをしていないときだけである。このデフォルトの動作は、
7173 `--copy-contents' によって変更できる。
7175 `cp' は通常、ファイルを自分自身にコピーすることを拒否するが、次の
7176 例外がある。SOURCE と DEST が同一で、しかも、通常ファイルを指している
7177 とき、`--force --backup' オプションが指定されると、`cp' は バックアップ
7178 ファイルを作成することになる。バックアップファイルを標準のものにするか
7179 (訳注: ファイルの末尾にチルダ `~' が 1 個付く)、番号付きのものにするか
7180 は、いつもどおりの方法で指定できる (*note Backup options::)。存在する
7181 ファイルに変更を加える前に、そのバックアップをちょっと作っておきたい
7184 このプログラムでは以下のオプションが使用できる。参照: *note Common
7189 コピーを行う際、コピー元ファイルの構造や属性をできるかぎり維持
7190 する (ただし、ディレクトリの内部構造を維持しようとはしない。その
7191 ため、コピー先で `ls -U' を実行すると、コピー元とは違った順序で
7192 ファイルがリストされるかもしれない)。SELinux コンテキストや拡張
7193 属性 (xattr) も維持しようとするが、そうした操作に失敗しても無視し、
7194 その旨エラーメッセージを表示することはない。エラーメッセージが
7195 少ないだけで、`-dR --preserve=all' と同じある。
7198 コピー元ファイルの指定された属性のみを、コピー先にコピーする。
7199 コピー先ファイルがすでに存在している場合、その内容を変更する
7200 ことはない。属性のうち、何をコピーするかを決める方法については、
7201 `--preserve' オプションの項を見ていただきたい。
7205 *Note Backup options::. そのままでは、上書きされるか、消去されて
7206 しまう各ファイルのバックアップを作成する。特殊な用法としては、
7207 次のものがある。force と backup の両方のオプションが指定されて
7208 いるとき、コピー元 (SOURCE) とコピー先 (DEST) が同じ名前で、
7209 しかも実在する通常ファイルを指していると、`cp' はコピー元 (SOURCE)
7210 のバックアップを作成する。次のちょっとした Bourne シェルの
7211 スクリプトは、オプションのこの組み合わせの応用だが、便利である。
7214 # Usage: backup FILE...
7215 # リストされた各 FILE について GNU スタイルのバックアップを
7219 cp --backup --force --preserve=all -- "$i" "$i" || fail=1
7224 再帰的なコピーを行っている際に、スペシャルファイル (たとえば、
7225 FIFO やデバイスファイル) の内容を、操作対象が通常ファイルで
7226 あるかのようにコピーする。要するに、コピー元の各ファイルから
7227 データを読み込んで、それをコピー先に書き出そうとするわけである。
7228 このオプションを使うのは、ほとんどの場合誤りである。なぜなら、
7229 FIFO や、通常 `/dev' ディレクトリにあるようなスペシャルファイルを
7230 対象にした場合、望ましくない結果を生ずることが珍しくないからだ。
7231 `cp -R --copy-contents' は、FIFO や `/dev/console' のような
7232 スペシャルファイルからデータを読み込もうとすると、たいていの
7233 場合、いつまでも無反応になるだろうし、`/dev/zero' をコピーしよう
7234 とすれば、コピー先のディスクを溢れさせてしまうだろう。この
7235 オプションは、再帰的なコピーをするとき以外、効果を持たない。
7236 また、シンボリックリンクのコピーには影響しない。
7239 シンボリックリンクをコピーする際、リンクが指しているファイルを
7240 コピーするのではなく、シンボリックリンクをシンボリックリンクとして
7241 コピーする。また、コピー元において複数のファイルがハードリンクの
7242 関係にある場合、コピー先でもその関係を維持する。 `--no-dereference
7243 --preserve=links' と同じである。
7247 このオプションを付けずにコピーを行う場合、コピー先ファイルが
7248 すでに存在し、しかも書き込みモードでオープンできないと、コピー
7249 に失敗する。それに対して、`--force' を付けた場合は、コピー先
7250 ファイルがオープンできないと、`cp' は、まずそれを削除してから、
7251 再度オープンを試みる。この動作は、`--force' と一緒に `--link' や
7252 `--symbolic-link' を使用した場合に行われる動作とは、違うことに
7253 注意していただきたい。後者の場合は、すでに存在するコピー先ファイル
7254 は一度もオープンされず、むしろ無条件で削除されるのである。
7255 `--remove-destination' の説明も参照すること。
7257 このオプションは、`--interactive' や `-i' オプションとは無関係
7258 である。どちらも他方の効果を無効にすることはない。
7260 `--no-clobber' や `-n' オプションを使用している場合、このオプション
7264 コマンドラインの引数がシンボリックリンクを指定している場合には、
7265 シンボリックリンクそのものではなく、それが指しているファイルを
7266 コピーする。とは言え、再帰的にディレクトリ・ツリーをたどっている
7267 ときにシンボリックに出会った場合は、そのまま (つまり、シンボリック
7272 ディレクトリ以外のファイルをコピーする際に、コピー先ファイルが
7273 すでに存在していると、プロンプトを出して、ファイルを上書きして
7274 よいかどうか、ユーザに問い合わせる。`-i' オプションは、`-n'
7275 オプションが前にあるとき、それを無効にする。
7279 コピー元がディレクトリ以外の場合、コピーする代わりに、ハードリンクを
7284 コピー元がシンボリックリンクの場合は、その参照先をコピーする。
7285 また、このオプションを使った場合、`cp' はシンボリックリンクを
7286 作ることができない。たとえば、コピー元のディレクトリ・ツリー中に
7287 (通常ファイルに対する) シンボリックリンクがあると、コピー先のディ
7288 レクトリ・ツリーには、通常ファイルとしてコピーされることになる。
7292 存在するファイルを上書きしない。`-n' オプションは、`-i' オプション
7293 が前にあるとき、それを無効にする。このオプションと `-b'
7294 (`--backup') オプションは、どちらか一方しか指定できない。
7298 コピー元がシンボリックリンクの場合、それが指しているファイルを
7299 コピーするのではなく、シンボリックリンクとしてコピーする。この
7300 オプションが作用を及ぼすのは、コピー元のシンボリックリンクに対して
7301 だけであり、コピー先に指定されたシンボリックリンクについては、
7305 `--preserve[=ATTRIBUTE_LIST]'
7306 コピー元ファイルの属性のうち、指定されたものをコピー先でも維持する。
7307 ATTRIBUTE_LIST を指定する場合は、一つ以上の以下の文字列をコンマで
7311 ファイルのモードビット (訳注: 一般にアクセス権とか、許可属性と
7312 言われるもの) やアクセス・コントロール・リストを維持する。
7315 所有者とグループを維持する。ほとんどの最近のシステムでは、
7316 ファイルの所有者を変更できるのは、しかるべき権限を持ったユーザ
7317 だけである。また、一般ユーザにファイルのグループが維持できるの
7318 は、維持しようとするグループに、たまたまそのユーザが属している
7322 最終アクセス日時 (last access time) と最終更新日時 (last
7323 modification time) を、可能ならば、維持する。古いシステム
7324 では、対象となるファイルがシンボリックリンクの場合、そうした
7325 属性を維持することができない。それに対して、最近のシステム
7326 では、たいていのものが `utimensat' 関数を用意しているので、
7327 シンボリックリンクの場合でも、日時関係の属性維持が可能である。
7330 コピー元のファイル同士が (ハードリンクであれ、シンボリック
7331 リンクであれ)リンクの関係にあるとき、コピー先の対応する
7332 ファイル同士でも、その関係を維持する。ただし、`-L' や `-H' と
7333 一緒に使った場合、このオプションがシンボリックリンクを
7334 ハードリンクに変更することがあるのに、注意していただきたい。
7336 $ mkdir c; : > a; ln -s a b; cp -aH a b c; ls -i1 c
7339 コピー元に注目していただきたい。`b' は、通常ファイル `a' を
7340 指すシンボリックリンクである。ところが、コピー先ディレクトリ
7341 `c/' の二つのファイルは、ハードリンクになっている。`-a' は
7342 `--no-dereference' を意味するのだから、シンボリックリンクが
7343 コピーされそうに思えるが、この場合は、後に続く `-H' が、
7344 コマンドライン引数の参照をたどるように `cp' に命じているので、
7345 `cp' には、同じ inode 番号を持った 2 個のファイルがコマンド
7346 ラインで指定されているように見えるのである。さらに、`-a' は
7347 `--preserve=links' オプションを意味してもいるので、この働きに
7348 よって、ハードリンクと認識された両ファイルの関係が、コピー先で
7351 次のものは、`cp' の `-L' を使った場合の類似例である。
7352 $ mkdir b c; (cd b; : > a; ln -s a b); cp -aL b c; ls -i1 c/b
7357 ファイルの SELinux セキュリティ・コンテキストを維持する。
7358 それができないときは、詳細なエラーメッセージを出し、失敗の
7362 ファイルの拡張属性を維持する。それができないときは、詳細な
7363 エラーメッセージを出し、失敗のステータスで終了する。`cp' が
7364 xattr のサポートなしでビルドされている場合は、このオプション
7365 は無視される。SELinux コンテキスト、ACL、ケーパビリティなどを
7366 xattr を使って実装している場合には、そうした属性もこのオプ
7367 ションによって、明示的な指定がない場合でも維持される。すなわち、
7368 `--preserve=mode' や `--preserve=context' を指定しないでも維持
7372 ファイルの属性をすべて維持する。上記のすべてを指定するのと
7373 同じことだが、SELinux セキュリティ・コンテキストや拡張属性の
7374 維持に失敗しても、`cp' の終了ステータスが変わらないという点が
7375 異なっている。`-a' とは違って、`Operation not supported'
7376 以外のすべての 警告メッセージを出力する。
7378 ATTRIBUTE_LIST なしで `--preserve' を使用するのは、
7379 `--preserve=mode,ownership,timestamps' と同じことである。
7381 このオプションを使わない場合、コピー先ファイルがすでに存在して
7382 いる場合は、その許可属性は変更されない。一方、新しくファイルが
7383 作成される場合は、各コピー先ファイルのモードビットは、対応する
7384 コピー元ファイルのモードビットを元にして、そこから umask で設定
7385 されているビットと、set-user-ID や set-group-ID ビットを落とした
7386 ものになる。*Note File permissions::.
7388 `--no-preserve=ATTRIBUTE_LIST'
7389 指定された属性を維持しない。ATTRIBUTE_LIST の書式は、`--preserve'
7393 コピー先の各ファイル名を生成する際、出力先に指定されたディレクトリ
7394 の末尾にスラッシュを付け、その後ろにコピー元として指定された
7395 ファイル名を付け足すことによってそれを行う。`cp' に渡す最後の
7396 引数は、実在するディレクトリの名前でなければならない。一例を挙げる。
7398 cp --parents a/b/c existing_dir
7400 ファイル `a/b/c' を上記のコマンドでコピーすると、ファイル
7401 `existing_dir/a/b/c' が出来る。途中のディレクトリが存在して
7407 ディレクトリを再帰的にコピーする。デフォルトでは、`--link' (`-l')
7408 オプションが同時に使われていないかぎり、コピー元にあるシンボリック
7409 リンクの参照先をたどることをしない。`--archive' (`-a'), `-d',
7410 `--dereference' (`-L'), `--no-dereference' (`-P'), `-H' などの
7411 オプションを参照。スペシャルファイルについては、コピーする際に、
7412 コピー元ファイルと同じファイル型のコピー先ファイルを作成する。
7413 `--copy-contents' を参照。シンボリックリンクやスペシャルファイルの
7414 コピーに `-r' オプションを使用するのは、どのシステムでも通用する
7415 ことではない。GNU 以外のシステムの中には、歴史的な理由から、 `-r'
7416 が、`-L' と `--copy-contents' を同時に指定するのと等価になっている
7417 ものもあるのだ。また、シンボリックリンクをコピーするのに `-R' を
7418 使用するのも、`-P' も併せて指定しないかぎり、どのシステムでも通用
7419 することではない。デフォルトでシンボリックリンクの参照先をたどる
7420 実装が、POSIX で認められているからである。
7423 ファイルシステムがサポートしていれば、軽便コピー、すなわち、
7424 書き込み時コピー(copy-on-write (COW) copy) を行う。留意すべきは、
7425 これが成功した場合、コピー元とコピー先のファイルは、どちらかに
7426 対して変更が加えられるまで、ディスクの同じデータブロックを共有
7427 しているということである。従って、ディスク I/O エラーが起きて、
7428 片方のファイルのデータブロックが損傷を受ければ、もう一方の
7431 WHEN の値には、次のうちの一つが使える。
7434 デフォルトの動作である。copy-on-write がサポートされていない
7435 場合は、各ファイルについて失敗した旨を報告し、失敗を示す
7439 copy-on-write 操作がサポートされていない場合は、copy-on-write
7442 このオプションは、`--link', `--symbolic-link' `--attributes-only'
7443 オプションによって無効になるので、データをコピーする際の `cp' の
7444 デフォルト動作の設定に使用することができる。たとえば、次のエイリ
7445 アスを使うと、`cp' は、ファイルシステムがサポートする範囲で、
7446 ディスクスペースの使用を最少に留めるようになる。
7448 alias cp='cp --reflink=auto --sparse=always'
7450 `--remove-destination'
7451 コピー先ファイルがすでに存在する場合、その各々についてオープンを
7452 試みる前に、削除する (上述の `-f' と比較すること)。
7455 穴空きファイル ("sparse file") とは、穴 ("holes") を含むファイル
7456 である。穴というのは、物理的なディスクブロック上には存在しない
7457 ゼロバイトの連続で、`read' システムコールがそれを読む込むとき、
7458 ゼロの連続として扱うものである。バイナリ・ファイルには、連続する
7459 ゼロバイトがたくさん含まれていることが多いので、この仕組みは、
7460 ディスクスペースを大いに節約してくれるし、動作速度の向上を
7461 もたらしてもくれる。デフォルトで `cp' は、かなり大雑把な発見的
7462 手法を使って、コピー元ファイルにある穴を検出し、対応するコピー先
7463 ファイルも穴空きファイルにする。なお、穴空きファイルにできるのは、
7466 WHEN の値には、次のうちの一つが使える。
7469 デフォルトの動作である。すなわち、コピー元が穴空きファイルなら、
7470 コピー先も穴空きファイルにしようとする。ただし、コピー先
7471 ファイルがすでに存在し、通常ファイル以外を指している場合は、
7475 たとえ、コピー元ファイルが穴空きファイルに見えなくても、十分に
7476 長いゼロバイトの連続があれば、その各々に対応する穴をコピー先
7477 ファイルに設けようとする。この動作が役に立つのは、コピー元
7478 ファイルが、穴空きファイルをサポートしていないファイルシステム
7479 にあるのに対し (たとえば、SGI IRIX 5.3 以前の `efs' ファイル
7480 システム)、コピー先ファイルは穴空きファイルをしっかりサポート
7481 するタイプのファイルシステムにある場合である。穴を作ることが
7482 できるのは、通常ファイルだけなので、コピー先が通常ファイル以外
7483 なら、`cp' がそのファイルを穴空きにしようと試みることもない。
7486 コピー先ファイルを穴空きにしない。これは、`mkswap' コマンドで
7487 使用するファイルを作成するときに役に立つ。そうしたファイルには、
7490 `--strip-trailing-slashes'
7491 SOURCE 引数の後ろにスラッシュが付いていたら、それを削除する。
7492 *Note Trailing slashes::.
7496 コピー元がディレクトリ以外の場合、コピーする代わりに、シンボリック
7497 リンクを作成する。出力先ファイルをカレント・ディレクトリに作成する
7498 場合を除いて、コピー元ファイルの名前は、すべて (`/' で始まる) 絶対
7499 パス表記でなければならない。シンボリックリンクをサポートしていない
7500 システムでは、このオプションはエラーメッセージを出すだけである。
7504 `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
7505 付ける。 *Note Backup options::.
7508 `--target-directory=DIRECTORY'
7509 DIRECTORY を出力先ディレクトリに指定する。 *Note Target
7513 `--no-target-directory'
7514 最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
7515 でも、それを特別扱いしない。 *Note Target directory::.
7519 ディレクトリ以外のものをコピーする際、それがコピー先にも存在し、
7520 しかもその更新日時 (modification time) がコピー元と同じか、より
7521 新しい場合、コピーを行わない。コピー元からコピー先へタイムスタンプを
7522 引き継がせている場合には、コピー元のタイムスタンプの精度を、コピー先
7523 のファイルシステム、及びタイプスタンプの更新に使われるシステムコール
7524 の精度に落とした上で、比較を行う。これは、同じコピー元とコピー先の
7525 ファイルに対して `cp -pu' コマンドを何回か実行する場合に、余計な
7526 コピー作業が起きるのを避けるためである。`--preserve=links' が一緒に
7527 指定されている場合は (たとえば、`cp -au' だとそうなる)、そちらが
7528 優先されることになる。その結果、コピー元でファイルが処理される順番
7529 によっては、コピー元のハードリンクを反映させるために、コピー先の
7530 より新しいファイルが置き換えられることもある。
7534 コピーを行う前に、コピーするファイル名を表示する。
7538 あるファイルシステムでコピーを始めた場合、別のファイルシステム
7539 にあるサブディレクトリをスキップする。ただし、マウントポイントの
7543 `--context[=CONTEXT]'
7544 CONTEXT が指定されていない場合は、出力するファイルの SELinux
7545 セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
7546 のタイプによって調整する。これは、`restorecon' コマンドの動作に
7547 似ている。このオプションの長い形式を使って、コンテキストを明示的に
7548 指定した場合、そのコンテキストが設定されるのは、新しく作成される
7549 ファイルに対してのみである。コンテキストを指定した場合に、SELinux
7550 が無効になっていると、警告メッセージを出す。 このオプションと
7551 `--preserve=context' を一緒に使うことはできない。また、この
7552 オプションは `--preserve=all' や `-a' オプションに優先する。
7553 (coreutils-8.22 の新機能)
7556 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7559 File: coreutils-ja.info, Node: dd invocation, Next: install invocation, Prev: cp invocation, Up: Basic operations
7561 11.2 `dd': ファイルの変換とコピー
7562 ============================================
7564 `dd' はファイルをコピーする (デフォルトでは、標準入力から標準出力へ
7565 コピーする)。その際、入出力のブロックサイズを変更することができる。
7566 また、コピーと同時にデータ形式の変換を行うこともできる。
7573 指定できるオプションは、`--help' と `--version' だけである。 *Note
7574 Common options::. `dd' では、以下のオペランドが使える。オペランドの
7575 書式の元になったのは、OS/360 の JCL (Job Control Language) の DD 文
7576 (Data Definition statement) である。
7579 標準入力の代わりに、FILE から読み込む。
7582 標準出力の代わりに、FILE に書き出す。`conv=notrunc' が指定されて
7583 いない場合、`dd' は、出力を開始する前に、FILE を 0 バイトに
7584 (あるいは、`seek=' で指定されたサイズに) 短縮する。
7587 入力ブロックサイズを BYTES にする。`dd' が 1 ブロック BYTES
7588 バイトで読み込みを行うようになる。デフォルトは 512 バイトである。
7591 出力ブロックサイズを BYTES にする。`dd' が 1 ブロック BYTES
7592 バイトで書き出しを行うようになる。デフォルトは 512 バイトである。
7595 入力、出力、両方のブロックサイズを BYTES にする。`dd' が 1
7596 ブロック BYTES バイトで読み書きを行うようになり、`ibs' や `obs'
7597 の指定は、あっても無効になる。さらに、データ変換を行う `conv'
7598 オプションが指定されていない場合には、入力は、それがブロックサイズ
7599 より小さくても、読み込まれるやいなや、出力にコピーされることになる。
7602 変換ブロックサイズを BYTES にする。可変長のレコードを固定長の
7603 レコードに変換するときや (`conv=block')、その逆を行うとき
7604 (`conv=unblock')、固定長レコードの長さとして BYTES の値を使用する。
7607 入力ファイルで `ibs' バイトのブロックを N 個読み飛ばしてから、
7608 コピーを行う。`iflag=skip_bytes' が指定されている場合は、N は
7609 ブロック数ではなく、バイト数と見なされる。
7612 出力ファイルで `obs' バイトのブロックを N 個スキップしてから、
7613 コピーを行う。`oflag=seek_bytes' が指定されている場合は、 N は
7614 ブロック数ではなく、バイト数と見なされる。
7617 入力ファイルの末尾まで全部ではなく、`ibs' バイトのブロックを N
7618 個だけ入力ファイルからコピーする。`iflag=count_bytes' が指定
7619 されている場合は、N はブロック数ではなく、バイト数と見なされる。
7620 なお、次のことに注意してほしい。パイプから読み込んでいる場合
7621 などに時おり起きることだが、入力からの読み込みがブロックの
7622 大きさに足りないことがある。そうした場合に `iflag=fullblock' が
7623 指定してあると、`count=' は、一杯になるまで読み込むブロックの
7624 個数に対応するようになる。入力から読み込みを実行する回数という
7625 POSIX で規定されている伝統的な動作には、対応しなくなるのだ。
7628 通常では `INFO' シグナルを受け取った時点や、`dd' が終了したときに、
7629 転送情報が標準エラーに出力される。WHICH を指定することで、どの情報
7633 転送速度や転送量の統計を表示しない。通常は、そうした情報が
7637 情報メッセージや警告メッセージを標準エラーに全く表示しない。
7641 `conv=CONVERSION[,CONVERSION]...'
7642 CONVERSION 引数 (複数可) で指定されたようにファイルを変換する。
7643 (コンマの前後にスペースを入れてはいけない。)
7645 CONVERSION には次のものが指定できる:
7648 POSIX が規定している変換テーブルを使って、EBCDIC を ASCII に
7649 変換する。変換テーブル中の 256 バイトのすべてについて、 1 対
7653 ASCII を EBCDIC に変換する。これは `ascii' 変換の逆の動作で
7657 POSIX が規定しているもう一つの変換テーブルを使って、ASCII を
7658 EBCDIC の別の形式に変換する。こちらは 1 対 1 の変換ではない
7659 が、`~', `[', `]' について、よく使われる伝統的な慣行を反映
7662 `ascii', `ebcdic', `ibm' は、どれか一つしか指定できない。
7665 入力 1 行あたり、`cbs' バイト分を出力する。入力中の改行は
7666 スペースに置き換え、`cbs' バイトに足りない分はスペースで
7670 `cbs' バイトの大きさからなる各入力ブロックに対して、末尾に
7671 スペースがあれば、それをすべて削除し、改行を追加する。
7673 `block' と `unblock' は、どちらか一方しか指定できない。
7681 `lcase' と `ucase' は、どちらか一方しか指定できない。
7684 出力ブロックが NUL のみからなっているとき、それを書き出さず
7685 に、seek を試みる。穴空きファイル (sparse file) をサポート
7686 しているシステムでは、この動作は、出力ファイルを書き出して
7687 いるときに、穴空きの出力を作成することになる。このオプションを
7688 `conv=notrunc' や `oflag=append' と一緒に使う際は、気をつけ
7689 なければならない。`conv=notrunc' が付いていると、入力中の NUL
7690 ブロックに対応する位置にある、出力ファイル中の存在するデータは、
7691 そのまま保持されることになる。`oflag=append' を付けた場合は、
7692 seek は行っても効果がない。なお、`conv=sparse' では、出力先が
7693 ファイルではなく、デバイスの場合も、入力中の NUL ブロックは
7694 やはりコピーされない。そんなわけで、このオプションが最も役に
7695 立つのは、仮想デバイスや、前もって 0 で初期化したデバイスに
7699 入力された全バイトを 2 個づつ組にして、前後を入れ替える。GNU
7700 の `dd' は、他の `dd' とは違って、読み込むバイトが奇数個でも
7701 動作する。最後のバイトは (入れ替えるものがないので) そのまま
7705 すべての入力ブロックに対して `ibs' の大きさになるまで、末尾を
7706 ゼロバイトで埋める。`block' や `unblock' と一緒に使用する
7707 と、ゼロバイトの代わりにスペースで埋める。
7710 以下の CONVERSION は、実のところファイルの扱いに関するフラグ
7711 なので、内的な処理には影響を及ぼさない。
7714 出力ファイルがすでに存在する場合は、実行に失敗する。
7715 言い換えれば、`dd' が出力ファイルを自分で作成しなければ
7719 出力ファイルを作成しない。言い換えれば、出力ファイルは前もって
7720 存在していなければならないということだ。
7722 `excl' と `nocreat' は、どちらか一方しか指定できない。
7725 出力ファイルに対して短縮操作をしない (訳注: `of=FILE' の項を
7729 読み込みエラーがあっても、作業を続行する。
7732 コマンドを終了する直前に、出力データを同期させる。すなわち、
7736 コマンドを終了する直前に、出力データだけでなく、メタデータも
7737 同期させる。すなわち、出力データとメタデータをディスクに
7741 `iflag=FLAG[,FLAG]...'
7742 引数 FLAG によって指定されたフラグを使って、入力ファイルに
7743 アクセスする。(コンマの前後にスペースを入れてはいけない。)
7745 `oflag=FLAG[,FLAG]...'
7746 引数 FLAG によって指定されたフラグを使って、出力ファイルに
7747 アクセスする。(コンマの前後にスペースを入れてはいけない。)
7749 フラグには次のものがある。どのオペレーティング・システムでも、
7753 追加モードで書き込む。従って、何か別のプロセスが問題の
7754 ファイルに書き出している場合でも、`dd' の書き込みは、
7755 書き込むたびに、そのファイルの今現在の内容に追加されること
7756 になる。このフラグは出力に対してしか意味がない。なお、この
7757 フラグを `of=FILE' オペランドと組み合わせて使うのなら、
7758 `conv=notrunc' も一緒に指定した方がよい。さもないと、出力
7759 ファイルは、追加書き込みが始まる前に、短縮操作を受けること
7763 データに対してコンカレント I/O (CIO) モードを使用する。この
7764 モードでは、ダイレクト I/O を行いつつ、同じファイルに対する
7765 すべての I/O は順番に行わなければならないという POSIX の
7766 要件は無視する。一つのファイルを CIO モードと標準的な方法の
7767 両方で同時にオープンすることはできない。
7770 データに対してダイレクト I/O を使用し、バッファ・キャッシュを
7771 介さないようにする。カーネルが read バッファや write バッファ
7772 のサイズに制限をかけていることがあるのに注意していただきたい。
7773 たとえば、出力先のファイルシステムが ext4 で、カーネルが linux
7774 ベースの場合、出力バッファのサイズが 512 の倍数でなければ、
7775 `oflag=direct' を指定すると、`EINVAL' で書き込みに失敗する。
7778 ファイルがディレクトリでなければ、実行に失敗する。ほとんどの
7779 オペレーティング・システムがディレクトリに対する I/O を許して
7780 いない。従って、このフラグが役に立つ機会はめったにない。
7783 データに対して同期 I/O を使用する。出力ファイルについては、
7784 このフラグは、各書き込みごとに出力データをディスクに実際に
7785 書き込ませる。入力ファイルについてこのフラグが意味を持つかも
7786 しれないのは、読み込んでいるのがリモートのファイルであり、
7787 それが何か他のプロセスによって同期的に書き込まれているとき
7788 である。メタデータ (たとえば、最終アクセス日時や最終更新日時)
7792 データとメタデータに対して同期された I/O を使用する。
7795 ファイルのデータ・キャッシュを廃棄する。count=0 の場合は、
7796 キャッシュが全部捨てられる。それ以外の場合は、ファイルの
7797 キャッシュのうち、処理の対象になる部分だけが捨てられる。
7798 また、count=0 のとき、キャッシュの廃棄に失敗すると、その旨
7799 メッセージが表示され、終了ステータスに反映する。以下に、
7802 # ファイル全体のキャッシュを捨てるように指示する。
7803 dd if=ifile iflag=nocache count=0
7805 # ファイル全体のキャッシュを確実に捨てる。
7806 dd of=ofile oflag=nocache conv=notrunc,fdatasync count=0
7808 # ファイル中の一部分のキャッシュを捨てる。
7809 dd if=ifile iflag=nocache skip=10 count=10 of=/dev/null
7811 # read-ahead キャッシュのみを使って、データを転送する。
7812 dd if=ifile of=ofile iflag=nocache oflag=nocache
7818 ファイルのアクセス日時を更新しない。古いシステムの中には、
7819 エラーや警告も出さずに、このフラグを無視するものがある。
7820 そこで、このフラグを使用する前に、有効かどうか、お手元の
7824 入力 (または、出力) ファイルを `dd' の制御端末にしない。この
7825 フラグは、そのファイルが端末でなければ、効果がない。この
7826 フラグが全く効果を持たないホストが、たくさんある (たとえば、
7827 GNU/Linux ホストがそうである)。
7833 ファイルに複数のハードリンクがあれば、実行に失敗する。
7836 バイナリ I/O を使用する。このフラグは、バイナリ I/O と
7837 テキスト I/O を区別する非標準的なプラットフォームでしか
7841 テキスト I/O を使用する。このフラグが標準的なプラットフォーム
7842 で効果がないのは、`binary' と同様である。
7845 各ブロックが一杯になるまで入力から読み込む。`read' システム
7846 コールは、入力がブロックの分量に足りない場合、早めに戻って
7847 くることがある。そうした場合に、`read' の呼び出しを繰り返
7848 して、ブロックの残りを埋めようとする。このフラグは、`iflag'
7849 でのみ使える。このフラグが役に立つのは、たとえばパイプと組み
7850 合わせて使うときである。パイプとの組み合わせでは、入力からの
7851 読み込みがブロックの大きさに足りないことがあるからだ。そうした
7852 場合に、`count=' の引数が、読み込み動作の回数ではなく、読み
7853 込むブロック数だと間違いなく解釈されるようにするには、この
7857 `count=' オペランドをブロック数ではなく、バイト数の指定と
7858 見なす。そうすることで、I/O ブロックサイズの倍数ではない
7859 長さが、指定できるようになるわけだ。このフラグは `iflag'
7863 `skip=' オペランドをブロック数ではなく、バイト数の指定と
7864 見なす。そうすることで、I/O ブロックサイズの倍数ではない
7865 オフセットが、指定できるようになるわけだ。このフラグは
7869 `seek=' オペランドをブロック数ではなく、バイト数の指定と
7870 見なす。そうすることで、I/O ブロックサイズの倍数ではない
7871 オフセットが、指摘できるようになるわけだ。このフラグは
7875 以上のフラグは、すべてのシステムでサポートされているわけではなく、
7876 サポートされていないシステムで使用しようとすると、`dd' に拒否
7877 される。標準入力から読み込んでいる場合や、標準出力に書き出して
7878 いる場合は、`nofollow' や `noctty' フラグは指定するべきではない。
7879 また、他のフラグ (たとえば `nonblock') は、対象となるファイルの
7880 ファイル・ディスクリプタに対する他のプロセスの動作に、`dd' が
7881 終了した後までも、影響を及ぼすかもしれない。
7884 上記中の数値を表す文字列 (N や BYTES) には、乗数を示す文字を後ろに
7885 付けることができる。すなわち、`b'=512, `c'=1, `w'=2, `xM'=M といった
7886 文字である (訳注: 最後のものは、10xM という表記は 10M と書くのと同じだ
7887 ということ)。あるいは、`k'=1024 のような、ブロックサイズに付ける標準の
7888 接尾辞の一つを続けてもよい (*note Block size::)。
7890 `bs=', `ibs=', `obs=', "`cbs=' を使って指定するブロックサイズは、
7891 大きすぎない方がよい。数メガバイトを越える値は、一般的に言って無駄だし、
7892 (ギガバイト ... エクサバイトを使ったときのように) 全く逆効果だったり、
7895 データのオフセット位置やサイズが I/O ブロックサイズの倍数ではない
7896 場合に、そうしたデータを処理するには、`skip_bytes', `seek_bytes',
7897 `count_bytes' といったフラグを使用すればよい。あるいは、`dd' を別々に
7898 呼び出すという伝統的な手法を使用することもできる。一例を挙げると、
7899 以下のシェルコマンドは、1 ブロック を 512 KiB にして、ディスクと
7900 テープの間でデータをコピーしている。ただし、ディスクの先頭にある 4 KiB
7901 のラベルについては、保存も復元も行っていない。
7903 disk=/dev/rdsk/c0t1d0s2
7906 # ラベル以外のすべてをディスクからテープへコピーする。
7907 (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
7909 # テープからディスクへ書き戻す。ただし、ディスクのラベルには手を
7911 (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
7913 実行中の `dd' のプロセスに `INFO' シグナルを送ると、`dd' は入出力の
7914 統計情報を標準エラーに書き出してから、コピー作業を続行する。以下の
7915 例では、`dd' がバックグラウンドで動作し、1 千万ブロックのコピーを行って
7916 いる。`kill' コマンドが実行されると、`dd' は実行途中の入出力統計を
7917 表示する。そして、正常に作業を完了するか、`SIGINT' シグナルによって
7918 中断されたとき、最終的な統計情報を出力する。
7920 $ dd if=/dev/zero of=/dev/null count=10MB & pid=$!
7921 $ kill -s INFO $pid; wait $pid
7922 3385223+0 records in
7923 3385223+0 records out
7924 1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
7925 10000000+0 records in
7926 10000000+0 records out
7927 5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s
7929 `INFO' シグナルが存在しないシステムでは、 環境変数 `POSIXLY_CORRECT'
7930 が設定されていないかぎり、`dd' は `INFO' の代わりに `USR1' に反応する。
7932 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
7935 File: coreutils-ja.info, Node: install invocation, Next: mv invocation, Prev: dd invocation, Up: Basic operations
7937 11.3 `install': ファイルをコピーし属性をセットする
7938 ===================================================================
7940 `install' はファイルをコピーするとき、ファイルのモードビット (訳注:
7941 一般にアクセス権とか、許可属性と言われるもの) をセットし、可能ならば、
7946 install [OPTION]... [-T] SOURCE DEST
7947 install [OPTION]... SOURCE... DIRECTORY
7948 install [OPTION]... -t DIRECTORY SOURCE...
7949 install [OPTION]... -d DIRECTORY...
7951 * ファイル名を二つ指定すると、`install' は最初のファイルを 2 番目の
7954 * `--target-directory' (`-t') オプションを指定した場合や、あるいは
7955 それを指定しないでも、最後のファイルがディレクトリであり、しかも
7956 `--no-target-directory' (`-T') オプションを指定していない場合は、
7957 `install' は各 SOURCE ファイルを指定されたディレクトリに、SOURCE
7960 * `--directory' (`-d') を指定すると、`install' は各 DIRECTORY を
7961 作成する。このとき、親ディレクトリが存在しなければ、それも
7962 作成する。作成される親ディレクトリのモードは、`-m' オプションの
7963 指定や現在の umask にかかわりなく、`u=rwx,go=rx' (755) になる。
7964 親ディレクトリの set-user-ID ビットや set-group-ID ビットの継承に
7965 ついては、次の節を参照していただきたい。*Note Directory Setuid and
7968 `install' は `cp' に似ているが、コピー先ファイルの属性を自由に
7969 設定できる点が違う。`install' は通常、Makefile の中で、プログラムを
7970 目標のディレクトリにコピーするために使用される。`install' では、ファイル
7973 `install' が拡張属性 (xattr) を保存することはない。
7975 このプログラムでは以下のオプションが使用できる。参照: *note Common
7980 *Note Backup options::. そのままでは、上書きされるか、消去されて
7981 しまう各ファイルのバックアップを作成する。
7985 インストール元とインストール先の対応するファイルを比較し、
7986 インストール先にあるファイルがインストール元と同じ内容を持ち、
7987 しかも、所有者、グループ、許可属性、場合によっては SELinux
7988 コンテキストについて、そのどれもが指定されているものと同一で
7989 あるときは、インストール先ファイルを全く変更しない。このオプ
7990 ションは、`--user', `--group', `--mode' オプションと組み合わせて
7991 使うのが、最善である。そうしたオプションと組み合わせて使えば、
7992 `install' コマンドが、(たとえば、ディレクトリに setgid が付いて
7993 いるか否かや、POSIX のデフォルトの ACL を顧慮しないせいで)、
7994 インストールされるファイルがデフォルトで持つはずの属性を不正確に
7995 決めてしまうのを避けることができる。そういうことがあると、
7996 無駄なコピーが行われたり、属性が正しいデフォルト値に設定し直され
7997 なかったりといった不都合が生じかねないのだ。
8000 無視する。Unix の古いバージョンの `install' との互換性のために
8004 DEST の指定中に存在していない親ディレクトリがあれば、それを作成
8005 してから、SOURCE を DEST にコピーする。インストール先ディレクトリ
8006 が `--target-directory=DIR' によって指定されている場合は、この
8011 まず、存在していない親ディレクトリがあれば作成し、それにデフォルトの
8012 属性を与える。それから、指定された各ディレクトリを作成し、所有者、
8013 グループ、許可属性を、コマンドラインで指定されたとおりに、または
8018 インストールするファイルやディレクトリの所有グループを GROUP に
8019 設定する。デフォルトは、プロセスの現在のグループである。GROUP は、
8020 グループ名でも、グループの ID 番号でもよい。
8024 インストールするファイルやディレクトリのモードビットを MODE に
8025 設定する。MODE の指定は、`a=' (誰にもアクセスを許さない) を
8026 基点として行い、8 進数でも、`chmod' で使うようなシンボリック
8027 モードでもよい (*note File permissions::)。デフォルトのモードは、
8028 `u=rwx,go=rx,a-s' である。すなわち、所有者には読み、書き、実行を
8029 許可し、グループとその他のユーザには読みと実行のみを許可、
8030 set-user-ID と set-group-ID は無効にする。このデフォルトは、`755'
8031 と全く同じではない。なぜなら、デフォルトの方は、ディレクトリに
8032 ついて set-user-ID や set-group-ID を引き継がず、無効にしている
8033 からである。 *Note Directory Setuid and Setgid::.
8037 `install' が適切な権限を持っている場合に (つまり、root 権限で
8038 実行されている場合に)、インストールするファイルやディレクトリの
8039 所有者を OWNER に設定する。デフォルトは `root' である。OWNER の
8040 指定は、ユーザ名でも、ユーザの ID 番号でもよい。
8042 `--preserve-context'
8043 ファイルやディレクトリの SElinux セキュリティ・コンテキストを引き
8044 継ぐ。ファイルやディレクトリすべてのセキュリティ・コンテキストを
8045 引き継げなかった場合は、終了ステータスが 1 になる。SElinux が
8046 無効になっているときは、警告を出し、このオプションを無視する。
8049 `--preserve-timestamps'
8050 インストール先各ファイルの最終アクセス日時 (last access time) と
8051 最終更新日時 (last modification time) を、対応するインストール元
8052 各ファイルのそれぞれの日時に合わせる。このオプションを付けずに
8053 インストールした場合、各ファイルの最終アクセス日時と最終更新日時は、
8054 両方ともインストールした日時になる。インストール先ファイルの最終
8055 更新日時を、最後にインストールした日付ではなく、最後にビルドした
8056 日付の記録として使用したい場合、このオプションは便利である。
8060 インストールされるバイナリの実行ファイルからシンボル・テーブルを
8063 `--strip-program=PROGRAM'
8064 バイナリからシンボル・テーブルを取り除くために使用するプログラムを
8069 `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
8070 付ける。 *Note Backup options::.
8073 `--target-directory=DIRECTORY'
8074 DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8078 `--no-target-directory'
8079 最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8080 でも、それを特別扱いしない。 *Note Target directory::.
8084 コピーを行う前に、コピーするファイル名を表示する。
8087 `--context[=CONTEXT]'
8088 CONTEXT が指定されていない場合は、出力するファイルの SELinux
8089 セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
8090 のタイプによって調整する。これは、`restorecon' コマンドの動作に
8091 似ている。このオプションの長い形式を使って、コンテキストを明示的に
8092 指定した場合、そのコンテキストが設定されるのは、新しく作成される
8093 ファイルに対してのみである。コンテキストを指定した場合に、SELinux
8094 が無効になっていると、警告メッセージを出す。 このオプションと
8095 `--preserve-context' オプションは、どちらか一方しか指定できない。
8096 (CONTEXT を省略できるのは、coreutils-8.22 から)
8099 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8102 File: coreutils-ja.info, Node: mv invocation, Next: rm invocation, Prev: install invocation, Up: Basic operations
8104 11.4 `mv': ファイルの移動 (名前の変更) を行う
8105 ============================================================
8107 `mv' は、ファイル (やディレクトリ) の移動、または名前の変更を行う。
8111 mv [OPTION]... [-T] SOURCE DEST
8112 mv [OPTION]... SOURCE... DIRECTORY
8113 mv [OPTION]... -t DIRECTORY SOURCE...
8115 * ファイル名を二つ指定すると、`mv' は最初のファイルを 2 番目の
8118 * `--target-directory' (`-t') オプションを指定した場合や、あるいは
8119 それを指定しないでも、最後のファイルがディレクトリであり、しかも
8120 `--no-target-directory' (`-T') オプションを指定していない場合は、
8121 `mv' は各 SOURCE ファイルを指定されたディレクトリに、SOURCE の
8124 `mv' はいかなるタイプのファイルでも、一つのファイルシステムから
8125 別のファイルシステムへ移動させることができる。fileutils パッケージの
8126 バージョン `4.0' 以前では、`mv' がファイルシステム間を移動させる
8127 ことができたのは、通常ファイルだけだった。それに対して、現在の `mv'
8128 では、たとえば、スペシャル・デバイスファイルを含むディレクトリ階層の
8129 全体を、あるパーティションから別のパーティションへ移動させることが
8130 可能になっている。`mv' は、まず `cp -a' が使用するのと同じコードを
8131 使って、指定されたディレクトリやファイルをコピーし、その後で (コピーに
8132 成功した場合は) コピー元を削除する。コピーに失敗した場合は、移動先の
8133 パーティションにすでにコピーした部分を消去することになる。仮に、ある
8134 パーティションから別のパーティションに、3 個のディレクトリをコピー
8135 しようとして、最初のディレクトリのコピーには成功したものの、2 番目の
8136 ディレクトリのコピーに失敗したとしよう。その場合、最初のディレクトリ
8137 は、移動先のパーティションに残るが、2 番目と 3 番目のディレクトリは、
8140 `mv' は拡張属性 (xattr) を常にコピーしようとする。この拡張属性は、
8141 SELinux コンテキストや ACL、ケーパビリティであってもよい。拡張属性の
8142 コピーに失敗したときは、`Operation not supported' 以外のすべての
8145 移動先ファイルがすでに存在し、それが普通なら書き込みのできないもの
8146 である場合、標準入力が端末であり、`-f' や `--force' オプションが指定
8147 されていなければ、`mv' はプロンプトを出して、ファイルを置き換えるか
8148 どうか、ユーザに問い合わせる (ファイルの書き込み権限がなくても、自分
8149 がそのファイルの所有者であったり、そのディレクトリの書き込み権限を
8150 持っていたりすることは、ありえることである)。答えが肯定でなければ、
8153 警告: 名前変更の対象 (または、移動元) がディレクトリへのシンボリック
8154 リンクかもしれないときは、その名前を指定する際に、末尾にスラッシュを
8155 付けてはいけない。さもないと、`mv' の動作は内部で使っている rename
8156 システムコール次第なので、全く予想外のことが起きるかもしれないのだ。
8157 Linux ベースの最近のカーネルを使っているシステムでは、`errno=ENOTDIR'
8158 で実行に失敗する。しかし、他のシステムでは (少なくとも、FreeBSD 6.1 や
8159 Solaris 10 では)、シンボリックリンクではなく、リンクが参照している
8160 ディレクトリの名前の方を、警告なしで変更するのである。 *Note Trailing
8163 このプログラムでは以下のオプションが使用できる。参照: *note Common
8168 *Note Backup options::. そのままでは、上書きされるか、消去されて
8169 しまう各ファイルのバックアップを作成する。
8173 移動先のファイルを消去する前に、プロンプトを出してユーザに問い合わ
8174 せることをしない。 `-i', `-f', `-n' オプションを 同時に指定している
8175 場合は、最後に指定したもののみが 効果を持つ。
8179 ファイルの許可属性に関係なく、存在する各移動先ファイルを上書き
8180 するかどうかを、プロンプトを出してユーザに問い合わせる。答えが
8181 肯定でなければ、そのファイルをスキップする。`-i', `-f', `-n'
8182 オプションを 同時に指定している 場合は、最後に指定したもののみが
8187 存在するファイルを上書きしない。`-i', `-f', `-n' オプションを
8188 同時に指定している 場合は、最後に指定したもののみが 効果を持つ。
8189 このオプションは、`-b' や `--backup' オプションと一緒には使えない。
8193 ディレクトリ以外のものを移動する際、それが移動先にも存在し、
8194 しかもその更新日時 (modification time) が移動元と同じか、より
8195 新しい場合には、移動を行わない。移動が別のファイルシステムに
8196 向かって行われる場合、タイムスタンプの比較は、移動元のタイム
8197 スタンプを移動先のファイルシステム、及びタイムスタンプの更新に
8198 使われるシステムコールの精度に落とした上で行われる。これは、
8199 同じ移動元と移動先に対して、`mv -u' コマンドが何回か実行される
8200 場合に、コピー作業が繰り返されるのを避けるためである。
8204 移動する前に各ファイルの名前を表示する。
8206 `--strip-trailing-slashes'
8207 SOURCE 引数の後ろにスラッシュが付いていたら、それを削除する。
8208 *Note Trailing slashes::.
8212 `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
8213 付ける。 *Note Backup options::.
8216 `--target-directory=DIRECTORY'
8217 DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8221 `--no-target-directory'
8222 最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8223 でも、それを特別扱いしない。 *Note Target directory::.
8227 このオプションは `restorecon' と同様の働きをする。すなわち、
8228 移動先ファイルの SELinux セキュリティ・コンテキストを、移動先に
8229 おけるシステムのデフォルトのタイプによって調整する。(coreutils-8.22
8233 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8236 File: coreutils-ja.info, Node: rm invocation, Next: shred invocation, Prev: mv invocation, Up: Basic operations
8238 11.5 `rm': ファイルやディレクトリを削除する
8239 ===========================================================
8241 `rm' は、指定された各ファイルを削除する。デフォルトでは、ディレクトリ
8246 rm [OPTION]... [FILE]...
8248 `-I' または `--interactive=once' オプションが指定されている場合に、
8249 削除するファイルが 4 個以上あるか、あるいは `-r', `-R', `--recursive'
8250 などのオプションが指定されていると、`rm' はプロンプトを出して、作業を
8251 最後まで行うかどうか、ユーザに問い合わせる。答えが肯定でなければ、
8254 それ以外の場合でも、削除するファイルが書き込み不可で、標準入力が
8255 端末、しかも `--force' (`-f') オプションが指定されていない場合や、`-i'
8256 または `--interactive=always' オプションが指定されている場合には、`rm'
8257 はプロンプトを出して、そのファイルを削除するかどうか、ユーザに問い合わ
8258 せる。答えが肯定でなければ、そのファイルをスキップする。
8260 ファイル名の最後の構成要素 (訳注: ファイル名 (いわゆるパス名) の
8261 最後の / より後ろの部分) が `.' や `..' であるファイルを削除しようと
8262 しても、`rm' はそれを実行せず、ユーザに問い合わせることもない。これは
8265 警告: `rm' を使って、ファイルを削除しても、たいていの場合、その
8266 ファイルの内容を復元することが可能である。ファイルの内容が間違いなく
8267 復元不可能であるとの、より一層の保証が欲しいのなら、`shred' コマンドの
8270 このプログラムでは以下のオプションが使用できる。参照: *note Common
8275 指定されたディレクトリが空ならば、それを削除する。
8279 指定したファイルが存在しなかったり、ユーザが削除の対象を一つも
8280 指定しなかったりしても、問題にしない (訳注: 言い換えれば、エラー
8281 にならない)。また、ユーザに対する問い合わせも全く行わない。
8282 `--interactive' (`-i') オプションが前にあっても、それを無視する。
8285 プロンプトを出して、各ファイルを削除するかどうか、ユーザに問い
8286 合わせる。答えが肯定でなければ、そのファイルをスキップする。
8287 `--force' (`-f') オプションが前にあっても、それを無視する。
8290 4 個以上のファイルが指定された場合や、再帰的な削除が要求された
8291 場合に、プロンプトを出して、コマンドを続行するかどうか、ユーザに
8292 一度だけ尋ねる。`--force' (`-f') オプションが前にあっても、それを
8293 無視する。`--interactive=once' と同じである。
8295 `--interactive [=WHEN]'
8296 問い合わせのプロンプトをいつ出すかを指定する。WHEN には以下の一つを
8298 * never - 問い合わせを全くしない。
8300 * once - 4 個以上のファイルが指定された場合や、再帰的な削除が
8301 要求された場合に、一度だけ問い合わせをする。`-I' と同じ。
8303 * always - 削除されるすべてのファイルに対して問い合わせをする。
8305 `--interactive' に WHEN を指定しないのは、`--interactive=always' と
8309 ディレクトリ階層を再帰的に削除する際に、コマンドラインで引数として
8310 指定したディレクトリが存在するファイルシステムとは別のファイル
8311 システム上にある、いかなるディレクトリも削除しない。
8313 このオプションが役に立つのは、ビルド用の "chroot" ディレクトリ
8314 階層を削除する場合である。通常、そうしたディレクトリ階層に重要な
8315 データは含まれていない。しかしながら、普段使っているスタートアップ・
8316 ファイルを利用しやすくするために、そうしたディレクトリ階層に
8317 `/home' を bind-mount するのは、珍しいことではない。問題は、`/home'
8318 のアンマウントを忘れやすいことである。アンマウントをやり忘れたまま、
8319 `rm -rf' を使って、通常使い捨てにする chroot 環境を削除しようと
8320 すると、`/home' 以下にあるすべてまで削除してしまうことになる。
8321 `--one-file-system' オプションを使えば、`rm' は警告を出した上で、
8322 他のファイルシステムにあるディレクトリをスキップしてくれる。
8323 当然ながら、`/home' と chroot 環境が同じファイルシステムにある
8324 場合は、このオプションを使っても、`/home' が助かるわけではない。
8327 `--recursive' オプションと一緒に使った場合、ルートディレクトリ
8328 (`/') を削除しようとすると、エラーになる。これがデフォルトの
8329 動作である。 *Note Treating / specially::.
8331 (訳注: 確かに `--preserve-root' が有効になっていれば、`rm -rf /'
8332 とした場合に、ルートディレクトリを保護することになる。だが、 `rm
8333 -rf /*' とした場合には、あまり役に立たない。なぜなら、`/*' は、
8334 `/bin', `/usr', `/home' などに展開されるが、そうしたディレクトリの
8335 消去は、`--preserve-root' によっては止められないからである。)
8337 `--no-preserve-root'
8338 再帰的に削除を行う際、`/' を特別扱いしない。コンピュータ上にある
8339 すべてのファイルを本当に削除したい場合以外、このオプションの使用は
8340 お勧めできない。 *Note Treating / specially::.
8345 コマンドラインにリストされたディレクトリとその中身を再帰的に削除する。
8349 削除を行う前に、各ファイルの名前を表示する。
8352 よくある質問の一つに、名前が `-' で始まるファイルを削除するには、
8353 どうしたらよいか、というものがある。GNU の `rm' では、`getopt' を
8354 使用して引数の解析を行っているあらゆるプログラムと同様、`--' オプション
8355 を使って、以下の引数はすべてオプションではない、と示すことが可能に
8356 なっている。カレントディレクトリにある `-f' というファイルを削除する
8365 Unix の `rm' プログラムが、この用途に `-' を 1 個だけ使っていたのは、
8366 getopt の標準シンタックスが開発される以前のことである。
8368 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8371 File: coreutils-ja.info, Node: shred invocation, Prev: rm invocation, Up: Basic operations
8373 11.6 `shred': セキュリティを向上させたファイルの削除
8374 =======================================================================
8376 `shred' はデバイスやファイルを上書きして、非常に高価な装置を使用
8377 しても、データの復元ができないようにする。
8379 通常、ファイルを削除しても (*note rm invocation::)、データが実際に
8380 消去されるわけではない。単に、ファイルが格納されている場所をリストした
8381 インデックスが破棄されるだけであり、そうすることで、そのデータの
8382 格納場所が再利用可能になるのである。世の中には、インデックスの再構築を
8383 試みる復元ソフト (undelete utilities) というものが存在する。そうした
8384 ものは、ファイルの存在したスペースが再利用されていなければ、ファイルを
8387 頻繁に使われているシステムで、ディスクがほとんど一杯になっている
8388 場合、スペースは数秒のうちに再利用されるかもしれない。だが、それを
8389 確実に知る方法は全くない。また、他人に見られては困るデータがあった
8390 ところで、見られても構わないデータでそのファイルを上書きしてしまえ
8391 ば、復元は絶対不可能だと考えたいかもしれない。
8393 しかしながら、そういうことをした後でも、ディスクを研究所に持ち
8394 込んで、高感度の (そして高価な) 装置を山ほど使用すれば、上書きされた
8395 データの下にある元のデータのかすかな「痕跡 (echoes)」を検出することが
8396 可能なのだ。もし、データがたった一回しか上書きされていなかったら、
8399 データを復元できないように消去する最善の方法は、それが載っている
8400 メディアを酸で破壊するとか、熱で溶かすとかすることである。フロッピー
8401 ディスクのような廉価なリムーバブル・メディアの場合、それがよく使わ
8402 れる方法だ。だが、ハードディスクは高価だし、熱で溶かすのも難しい。
8403 そこで、`shred' ユーティリティは、物質的な破壊以外の方法で、同様の
8406 そのためには、元のデータに与える損傷を最大にするように選ばれた
8407 データパターンで繰り返し上書きするという方法が採られる。この方法は、
8408 フロッピーディスクにも効果があるものの、パターンはハードディスクで
8409 最も効果を上げるように工夫されたものだ。詳細については、ソースコード
8410 や、第 6 回 USENIX セキュリティ・シンポジウム (San Jose, California,
8411 July 22-25, 1996) の議事録にある Peter Gutmann の次の論文をご覧に
8413 `Secure Deletion of Data from Magnetic and Solid-State Memory'
8414 (http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html)
8416 ここで心に銘記してしていただきたいのは、`shred' には非常に重要な
8417 前提があるということである。すなわち、ファイルシステムはデータを、
8418 それが存在する場所で上書きするものでなければならない。それは、こうした
8419 操作を行うときの伝統的な方法であるが、最近のファイルシステムの設計には、
8420 この前提を満たさないものが多い。そうした例外には、次のようなものがある。
8422 * ログ構造化 (log-structured) ファイルシステムや、ジャーナル化
8423 (journaled) ファイルシステム。たとえば、ATX や Solaris で
8424 提供されているもの。JFS, ReiserFS, XFS, Ext3 (`data=journal'
8425 モードの場合), BFS, NTFS などが、「データ」のジャーナリングを
8426 するように設定されている場合もこれに当たる。
8428 * データを冗長化して書き込んだり、一部の書き込みに失敗することが
8429 あっても、動作し続けるファイルシステム。たとえば、RAID ベースの
8432 * Network Appliance の NFS サーバのように、スナップショットを作成する
8435 * NFS バージョン 3 のクライアントのように、一時領域にキャッシュを作る
8440 特に ext3 ファイルシステムについて言うと、上記の例外に当てはまるのは
8441 (その結果、`shred' が限定された効果しか持たないのは)、`data=journal'
8442 モードの場合だけである。これは、メタデータだけでなく、ファイルデータも
8443 ジャーナリングするモードだ。`data=ordered' (デフォルト) と
8444 `data=writeback' の両モードでは、`shred' は通常どおり役に立つ。ext3 の
8445 ジャーナリング・モードを変更するには、mount のマニュアルに書いてある
8446 ように (man mount)、`/etc/fstab' ファイルで問題のファイルシステムの
8447 マウントオプションに `data=something' オプションを追加すればよい。
8449 ファイルシステムがどういう動作をしているか、よくわからない場合は、
8450 データをそれが存在する場所で上書きしていないと考えておいた方がよい。
8451 すなわち、そのファイルシステムでは、通常ファイルに対する `shred' の
8454 一般的に言って、`shred' は、ファイルよりデバイスに対して使った方が
8455 信頼できる。そうすれば、上に述べたファイルシステムの設計の問題を回避
8456 できるからだ。しかしながら、`shred' のデバイスに対する使用も、必ずしも
8457 全面的に信頼できるわけではない。たとえば、ほとんどのディスクが、バッド
8458 セクターを使用に割り当てる領域から外して、アプリケーションから見えない
8459 ようにしている。そこで、バッドセクターに他人に見られたくないデータが
8460 ある場合、`shred' はそれを破壊できないことになる。
8462 `shred' は、バックアップに対して何の対処も行おうとしないが、バッド
8463 セクターの問題についても全く同様で、検知しようともしないし、通知しよう
8464 ともしない。それでも、`shred' はファイルに対して行うより、デバイスに
8465 対して行う方が信頼できるので、デフォルトでは、出力ファイルをサイズ 0 に
8466 短縮したり、削除したりしないようになっている。このデフォルトは、ファイル
8467 よりデバイスに適した動作だ。デバイスは一般に短縮できないし、削除するべき
8470 最後になったが、バックアップやミラーの持つリスクも考慮した方がよい。
8471 削除することのできないファイルのコピーが、ファイルシステムのバックアップ
8472 やリモートのミラーに残っていることもありえる。そして、そうしたものが
8473 残っていれば、`shred' で破壊したファイルを後日復元することが可能に
8474 なるのだ。だから、後で `shred' を使って抹消したくなるようなデータが
8475 ある場合には、そのバックアップやミラーがないことを確認すべきなのである。
8477 shred [OPTION]... FILE[...]
8479 このプログラムでは以下のオプションが使用できる。参照: *note Common
8484 必要ならば、ファイルの許可属性を無視して、上書きできるようにする。
8488 `--iterations=NUMBER'
8489 デフォルトで `shred' は、上書きを 3 回する。時間を節約するために、
8490 回数を減らすこともできるし、その方がよいと思えば、回数を増やすことも
8491 できる。25 回上書きすると、プログラムが内部に持っている上書き用の
8492 パターンのすべてが、少なくとも一回は使われたことになる。
8494 `--random-source=FILE'
8495 上書きに使用するランダムデータのソースとして FILE を使用する。
8496 また、このランダムデータは、上書きパターンの順番を決めるのにも
8501 ファイルの最初の BYTES バイトを shred 処理する。デフォルトは、
8502 ファイル全体の shred である。BYTES の後ろには、その何倍かを示す
8503 ために `K', `M', `G' といった、サイズの指定を付けることができる。
8508 shred 処理したファイルを (可能ならば) サイズ 0 に短縮し
8509 (truncate)、その上で削除する。ファイルが複数のリンクを持って
8510 いる場合に、削除されるのは名前を指定されたリンクだけである。
8511 ファイルの名前は、ファイルの内容ほど秘密性を必要としないことも
8512 多い。そうした場合は、HOW パラメータを付けることで、各ディレ
8513 クトリエントリのより効率的な削除法を指定することができる。HOW
8514 パラメータに `unlink' を指定した場合は、お定まりの unlink の
8515 呼び出しをするだけだが、`wipe' を指定すると、unlink する前に
8516 ファイル名を構成するバイトの難読化を行う。`wipesync' を指定した
8517 場合は、ファイル名を難読化するだけでなく、それを 1 バイトづつ
8518 ディスクに sync することまで行う。留意していただきたいのは、
8519 `wipesync' はデフォルトの方法だが、すべてのファイル名のすべての
8520 文字ごとに sync を行うことになるので、負荷が重くなるかもしれない
8521 ということである。ファイル数が多い場合には、無視できない負荷に
8522 なるかもしれない。また、使用しているシステムがメタデータの
8523 同期アップデートを提供している場合には、やらないでもよいこと
8524 かもしれない。(`--remove' に対する HOW パラメータの指定は、
8525 coreutils-8.22 の新機能)
8529 shred 処理が進行する間、更新される進行状態の情報のすべてを
8534 デフォルトでは、`shred' は、ファイルの最後のブロックを完全に消す
8535 ために、通常ファイルのサイズを、ファイルシステムのブロックサイズの
8536 倍数に切り上げることになっている。この動作を抑制したかったら、
8537 `--exact' オプションを使用すればよい。すなわち、デフォルトでは、 1
8538 ブロック 512 バイトのシステムで 10 バイトの通常ファイルを shred
8539 すると、結果として 512 バイトのファイルが出来上がる。ところが、
8540 このオプションを使えば、shred はファイルの見かけのサイズを増加
8545 通常、`shred' は、最後の 1 回でもランダムデータを書き込む。
8546 そんなファイルがハードディスクにあると、(たとえば、暗号化された
8547 データに見えて) 目立ってしまうのではないかと思うのなら、あるいは、
8548 単にそっちの方がもっとすっきりしていると思うのなら、`--zero'
8549 オプションを指定して、もう一回、 すべて 0 ビットで上書きさせれば
8550 よい。これは、`--iterations' オプションで指定した上書き回数の
8554 第 1 ドライブのフロッピーディスクに作成したファイルシステムを跡形
8555 もなく消し去るには、次のコマンドを使えばよいだろう。このコマンドで
8556 "1.44MB" (実際には 1440 KiB) のフロッピーを消去するには、約 20 分
8559 shred --verbose /dev/fd0
8561 同様に、ハードディスクの選択したパーティションからすべてのデータを
8562 消去するには、以下のコマンドを打ち込めばよい。
8564 shred --verbose /dev/sda5
8566 最近のディスクでは、1 回の書き込みで十分なはずだ。それならば、
8567 書き込みを 3 回行うデフォルトの 3 分の 1 の時間ですむ。
8569 # 擬似ランダムデータを 1 回書き込む。デフォルトより 3 倍速い。
8570 shred --verbose -n1 /dev/sda5
8572 念のため、少なくとも 1 回は擬似ランダムデータで上書きをした方がよい。
8573 言い換えると、つい使いたくなっても、`-n0 --zero' を使ってはいけない。
8574 ディスク・コントローラの中には、すべてが 0 のブロックを書き込む際に、
8575 処理の最適化を行っているものがあり、そのため、ブロック中のバイト
8576 すべてがクリアされない恐れがあるからである。SSD の中には、まさにそう
8579 `-' という FILE は、標準出力を表している。これの使い道は、削除した
8580 テンポラリ・ファイルを shred することである。たとえば、次のようにだ。
8585 echo "Hello, world" >&3
8589 しかしながら、`shred - >file' というコマンドを使っても、ファイルの
8590 内容を shred することにはならない。なぜなら、シェルは `shred' を呼び
8591 出す前に、ファイルをサイズ 0 に短縮 (truncate) してしまうからである。
8592 `shred file'、あるいは (Bourne 互換シェルをお使いなら) `shred - 1<>file'
8593 というコマンドを、代わりに使った方がよい。
8595 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8598 File: coreutils-ja.info, Node: Special file types, Next: Changing file attributes, Prev: Basic operations, Up: Top
8601 ***************************
8603 この章では、特殊なタイプのファイルを作成するコマンドの説明を行う
8604 (さらに `rmdir' の説明もするが、これはディレクトリという特殊な
8605 ファイル型の一つを削除するコマンドである)。
8607 Unix 系統のオペレーティング・システムでは、ほかのオペレーティング・
8608 システムと比べて、特殊なファイル型というものが著しく少ないが、それでも
8609 普通のファイル ("normal files") がそうであるような、のっぺらぼうなバイト
8610 ストリームとして、何でもかんでも扱えさえすればよいというものではない。
8611 たとえば、ファイルを作成したり、削除したりするとき、システムはその情報
8612 を記録しなければならないが、それはディレクトリ ("directory") -- これも
8613 特殊なタイプのファイルである -- に書き込まれる。もし興味があれば、
8614 ディレクトリを普通のファイルのように読むこともできるが、システムが
8615 システムとしての役割を果たすためには、ディレクトリはそのファイル内容
8616 であるバイトに、構造というか、何らかの秩序を持っていなければならない。
8617 そういう意味で、ディレクトリは、「特殊な」タイプのファイルなのである。
8619 ディレクトリ以外の特殊なファイル型としては、名前付きパイプ (FIFO)、
8620 シンボリックリンク、ソケット、それに、いわゆるスペシャルファイル
8621 ("special files") がある。
8625 * link invocation:: システムコール link を使って、ハードリンクを作成する。
8626 * ln invocation:: ファイル間のリンクを作成する。
8627 * mkdir invocation:: ディレクトリを作成する。
8628 * mkfifo invocation:: FIFO (名前付きパイプ) を作成する。
8629 * mknod invocation:: ブロック型やキャラクタ型のスペシャルファイルを作成する。
8630 * readlink invocation:: シムリンクの値、または正規化されたファイル名を表示する。
8631 * rmdir invocation:: 空のディレクトリを削除する。
8632 * unlink invocation:: システムコール unlink を使って、ファイルを削除する。
8635 File: coreutils-ja.info, Node: link invocation, Next: ln invocation, Up: Special file types
8637 12.1 `link': システムコール link を使って、ハードリンクを作成する
8638 ========================================================================================
8640 `link' は、一度に 1 個のハードリンクを作成する。これは、システムが
8641 提供する `link' 関数への必要最小のインターフェースである。 *Note Hard
8642 Links: (libc)Hard Links. 従って、より一般に使われる `ln' コマンドの
8643 ような、様々な付加機能をあえて備えていない (*note ln invocation::)。
8647 link FILENAME LINKNAME
8649 FILENAME は、実在するファイルを指していなければならない。また、
8650 LINKNAME は、実在するディレクトリ中の実在しないファイルを指していな
8651 ければならない。`link' は、リンクを作成するために、`link (FILENAME,
8652 LINKNAME)' をコールするだけである。
8654 GNU のシステムでは、このコマンドは、`ln --directory
8655 --no-target-directory FILENAME LINKNAME' と同様に振る舞う。しかし、
8656 `--directory' や `--no-target-directory' は、POSIX の規格にあるオプ
8657 ションではないので、`link' の方が、実用上より可搬性がある。
8659 FILENAME がシンボリックリンクの場合、LINKNAME がシンボリックリンク
8660 へのハードリンクになるか、シンボリックリンクの参照先へのハードリンクに
8661 なるかは、規定されていない。望む方の動作をはっきり指定するには、`ln -P'
8662 や `ln -L' を使用するべきである。
8664 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8667 File: coreutils-ja.info, Node: ln invocation, Next: mkdir invocation, Prev: link invocation, Up: Special file types
8669 12.2 `ln': ファイル間のリンクを作成する
8670 =====================================================
8672 `ln' はファイル間のリンクを作成する。デフォルトではハードリンクを作成
8673 するが、`-s' オプションを指定すると、シンボリックリンク ("soft" link
8678 ln [OPTION]... [-T] TARGET LINKNAME
8679 ln [OPTION]... TARGET
8680 ln [OPTION]... TARGET... DIRECTORY
8681 ln [OPTION]... -t DIRECTORY TARGET...
8683 * ファイル名を二つ指定すると、`ln' は 1 番目に対するリンクを 2 番目
8686 * TARGET のみを指定すると、`ln' はそのファイルに対するリンクを
8689 * `--target-directory' (`-t') オプションを指定した場合や、あるいは
8690 それを指定しないでも、最後のファイルがディレクトリであり、しかも
8691 `--no-target-directory' (`-T') オプションを指定していない場合は、
8692 `ln' は各 TARGET ファイルに対するリンクを、指定されたディレクトリに
8696 通常 `ln' は存在するファイルを削除しない。既存のファイルを無条件で
8697 削除するには、`--force' (`-f') オプションを使う。また、ユーザに問い
8698 合わせた上で削除するには、`--interactive' (`-i') オプションを使う。
8699 既存のファイルを、名前を変更して残すには、`--backup' (`-b') オプション
8700 を使用する。(訳注: ここで述べているのは、存在するファイルの名前を
8701 リンクファイル名として使う場合の話である。)
8703 ハードリンク ("hard link") というのは、存在するファイルが持つ別の名前
8704 である。だから、リンクとオリジナルは、区別ができない。専門的な言い方を
8705 すると、両者は同じ inode を共有するものである。inode には、ファイルに
8706 関する情報がすべて含まれているので、全くのところ、inode こそファイルで
8707 あると言っても、過言ではないほどだ。たいていのシステムでは、ディレクトリ
8708 に対するハードリンクの作成は禁じられている。許可されているシステムでも、
8709 それができるのは、スーパーユーザだけである (その場合でも、ファイル
8710 システムにループが生じると、ほかの様々なユーティリティ・プログラムで
8711 問題が起きるので、慎重にやらなければならない)。なお、ハードリンクは、
8712 ファイルシステムの境界を越えることができない。(もっとも、ハードリンクに
8713 対するこうした制限は、POSIX で規定されているわけではない。)
8715 それに対して、シンボリックリンク ("symbolic link"、略称はシムリンク
8716 "symlink") は、特殊なファイル型の一つである (すべてのカーネルがサポート
8717 しているわけではない。たとえば、System V release 3 やそれ以前の
8718 システムにはシムリンクが存在しない)。このファイル型では、リンク
8719 ファイルは、実際には別のファイルを、名前を使って参照している。
8720 ほとんどのファイル操作では (ファイルのオープン、読み込み、書き出し
8721 など)、シンボリックリンク・ファイルが渡されると、カーネルが自動的に
8722 リンクの参照を読み解いて ("dereference")、リンクの参照先を操作の
8723 対象にする。ただし、操作によっては (たとえば、ファイルの削除)、
8724 参照先ではなく、リンクファイルそのものを対象にするものもある。
8725 シムリンクの所有者やグループは、リンクを通して行われるファイルアクセス
8726 に対して意味を持たないが、削除制限ビットが立っているディレクトリから
8727 シンボリックリンクを削除する際には、かかわりを持ってくる。GNU の
8728 システムでは、シムリンクのモードには意味がなく、変更することもでき
8729 ない。だが、BSD システムの中には、モードが変更でき、ファイル名の解決に
8730 おいてシムリンクをたどるかどうかに影響するものもある。 *Note Symbolic
8731 Links: (libc)Symbolic Links.
8733 シンボリックリンクの中身には、どんな文字列が含まれていてもよい。
8734 シンボリックリンクに含まれる文字列が、実在するファイルの名前になって
8735 いないときは、リンク切れ ("dangling symlink") が生ずる。リンク切れの
8736 シンボリックリンクを作成することは、禁止されているわけではない。
8737 シムリンクの作成に絶対パスを使うか、相対パスを使うかには、それぞれ
8738 一長一短がある。絶対パスのシムリンクは、リンクファイルの存在する
8739 ディレクトリが移動しても、常に同じファイルを指す。もっとも、その
8740 シムリンクが複数のマシンから見えるような場合には (たとえば、ネット
8741 ワークでつながったファイルシステムにあるような場合には)、リンクが
8742 指しているファイルは、必ずしも同じではないかもしれない。相対パスの
8743 シンボリックリンクの方は、それが存在しているディレクトリからの相対パス
8744 で参照先が決まる。そこで、リンクファイルがネットワークでつながっている
8745 マシンからアクセスされることがある場合に、リンクと同じデバイス上に
8746 存在するファイルを、そのデバイスのマウントポイントが何という名前かを
8747 気にせずに指示することができて、便利であることが多い。
8749 相対パスのシムリンクをカレントディレクトリ以外の場所に作成すると、
8750 そのシムリンクが実際に指しているファイルは、同じ文字列がカレント
8751 ディレクトリを基点として指しているファイルとは別のものになる。
8752 そのため、ユーザの多くが、まずカレントディレクトリを変更して、相対
8753 パスのシムリンクを作成する場所へ移動することを好んでいる。そうすれば、
8754 タブ補完などのファイル名参照方法を用いて、シムリンクに格納する参照先の
8755 適切な相対パスを見つけることができるからである。
8757 このプログラムでは以下のオプションが使用できる。参照: *note Common
8762 *Note Backup options::. そのままでは、上書きされるか、消去されて
8763 しまう各ファイルのバックアップを作成する。
8768 ユーザが適切な権限を持っていれば、ディレクトリに対するハードリンク
8769 を作成しようとしても許可する。とは言え、たぶんシステムによって禁止
8770 されているので、たとえスパーユーザでも作成に失敗するだろう。
8774 リンクの作成先に、作成するリンクファイルと同名のファイルがすでに
8779 リンクの作成先に、作成するリンクファイルと同名のファイルがすでに
8780 存在していたら、削除するかどうか、ユーザに問い合わせる。
8784 `-s' オプションが有効になっていないとき、リンク対象として指定
8785 されたファイル (訳注: 上記書式の TARGET) がシンボリックリンク
8786 ならば、シンボリックリンクそのものではなく、シンボリックリンクが
8787 参照しているファイルへのハードリンクを作成する。
8791 最後のオペランドがディレクトリに対するシンボリックリンクである
8792 とき、それをディレクトリとして特別扱いしない (訳注: すなわち、
8793 ディレクトリ内に TARGET と同名でリンクを作ることはしない)。
8794 むしろ、普通のファイルであるかのように扱う。
8796 リンクの作成先として指定されたのが (ディレクトリに対するシムリンク
8797 ではなく) 本物のディレクトリならば、曖昧なところは全くない。その
8798 ディレクトリ内にリンクを作るだけの話だ。ところが、指定された作成先
8799 が、ディレクトリに対するシムリンクの場合は、ユーザの要求を処理する
8800 のに、二つの行き方がある。`ln' は、通常のディレクトリを扱う場合と
8801 全く同じように作成先を扱って、そこにリンクを作成することができる。
8802 あるいは、作成先をディレクトリではないもの、すなわち、他ならぬシム
8803 リンクと見なすことも可能だ。後者の場合、`ln' は、新しいリンクを
8804 作成する前に、そのシムリンクを消去するなり、バックアップするなり
8805 しなければならない。`ln' のデフォルトは、作成先がディレクトリに
8806 対するシムリンクであっても、ディレクトリと全く同様に扱うことである。
8808 このオプションは、`--no-target-directory' (`-T') の弱いバージョン
8809 である。従って、両方のオプションを指定した場合、こちらは効果がない。
8813 `-s' オプションが有効になっていないとき、リンク対象として指定
8814 されたファイル (訳注: 上記書式の TARGET) がシンボリックリンク
8815 ならば、シンボリックリンクそのものへのハードリンクを作成する。
8816 そういった動作をカーネルがサポートしていないプラットホームでは、
8817 このオプションを指定すると、リンク対象のシンボリックリンクと全く
8818 同じ内容を持つシンボリックリンクが作成される。このとき、シンボ
8819 リックリンクの内容に手が加えられることは決してないので、どちらの
8820 シンボリックリンクを使って行われるファイル名の解決も、シンボリック
8821 リンクへのハードリンクが作成された場合と結局同じになる。
8825 リンクファイルを置く場所を基点とする相対パスのシンボリックリンクを
8830 ln -srv /a/file /tmp
8831 '/tmp/file' -> '../a/file'
8833 相対パスのシンボリックリンクは、それを置くディレクトリと参照先の
8834 ファイル名を正規化した上で、それに基づいて作成される。すなわち、
8835 そうしたファイル名中にあるすべてのシンボリックリンクは、実体に
8836 還元されることになるわけだ。なお、`realpath' コマンドを使用すれば、
8837 以下の例に示すように、相対パスを生成する際にもっと融通が利く
8838 (訳注: たとえば、`realpath' を使うと、ファイル名中のシンボリック
8839 リンクをシンボリックリンクのままにしておくこともできる)。 *Note
8840 realpath invocation::.
8843 test "$1" = --no-symlinks && { nosym=$1; shift; }
8845 test -d "$2" && link="$2/." || link="$2"
8846 rtarget="$(realpath $nosym -m "$target" \
8847 --relative-to "$(dirname "$link")")"
8848 ln -s -v "$rtarget" "$link"
8853 ハードリンクではなく、シンボリックリンクを作る。このオプションは、
8854 シンボリックリンクをサポートしていないシステムでは、エラー・
8859 `-b' によって作られる各バックアップファイルの後ろに SUFFIX を
8860 付ける。 *Note Backup options::.
8863 `--target-directory=DIRECTORY'
8864 DIRECTORY を出力先ディレクトリに指定する。 *Note Target
8868 `--no-target-directory'
8869 最後のオペランドがディレクトリやディレクトリへのシンボリックリンク
8870 でも、それを特別扱いしない。 *Note Target directory::.
8874 リンクの作成に成功した後で、各ファイルの名前を表示する。
8877 `-L' と `-P' の両方を指定すると、最後に指定したものが効果を持つ。
8878 さらに `-s' も指定した場合は、エラーや警告は出ないが、`-L' や `-P' は
8879 無視される。`-L' と `-P' のどちらのオプションも指定しない場合、`ln' の
8880 この実装では、システムの `link' 関数がシンボリックリンクに対するハード
8881 リンクをサポートしていれば (たとえば、GNU のシステム)、デフォルトの
8882 動作は `-P' になる。`link' 関数がシンボリックリンクをたどるものならば
8883 (たとえば、BSD)、デフォルトの動作は `-L' である。
8885 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8891 # カレントディレクトリにあるファイル a を指す ../a というリンクを
8892 # 作成する。実のところ役に立たない。../a が自分自身を指すリンクに
8898 # 頭がこんがらかってしまわないように、シムリンクを作成する前に、
8899 # リンクを作るディレクトリに移動する。
8905 # 絶対パスによるリンク対象の指定は、リンク対象の位置が変わると、
8907 ln -s $(pwd)/a /some/dir/
8911 # 相対パスによるリンク対象の指定は、リンクやその対象を含む
8912 # ディレクトリが移動しても、両者の相対的な位置関係が変わらない
8913 # かぎり、問題がない。また、ネットワークでつながったファイル
8915 ln -s afile anotherfile
8916 ln -s ../adir/afile yetanotherfile
8919 File: coreutils-ja.info, Node: mkdir invocation, Next: mkfifo invocation, Prev: ln invocation, Up: Special file types
8921 12.3 `mkdir': ディレクトリを作成する
8922 ===============================================
8924 `mkdir' は、指定された名前でディレクトリを作成する。
8928 mkdir [OPTION]... NAME...
8930 `mkdir' は、NAME で指定された各ディレクトリを、指定された順番で
8931 作成する。NAME がすでに存在していると、エラーになり、その旨メッセージ
8932 を出すが、NAME がすでに存在していても、`-p' オプションが指定され、NAME
8933 がディレクトリの場合は、エラーにならない。
8935 このプログラムでは以下のオプションが使用できる。参照: *note Common
8940 作成するディレクトリの許可属性ビットを MODE に設定する。MODE には
8941 `chmod' と同じ書式を使用し、`a=rwx' (すべてのユーザに、読み、書き、
8942 実行を許可する) を基点とする。*Note File permissions::.
8944 通常、ディレクトリには、作成された時点で、要求したとおりのファイル
8945 モードビットが付く。GNU の拡張として、MODE で特殊モードビットも指定
8946 できるが、その場合は、ディレクトリは存在しているが、特殊モードビット
8947 は要求どおりではないという、時間の隙間が生じるかもしれない。ディレ
8948 クトリの set-user-ID ビットと set-group-ID ビットが、このオプション
8949 を使って変更しない場合にどのように継承されるかについては、次の節を
8950 参照していただきたい。*Note Directory Setuid and Setgid::.
8954 各引数について、存在していない親ディレクトリがあれば、それを作成し、
8955 その許可属性ビットを umask を基にして `u+wx' になるように設定する。
8956 親ディレクトリがすでに存在している場合は、このオプションは何もせず、
8957 その許可属性ビットを変更することもない。
8959 新たに作成するいかなる親ディレクトリの許可属性ビットも、`u+wx'
8960 を含むある一定の値に設定するには、`mkdir' を実行する前に、umask
8961 を設定すればよい。たとえば、`(umask u=rwx,go=rx; mkdir -p P/Q)'
8962 というシェルコマンドで `P' という親ディレクトリを作れば、その
8963 許可属性ビットは `u=rwx,go=rx' になる。また、親ディレクトリに特殊
8964 モードビットも設定するには、`chmod' を `mkdir' の後で実行すれば
8965 よい。新たに作成される親ディレクトリの set-user-ID ビットと
8966 set-group-ID ビットがどのように継承されるかについては、次の節を
8967 参照していただきたい。 *Note Directory Setuid and Setgid::.
8971 ディレクトリを作成するごとに、メッセージを表示する。`--parents'
8975 `--context[=CONTEXT]'
8976 CONTEXT が指定されていない場合は、出力するファイルの SELinux
8977 セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
8978 のタイプによって調整する。これは、`restorecon' コマンドの動作に
8979 似ている。このオプションの長い形式を使って、コンテキストを明示的に
8980 指定した場合、そのコンテキストが設定されるのは、新しく作成される
8981 ファイルに対してのみである。コンテキストを指定した場合に、SELinux
8982 が無効になっていると、警告メッセージを出す。 (CONTEXT を省略できる
8983 のは、coreutils-8.22 から)
8986 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
8989 File: coreutils-ja.info, Node: mkfifo invocation, Next: mknod invocation, Prev: mkdir invocation, Up: Special file types
8991 12.4 `mkfifo': FIFO (名前付きパイプ) を作成する
8992 ===========================================================
8994 `mkfifo' は、指定された名前で FIFO (名前付きパイプ "named pipes"
8999 mkfifo [OPTION] NAME...
9001 "FIFO" は特殊なファイル型の一つであり、これを利用すると、独立した
9002 プロセスの間でデータのやりとりが可能になる。片方のプロセスが FIFO を
9003 書き出し用にオープンし、もう一方のプロセスが読み込み用にオープンする。
9004 そうすると、シェルなどにある普通の名前のない (anonymous) パイプを
9005 使ったときのように、データを一方から他方へ流すことができるのである。
9007 このプログラムでは、以下のオプションが使える。参照: *note Common
9012 作成する FIFO の許可属性を MODE にする。MODE は `chmod' で
9013 使用するのと同じシンボル表記であり、`a=rw' (すべてのユーザに、
9014 読み、書きを許可する) を基点として使う。MODE で指定するのは、
9015 ファイルの許可属性ビットのみにするべきである。 *Note File
9019 `--context[=CONTEXT]'
9020 CONTEXT が指定されていない場合は、出力するファイルの SELinux
9021 セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
9022 のタイプによって調整する。これは、`restorecon' コマンドの動作に
9023 似ている。このオプションの長い形式を使って、コンテキストを明示的に
9024 指定した場合、そのコンテキストが設定されるのは、新しく作成される
9025 ファイルに対してのみである。コンテキストを指定した場合に、SELinux
9026 が無効になっていると、警告メッセージを出す。 (CONTEXT を省略できる
9027 のは、coreutils-8.22 から)
9030 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9033 File: coreutils-ja.info, Node: mknod invocation, Next: readlink invocation, Prev: mkfifo invocation, Up: Special file types
9035 12.5 `mknod': ブロック型やキャラクタ型のスペシャルファイルを作成する。
9036 ==================================================================================================
9038 `mknod' は、指定された名前で FIFO、キャラクター・スペシャルファイル、
9039 ブロック・スペシャルファイルを作成する。
9043 mknod [OPTION]... NAME TYPE [MAJOR MINOR]
9045 これまでに使ってきた「特殊なファイル型 ("special file type"」
9046 という言い回しとは違って、「スペシャルファイル ("special file")」
9047 という用語には、Unix では技術的な意味が存在する。すなわち、それは、
9048 データを生成したり、受け取ったりできるもののことである。たいていの
9049 場合、それはハードウェアという物理的なものを指し、たとえば、プリンタ
9050 やディスクがそれに当たる。(なお、そうしたスペシャルファイルは、通常、
9051 システムの設定時に作られる。) `mknod' は、このタイプのファイルを
9052 作成するコマンドである。そうしたデバイスには、そこから一度に 1 文字 (a
9053 character) づつしか読むことのできないものもあれば、一度に 1 ブロックを
9054 (すなわち、たくさんの character を) 読み込むことのできるものもある。
9055 それ故、スペシャルファイルには、ブロック・スペシャルファイル ("block
9056 special" files) とキャラクタ・スペシャルファイル ("character special"
9057 files) があると言われるのである。
9059 シェルの組み込み機能の `mknod' やエイリアスのために、`mknod' に何の
9060 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
9061 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
9062 避けるためには、`env' 経由で `mknod' を起動すればよい (すなわち、 `env
9065 NAME に続く引数では、作成するファイルのタイプを指定する。
9074 キャラクタ・スペシャルファイルを作成する
9077 ブロック型やキャラクタ型のスペシャルファイルを作成する際には、
9078 ファイルタイプに続いて、メージャー・デバイス番号とマイナー・デバイス
9079 番号を指定する必要がある。メージャーやマイナーのデバイス番号が `0x' や
9080 `0X' で始まっていれば、番号は 16 進数と見なされる。`0' で始まっていれば
9081 8 進数、それ以外の場合は 10 進数である。
9083 このプログラムでは、以下のオプションが使える。参照: *note Common
9088 作成するファイルの許可属性を MODE にする。MODE は `chmod' で
9089 使用するのと同じシンボル表記であり、`a=rw' を基点として使う。 MODE
9090 で指定するのは、ファイルの許可属性ビットのみにするべきである。
9091 *Note File permissions::.
9094 `--context[=CONTEXT]'
9095 CONTEXT が指定されていない場合は、出力するファイルの SELinux
9096 セキュリティ・コンテキストを、出力先におけるシステムのデフォルト
9097 のタイプによって調整する。これは、`restorecon' コマンドの動作に
9098 似ている。このオプションの長い形式を使って、コンテキストを明示的に
9099 指定した場合、そのコンテキストが設定されるのは、新しく作成される
9100 ファイルに対してのみである。コンテキストを指定した場合に、SELinux
9101 が無効になっていると、警告メッセージを出す。 (CONTEXT を省略できる
9102 のは、coreutils-8.22 から)
9105 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9108 File: coreutils-ja.info, Node: readlink invocation, Next: rmdir invocation, Prev: mknod invocation, Up: Special file types
9110 12.6 `readlink': シムリンクの値、または正規化されたファイル名を表示する
9111 ==================================================================================================
9113 `readlink' には、二つの動作モードがある。
9116 このモードでは、`readlink' は、指定されたシンボリックリンクの値を
9117 表示する。引数がシンボリックの名前以外だったときは、何も出力せず、
9120 `Canonicalize (正規化) モード'
9121 このモードでは、`readlink' は、指定されたファイルの絶対パスによる
9122 名前を表示する。その絶対パスには、`.' や `..' といった構成要素や
9123 重複するパスの区切り (`/')、シンボリックリンクは含まれない。
9126 readlink [OPTION]... FILE...
9128 デフォルトでは、`readlink' は readlink モードで動作する。
9130 このプログラムでは以下のオプションが使用できる。参照: *note Common
9135 canonicalize モードで動かす。ファイル名を構成する要素のうち、最後の
9136 要素以外のどれかが、存在しなかったり、利用できなかったりすると、
9137 `readlink' は何も出力せず、0 以外の終了コードで終了する。引数の
9141 `--canonicalize-existing'
9142 canonicalize モードで動かす。ファイル名を構成する要素に、存在しな
9143 かったり、利用できなかったりするものが一つでもあれば、`readlink' は
9144 何も出力せず、 0 以外の終了コードで終了する。ファイル名のの末尾に
9145 スラッシュを付けると、その名前はディレクトリであるという指定になる。
9148 `--canonicalize-missing'
9149 canonicalize モードで動かす。ファイル名を構成する要素に、存在しな
9150 かったり、利用できなかったりするものがあれば、`readlink' はそれを
9155 FILE が 1 個しか指定されなかったときは、ファイル名同士を区切る
9156 デリミタを出力しない。複数の FILE とともに、このオプションが
9157 指定されたときは、 警告メッセージを出す。
9163 ほとんどのエラーメッセージを出さないようにする。
9174 `readlink' ユーティリティが初めて登場したのは、OpenBSD 2.1. だった。
9176 `realpath' コマンドをオプションなしで使うと、canonicalize モードの
9177 `readlink' と同じ動作をする。
9179 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9182 File: coreutils-ja.info, Node: rmdir invocation, Next: unlink invocation, Prev: readlink invocation, Up: Special file types
9184 12.7 `rmdir': 空のディレクトリを削除する
9185 =====================================================
9187 `rmdir' は、空のディレクトリを削除する。
9191 rmdir [OPTION]... DIRECTORY...
9193 引数 DIRECTORY が実在する空のディレクトリを指していない場合、
9196 このプログラムでは以下のオプションが使用できる。参照: *note Common
9199 `--ignore-fail-on-non-empty'
9200 ディレクトリの削除に失敗しても、その理由が単にディレクトリが空では
9205 DIRECTORY を削除するとき、DIRECTORY を構成する各要素の削除を
9206 試みる。そこで、たとえば、`rmdir -p a/b/c' は、`rmdir a/b/c a/b a'
9207 と同じになる。従って、そうしたディレクトリのどれかが空ではないこと
9208 が判明すると、動作に失敗する。動作に失敗しても、エラーメッセージを
9209 出して失敗のステータスで終了しないようにするには、
9210 `--ignore-fail-on-non-empty' オプションを使えばよい。
9214 DIRECTORY の削除に成功するごとに、その旨メッセージを出す。
9217 空ではないディレクトリを (再帰的に) 削除する方法については、`rm'
9218 コマンドの説明を参照していただきたい。*Note rm invocation::.
9220 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9223 File: coreutils-ja.info, Node: unlink invocation, Prev: rmdir invocation, Up: Special file types
9225 12.8 `unlink': システムコール unlink を使って、ファイルを削除する
9226 ======================================================================================
9228 `unlink' は、指定された 1 個のファイル名の削除を行う。これは、
9229 システムが提供する `unlink' 関数への必要最小のインターフェース
9230 である。*Note Deleting Files: (libc)Deleting Files.
9231 従って、より一般に使われる `rm' コマンドのような、様々な付加機能を
9232 あえて備えていない (*note rm invocation::)。
9238 システムによっては、`unlink' を使って、ディレクトリの名前を削除
9239 できるものもある。また、それができるのは、特権を持ったユーザだけである
9240 システムもある。GNU のシステムでは、`unlink' は、ディレクトリの名前を
9243 `unlink' コマンドは、`--help' と `--version' オプションを認識する。
9244 名前が `-' で始まるファイルを削除するには、名前の前に `./' を付ければ
9245 よい。たとえば、`unlink ./--help' のようにだ。
9247 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9250 File: coreutils-ja.info, Node: Changing file attributes, Next: Disk usage, Prev: Special file types, Up: Top
9253 ******************************
9255 ファイルについては、内容と名前とファイル型 (*note Special file types::)
9256 で、すべてが尽くされるわけではない。ファイルには、他の情報も存在する。
9257 たとえば、所有者 (ユーザ ID)、グループ (グループ ID)、アクセス権
9258 (そのファイルに対して、所有者、グループに属するユーザ、それ以外の
9259 一般ユーザは、それぞれ何ができるのか)、様々なタイムスタンプ、といった
9260 情報も存在するのである。そうしたものは、一まとめにして、ファイルの属性
9261 ("attributes") と呼ばれている。
9263 以下のコマンドは、ファイルの属性を変更する。
9267 * chown invocation:: ファイルの所有者やグループを変更する。
9268 * chgrp invocation:: ファイルのグループを変更する。
9269 * chmod invocation:: アクセス権を変更する。
9270 * touch invocation:: ファイルのタイムスタンプを変更する。
9273 File: coreutils-ja.info, Node: chown invocation, Next: chgrp invocation, Up: Changing file attributes
9275 13.1 `chown': ファイルの所有者やグループを変更する
9276 ====================================================================
9278 `chown' は、指定された各 FILE の所有者や所有グループを NEW-OWNER に
9279 変更する。所有者とグループを、存在する参照用ファイル (reference file)
9280 のそれと同じものに変更することもできる。
9284 chown [OPTION]... {NEW-OWNER | --reference=REF_FILE} FILE...
9286 NEW-OWNER では、新しい所有者やグループを以下のような形で指定する
9287 (`:' の前後に空白を入れてはいけない)。
9289 [OWNER] [ : [GROUP] ]
9294 OWNER (ユーザ名、またはユーザ ID 番号) だけが指定されている場合は、
9295 そのユーザが指定された各ファイルの所有者になる。ファイルの
9299 OWNER の後に、コロンと GROUP (グループ名、またはグループ ID 番号)
9300 が、間に空白をはさまずに続く場合は、ファイルの所有グループも
9304 OWNER の後ろにコロンがあるのみで、グループ名が続かない場合は、
9305 そのユーザがファイルの所有者になり、ファイルのグループは、OWNER
9309 コロンとそれに続く GROUP のみが指定され、所有者が省略されている
9310 場合は、ファイルのグループだけが変更される。この場合、`chown'
9311 は、`chgrp' と同じ動作をするわけだ。
9314 コロンのみが指定されている場合や、NEW-OWNER に何も指定されていない
9315 場合は、所有者もグループも変更されない。
9318 OWNER や GROUP にユーザ ID 番号やグループ ID 番号を使用する場合は、
9319 番号の頭に `+' を付ければ、ID 番号だと明示することができる。 *Note
9320 Disambiguating names and IDs::.
9322 古めのスクリプトの中には、区切りの印として `:' ではなく、`.' を
9323 今だに使っているものがあるかもしれない。POSIX 1003.1-2001 (*note
9324 Standards conformance::) では、これに対するサポートを要求していないが、
9325 後方互換のために、GNU の `chown' では、曖昧さが生じないかぎり、`.' の
9326 使用をサポートしている。とは言え、新しく書くスクリプトでは、`.' の
9327 使用を避けるべきである。他のシステムでも使えるとはかぎらないし、また、
9328 OWNER`.'GROUP という全体が、名前に `.' を含むユーザを指していたり
9331 `chown' コマンドを実行すると、set-user-ID ビットや set-group-ID
9332 ビットが消えてしまうことがある。そうしたことが起きるかどうかは、
9333 裏で動いている `chown' システムコールのポリシーや機能次第であり、
9334 従って、システムによるファイルモードの変更が、`chown' コマンドの
9335 コントロール外になることがあるのだ。しかるべき特権を持ったユーザが
9336 実行した場合や、問題のビットが実行権とは関係のない何か別の機能
9337 (たとえば、強制ロック) を表している場合などでは、`chown' コマンド
9338 を実行しても、そうしたビットが変わらないかもしれない。どうなるか
9339 よくわからない場合は、裏で動いているシステムの動作を調べるとよい。
9341 このプログラムでは以下のオプションが使用できる。参照: *note Common
9346 所有者の変更が実際に行われた各 FILE について、何を実行したかを
9352 所有者を変更できないファイルがあっても、エラーメッセージを出さない。
9355 FILE が OLD-OWNER で指定された属性を現在持っているときにのみ、
9356 その所有者を変更する。OLD-OWNER の書式は、上記の NEW-OWNER と同じ
9357 である。このオプションは、ファイルの不正使用が可能になる時間を
9358 大幅に狭めるという点で、主としてセキュリティの見地から役に立つ。
9359 一例を挙げると、この種のオプションを使わない場合、ユーザの ID
9360 番号の変更を、そのユーザのファイルに反映させるために、`root' は
9361 次のようなコマンドを実行するかもしれない。
9363 find / -user OLDUSER -print0 | xargs -0 chown -h NEWUSER
9365 しかし、これは危険なことである。なぜなら、`find' が存在する
9366 ファイルの所有者を検査するときと、`chown' が実際に実行される
9367 ときとの間に時間差があり、それはかなり大きいかもしれないからだ。
9368 この時間差を小さくする方法の一つは、ファイルが見つかるごとに、
9371 find / -user OLDUSER -exec chown -h NEWUSER {} \;
9373 しかし、動作の対象になるファイルがたくさんあると、この方法は
9374 非常に時間がかかる。`--from=OLD-OWNER' オプションを使う方が、
9375 完璧とまでは言えないにしても、より安全である (時間差がさらに
9378 chown -h -R --from=OLDUSER NEWUSER /
9381 シンボリックリンクそのものを動作の対象とせず、リンクが指している
9382 ものを動作の対象にする。これがデフォルトである。
9386 シンボリックリンクが指しているものではなく、シンボリックリンク
9387 そのものを動作の対象にする。このモードは、システムコール `lchown'
9388 に依存している。システムコール `lchown' を提供していないシステム
9389 では、コマンドラインで指定されたファイルがシンボリックリンクだと、
9390 `chown' は実行に失敗する。なお、再帰的にディレクトリ階層をたどって
9391 いる際にシンボリックリンクに出会っても、デフォルトでは診断メッセージ
9392 を表示しない。ただし、`--verbose' を指定している場合は別なので、
9396 ルートディレクトリ (`/') を再帰的に変更しようとすると、
9397 エラーになる。`--recursive' オプションを指定していない場合、
9398 このオプションは効果がない。 *Note Treating / specially::.
9400 `--no-preserve-root'
9401 `--preserve-root' オプションが前にあれば、その効果を無効にする。
9402 *Note Treating / specially::.
9404 `--reference=REF_FILE'
9405 各 FILE の所有者とグループを REF_FILE のそれと同じものに変更する。
9406 REF_FILE がシンボリックリンクの場合は、シンボリックリンクの
9407 所有者とグループではなく、リンクが指しているファイルの所有者と
9412 処理したすべてのファイルについてメッセージを表示する。システム
9413 コール `lchown' を持っていないシステムで、再帰的にディレクトリ
9414 階層をたどっている際にシンボリックリンクに出会った場合、
9415 `--no-dereference' が有効になっていれば、「シンボリックリンクも
9416 その参照先も変更しない」というメッセージを出す。
9420 ディレクトリとその中身の所有者を再帰的に変更する。
9423 `--recursive' (`-R') オプションが指定されている場合に、コマンド
9424 ラインで指定された引数がディレクトリへのシンボリックリンクならば、
9425 それをたどる。 *Note Traversing symlinks::.
9428 ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
9429 リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
9433 シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
9434 どれも指定されていないときの、デフォルトである。 *Note Traversing
9438 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9442 # /u の所有者を "root" に変更する。
9445 # 同様だが、グループも "staff" に変更する。
9448 # /u 及び、それ以下にあるファイルの所有者を "root" に変更する。
9452 File: coreutils-ja.info, Node: chgrp invocation, Next: chmod invocation, Prev: chown invocation, Up: Changing file attributes
9454 13.2 `chgrp': ファイルの所有グループを変更する
9455 ==============================================================
9457 `chgrp' は、指定された各 FILE の所有グループを GROUP に変更する (GROUP
9458 は、グループ名でもグループ ID 番号でもよい)。所有グループを、存在する
9459 参照用ファイル (reference file) のグループと同じものに変更することも
9464 chgrp [OPTION]... {GROUP | --reference=REF_FILE} FILE...
9466 GROUP にグループ ID 番号を使用する場合は、番号の頭に `+' を付ければ、
9467 ID 番号だと明示することができる。 *Note Disambiguating names and IDs::.
9469 このプログラムでは以下のオプションが使用できる。参照: *note Common
9474 グループの変更が実際に行われた各 FILE について、何を実行したかを
9480 グループを変更できないファイルがあっても、エラーメッセージを
9484 シンボリックリンクそのものを動作の対象とせず、リンクが指している
9485 ものを動作の対象にする。これがデフォルトである。
9489 シンボリックリンクが指しているものではなく、シンボリックリンク
9490 そのものを動作の対象にする。このモードは、システムコール `lchown'
9491 に依存している。システムコール `lchown' を提供していないシステム
9492 では、コマンドラインで指定されたファイルがシンボリックリンクだと、
9493 `chgrp' は実行に失敗する。なお、再帰的にディレクトリ階層をたどって
9494 いる際にシンボリックリンクに出会っても、デフォルトでは診断メッセージ
9495 を表示しない。ただし、`--verbose' を指定している場合は別なので、
9499 ルートディレクトリ (`/') を再帰的に変更しようとすると、
9500 エラーになる。`--recursive' オプションを指定していない場合、
9501 このオプションは効果がない。 *Note Treating / specially::.
9503 `--no-preserve-root'
9504 `--preserve-root' オプションが前にあれば、その効果を無効にする。
9505 *Note Treating / specially::.
9507 `--reference=REF_FILE'
9508 各 FILE のグループを REF_FILE のグループと同じものに変更する。
9509 REF_FILE がシンボリックリンクの場合は、シンボリックリンクの
9510 グループではなく、リンクが指しているファイルのグループを使用する。
9514 処理したすべてのファイルについてメッセージを表示する。システム
9515 コール `lchown' を持っていないシステムで、再帰的にディレクトリ
9516 階層をたどっている際にシンボリックリンクに出会った場合、
9517 `--no-dereference' が有効になっていれば、「シンボリックリンクも
9518 その参照先も変更しない」というメッセージを出す。
9522 ディレクトリとその中身の所有グループを再帰的に変更する。
9525 `--recursive' (`-R') オプションが指定されている場合に、コマンド
9526 ラインで指定された引数がディレクトリへのシンボリックリンクならば、
9527 それをたどる。 *Note Traversing symlinks::.
9530 ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
9531 リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
9535 シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
9536 どれも指定されていないときの、デフォルトである。 *Note Traversing
9540 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9544 # /u のグループを "staff" に変更する。
9547 # /u 及び、それ以下にあるファイルのグループを "staff" に変更する。
9551 File: coreutils-ja.info, Node: chmod invocation, Next: touch invocation, Prev: chgrp invocation, Up: Changing file attributes
9553 13.3 `chmod': アクセス権を変更する
9554 ============================================
9556 `chmod' は、名前を指定したファイルのアクセス権を変更する。
9560 chmod [OPTION]... {MODE | --reference=REF_FILE} FILE...
9562 `chmod' コマンドがシンボリックリンクのアクセス権を変更することは
9563 ない。`chmod' システムコールがシンボリックリンクのアクセス権を変更
9564 できないからである。シンボリックリンクのアクセス権が利用されることは
9565 全くないので、この制限は問題にならない。とは言え、コマンドラインで
9566 指定された FILE が、シンボリックリンクだということはあるだろうが、
9567 そうした場合、`chmod' は、指定された各シンボリックリンクが参照して
9568 いるファイルのアクセス権を変更する。それに対して、ディレクトリを
9569 再帰的にたどっている最中にシンボリックリンクに出会った場合は、 `chmod'
9572 `chmod' の実行に成功したとき、通常ファイルの set-group-ID ビットが
9573 消えることがあるが、それは、ファイルのグループ ID が、`chmod' を実行
9574 したユーザの実効グループ ID や、補助グループ ID の一つに一致しなかった
9575 場合である。もっとも、そのユーザがしかるべき特権を持っている場合には、
9576 set-group-ID ビットが消えることはない。また、制限事項が他にも存在して、
9577 指定した MODE 中や REF_FILE の、set-user-ID ビットや set-group-ID
9578 ビットが無視されることもある。そうした動作は、裏で動いている `chmod'
9579 システムコールのポリシーや機能次第なのだ。どうなるかよくわからない
9580 場合には、裏で動いているシステムの動作を調べればよい。
9582 MODE には、ファイルの新しいモードビット (訳注: すなわち、アクセス
9583 権) を指定する。詳細については、「ファイルの許可属性」の章を参照して
9584 いただきたい (*note File permissions::)。MODE を指定するとき、MODE を
9585 どうしても `-' で始めたいのなら、前に `--' を置いた方がよい。たとえば、
9586 `chmod -- -w file' のようにだ。とは言え、たいていの場合、`chmod a-w
9587 file' の方が望ましい。なお、`chmod -w file' (`--' がない) が `chmod a-w
9588 file' と別の動作になる場合には、警告が出る。
9590 このプログラムでは以下のオプションが使用できる。参照: *note Common
9595 アクセス権の変更が実際に行われた各 FILE について、何を実行したかを
9601 アクセス権が変更できないファイルがあっても、エラーメッセージを
9605 ルートディレクトリ (`/') を再帰的に変更しようとすると、
9606 エラーになる。`--recursive' オプションを指定していない場合、
9607 このオプションは効果がない。 *Note Treating / specially::.
9609 `--no-preserve-root'
9610 `--preserve-root' オプションが前にあれば、その効果を無効にする。
9611 *Note Treating / specially::.
9615 すべての FILE について、何を実行し、何を実行しなかったかを詳しく
9618 `--reference=REF_FILE'
9619 各 FILE のモードを REF_FILE のそれと同じものに変更する。 *Note
9620 File permissions::. REF_FILE がシンボリックリンクの場合は、
9621 シンボリックリンクのモードではなく、リンクが参照しているファイルの
9626 ディレクトリとその中身のアクセス権を再帰的に変更する。
9629 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9632 File: coreutils-ja.info, Node: touch invocation, Prev: chmod invocation, Up: Changing file attributes
9634 13.4 `touch': ファイルのタイムスタンプを変更する
9635 =================================================================
9637 `touch' は指定されたファイルのアクセス日時 (access time) や更新日時
9638 (modification time) を変更する。
9642 touch [OPTION]... FILE...
9644 引数 FILE に存在しないファイルを指定すると、空のファイルが作成
9645 される。ただし、`--no-create' (`-c') や `--no-dereference' (`-h') が
9648 引数 FILE が `-' という文字列の場合は、特別な扱いする。`touch' は、
9649 標準出力に結びついているファイルの日時を変更するのである。
9651 `touch' は、デフォルトではファイルのタイムスタンプを現在の日時に
9652 セットする。`touch' はオペランドを左から右へと順番に処理するので、
9653 生成されたタイムスタンプが、前後のオペランドで一致しないこともある。
9654 また、「現在」とはいつかを決めるのは、プラットフォーム次第である。
9655 ネットワーク・ファイルシステムを使用しているプラットフォームでは、
9656 オペレーティング・システムとファイルシステムとで別のクロックを使用
9657 していることも珍しくない。`touch' は通常、デフォルトではファイル
9658 システムのクロックを使用するので、クロックのずれのために、生成された
9659 ファイルのタイムスタンプが、あるプログラムにとっては「未来」に
9660 見えたり、「過去」に見えたりすることがある。
9662 `touch' コマンドは、ファイルのタイムスタンプを、ユーザが指定した
9663 日時よりも精度が高くならない範囲で、表現できる最大の値にセットする。
9664 この値がユーザが指定した日時と違うことがあるが、それにはいくつかの
9665 理由がある。第一に、ユーザが指定した日時が、サポートされている精度を
9666 越えていることがある。第二に、ファイルシステムが、日時のタイプに
9667 よって別の精度を使っていることがある。第三に、ファイルのタイム
9668 スタンプが、オペレーティング・システムのタイムスタンプとは別の精度を
9669 使っていることがある。第四に、オペレーティング・システムでタイム
9670 スタンプの更新に使用されている基本データ型が、さらに違う精度を採用
9671 していることがある。そんなわけで、理屈の上では、たとえば、ファイル
9672 システムでは、アクセス日時には 10 マイクロ秒の精度を、更新日時には 100
9673 ナノ秒の精度を使用し、オペレーティング・システムの方では、現在の
9674 時刻にはナノ秒の精度を、`touch' がファイルのタイムスタンプを任意の
9675 値に設定するために使う基本データ型には、マイクロ秒の精度を使用して
9678 タイムスタンプを現在の時刻にセットする場合には、ユーザが所有して
9679 いないファイルでも、書き込み権限さえ持っていれば、`touch' はその
9680 タイムスタンプを変更することができる。しかし、現在の時刻以外にセット
9681 するには、ユーザはそのファイルを所有していなければならない。古い
9682 システムの中には、制限がさらに厳しいものもある。たとえば、アクセス
9683 日時と更新日時の両方を現在の時刻にセットするとき以外、対象となる
9684 ファイルを所有していなければならないといった具合だ。
9686 `touch' が提供するオプションを使えば、ファイルの 2 種類の日時 --
9687 最終アクセス日時と最終更新日時 -- を変更することができるが、標準の
9688 日時には、実はそのほかに 3 番目のものがある。すなわち、inode の変更日時
9689 (inode change time) だ。これは、ファイルの `ctime' と呼ばれることが
9690 多い。inode の変更日時は、ファイルのメタ情報が最後に変更された日時を
9691 表している。メタ情報の変更のよくある例の一つは、ファイルのアクセス権
9692 の変更である。アクセス権の変更では、ファイルにアクセスするわけではない
9693 ので、atime (アクセス日時) は変化しないし、またファイルの内容を変更
9694 するわけでもないので、mtime (更新日時) も変化しない。しかし、ファイル
9695 そのものに関する何ものかが変化しているわけであり、それはどこかに記録
9696 されなければならない。まさにそれが、inode の ctime フィールドの役割
9697 なのだ。たとえば、バックアップ・プログラムが、ファイルのアクセス権に
9698 変更があった場合も含めて、ファイルのコピーを最新に保つことができる
9699 ようにするには、ctime が不可欠である。ファイルの ctime は変更するが、
9700 他の日時には影響を及ぼさない別の操作には、ファイル名の変更がある。
9701 なお、いかなる場合であれ、通常の操作では、ユーザが ctime フィールドを
9702 自分で指定する値に変更することはできない。オペーレーティングシステムや
9703 ファイルシステムの中には、4 番目の日時をサポートしているものもある。
9704 すなわち、作成日時 (birth time) であり、ファイルが最初に作られた日時だ。
9705 名前からして当然だが、このタイムスタンプが変更されることはない。
9707 タイムスタンプは、タイムゾーンのルールに従うが、そのルールを指定して
9708 いるのは、環境変数 `TZ' である。`TZ' が設定されていない場合は、システム
9709 のデフォルトのルールに従う。 *Note Specifying the Time Zone with `TZ':
9710 (libc)TZ Variable. なお、UTC のタイムスタンプを使えば、夏 (冬) 時間への
9713 このプログラムでは以下のオプションが使用できる。参照: *note Common
9724 存在しないファイルについて警告を出さず、ファイルの作成もしない。
9728 現在の日時の代わりに TIME を使用する。TIME には、月の名前、
9729 タイムゾーン、`am' や `pm'、`yesterday' なども使うことができる。
9730 たとえば、`--date="2004-02-27 14:19:13.489392193 +0530"' とすると、
9731 UTC より 5 時間 30 分東のタイムゾーンで、2004 年 2 月 27 日 午後 2
9732 時 19 分 13 秒 から 489,392,193 ナノ秒経過した瞬間を指定することに
9733 なる。*Note Date input formats::. 精度の高いタイムスタンプを
9734 サポートしていないファイルシステムでは、精度の超過分は単に無視
9738 何もしない。BSD 版の `touch' との互換性のためにある。
9742 シンボリックリンクが参照しているファイルではなく、シンボリック
9743 リンクのタイムスタンプの変更を試みる。このオプションを使用すると、
9744 空のファイルは作成されないが、ファイルが存在しないという警告まで
9745 出ないようにするには、`-c' オプションも併せて使用する必要がある。
9746 すべてのシステムが、シンボリックリンクのタイムスタンプの変更を
9747 サポートしているわけではない。なぜならば、POSIX 2008 までは、
9748 下層で動いているシステムに対して、そうした動作のサポートを要求
9749 していなかったからである。また、システムによっては、シンボリック
9750 リンクは、調べるだけでアクセス日時が変わってしまうので、変更の
9751 結果が後々まで残って観察できるのは、更新日時だけだというものも
9752 ある。なお、このオプションを `-r' オプションと一緒に使用すると、
9753 参照するタイムスタンプが、リンクが指しているファイルからではなく、
9759 更新日時 (modification time) のみ変更する。
9763 現在の日時の代わりに、参照ファイル FILE の日時を使用する。この
9764 オプションを `--date=TIME' (`-d TIME') オプションと組み合わせて
9765 使うと、TIME が相対時間で指定されている場合は、参照ファイル FILE
9766 の日時がその基点となるが、それ以外の場合は、FILE の日時は無視され
9767 る。たとえば、`-r foo -d '-5 seconds'' は、`foo' のタイムスタンプ
9768 より 5 秒前のタイムスタンプを指定している。FILE がシンボリック
9769 リンクの場合は、`-h' が同時に有効になっていないかぎり、参照する
9770 タイムスタンプは、シンボリックリンクの参照先から取得される。
9772 `-t [[CC]YY]MMDDHHMM[.SS]'
9773 現在の日時の代わりに、`-t' オプションの引数を使用する (引数の構成
9774 は、4 桁または 2 桁の年 (省略可)、月、日、時、分、秒 (秒も省略可)
9775 である)。年が 2 桁のみ指定された場合、0 ... 68 の範囲の年ならば、
9776 CC は 20 であり、69 ... 99 の範囲の年では、CC は 19 である。
9777 年が全く指定されない場合は、引数は今年の日付だと解釈される。閏秒に
9778 対応している例外的なシステムでは、SS が `60' のこともありえる。
9781 古めのシステムでは、`touch' は次のような旧式の書式もサポートして
9782 いる。すなわち、`-d', `-r', `-t' のいづれによってもタイムスタンプが指定
9783 されていず、しかも、2 個以上の FILE が指定されていて、最初の FILE が
9784 `MMDDHHMM[YY]' の形を持ち、それが (YY が存在するなら、それを先頭に
9785 移せば) `-t' オプションに対する有効な引数と見なすことができる場合に、
9786 その引数の表している年度が 1969-1999 の範囲にあるならば、その引数を
9787 ファイル名ではなく、他のファイルに適用する日時と解釈する、というもの
9788 である。この旧式の動作は、環境変数 `_POSIX2_VERSION' によって有効に
9789 したり、無効にしたりできるが (*note Standards conformance::)、移植を
9790 考慮したスクリプトでは、動作がこの環境変数に依存するコマンドの使用は
9791 避けるべきである。たとえば、二通りの解釈ができる `touch 12312359 main.c'
9792 を使うより、`touch ./12312359 main.c' や `touch -t 12312359 main.c' を
9795 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
9798 File: coreutils-ja.info, Node: Disk usage, Next: Printing text, Prev: Changing file attributes, Up: Top
9801 ************************
9803 データをいくらでも無限に入れることのできるディスクはない。この章で説明
9804 するコマンドには、使用しているディスク容量や利用可能なディスク容量を報告
9805 するもの、それ以外のファイル情報やファイルステータス情報を報告するもの、
9806 それに、バッファの内容をディスクに書き込むものがある。
9810 * df invocation:: ファイルシステムのディスク使用量を報告する。
9811 * du invocation:: ファイルのディスク使用量を概算する。
9812 * stat invocation:: ファイルやファイルシステムのステータスを報告する。
9813 * sync invocation:: メモリとディスクを同期させる。
9814 * truncate invocation:: ファイルサイズの短縮・伸長を行う。
9817 File: coreutils-ja.info, Node: df invocation, Next: du invocation, Up: Disk usage
9819 14.1 `df': ファイルシステムのディスク使用状態を報告する
9820 =============================================================================
9822 `df' は、ファイルシステムごとに、使用されているディスク容量と利用可能な
9827 df [OPTION]... [FILE]...
9829 引数を指定しないと、`df' は、現在マウントされているすべてのファイル
9830 システム (ファイルシステムのタイプを問わない) について、使用されている
9831 ディスク容量と、利用可能なディスク容量を報告する。引数が指定されている
9832 場合は、引数として指定された各 FILE が存在するファイルシステムについて
9835 通常、ディスク容量は 1024 バイトを 1 単位として表示するが、この動作は
9836 変更することができる (*note Block size::)。なお、小数点以下は切り上げて
9839 bind マウントについては、引数が指定されていない場合に `df' が
9840 表示するのは、そのデバイスに関する統計情報のうち、ファイルシステムの
9841 リスト中で (すなわち、MTAB 中で) マウントポイントの名前が最も短い
9842 ものに関する情報のみである。すなわち、`-a' オプションが指定されて
9843 いないときは、情報が重複するエントリは表示しない。
9845 同じ理屈で、ダミーの擬似デバイスについては、そのマウントポイントに
9846 対する別のマウントエントリが存在し、それが実在のブロックデバイスの
9847 ものであり、しかもデバイス番号が同じ場合、`df' は擬似デバイスの
9848 マウントエントリの方は省略する。たとえば、ブート初期に作成される
9849 擬似ファイルシステムの `rootfs' は、実際のルートデバイスがすでに
9850 マウントされていれば、デフォルトでは表示されない。
9852 引数 FILE がスペシャルファイルに還元され、そのスペシャルファイル
9853 上に存在するファイルシステムが現在マウントされている場合、`df' が
9854 表示するのは、そのファイルシステムの利用可能な容量であって、デバイス・
9855 ノードが存在するファイルシステムの利用可能な容量ではない。また、GNU の
9856 `df' は、マウントされていないファイルシステムのディスク使用量を測定
9857 しようとはしない。なぜなら、ほとんどのファイルシステムにおいて、そういう
9858 ことを行うには、ファイルシステムの構造について他と全く共通性のない内奥の
9861 (訳注: このパラグラフの前半については、実際にはもう少し複雑である。
9862 確かに、/dev/sda5 が /home にマウントされているとき (ついでに、
9863 /dev/HOME が /dev/sda5 のシンボリックリンクだとしよう)、`df /dev/sda5'
9864 や `df /dev/HOME' は、/dev/sda5 の情報を表示する。しかし、
9865 ルートデバイスの場合は、事情が異なる。訳者の手元の linux-3.2.0 に
9866 coreutils-8.22 という環境で /dev/sda3 が / にマウントされている場合、
9867 `df /dev/sda3' は、/dev/sda3 上にあるファイルシステムではなく、/dev に
9868 マウントされた udev ファイルシステムの情報を表示するのである。カーネルや
9869 coreutils のバージョンによって動作が微妙に違うかもしれないので、実際に
9872 このプログラムでは以下のオプションが使用できる。参照: *note Common
9877 一覧表示にダミーのファイルシステムを含める。そうしたものは、デフォルト
9878 の表示では省略されている。たいていの場合、そうしたファイルシステムは、
9879 たとえばオートマウンタのエントリのような、特殊な用途のための擬似
9884 SIZE によって単位の大きさを変更してから、サイズを表示する (*note
9885 Block size::)。 たとえば、`-BG' と指定すれば、1,073,741,824 バイト
9889 すべての引数を処理した後で、全引数からなる総計を表示する。
9890 このオプションを使用すれば、ディスクの容量、使用した量、使用可能
9891 な量について、リストされたすべてのデバイスを合わせた総量を知ること
9894 総計の行において `df' は SOURCE の列に `"total"' と表示し、 TARGET
9895 の列に `"-"' という文字を表示する (訳注: SOURCE, TARGET などの列に
9896 ついては、`--output' の説明を参照していただきたい)。SOURCE の列が
9897 存在しない場合は、TARGET の列が存在すれば、`df' は TARGET の列に
9902 各サイズの後ろに、メビバイトなら `M' といった、大きさを示す文字を
9903 付ける。1000 ではなく、1024 の累乗が使われるので、`M' は 1,048,576
9904 バイトを表している。このオプションは、`--block-size=human-readable'
9905 と同じである。1000 の累乗が使いたければ、"`--si' オプションを使用
9913 ブロックの使用量ではなく、inode の使用情報を一覧表示する。inode
9914 (index node の略称) には、ファイルの所有者、許可属性、タイム
9915 スタンプ、ディスク上の位置といった、ファイルに関する情報が含まれ
9919 デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024
9920 バイトでサイズを表示する (*note Block size::)。このオプションは
9921 `--block-size=1K' に等しい。
9925 一覧表示するのをローカルのファイルシステムに限定する。デフォルトでは、
9926 リモートのファイルシステムも表示される。
9929 使用量に関するデータを取得する前に `sync' システムコールを実行
9930 しない。そのため、多数のディスクを搭載しているシステムでは、`df'
9931 の実行速度が目に見えて向上するが、システムによっては (特に SunOS
9932 では)、出力結果がほんの少し古いものになるかもしれない。これが
9936 `--output[=FIELD_LIST]'
9937 FIELD_LIST で定義した出力フォーマットを使用する。FIELD_LIST を省略
9938 した場合は、すべてのフィールドを表示する。後者の場合、列の順序は、
9939 以下に挙げているフィールドの説明の順序と同じである。
9941 `--output' オプションは、`-i', `-P', `-T' のどのオプションとも
9944 FIELD_LIST は、`df' の出力に含まれることになる、コンマで区切った
9945 列のリストであり、このリストによって出力する列の順序を制御する
9946 ことができる。従って、各フィールドは任意の場所に置くことができるが、
9949 FIELD_LIST で使える有効なフィールドの名前は、次のものである。
9951 マウントポイントにマウントする対象。たいていはデバイス。
9966 IUSED を ITOTAL で割ったパーセント表示。
9978 USED を SIZE で割ったパーセント表示。
9981 ファイル名をコマンドラインで指定した場合、そのファイル名。
9982 (coreutils-8.22 の新機能)
9987 ブロックや inode の統計情報を表すフィールドは、他の場合と同じく、
9988 `-h' のような数値の大きさを調整するオプションの影響を受ける。
9990 FIELD_LIST の定義は、複数の `--output' オプションを使用して、
9994 # TARGET (すなわち、マウントポイント) に続けて、そのブロックや
9995 # inode の使用状態をパーセントで表示する。
9996 df --out=target --output=pcent,ipcent
9998 # 表示できるすべてのフィールドを表示する。
10003 POSIX の出力形式を使用する。デフォルトの形式に似ているが、次の
10006 1. 各ファイルシステムついての情報が、常にぴったり 1 行で表示
10007 され、マウントされるデバイスが、それのみで 1 行を占めることが
10008 ない。そのため、マウントされるデバイスの名前の長さが 20 字を
10009 越えると (たとえば、ネットワーク・マウントの場合にそういう
10010 ことがありそうだ)、各項目の列がずれることになる。
10012 2. ヘッダ行の項目名が、POSIX に準拠したものになる。
10014 3. デフォルトのブロックサイズや出力の書式が、環境変数
10015 `DF_BLOCK_SIZE', `BLOCK_SIZE', `BLOCKSIZE' の影響を受けなく
10016 なる。とは言え、デフォルトのブロックサイズについては、
10017 `POSIXLY_CORRECT' の影響だけは、やはり受ける。すなわち、
10018 `POSIXLY_CORRECT' が設定されていれば、ブロックサイズは 512
10019 バイトであり、さもなければ 1024 バイトである。 *Note Block
10023 各サイズにの後ろに、メガバイトなら `M' といった、SI 形式の略号
10024 を付ける。1024 ではなく、1000 の累乗が使用されるので、`M' は
10025 1,000,000 バイトを表している。このオプションは、`--block-size=si'
10026 と同じことである。1024 の累乗が使いたければ、`-h' や
10027 `--human-readable' を使用すればよい。
10030 使用量に関するデータを取得する前に `sync' システムコールを実行
10031 する。システムによっては (特に SunOS では)、そうすることでより
10032 最近の結果が得られるが、一般的に言って、このオプションを使用すると、
10033 `df' の実行速度がかなり低下する。ファイルシステムをたくさんマウント
10034 している場合や、作業が頻繁に行われているファイルシステムでは、
10039 一覧表示するファイルシステムを FSTYPE というタイプに限定する。
10040 `-t' オプションを複数回使うことによって、複数のタイプのファイル
10041 システムを指定することができる。デフォルトでは、いかなるタイプの
10046 各ファイルシステムのタイプを表示する。このとき表示されるタイプは、
10047 `-t' や `-x' オプションを使って、一覧表示に含めたり、一覧表示から
10048 除外したりできるタイプと同じものである。すなわち、表示されるタイプ
10049 は何であれ、システムによってサポートされているということだ。以下に、
10050 よく見受けられるタイプの名前をいくつか挙げておく (当然ながら、
10054 NFS ファイルシステム。すなわち、ネットワーク越しにほかの
10055 マシンからマウントしているファイルシステム。このタイプ名は、
10056 あらゆるシステムで共通して使われているようである。
10058 `ext2, ext3, ext4, xfs, btrfs...'
10059 ローカルでマウントしているハードディスクのファイルシステム。
10060 (ローカルのマウントでは、システムが複数のタイプをサポートして
10061 いることもある。たとえば、Linux がそうだ。)
10064 CD や DVD ドライブのファイルシステム。HP-UX は `cdfs' を
10065 使用し、ほかのシステムのほとんどは `iso9660' を使用している。
10068 MS-Windows や MS-DOS で使用されるファイルシステム。
10072 `--exclude-type=FSTYPE'
10073 一覧表示するファイルシステムを FSTYPE というタイプ以外のものに
10074 限定する。`-x' オプションを複数回使うことによって、複数のタイプの
10075 ファイルシステムを除外することができる。デフォルトでは、いかなる
10076 タイプのファイルシステムも除外しない。
10079 無視される。System V 版の `df' との互換のためにある。
10082 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。 実行に失敗
10083 しても、何もメッセージが出力されないことがある。そこで、そうしたときに、
10084 ディレクトリ DIR が `ext3' や `reiserfs' というタイプのファイルシステム
10085 上にあるかどうかを調べるには、`df -t ext3 -t reiserfs DIR' といった
10086 コマンドを実行して、終了ステータスを検査すればよい。
10088 ファイルシステムのタイプを判断するには、ファイルシステムのリスト
10089 (MTAB) が必要になる。従って、ファイルシステムのリストを読み込む
10090 ことができないときに、ファイル名引数とともに `-a', `-l', `-t', `-x'
10091 といったオプションが一つ以上使われた場合、`df' は実行に失敗する。
10094 File: coreutils-ja.info, Node: du invocation, Next: stat invocation, Prev: df invocation, Up: Disk usage
10096 14.2 `du': ファイルのディスク使用量を概算する
10097 ==============================================================
10099 `du' は、指定したファイルのディスク使用量を報告する。引数がディレ
10100 クトリの場合は、サブディレクトリごとのディスク使用量も報告する。
10104 du [OPTION]... [FILE]...
10106 引数を指定しないと、`du' は、カレントディレクトリのディスク使用量を
10107 報告する。通常、ディスク使用量は 1024 バイトを 1 単位として表示するが、
10108 この動作は変更することができる (*note Block size::)。なお、小数点以下
10111 2 個以上のハードリンクが同一のファイルを指している場合は、そのうちの
10112 1 個のみが計算の対象になる。引数 FILE の順番によって、どのリンクが計算の
10113 対象になるかが変わってくるので、引数の順番を変更すると、`du' が出力する
10116 このプログラムでは以下のオプションが使用できる。参照: *note Common
10121 各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。この
10122 オプションを使用すると、`du' の出力するデータに、途中に改行を
10123 挟むものがあっても、他のプログラムがその出力を解析できるようになる。
10127 ディレクトリだけでなく、すべてのファイルについて使用量を表示する。
10130 ディスクの使用量ではなく、見かけのサイズを表示する。ファイルの
10131 見かけのサイズとは、通常ファイルに対して `wc -c'、あるいは、もっと
10132 普通に `ls -l --block-size=1' や `stat --format=%s' を実行したとき
10133 に返されるバイト数である。たとえば、`zoo' という単語を改行を付けず
10134 に書き込んだファイルなら、当然ながら、見かけのサイズは 3 になる。
10135 だが、そうした小さなファイルも、そのファイルが存在するファイル
10136 システムのタイプと設定次第で、0 から 16 KiB、あるいは、それ以上の
10137 ディスクスペースを占有するかもしれないのだ。もっとも、穴空きファ
10138 イル (sparse file) の場合は事情が別である。たとえば、
10140 dd bs=1 seek=2GiB if=/dev/null of=big
10142 上記のコマンドで作成した穴空きファイルは、見かけのサイズこそ 2 GiB
10143 だが、最近のほとんどのシステムでは、実際に使用するディスクスペースは、
10147 `--block-size=SIZE'
10148 SIZE によって単位の大きさを変更してから、サイズを表示する (*note
10149 Block size::)。 たとえば、`-BG' と指定すれば、1,073,741,824 バイト
10150 を 1 単位として、サイズを表示する。
10154 `--apparent-size --block-size=1' と同じ。
10158 すべての引数を処理した後で、全引数からなる総計を表示する。
10159 このオプションを使用すれば、指定したファイルやディレクトリについて
10160 ディスク使用量の合計を知ることができる。
10163 `--dereference-args'
10164 コマンドラインで引数に指定されたシンボリックリンクの参照を行う。
10165 コマンドライン引数以外のシンボリックリンクには影響がない。この
10166 オプションは、`/usr/tmp' のような、シンボリックリンクであることが
10167 多いディレクトリのディスク使用量を調べるときに、重宝である。
10170 `--max-depth=DEPTH'
10171 ディレクトリ階層の基点 (訳注: 要するに、コマンドラインで指定
10172 されたディレクトリ) から最大 DEPTH 段階下がったところまでにある
10173 各ディレクトリについて、ディスク使用量の合計を表示する (`--all'
10174 オプションが付いているときは、ファイルについても表示する)。基点
10175 自体は段階 0 なので、`du --max-depth=0' は `du -s' と同じことに
10178 `--files0-from=FILE'
10179 コマンドラインで名前を指定されたファイルの処理を行わない。その代わり
10180 に、ファイル FILE に名前が書き込まれているファイルの処理を行う。
10181 なお、FILE 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL)
10182 で終端されていなければならない。このオプションは、ファイル名のリスト
10183 が長すぎて、コマンドライン長の上限を超過してしまいそうなときに、
10184 便利である。そうした場合、`du' を `xargs' 経由で実行するのは、
10185 望ましくない。なぜなら、`xargs' はファイルのリストをいくつかの部分
10186 に分割して `du' に渡すので、`du' はリスト全体の `--total' (`-c')
10187 オプションを使用した結果ではなく、 部分リストごとの `--total'
10188 (`-c') オプションを使用した結果を表示してしまうからである。 ASCII
10189 NUL で終端されたファイル名のリストを得る方法の一つは、 GNU `find'
10190 に `-print0' を付けて使うことである。FILE に `-' を指定すれば、
10191 ASCII NUL で終端されたファイル名を標準入力から読み込むことが
10195 `--dereference-args' (`-D') と同じである。
10199 各サイズの後ろに、メビバイトなら `M' といった、大きさを示す文字を
10200 付ける。1000 ではなく、1024 の累乗が使われるので、`M' は 1,048,576
10201 バイトを表している。このオプションは、`--block-size=human-readable'
10202 と同じである。1000 の累乗が使いたければ、"`--si' オプションを使用
10206 ブロックの使用状態ではなく、inode の使用状態をリストする。
10207 このオプションが役に立つのは、多くのファイルを収納しているために、
10208 ファイルシステムの inode スペースを大量に消費しているディレクトリ
10209 を探すときである (`df' の `--inodes' オプションも参照すること)。
10210 このオプションは、`-a', `-c', `-h', `-l', `-s', `-S', `-t', `-x'
10211 といったオプションと組み合わせて使ってもよい。しかし、ブロック
10212 サイズ関係の他のオプション、たとえば、`-b', `-m', `--apparent-size'
10213 などを渡しても、無視される。(coreutils-8.22 の新機能)
10216 デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024
10217 バイトでサイズを表示する (*note Block size::)。このオプションは
10218 `--block-size=1K' に等しい。
10222 シンボリックリンクの参照を行う (リンク自体のディスク使用量では
10223 なく、リンクが指しているファイルやディレクトリの使用量を表示する)。
10227 すべてのファイルを計算に入れる。すなわち、(ハードリンクとして) 前に
10231 デフォルトのブロックサイズを変更し、1 ブロック 1,048,576 バイトの
10232 ブロック数でサイズを表示する (*note Block size::)。
10233 このオプションは、`--block-size=1M' と同じである。
10237 `du' が出会った各シンボリックリンクについて、シンボリック自体の
10242 通常、(`--summarize' オプションを使用しない場合の) `du' の出力に
10243 おいて、D というディレクトリ名の隣に表示されるサイズは、D 以下に
10244 あるすべてのエントリのサイズの合計に、D 自体のサイズを加えたもの
10245 である。それに対して、`--separate-dirs' オプションを指定すると、 D
10246 というディレクトリ名に対して報告されるサイズは、いかなるサブ
10247 ディレクトリのサイズも含まないものになる。
10250 各サイズにの後ろに、メガバイトなら `M' といった、SI 形式の略号
10251 を付ける。1024 ではなく、1000 の累乗が使用されるので、`M' は
10252 1,000,000 バイトを表している。このオプションは、`--block-size=si'
10253 と同じことである。1024 の累乗が使いたければ、`-h' や
10254 `--human-readable' を使用すればよい。
10258 各引数についてその合計ディスク使用量のみを表示する (訳注:
10259 すなわち、 引数がディレクトリの場合、そのサブディレクトリごとの
10264 指定された SIZE を目安にして、表示する対象を取捨する。SIZE は、
10265 通常モードではディスク使用量を指し (*note Block size::)、`--inodes'
10266 オプションと組み合わせた場合は inode 使用数を指す。(訳注: ディスク
10267 使用量の目安として使う場合、SIZE の単位は、デフォルトではバイト
10268 である。もちろん、K, M, G などの接尾辞を付けることもできる。)
10270 SIZE が正の数ならば、`du' はサイズがそれ以上である対象のみを
10273 SIZE が負の数ならば、`du' はサイズがそれ以下である対象のみを
10276 GNU の `find' を使えば、特定のサイズのファイルを見つけることが
10277 できる。それに対して、`du' の `--threshold' を使うと、ディレクトリ
10278 も指定サイズに基づいて篩い分けることができるのである。
10280 `--threshold' オプションは、`--apparent-size' オプションと
10281 組み合わせることができるのに留意していただきたい。その場合は、
10282 見かけのサイズに基づいて表示対象を絞り込むことになる。
10284 `--threshold' オプションは、`--inodes' オプションと組み合わせる
10285 こともできる。その場合は、inode 数に基づいて表示対象を絞り込む
10288 200 メガバイト以上のサイズを持つディレクトリを捜すには、
10289 `--threshold' オプションを次のように使えばよいだろう。
10291 du --threshold=200MB
10293 見かけのサイズが 500 バイト以下のディレクトリやファイルを捜すには
10294 (`-a' を使っていることに注意)、`--threshold' を次のように使えば
10297 du -a -t -500 --apparent-size
10299 ルートファイルシステム上にあるディレクトリで、20000 以上の inode
10300 を使用しているものを、/ 以下のディレクトリ階層で捜すには、
10301 `--threshold' を次のように使えばよい。
10303 du --inodes -x --threshold=20000 /
10306 ディレクトリやそのサブディレクトリに存在するファイルの更新日時
10307 (modification time) のうちで最も新しいものを、そのディレクトリの
10310 (訳注: 少し説明が必要だろう。仮に a というディレクトリがあると
10311 する。a 以下にあるファイルのうちで z というファイルの更新日時が
10312 最新だったとしよう (必ずしも a 直下にある必要はなく、a/b/z でも
10313 a/b/c/z でもよい)。そうすると、`du --time' が a ディレクトリに
10314 対して示すタイムスタンプは、ファイル z の最終更新日時になる。
10315 このオプションや、そのバリエーションである次の二つのオプションは、
10316 あるディレクトリ以下を最後に使用したのはいつかを知るのに便利だ。)
10321 ディレクトリ以下にあるファイルの、更新日時のうちの最新ではなく、
10322 ステータス変更日時 (inode 中の `ctime') のうちで最も新しいものを、
10323 そのディレクトリのタイムスタンプとして表示する。
10325 (訳注: 原文でもこの三つのオプションを等価なものとして並べているが、
10326 訳者としては、`--time=use' と等価なのは、`--time=ctime' ではなく、
10327 `--time=atime' ではないかと思う。ご自分で確かめていただきたい。)
10331 ディレクトリ以下にあるファイルの、更新日時のうちの最新ではなく、
10332 アクセス日時 (inode 中の `atime') のうちで最も新しいものを、その
10333 ディレクトリのタイムスタンプとして表示する。
10335 `--time-style=STYLE'
10336 タイムスタンプを STYLE 形式で表示する。このオプションは、`--time'
10337 オプションと併せて指定したときにのみ効果がある。STYLE は以下の一つ
10341 FORMAT を使って、タイムスタンプを表示する。その場合、FORMAT
10342 は、`date' コマンドの書式引数と同じように解釈される (*note
10343 date invocation::)。 たとえば、`--time-style="+%Y-%m-%d
10344 %H:%M:%S"' と指定すると、 `du' の表示するタイムスタンプは、
10345 `2002-03-30 23:45:56' のようになる。`date' の場合と同様、
10346 FORMAT の解釈は、`LC_TIME' ロケール・カテゴリの影響を受ける。
10349 タイムスタンプを省略なしで表示する。すなわち、ISO 8601 の
10350 日付、時刻、タイムゾーンという書式を nanosecond (10 億分の 1
10351 秒) の精度で使用するわけだ。一例を挙げると、`2002-03-30
10352 23:45:56.477817180 -0700' といった表示になる。この形式は、
10353 `+%Y-%m-%d %H:%M:%S.%N %z' と同じである。
10356 ISO 8601 の書式で日付と時刻を分の単位まで表示する。たとえば、
10357 `2002-03-30 23:45'。このタイムスタンプは、`full-iso' タイム
10358 スタンプより短く、日常作業にはたいてい十分である。この形式は
10359 `+%Y-%m-%d %H:%M' と同じである。
10362 タイムスタンプに ISO 8601 書式の日付を表示する。たとえば、
10363 `2002-03-30' といった具合である。この形式は、`+%Y-%m-%d' と
10366 `--time-style' オプションのデフォルト値は、環境変数 `TIME_STYLE' を
10367 使って指定することができる。`TIME_STYLE' が設定されていない場合、
10368 デフォルトの形式は `long-iso' である。`ls' と共通の `TIME_STYLE' を
10369 使えるようにするため、`+' で始まる `TIME_STYLE' の値が、改行を
10370 含んでいる場合は、改行以後の文字は無視されることになる。また、
10371 `TIME_STYLE' の値が `posix-' で始まる場合、`posix-' は無視される。
10372 さらに、`TIME_STYLE' の値が `locale' の場合、`TIME_STYLE' は無視
10376 `--exclude-from=FILE'
10377 `--exclude' に似ているが、除外するパターンを FILE から 1 行につき
10378 1 パターン読み込む点が違う。FILE が `-' なら、パターンを標準入力
10381 `--exclude=PATTERN'
10382 再帰的な処理を行っているとき、PATTERN にマッチするサブディレクトリ
10383 やファイルをスキップする。たとえば、`du --exclude='*.o'' と指定
10384 すると、名前が `.o' で終わるファイルを除外することになる。
10387 `--one-file-system'
10388 処理される引数が存在するファイルシステムとは別のファイルシステムに
10392 BSD システムでは、HP-UX システムから NFS マウントしているファイルに
10393 ついて、`du' は正確な値の半分のサイズを報告する。逆に、HP-UX システム
10394 では、BSD システムから NFS マウントしているファイルについて、`du' は
10395 正確な値の 2 倍のサイズを報告する。これは HP-UX にある欠陥のせいであり、
10396 HP-UX の `du' プログラムも、そのとばっちりを受けているのである。
10398 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10401 File: coreutils-ja.info, Node: stat invocation, Next: sync invocation, Prev: du invocation, Up: Disk usage
10403 14.3 `stat': ファイルやファイルシステムの状態を報告する
10404 ============================================================================
10406 `stat' は指定されたファイルに関する情報を表示する。
10410 stat [OPTION]... [FILE]...
10412 オプションなしで実行すると、`stat' は指定されたファイルについて
10413 すべての情報を報告する。また、`stat' を使って、指定されたファイルが
10414 存在しているファイルシステムの情報を報告させることもできる。ファイルが
10415 リンクの場合は、リンクが指しているファイルについて情報を提供させること
10418 シェルの組み込み機能の `stat' やエイリアスのために、`stat' に何の
10419 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
10420 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
10421 避けるためには、`env' 経由で `stat' を起動すればよい (すなわち、 `env
10426 `stat' がシンボリックリンクを処理する方法を変更する。この
10427 オプションを付けると、`stat' は、引数中の各シンボリックリンク
10428 が参照しているファイルを操作の対象にする。このオプションがないと、
10429 `stat' が対象にするのは、引数のシンボリックリンクそのものになる。
10433 指定されたファイルそのものについての情報ではなく、そのファイルが
10434 存在しているファイルシステムについての情報を報告する。このオプション
10435 を指定すると、自動的に `-L' オプションも指定される。
10439 デフォルトの書式の代わりに、FORMAT を使用する。FORMAT の末尾には
10440 自動的に改行が付けられるので、下記のようなコマンドを 2 個以上の
10441 FILE オペランドに対して実行すると、各オペランドあたり 1 行の
10443 $ stat --format=%d:%i / /usr
10448 デフォルトの書式の代わりに、FORMAT を使用する。`--format' に似て
10449 いるが、バックスラッシュ・エスケープを解釈して変換する。また、
10450 行末に自動的に改行を付けることもしない。そこで、改行がしたければ、
10451 FORMAT の中で `\n' を指定する必要がある。`--printf' を使って `/'
10452 と `/usr' のデバイス番号と inode 番号を表示するには、こんなふうに
10454 $ stat --printf='%d:%i\n' / /usr
10460 情報を簡潔な形式で表示する。他のプログラムで解析するときに都合がよい。
10463 `--format' や "`--printf' の FORMAT 中で、ファイルに対して使用できる
10466 * %a - 8 進数で表現したアクセス権
10468 * %A - 人間にわかりやすい形式で表現したアクセス権
10470 * %b - 割り当てられているブロック数 (`%B' を参照)
10472 * %B - `%b' の報告で使われる 1 ブロックのバイト数
10474 * %C - ファイルの SELinux セキュリティ・コンテキスト (取得できる場合)
10476 * %d - 10 進数で表現したデバイス番号
10478 * %D - 16 進数で表現したデバイス番号
10480 * %f - 16 進数で表現した Raw モード
10484 * %g - 所有グループの ID 番号
10492 * %m - マウントポイント (下記の説明を参照)
10496 * %N - 引用符で囲んだファイル名。シンボリックリンクなら、参照先も表示
10498 * %o - I/O 転送サイズの最適値の提案
10500 * %s - ファイル全体の大きさ。サイズはバイト数
10502 * %t - 16 進数で表現したメジャー・デバイス番号 (下記参照)
10504 * %T - 16 進数で表現したマイナー・デバイス番号 (下記参照)
10506 * %u - 所有者のユーザ ID 番号
10510 * %w - ファイルの作成日時 (the birth time)。不明の場合は `-' を表示
10512 * %W - Unix 紀元からの秒数で表したファイルの作成日時、または `0'
10514 * %x - 最終アクセス日時 (atime)
10516 * %X - Unix 紀元からの秒数で表した最終アクセス日時
10518 * %y - 最終更新日時 (mtime)
10520 * %Y - Unix 紀元からの秒数で表した最終更新日時
10522 * %z - 最終ステータス変更日時 (ctime)
10524 * %Z - Unix 紀元からの秒数で表した最終ステータス変更日時
10526 `%t' や `%T' という書式指定子は、stat(2) 構造体の st_rdev メンバ
10527 に対応するものであり、従って、キャラクタ・スペシャルファイルや
10528 ブロック・スペシャルファイルに対してしか動作が定義されていない。
10529 システムやファイルタイプによっては、st_rdev が他のものを表現する
10532 `%W', `%X', `%Y', `%Z' では、ピリオドに続けて精度を書くことで、
10533 小数点以下何桁まで表示するかを指定することができる。たとえば、`%.3X'
10534 と指定すると、最終アクセス日時がミリ秒の精度で出力される。ピリオド
10535 だけ指定して、精度を省略すると、`stat' は 9 桁を使用する。従って、
10536 `%.X' は `%.9X' と同じことになるわけだ。なお、余分な精度を捨てる際、
10537 タイムスタンプは負の無限大方向に切り下げられる (訳注: 日常の言葉で
10538 言うと、タイムスタンプのような正の数値の場合、指定された桁数より下の
10539 部分は切り捨てられるということ。以下の例を参照)。
10542 $ stat -c '[%015Y]' /usr
10545 $ stat -c '[%15Y]' /usr
10547 $ stat -c '[%-15Y]' /usr
10550 $ stat -c '[%.3Y]' /usr
10552 $ stat -c '[%.Y]' /usr
10553 [1288929712.114951834]
10555 `%m' によって表示されるマウントポイントは、`df' によるマウント
10556 ポイントの出力とほぼ同じである。ただし、以下の点で異なっている。
10557 * stat はデフォルトでは、シムリンクの参照を行わない (そのためには、
10560 * 引数としてデバイスノードが指定された場合、stat はファイルシステムの
10561 リストを調べて、そのノードを見つけたりはせず、デバイスノードを直接
10562 動作の対象にする (訳注: すなわち、そのデバイス上に存在するファイル
10563 システムのマウントポイントではなく、デバイスノードそのもののマウント
10566 * bind マウントされているファイルについては、stat はそのファイルが
10567 載っているデバイスの最初のマウントポイントではなく、bind マウントで
10568 指定された別名 (訳注: 原文は alias。`mount --bind olddir newdir'
10569 における newdir のことか) の方を出力する。出力に変化がなくなる
10570 まで、再帰的に stat を呼び出せば、現在ベースになっているマウント
10573 (訳注: 訳者には意味不明。「現在ベースになっているマウントポイント
10574 (the current base mount point)」が、上記訳注の newdir のことなら、
10575 stat を再帰的に呼び出すまでもない。`stat -c "%m" newdir/FILE' は、
10576 newdir を表示する。また the current base mount point が「根底にある
10577 (すなわち、デバイスを最初にマウントした) マウントポイント」のこと
10578 なら、stat を再帰的に呼び出しても、それを突き止めることはできない。
10579 ひょっとすると、書式指定子に `%m' が追加された coreutils-8.6 から
10580 coreutils-8.20 あたりまでの stat を linux-2.6 時代の古いカーネルと
10581 組み合わせて使ったときの動作を言っているのかもしれない。その場合は、
10582 `stat -c "%m" newdir/FILE' は上記の olddir を出力するようだ。
10583 従って、そうした組み合わせでは、stat を再帰的に実行することで、
10584 最初にデバイスをマウントしたときのマウントポイントを知ることが
10587 ファイルシステムの情報をリストする際には (すなわち、`--file-system'
10588 (`-f') 使用時には)、書式指定子の別の一群を使わなければならない。
10590 * %a - スーパーユーザ以外にも利用できる未使用ブロック数
10592 * %b - ファイルシステムの総データブロック数。
10594 * %c - ファイルシステムの総 inode 数
10596 * %d - ファイルシステムの未使用 inode 数
10598 * %f - ファイルシステムの未使用ブロック数
10600 * %i - 16 進数で表現したファイルシステム ID
10606 * %s - ブロックサイズ (高速転送用)
10608 * %S - 基本ブロックサイズ (ブロック計算用)
10610 * %t - 16 進数で表現したファイルシステムのタイプ
10612 * %T - 人間にわかりやすい形式で表現したファイルシステムのタイプ
10614 タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
10615 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
10616 いない場合は、システムのデフォルトのルールに従って表示される。 *Note
10617 Specifying the Time Zone with `TZ': (libc)TZ Variable.
10619 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10622 File: coreutils-ja.info, Node: sync invocation, Next: truncate invocation, Prev: stat invocation, Up: Disk usage
10624 14.4 `sync': ディスク上のデータをメモリと同期する
10625 ===================================================================
10627 `sync' は、メモリにバッファされているあらゆるデータをディスクに
10628 書き出す。そうした書き出しには、スーパーブロックの変更、 inode の
10629 変更、遅延読み書きを含むことができる (が、それだけに止まらない)。
10630 この機能はカーネルによって実装されていなければならない。`sync'
10631 プログラムは、`sync' システムコールを実行する以外、何もしないのである。
10633 カーネルは、(比較的遅い) ディスクの読み書きをできるだけしないで
10634 済ますために、メモリにデータを保持している。このことによって、動作速度
10635 が向上するが、コンピュータがクラッシュした場合、データが失われたり、
10636 ファイルシステムが壊れたりという結果が生じかねない。`sync' コマンドを
10637 使えば、メモリ上にあるすべてが間違いなくディスクに書き出されることに
10640 `--help' や `--version' を単独で使用することはできるが、それ以外の
10641 いかなる引数も無視される (*note Common options::)。
10643 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10646 File: coreutils-ja.info, Node: truncate invocation, Prev: sync invocation, Up: Disk usage
10648 14.5 `truncate': ファイルサイズの短縮・伸長を行う
10649 =================================================================
10651 `truncate' は、各 FILE のサイズを指定したサイズにまで短縮したり、引き
10656 truncate OPTION... FILE...
10658 FILE が存在していないときは、作成する。
10660 FILE が指定したサイズより大きい場合は、データのサイズを越える部分
10661 は失われる。FILE が指定したサイズより小さい場合は、ファイルは引き伸ば
10662 され、引き伸ばされた部分は、ゼロバイト (ASCII NUL) の連続に見えるよう
10663 になる (引き伸ばされた部分は、穴空きファイル (sparse file) の穴になる)。
10665 このプログラムでは以下のオプションが使用できる。参照: *note Common
10670 ファイルが存在しない場合は、作成しない。
10674 SIZE をバイト数ではなく、FILE を構成する I/O ブロック数と見なす。
10677 `--reference=RFILE'
10678 RFILE のサイズを基準に、各 FILE のサイズを揃える。
10682 各 FILE のサイズを SIZE にする。`--io-blocks' が指定されていない
10683 場合、SIZE はバイト数である。SIZE は、整数であり、
10684 以下に挙げるような何倍かを示す接尾辞を 後ろに付けることもできる。
10685 接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと
10687 `KB' => 1000 (KiloBytes)
10688 `K' => 1024 (KibiBytes)
10689 `MB' => 1000*1000 (MegaBytes)
10690 `M' => 1024*1024 (MebiBytes)
10691 `GB' => 1000*1000*1000 (GigaBytes)
10692 `G' => 1024*1024*1024 (GibiBytes)
10693 `T', `P', `E', `Z', `Y' についても同様。
10695 SIZE の前に以下の記号の一つを置くと、現在のサイズを元にして、各
10696 FILE のサイズを 調節することができる。
10701 `/' => SIZE の倍数に切り下げる
10702 `%' => SIZE の倍数に切り上げる
10705 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10708 File: coreutils-ja.info, Node: Printing text, Next: Conditions, Prev: Disk usage, Up: Top
10711 ************************
10713 この章では、テキスト文字列を表示するコマンドについて説明する。
10717 * echo invocation:: テキストを 1 行表示する。
10718 * printf invocation:: データを整形して表示する。
10719 * yes invocation:: 中断されるまで文字列を表示する。
10722 File: coreutils-ja.info, Node: echo invocation, Next: printf invocation, Up: Printing text
10724 15.1 `echo': テキストを 1 行表示する
10725 ==============================================
10727 `echo' は、指定された STRING を標準出力に書き出す。その際、各 STRING
10728 の間に 1 個のスペースを置き、行末に改行を付け加える。
10732 echo [OPTION]... [STRING]...
10734 シェルの組み込み機能の `echo' やエイリアスのために、`echo' に何の
10735 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
10736 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
10737 避けるためには、`env' 経由で `echo' を起動すればよい (すなわち、 `env
10740 このプログラムでは、以下のオプションが使える。参照: *note Common
10741 options::. オプションはオペランドの前に置かなければならない。また、
10742 通常は特別な引数として使われる `--' は、特別な意味を持たず、他の
10743 いかなる STRING とも同じように扱われる。
10749 各 "STRING の中に以下に挙げるバックスラッシュでエスケープした
10750 文字があると、それを解釈して変換する。
10765 フォームフィード (form feed)
10771 復帰 (carriage return)
10783 8 進数 NNN (0 桁から 3 桁までの 8 進数) で表される 8 ビットの
10784 値に対応する文字。NNN が 9 ビットの値だと、9 ビット目 (最上位
10788 8 進数 NNN (1 桁から 3 桁までの 8 進数) で表される 8 ビットの
10789 値に対応する文字。NNN が 9 ビットの値だと、9 ビット目 (最上位
10793 16 進数 HH (1 または 2 桁の 16 進数) で表される 8 ビットの
10797 各 STRING の中にあるバックスラッシュ・エスケープの解釈をしない。
10798 これがデフォルトである。`-e' と `-E' の両方が指定されている場合は、
10802 環境変数 `POSIXLY_CORRECT' が指定されている場合に、`echo' の最初の
10803 引数が (単独の) `-n' 以外だと、`echo' はそうした引数をオプション
10804 として扱わずに、形がオプションに似た引数として出力する。たとえば、
10805 `echo -ne hello' は、単なる `hello' ではなく、`-ne hello' を出力する。
10807 POSIX では、いかなるオプションのサポートも要求していない。また、
10808 POSIX では、STRING がバックスラッシュを含む場合や、最初の引数が `-n'
10809 の場合に、`echo' がどう振る舞うかは、実装側で決めることになっている。
10810 従って、他のシステムで使うことも考慮したプログラムで、行末の改行を
10811 省略したり、制御文字やバックスラッシュ・エスケープを出力したりする
10812 必要があるのならば、`echo' の代わりに `printf' コマンドを使用することを
10813 考えてもよい。*Note printf invocation::.
10815 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10818 File: coreutils-ja.info, Node: printf invocation, Next: yes invocation, Prev: echo invocation, Up: Printing text
10820 15.2 `printf': データを整形して表示する
10821 ===================================================
10823 `printf' は、テキストを整形して表示する。
10827 printf FORMAT [ARGUMENT]...
10829 `printf' は、文字列 FORMAT を表示する。その際、C の `printf' 関数と
10830 ほとんど同じやり方で、`%' 書式指定子と `\' エスケープシーケンスを解釈
10831 して、数値や文字列の引数 (上記書式の ARGUMENT) を整形する。詳細に
10832 ついては、次の項目を参照すること。 *Note `printf' format directives:
10833 (libc)Output Conversion Syntax. C の関数との相違点については、
10836 シェルの組み込み機能の `printf' やエイリアスのために、`printf' に何の
10837 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
10838 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
10839 避けるためには、`env' 経由で `printf' を起動すればよい (すなわち、 `env
10840 printf ...' のようにだ)。
10842 * FORMAT 引数は、指定された ARGUMENT のすべてを変換するのに必要な
10843 だけ、繰り返し使用される。たとえば、`printf %s a b' という
10846 * ARGUMENT の指定がない場合は、文脈が文字列と数値のどちらを期待して
10847 いるかによって、空文字列、または 0 を指定したものと見なされる。
10848 たとえば、`printf %sx%d' というコマンドは、`x0' を表示する。
10850 * `\c' というエスケープシーケンスが追加されている。`\c' より後の部分
10851 を、`printf' は出力しない。たとえば、`printf 'A%sC\cD%sF' B E' と
10852 いうコマンドは、`ABC' を表示する。
10854 * 16 進数エスケープシーケンス `\xHH' は、最大でも 2 桁である。
10855 桁数に制限のない C と、その点が違う。たとえば、`printf '\x07e''
10856 というコマンドは、2 バイトを表示するが (訳注: \x07 (ベル) と e)、
10857 C の `printf ("\x07e")' という文の方は、1 バイトしか表示しない。
10859 * `printf' コマンドの書式指定子には、`%b' が追加されている。`%b'
10860 は、対応する引数文字列中の `\' エスケープシーケンスを、それが
10861 FORMAT 文字列中にあるときと同じように解釈・変換して、引数文字列
10862 を表示する。ただし、引数中の 8 進数エスケープシーケンスは `\0OOO'
10863 の形を取る。OOO は 0 から 3 桁の 8 進数である。`\OOO' が 9 ビット
10864 の値ならば、9 ビット目 (訳注: すなわち最上位ビット) は無視される。
10865 `%b' に精度も指定すると、変換した文字列の先頭から何バイトを表示
10868 * 数値の引数は、単独の C の定数でなければならない。前に `+' や `-'
10869 が付いていてもよい。たとえば、`printf %.4d -3' は、`-0003' を
10872 * 数値が期待される引数の先頭文字が `"' や `'' である場合、その引数の
10873 値は、引用符の直後に来る文字の数値である (訳注: すなわち、一般に
10874 は、その文字の ASCII コードの 10 進数表記が出力される)。その後に
10875 さらに文字が続く場合は、環境変数 `POSIXLY_CORRECT' が設定されて
10876 いれば、ただ単に無視され、設定されていなければ、警告が出される。
10877 一例を挙げておくと、`printf "%d" "'a"' は、ASCII 文字セットを使用
10878 しているホストでは、`97' を出力する。ASCII における `a' の数値は、
10882 引数が浮動小数点数の場合は、小数部の前にはピリオドを置かなければ
10883 ならない。ただし、表示は、現在のロケールの `LC_NUMERIC' カテゴリの
10884 ルールに合わせたものになる。たとえば、小数点を表す文字がコンマの
10885 ロケールでは、`printf %g 3.14' というコマンドは、`3,14' を出力するが、
10886 `printf %g 3,14' というコマンドはエラーになる。 *Note Floating point::.
10888 `printf' は、FORMAT 中の `\OOO' を (OOO が 1 から 3 桁の 8 進数なら
10889 ば) 表示すべき 1 バイトを指定している 8 進数と見なす。また、`\xHH' を
10890 (HH が 1 から 2 桁の 16 進数ならば) 表示すべき 1 文字を指定している 16
10891 進数だと解釈する。ただし、注意していただきたいが、`\OOO' が 255 より
10892 大きな 10 進数に相当するときは、`printf' は 9 ビット目を無視する。
10893 従って、たとえば、`printf '\400'' は `printf '\0'' と同じである。
10895 `printf' は、ISO C 99 で導入された 2 種類のキャラクタ・シンタクス
10896 (訳注: 要するに、コードによる文字の指定法) を解釈することができる。
10897 一つは、Unicode (ISO/IEC 10646) の文字を 16 ビットで表すための `\u'
10898 であり、4 桁の 16 進数 HHHH で指定する。もう一つは、Unicode の文字を 32
10899 ビットで表すための `\U' で、こちらは 8 桁の 16 進数 HHHHHHHH で指定
10900 する。`printf' は Unicode の文字を出力するに当たって、`LC_CTYPE' の
10901 ロケールに従う。なお、U+0000...U+009F と U+D800...U+DFFF の範囲にある
10902 Unicode の文字は、U+0024 ($), U+0040 (@), U+0060 (`) を除いて、
10903 このシンタクスでは指定することができない。
10905 `\u' や `\U' を処理するには、フル装備の `iconv' の能力が必要である。
10906 glibc 2.2 以降を採用しているシステムでは、そうした能力は使えるように
10907 なっている。coreutils パッケージをインストールする前に、`libiconv' を
10908 インストールしている場合も同様だ。どちらにも当てはまらない場合は、`\u'
10909 や `\U' は、変換されずに、そのままの形で表示される。
10911 オプションとして指定できるのは、単独の `--help' か `--version' だけ
10912 である。*Note Common options::. オプションはオペランドの前に置かなけれ
10915 Unicode のキャラクタ・シンタクスを使えば、ロケールに影響されない方法
10916 で文字列を書くことができて、便利である。たとえば、次のようにすれば、
10918 $ env printf '\u20AC 14.95'
10920 ユーロ通貨記号を含む文字列が、ユーロ記号をサポートするすべてのロケール
10921 (ISO-8859-15, UTF-8 など) で正しく出力されることになる。同様に、
10923 $ env printf '\u4e2d\u6587'
10925 とすれば、漢字の文字列が、すべての中国語のロケール (GB2312, BIG5, UTF-8
10928 上記の例では、`printf' コマンドを `env' 経由で呼び出していることに
10929 注目していただきたい。これは、シェルのエイリアスや組み込み関数ではなく、
10930 シェルのサーチパスを使って見つけたプログラムを、確実に実行するためである。
10932 文字列がもっと長い場合でも、各文字に対応する 16 進数コードを一つ
10933 一つ捜す必要はない。 ASCII 文字に \u エスケープ・シーケンスを混ぜる
10934 書き方は、JAVA のソースファイルで使用されるエンコーディング (JAVA
10935 source file encoding) としても知られているが、GNU の recode コマンド
10936 3.5c 以降を使用すれば、任意の文字列をこのエンコーディングに変換する
10937 ことができるのだ。以下に示すのは、1 個の短文を、ロケールに影響されずに
10938 その短文を出力するシェルスクリプトに変換する方法である。
10940 $ LC_CTYPE=zh_TW.big5 /usr/local/bin/printf \
10941 '\u4e2d\u6587\n' > sample.txt
10943 # 訳注: もちろん、漢字入力の可能な LANG=zh_TW.big5 (あるいは、
10944 # LANG=ja_JP.eucJP) の環境なら、コマンドラインで直接「中文」
10945 # と打ち込んでもよい。その方が、「各文字に対応する 16 進数
10946 # コードを一つ一つ捜す必要はない」という上記の説明に、
10947 # 例としてはふさわしいだろう。LANG=ja_JP.eucJP の場合、
10948 # 下のコマンドは、当然ながら、recode eucJP..JAVA になる。
10950 $ recode BIG5..JAVA < sample.txt \
10951 | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
10954 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
10957 File: coreutils-ja.info, Node: yes invocation, Prev: printf invocation, Up: Printing text
10959 15.3 `yes': 中断されるまで文字列を表示する
10960 =========================================================
10962 `yes' は、コマンドラインで指定された引数を、空白で区切り、末尾に
10963 改行を付けて、意図的に中断されるまで (訳注: たとえば `CTRL-C' で
10964 中断されるまで) 延々と表示する。引数が指定されていない場合は、`y'
10965 の後ろに改行を付けて、中断されるまで延々と表示する。
10967 書き込みエラーがあると、`yes' はステータス `1' で終了する。
10969 指定できるオプションは、単独の `--help' か `--version' だけである。
10970 `-' で始まる引数を出力するには、その引数の前に `--' を置けばよい。
10971 たとえば、`yes -- --help' というようにだ。*Note Common options::.
10974 File: coreutils-ja.info, Node: Conditions, Next: Redirection, Prev: Printing text, Up: Top
10979 この章で説明するのは、その出力よりも終了ステータスの方が主として役に
10980 立つコマンドである。従って、こうしたコマンドは、シェルの `if' 文の
10981 条件として、あるいは、パイプラインの最後のコマンドとして使用される
10986 * false invocation:: 何もせず、実行失敗のステータスを返す。
10987 * true invocation:: 何もせず、正常終了する。
10988 * test invocation:: ファイルタイプのチェックや値の比較を行う。
10989 * expr invocation:: 式を評価する。
10992 File: coreutils-ja.info, Node: false invocation, Next: true invocation, Up: Conditions
10994 16.1 `false': 何もせず、実行失敗のステータスを返す
10995 ====================================================================
10997 `false' は、実行に失敗したこと ("failure") を示す終了ステータス 1 を
10998 返す以外、何もしない。従って、シェルスクリプト中の、実行に失敗する
10999 コマンドが必要な場所で、仮のコマンドとして使用することができる。
11000 最近のほとんどのシェルでは、`false' は組み込みコマンドになっている
11001 ので、スクリプト中で `false' を使う際に使用しているのは、ここで説明
11002 している `false' ではなく、たぶん組み込みコマンドの方である。
11004 `false' は、`--help' と `--version' オプションを認識する。
11006 このバージョンの `false' は、C のプログラムとして実装されている。
11007 従って、シェルスクリプトによる実装より安全かつ高速であり、アカウントを
11008 無効化するための安全なダミー・シェルとして使用することができる。
11010 注意していただきたいが、`false' は、`--help' や`--version' を付けて
11011 実行した場合でも (このマニュアルで説明している他のすべてのプログラム
11012 とは違って)、実行失敗のステータスで終了する。
11014 移植を考慮したプログラムでは、`false' の終了ステータスを 1 だと
11015 決めてかからない方がよい。GNU 以外のホストでは、終了ステータスが 1
11019 File: coreutils-ja.info, Node: true invocation, Next: test invocation, Prev: false invocation, Up: Conditions
11021 16.2 `true': 何もせず、正常終了する
11022 ==============================================
11024 `true' は、実行に成功したこと ("success") を示す終了ステータス 0 を
11025 返す以外、何もしない。従って、シェルスクリプト中の、実行に成功する
11026 コマンドが必要な場所で、仮のコマンドとして使用することができる。
11027 とは言え、シェルの組み込みコマンド `:' (コロン) の方が、同じことを
11028 より高速に実行してくれるかもしれない。最近のほとんどのシェルでは、
11029 `true' は組み込みコマンドになっているので、スクリプト中で `true' を
11030 使う際に使用しているのは、ここで説明している `true' ではなく、たぶん
11033 `true' は、`--help' と `--version' オプションを認識する。
11035 もっとも、`true' を 0 以外のステータスで終了させることも可能だと
11036 いうことも、心に留めておいていただきたい。`--help' や `--version' を
11037 使用したとき、標準出力がすでにクローズされていたり、I/O エラーを引き
11038 起こすようなファイルにリダイレクトしたりすると、そういうことが起きる。
11039 たとえば、Bourne 互換のシェルを使用して、次のようにするときだ。
11041 $ ./true --version >&-
11042 ./true: write error: Bad file number
11043 $ ./true --version > /dev/full
11044 ./true: write error: No space left on device
11046 このバージョンの `true' は、C のプログラムとして実装されている。
11047 従って、シェルスクリプトによる実装より安全かつ高速であり、アカウントを
11048 無効化するための安全なダミー・シェルとして使用することができる。
11051 File: coreutils-ja.info, Node: test invocation, Next: expr invocation, Prev: true invocation, Up: Conditions
11053 16.3 `test': ファイルタイプのチェックや値の比較を行う
11054 =========================================================================
11056 `test' は、条件式 EXPRESSION の評価次第で、0 (真) または 1 (偽) の
11057 ステータスを返す。式を構成する各部分は、独立した引数でなければならない。
11059 `test' は、ファイルのステータスを検査することができる。また、文字列を
11060 扱う演算子や、数値を比較するための演算子も備えている。
11062 `test' には、`test' で始める書式のほかに、一対の角カッコを使用する
11063 もう一つの書式がある。たとえば、`test -d /' の代わりに、`[ -d / ]' と
11064 書いても構わない。角カッコは、それぞれ独立した引数でなければならない
11065 (訳注: 言い換えれば、他の引数と空白で分離されていなければならない)。
11066 だから、たとえば、`[-d /]' では、望みの結果を得られないわけだ。`test
11067 EXPRESSION' と `[ EXPRESSION ]' は、同じ意味なので、以下では前者の書式
11078 シェルの組み込み機能の `test' やエイリアスのために、`test' に何の
11079 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
11080 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
11081 避けるためには、`env' 経由で `test' を起動すればよい (すなわち、 `env
11084 EXPRESSION を省略した場合、`test' は、偽を返す。EXPRESSION が引数 1
11085 個だけだった場合、`test' は、その引数が空 (null) ならば、偽を返し、さも
11086 なければ、真を返す。引数には、`-d', `-1', `--', `--help', `--version' と
11087 いった、他のほとんどのプログラムでなら、オプションとして扱われるものも
11088 含めて、どんな文字列でも指定することができる。そこで、ヘルプやバージョン
11089 情報を取得するには、`[ --help' や `[ --version' という形でコマンドを
11090 実行する必要がある。この場合、いつもと違って、閉じカッコは付けない。
11091 *Note Common options::.
11101 * File type tests:: ファイルタイプのテスト (-[gkruwxOG])。
11102 * Access permission tests:: アクセス許可のテスト (-[gkruwxOG])。
11103 * File characteristic tests:: ファイル特性のテスト (-e -s -nt -ot -ef)。
11104 * String tests:: 文字列のテスト (-z -n = == !=)。
11105 * Numeric tests:: 数値のテスト (-eq -ne -lt -le -gt -ge)。
11106 * Connectives for test:: `test' の論理結合演算子 (! -a -o)。
11109 File: coreutils-ja.info, Node: File type tests, Next: Access permission tests, Up: test invocation
11111 16.3.1 File type tests
11112 ----------------------
11114 以下のオプションは、ある特定のファイルタイプか否かの検査を行う。(Unix
11115 では、あらゆるものがファイルだ。だが、ファイルならみんな同じだという
11119 FILE が存在し、ブロック・スペシャルデバイスならば、真。
11122 FILE が存在し、キャラクタ・スペシャルデバイスならば、真。
11125 FILE が存在し、ディレクトリならば、真。
11128 FILE が存在し、通常ファイルならば、真。
11132 FILE が存在し、シンボリックリンクならば、真。ファイル関係の他の
11133 すべてのテストとは違って、このテストは、FILE がシンボリックリンク
11137 FILE が存在し、名前付きパイプならば、真。
11140 FILE が存在し、ソケットならば、真。
11143 FD が端末と結びついているファイルディスクリプタならば、真。
11147 File: coreutils-ja.info, Node: Access permission tests, Next: File characteristic tests, Prev: File type tests, Up: test invocation
11150 -------------------------------------
11152 以下のオプションは、特定のアクセス許可について検査をする。
11155 FILE が存在し、set-group-ID ビットが立っていれば、真。
11158 FILE が存在し、"sticky" ビットが立っていれば、真
11161 FILE が存在し、読み出しが許可されていれば、真。
11164 FILE が存在し、set-user-ID ビットが立っていれば、真。
11167 FILE が存在し、書き込みが許可されていれば、真。
11170 FILE が存在し、実行が許可されていれば (ディレクトリの場合は、
11174 FILE が存在し、その所有者が test コマンド実行者の実効ユーザ ID
11178 FILE が存在し、そのグループが test コマンド実行者の実効グループ ID
11183 File: coreutils-ja.info, Node: File characteristic tests, Next: String tests, Prev: Access permission tests, Up: test invocation
11186 -------------------------------------
11188 以下のオプションは、ファイルの他の特性を検査する。
11194 FILE が存在し、サイズが 0 よりも大きければ、真。
11197 FILE1 が FILE2 より (更新日時 (modification date) で比較して)
11198 新しいか、あるいは、FILE1 が存在して、FILE2 が存在しなければ、真。
11201 FILE1 が FILE2 より (更新日時で比較して) 古いか、あるいは、FILE2 が
11202 存在して、FILE1 が存在しなければ、真。
11205 FILE1 と FILE2 が同じデバイス番号と同じ inode 番号を持っていれば、
11206 言い換えれば、両者が互いのハードリンクならば、真。
11210 File: coreutils-ja.info, Node: String tests, Next: Numeric tests, Prev: File characteristic tests, Up: test invocation
11213 ----------------------------
11215 以下のオプションは、文字列の特性を検査する。シェルに対して引数 STRING を
11216 引用符で保護する必要があるかもしれない。たとえば、こんなふうにだ。
11220 ここで引用符は、`$V' が空だったり、特殊文字を含んでいたりする場合に、
11221 意図に反した引数が `test' に渡ることを防いでいる。
11224 STRING の長さが 0 ならば、真。
11228 STRING の長さが 0 でなければ、真。
11230 `STRING1 = STRING2'
11233 `STRING1 == STRING2'
11234 両文字列が等しければ、真 (= と同じ意味)。
11236 `STRING1 != STRING2'
11241 File: coreutils-ja.info, Node: Numeric tests, Next: Connectives for test, Prev: String tests, Up: test invocation
11244 -------------------------
11246 数値間の関係を調べる演算子を挙げる。引数は、数字のみで表現される整数か
11247 (負数も使用できる)、`-l STRING' という特別な式でなければならない。後者は
11248 STRING の長さとして評価される。
11250 (訳注: 要するに、普通は 10 進数の整数を引数として取るということ。
11251 `expr' コマンドとは違って、`test' では `+2' といった表現も可能だ。)
11259 こうした二項算術演算子は、それぞれ次の場合に真を返す。上から順に、
11260 ARG1 が ARG2 と比べて、等しい場合、等しくない場合、より小さい場合、
11261 より小さいか等しい場合、より大きい場合、より大きいか等しい場合。
11266 test -1 -gt -2 && echo yes
11268 test -l abc -gt 1 && echo yes
11271 error--> test: integer expression expected before -eq
11274 File: coreutils-ja.info, Node: Connectives for test, Prev: Numeric tests, Up: test invocation
11276 16.3.6 `test' の論理結合演算子
11277 --------------------------------------
11285 EXPR1 と EXPR2 の両方が真ならば、真。
11288 EXPR1 と EXPR2 のどちらかが真ならば、真。
11292 File: coreutils-ja.info, Node: expr invocation, Prev: test invocation, Up: Conditions
11294 16.4 `expr': 式を評価する
11295 ===============================
11297 `expr' は、式を評価して、結果を標準出力に書き出す。式の各構成要素
11298 (token) は、独立した引数でなければならない。
11300 オペランド (演算対象) は、整数か文字列である。整数は、1 個以上の 10
11301 進数の数字から構成され、先頭に `-' が付いていてもよい。`expr' は、
11302 オペランドの位置にあるものが何であれ、それを整数、または、文字列に
11303 変換する。どちらになるかは、それに対して行われる演算次第である。
11305 `expr' そのものに対しては、文字列をクォートする必要がない。だが、
11306 シェルにとって特別な意味がある、たとえば空白のような文字を保護する
11307 ためには、文字列を引用符で囲むなどの方法でクォートする必要があるかも
11308 しれない。とは言え、クォートされているかどうかに関わりなく、文字列の
11309 オペランドは、丸カッコ 1 個であってはならないし、`+' のような `expr'
11310 の演算子の一つであるべきでもない。すなわち、シェルに対してクォートする
11311 だけでは、エラーを引き起こすことなく、任意の文字列 `$str' を `expr' に
11312 渡すことはできないのだ。この問題を回避する方法の一つは、GNU の拡張
11313 である `+' 演算子 (訳注: この `+' は、算術演算子の `+' ではなく、直後に
11314 来る引数が文字列であることを示す文字列演算子である) を使用することだ
11315 (たとえば、`+ "$str" = foo' といった具合に)。もっと移植性のある方法は、
11316 `" $str"' という先頭に空白を入れた表現を使用し、式の残りの部分でも
11317 それに合わせて、先頭のスペースを考慮に入れるようにすることである
11318 (たとえば、`" $str" = " foo"' のように)。
11320 負の整数や、`-' で始まる文字列を `expr' の 1 番目の引数として渡す
11321 べきではない。オプションと間違われかねないからだ。それを避けるため
11322 には、カッコでくくればよい (訳注: たとえば、`expr \( -1 + 1 \)')。
11323 また、移植を考慮したスクリプトでは、文字列のオペランドに、形が整数と
11324 同じになってしまうものを使うべきではない。こちらは、先頭にスペースを
11327 演算子には、記号としてオペランドとオペランドの間に置くものもあれば、
11328 キーワードとしてオペランドの前に付けるものもある。丸カッコは、おなじみの
11329 やり方で、グループ化に使用できる。ただし、丸カッコや、演算子の多くは、
11330 シェルによって評価されないように、クォートしなければならない。
11332 GNU MP ライブラリ対応でビルドされた場合、`expr' は任意精度演算を
11333 使用する。そうでない場合は、ネイティブな算術型を使用するので、算術
11334 オーバーフローのために実行に失敗することがあるかもしれない。
11336 指定できるオプションは、`--help' と `--version' だけである。 *Note
11337 Common options::. オプションはオペランドの前に置かなければならない。
11341 0: 式が null でも 0 でもない場合。
11342 1: 式が null または 0 の場合。
11344 3: 内部エラーが起きた場合 (例: 算術オーバーフロー)。
11348 * String expressions:: 文字列式 (+ : match substr index length)。
11349 * Numeric expressions:: 数式 (+ - * / %)。
11350 * Relations for expr:: 論理結合と関係表現 (| & < <= = == != >= >)。
11351 * Examples of expr:: 用例。
11354 File: coreutils-ja.info, Node: String expressions, Next: Numeric expressions, Up: expr invocation
11357 -------------------
11359 `expr' は、パターンマッチなどの文字列演算子をサポートしている。文字列
11360 演算子の優先順位は、算術演算子や関係演算子よりも高い (算術/関係演算子
11364 パターンマッチを行う。まず、左右の項を文字列に変換し、右項を、
11365 先頭に `^' が暗黙のうちに付いている正規表現と見なす (`grep' 風の
11366 基本正規表現)。それから、その正規表現と左項がマッチするかどうかを
11369 マッチが成功した場合、REGEX 中でカッコ (`\(' と `\)') を使用して
11370 いれば、`:' 演算子は、そのカッコ内の部分表現にマッチした STRING
11371 中の部分文字列を返す。カッコを使っていなければ、返すのはマッチした
11374 マッチに失敗した場合、`:' 演算子は、REGEX 中でカッコ (`\(' と `\)')
11375 を使用していれば、空文字列を、さもなければ、0 を返す。
11377 最初の `\( ... \)' のペアだけが、返り値に関係する。二番目以降の
11378 カッコのペアには、正規表現の演算子をグループ化する働きしかない。
11380 正規表現では、`\+', `\?', `\|' は演算子であり、それぞれ、1 個以上
11381 にマッチする、あってもなくてもよい、候補のうちのどちらか、を意味して
11382 いる。ところが、SunOS などの `expr' では、こうした記号を通常の文字
11383 として扱っている (POSIX は、どちらの動作も認めている)。正規表現の
11384 文法については次のものが詳しい。*Note Regular Expression Library:
11385 (regex)Top. 実例をいくつか、「`expr' の使用例」に挙げておいた。
11386 *note Examples of expr::.
11388 `match STRING REGEX'
11389 パターンマッチを行う別の方法。これは、`STRING : REGEX' と同じ
11392 `substr STRING POSITION LENGTH'
11393 STRING の部分文字列を返す。部分文字列は、POSITION の位置から
11394 始まり、最長でも LENGTH の長さである。POSITION と LENGTH のどちらか
11395 が、負数や 0 だったり、数値以外だったりする場合は、空文字列を返す。
11397 `index STRING CHARSET'
11398 CHARSET 中の文字が最初に見つかった STRING 中の位置を返す。STRING
11399 中に CHARSET 中のどの文字も見つからなかった場合は、0 を返す。
11405 たとえ、TOKEN が `match' のようなキーワードや、 `/' のような演算子
11406 であっても、TOKEN を文字列として解釈する。これを使用すると、`expr
11407 length + "$x"' や `expr + "$x" : '.*/\(.\)'' を実行したとき、`$x'
11408 の値が (たとえば) たまたま `/' や `index' であっても、適切な動作を
11409 させることができる。この演算子は、GNU の拡張である。移植を考慮した
11410 シェルスクリプトでは、`+ "$token"' ではなく、`" $token" :
11411 ' \(.*\)'' を使うべきである。
11414 `expr' にキーワードを文字列として解釈させるためには、クォート演算子
11415 (すなわち、上で述べている `+' 演算子) を使用しなければならない。
11418 File: coreutils-ja.info, Node: Numeric expressions, Next: Relations for expr, Prev: String expressions, Up: expr invocation
11423 `expr' は、以下に挙げる通常の算術演算子を、昇順の優先順位で、サポート
11424 している。こうした算術演算子は、前節で述べた文字列演算子より優先順位が
11425 低く、次節で述べる関係演算子より優先順位が高い。
11428 加算と減算。左右の項は両方とも整数に変換される。整数に変換できない
11432 乗算、除算、剰余演算。左右の項は両方とも整数に変換される。整数に
11437 File: coreutils-ja.info, Node: Relations for expr, Next: Examples of expr, Prev: Numeric expressions, Up: expr invocation
11439 16.4.3 `expr' の関係表現
11440 -----------------------------
11442 `expr' は、通常の論理結合や関係表現をサポートしている。そうした演算子
11443 は、前の節で述べた文字列演算子や算術演算子より優先順位が低い。論理結合や
11444 関係表現の演算子を、優先順位の低いものから高いものへ順に並べておく。
11447 左項が null でも 0 でもなければ、左項を返す。左項が null または 0
11448 の場合は、右項が null でも 0 でもなければ、右項を返す。両項とも
11449 null または 0 の場合は、0 を返す。左項が null でも 0 でもない場合、
11453 両項とも null でも 0 でもなければ、左項を返し、それ以外の場合は、0
11454 を返す。左項が null または 0 の場合、右項の評価は行われない。
11456 `< <= = == != >= >'
11457 両項を比較し、関係が真ならば、1 を返し、偽の場合は、0 を返す。
11458 `==' は `=' と同じ意味である。`expr' は、まず両項を整数に変換し、
11459 数値としての比較を試みる。左右どちらかの項の変換に失敗した場合は、
11460 `LC_COLLATE' のロケールで指定されている、文字の照合順を使用して、
11465 File: coreutils-ja.info, Node: Examples of expr, Prev: Relations for expr, Up: expr invocation
11468 --------------------------
11470 シェルのメタ文字をクオートする例も含めて、用例をいくつか挙げておく。
11472 Bourne 互換シェルで、シェル変数 `foo' に 1 を加える。
11474 foo=$(expr $foo + 1)
11476 変数 `$fname' に格納されているファイル名から、ディレクトリではない
11477 部分を取り出して、表示する。`$fname' に `/' が含まれていなくてもよい。
11479 expr $fname : '.*/\(.*\)' '|' $fname
11481 次の例で `\+' は演算子である (訳注: 細かいことを言うと、`grep' 流
11482 の基本正規表現の演算子。ちなみに、最後の例の `+' は、`expr' の文字列
11488 expr abc : 'a\(.\)c'
11490 expr index abcdef cz
11493 error--> expr: syntax error
11494 expr index + index a
11498 File: coreutils-ja.info, Node: Redirection, Next: File name manipulation, Prev: Conditions, Up: Top
11501 ***************************
11503 Unix のシェルは、いくつかの形式のリダイレクション ("redirection") --
11504 コマンドの入力元や出力先を変更する手段 -- をたいてい用意している。
11505 しかし、ある一つの便利なリダイレクションは、シェルではなく、独立した
11506 コマンドによって行われる。この章では、そのコマンドについて説明する。
11510 * tee invocation:: 出力を複数のファイルやプロセスにリダイレクトする。
11513 File: coreutils-ja.info, Node: tee invocation, Up: Redirection
11515 17.1 `tee': 出力を複数のファイルやプロセスにリダイレクトする
11516 ====================================================================================
11518 `tee' コマンドは、標準入力を標準出力にコピーするとともに、引数として
11519 指定されたファイル (複数可) にもコピーする。これは、あるデータをパイプ
11520 に送るだけでなく、同時にそのコピーを保存したい場合に、便利である。
11524 tee [OPTION]... [FILE]...
11526 書き出し先のファイルがまだ存在していなければ、作成される。書き出し
11527 先のファイルがすでに存在している場合は、`-a' オプションを使用しない
11528 かぎり、ファイルに前からあったデータは上書きされる。
11530 FILE の一つに `-' を指定すると、`tee' は、入力のコピーをもう一つ、
11531 標準出力に送出する。だが、コピー同士が重なり合うので、たいていの場合、
11534 このプログラムでは以下のオプションが使用できる。参照: *note Common
11539 指定されたファイルの末尾に標準入力を追加する。すなわち、ファイルを
11543 `--ignore-interrupts'
11547 大量のデータの転送を行いながら、同時にそのデータのサマライズも
11548 行いたい、改めてデータを読み直すようなことはしたくない。`tee' は、
11549 そういうときに便利である。たとえば、DVD イメージをダウンロードして
11550 いるとき、その場ですぐ、署名やチェックサムを確認したくなることがよく
11551 ある。単に次のようにするのは、効率が悪い。
11553 wget http://example.com/some.iso && sha1sum some.iso
11555 上記コマンドの問題点の一つは、ただでさえ時間のかかる SHA1 の計算に
11556 取りかかる前に、ダウンロードが完了するのを待たなければならないことで
11557 ある。たぶん、さらに問題なのは、上記のやり方では、DVD イメージを改めて
11558 読み直さなければならないことだろう (一度目の読み込みは、ネットワーク
11561 こうした作業を行う効率的な方法は、ダウンロードと SHA1 の計算を
11562 同時に、交互に実行することである。そうすれば、プロセス全体が平行して
11563 スムーズに進むので、無駄な時間を使わずに、チェックサムが手に入る。
11565 # ちょっと凝った方法。プロセス置換の実例をご覧に入れるため。
11566 wget -O - http://example.com/dvd.iso \
11567 | tee >(sha1sum > dvd.sha1) > dvd.iso
11569 こうすれば、`tee' は、出力を目当てのファイルに書き出すだけでなく、
11570 パイプにも書き出す。そして、後者では、 `sha1sum' を実行し、最終的に
11571 チェックサムを `dvd.sha1' という名前のファイルに保存することになる。
11573 しかし、気をつけていただきたい。上記の例は、プロセス置換 ("process
11574 substitution") と呼ばれる最近のシェルの機能を当てにしている (上記の
11575 `>(command)' という構文のことである。*Note Process Substitution:
11576 (bash)Process Substitution.)。 そのため、`zsh', `bash', `ksh' では
11577 うまく動作するが、`/bin/sh' では動作しない。従って、こうしたコードを
11578 シェルスクリプトで使用するときは、スクリプトの先頭に `#!/bin/bash' など
11581 上記の例は、書き出しを 1 個のファイルと 1 個のプロセスに行っている
11582 だけだ。その程度なら、もっと普通の、もっと移植性のある使い方をした方が
11585 wget -O - http://example.com/dvd.iso \
11586 | tee dvd.iso | sha1sum > dvd.sha1
11588 `tee' が二つのプロセスに書き込むように、この例を拡張して、MD5 と
11589 SHA1 のチェックサムを平行して計算させることもできる。その場合は、
11592 wget -O - http://example.com/dvd.iso \
11593 | tee >(sha1sum > dvd.sha1) \
11594 >(md5sum > dvd.md5) \
11597 このテクニックは、パイプから入ってくるデータの圧縮したコピーを作り
11598 たいときにも、役に立つ。`du -ak' の出力するディスク使用量のデータを
11599 要約して、グラフィカルに表示するツールを考えていただきたい。
11600 ディレクトリ階層が膨大だと、`du -ak' は実行に長い時間がかかるだろう
11601 し、いともたやすくテラバイトのデータを作成してくれるだろう。そこで、
11602 `du' コマンドをむやみに再実行することはやりたくない。また、圧縮される
11605 これを効率の悪い方法でやると、`du' の出力全部の圧縮を済ませるまで、
11606 GUI ツールを起動することすらできない。
11608 du -ak | gzip -9 > /tmp/du.gz
11609 gzip -d /tmp/du.gz | xdiskusage -a
11611 `tee' とプロセス置換を使えば、GUI ツールを直ちに起動できるし、
11612 圧縮ファイルの展開も全くやらないですむ。
11614 du -ak | tee >(gzip -9 > /tmp/du.gz) | xdiskusage -a
11616 最後にもう一つ。常に 2 種類以上の圧縮した tar アーカイブ (tarball)
11617 を一度に作ることにしている場合は、より効率のよいやり方ができるかも
11618 しれない。たとえば、`make dist' が `gzip' と `bzip2' の両方で圧縮した
11619 tar アーカイブを作成するような場合だ。`automake' が生成する `Makefile'
11620 のルールは、たいてい、こんなふうにコマンドを連続して実行することで、
11621 圧縮した tar アーカイブを二つ作成している (少し単純化してある)。
11623 tardir=your-pkg-M.N
11624 tar chof - "$tardir" | gzip -9 -c > your-pkg-M.N.tar.gz
11625 tar chof - "$tardir" | bzip2 -9 -c > your-pkg-M.N.tar.bz2
11627 しかしながら、アーカイブの作成・圧縮の対象になっているディレクトリ
11628 階層が、数メガバイトより大きい場合は -- 使用しているシステムがマルチ
11629 プロセッサを搭載し、メモリがふんだんにある場合はなおさらそうだが --
11630 ディレクトリの中身を 1 回だけ読み込み、圧縮プログラムを平行して走ら
11631 せることで、ずっと効率のよい仕事ができる。
11633 tardir=your-pkg-M.N
11634 tar chof - "$tardir" \
11635 | tee >(gzip -9 -c > your-pkg-M.N.tar.gz) \
11636 | bzip2 -9 -c > your-pkg-M.N.tar.bz2
11638 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11641 File: coreutils-ja.info, Node: File name manipulation, Next: Working context, Prev: Redirection, Up: Top
11644 ************************
11646 この章では、ファイル名操作に使うコマンドについて説明する。
11650 * basename invocation:: ファイル名からディレクトリと接尾辞を取り除く。
11651 * dirname invocation:: ファイル名から最後の要素を取り除く。
11652 * pathchk invocation:: ファイル名の有効性や可搬性を検査する。
11653 * mktemp invocation:: テンポラリファイルやディレクトリを作成する。
11654 * realpath invocation:: ファイル名を展開して表示する。
11657 File: coreutils-ja.info, Node: basename invocation, Next: dirname invocation, Up: File name manipulation
11659 18.1 `basename': ファイル名からディレクトリと接尾辞を取り除く
11660 ===================================================================================
11662 `basename' は、NAME の先頭にディレクトリ部分があれば、それを取り除く。
11666 basename NAME [SUFFIX]
11667 basename OPTION... NAME...
11669 SUFFIX が指定されていて、それが NAME の末尾と同一ならば、SUFFIX の
11670 部分も NAME から取り除かれる。気をつけていただきたいが、ファイル名の
11671 末尾のスラッシュは、接尾辞のマッチングに先立って除去されるので、SUFFIX
11672 にスラッシュが含まれていると、指定に効果がないことになる。`basename'
11675 `basename' と `dirname' は合わせて設計されており、もし `ls "$name"'
11676 が成功するならば、`cd "$(dirname "$name")"; ls "$(basename "$name")"'
11677 というコマンドの連続も成功するようになっている。これは、ファイル名の
11678 末尾に改行が付いている場合を除いて、あらゆる場合にうまく行く。
11680 POSIX によれば、NAME が空の場合や `//' の場合に、結果がどうなるかは、
11681 実装側で決めてよいことになっている。前者の場合、GNU の `basename' は、
11682 空文字列を返す。後者の場合、// と / とが別のものであるプラットフォーム
11683 では、結果は `//' になり、全く区別しないプラットフォームでは、結果は `/'
11686 このプログラムでは以下のオプションが使用できる。参照: *note Common
11687 options::. オプションはオペランドの前に置かなければならない。
11691 複数の引数を受け付ける。すべての引数は NAME として処理される。この
11692 オプションを使用する場合、SUFFIX を指定するならば、`-s' オプション
11697 末尾にある SUFFIX を除去する。このオプションを指定すると `-a' オプ
11702 出力する項目を NUL 文字で区切る。
11705 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11710 basename /usr/bin/sort
11713 basename include/stdio.h .h
11716 basename -s .h include/stdio.h
11718 # "stdio", "stdlib" の順に出力する。
11719 basename -a -s .h include/stdio.h include/stdlib.h
11722 File: coreutils-ja.info, Node: dirname invocation, Next: pathchk invocation, Prev: basename invocation, Up: File name manipulation
11724 18.2 `dirname': ファイル名から最後の要素を取り除く
11725 ===================================================================
11727 `dirname' は、各 NAME からスラッシュで区切られた最後の要素を取り除いて、
11728 残りのすべてを表示する。その際、最後の要素の左右どちらにあるスラッシュ
11729 も除去される。NAME を構成する文字列にスラッシュが一つも含まれない場合、
11730 `dirname' は (カレントディレクトリを意味する) `.' を表示する。
11734 dirname [OPTION] NAME...
11736 NAME は実在するファイル名でなくても構わないが、実在するファイル名
11737 ならば、この操作によって、最後の要素それ自体がディレクトリである場合も
11738 含めて、最後の要素が存在するディレクトリが、利用できる形で表示される。
11740 `basename' と `dirname' は合わせて設計されており、もし `ls "$name"'
11741 が成功するならば、`cd "$(dirname "$name")"; ls "$(basename "$name")"'
11742 というコマンドの連続も成功するようになっている。これは、ファイル名の
11743 末尾に改行が付いている場合を除いて、あらゆる場合にうまく行く。
11745 POSIX によれば、NAME が `//' の場合に、結果がどうなるかは、実装側で
11746 決めてよいことになっている。GNU の `dirname' について言うと、// と /
11747 とが別のものであるプラットフォームでは、結果は `//' になり、全く区別
11748 しないプラットフォームでは、結果は `/' になる。
11750 このプログラムでは、以下のオプションが使える。参照: *note Common
11755 出力する項目を NUL 文字で区切る。
11758 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
11762 # "/usr/bin" を出力する。
11763 dirname /usr/bin/sort
11764 dirname /usr/bin//.//
11766 # "dir1", "dir2" の順に出力する。
11767 dirname dir1/str dir2/str
11773 File: coreutils-ja.info, Node: pathchk invocation, Next: mktemp invocation, Prev: dirname invocation, Up: File name manipulation
11775 18.3 `pathchk': ファイル名の有効性や可搬性を検査する
11776 ======================================================================
11778 `pathchk' は、ファイル名が有効かどうか、可搬性があるかどうかを検査する。
11782 pathchk [OPTION]... NAME...
11784 `pathchk' は各 NAME に対して、以下の条件のどれかが真ならば、エラー
11787 1. NAME 中の実在するディレクトリの一つが、検索 (実行) 許可を持って
11790 2. NAME の長さが、オペレーティング・システムによってサポートされている
11793 3. NAME の構成要素の一つの長さが、それが存在することになるファイル
11794 システムによってサポートされている最大長を越えている。
11796 実在しないファイル名を指定しても、エラーにはならない。その名前の
11797 ファイルが、上記の条件内で作成可能であればよい。
11799 このプログラムでは以下のオプションが使用できる。参照: *note Common
11800 options::. オプションはオペランドの前に置かなければならない。
11803 実際に使用しているファイルシステムに基づいて検査を行うのではなく、
11804 以下の条件を調べて、そのどれかが真ならば、エラーメッセージを表示
11809 2. ファイル名に、どのシステムでもファイル名に使用できる文字と
11810 して POSIX が規定している文字セット以外の文字が含まれている。
11811 すなわち、ASCII 英数字、`.'、`_'、`-'、`/' 以外の文字が使用
11814 3. ファイル名の長さや、その構成要素の一つの長さが、POSIX の規格で
11815 可搬性のために最小限サポートすべしとされている長さを越えている。
11818 ファイル名が空だったり、`-' で始まる構成要素を含んでいたりすると、
11822 ファイル名が POSIX に準拠しているすべてのホストで使えるもので
11823 なければ、エラーメッセージを表示する。このオプションは、`-p -P' と
11829 0: 指定されたすべてのファイル名が検査のすべてにパスした場合。
11833 File: coreutils-ja.info, Node: mktemp invocation, Next: realpath invocation, Prev: pathchk invocation, Up: File name manipulation
11835 18.4 `mktemp': テンポラリファイルやディレクトリを作成する
11836 ==============================================================================
11838 `mktemp' は、テンポラリファイルやテンポラリディレクトリの作成を行う。
11842 mktemp [OPTION]... [TEMPLATE]
11844 `mktemp' は、TEMPLATE を基にして、安全なテンポラリファイルや
11845 ディレクトリを作成し、その名前を表示する。TEMPLATE を指定する場合、
11846 その最後の構成部分に少なくとも 3 個の連続する `X' が含まれていなければ
11847 ならない。TEMPLATE を省略した場合は、`tmp.XXXXXXXXXX' というテンプレート
11848 が使用され、`--tmpdir' オプションが暗黙のうちに指定されることになる。
11849 TEMPLATE 中の `X' が連続する最後の部分は、英数字で置き換えられる。
11850 従って、大文字小文字を区別するファイルシステムなら、テンプレートに
11851 連続する N 個の `X' が含まれていると、作成されるファイル名には、 62 の
11852 N 乗とおりの可能性があることになる。
11854 昔のスクリプトでは、テンポラリファイルを作成する際、単にプログラムの
11855 名前にプロセス ID (`$$') を拡張子として付けるのが習慣だった。しかし、
11856 この命名法は、名前の推測が容易であり、従って、競合状態を起こしやすい
11857 という弱点がある。攻撃者としては、テンポラリファイルに使われそうな名前で
11858 シンボリックリンクを作っておけばよい。そうすれば、スクリプトが未使用の
11859 ファイルだと考えて、テンポラリファイルのファイルハンドルを開いたとき、
11860 実際にはすでに存在しているファイルに書き込みをしているという羽目になる。
11861 同じ命名法を使ってディレクトリを作成するのは、もう少し安全である。作成
11862 しようとするディレクトリがすでに存在していると、`mkdir' は実行に失敗
11863 するからだ。とは言え、こちらもサービス不能化攻撃 (denial of service
11864 attacks) を可能にしてしまうわけで、やはり良策とは言えない。それ故、
11865 新しいスクリプトでは `mktemp' コマンドを使用するべきである。そうすれば、
11866 生成されるファイル名が確実に予測不可能になるので、実行中のスクリプトが
11867 テンポラリファイルの名前を知っているというまさにその事実が、ファイルを
11868 作成したのがそのスクリプトであり、他のユーザはそのファイルを変更でき
11871 ファイルを作成する場合、作成されるファイルには現在のユーザに対する
11872 読み込みと書き出しの許可が付くが、グループやその他のユーザに対しては、
11873 いかなる許可も付かない。現在の umask がより厳格な場合、付けられる許可は
11876 用例をいくつか挙げてみる (ただし、注意していただきたいが、お手元で
11877 この通り実行しても、おそらくファイル名は違ったものになるはずだ)。
11879 * カレントディレクトリにテンポラリファイルを作成する。
11883 * 一般的な拡張子を付けて、テンポラリファイルを作成する。
11884 $ mktemp --suffix=.txt file-XXXX
11886 $ mktemp file-XXXX-XXXX.txt
11889 * ユーザが環境変数 `TMPDIR' で指定しているディレクトリを基点として、
11890 その下に安全な FIFO を作成する。`TMPDIR' が設定されていない場合は、
11891 `/tmp' ではなく、カレントディレクトリを基点として使用する。肝腎な
11892 点は、`mktemp' は FIFO を作成しないが、FIFO を置くことができる
11893 安全なディレクトリなら作成できるということである。ディレクトリや
11894 FIFO を作成することができなかったときは、シェルを終了する。
11895 $ dir=$(mktemp -p "${TMPDIR:-.}" -d dir-XXXX) || exit 1
11897 $ mkfifo "$fifo" || { rmdir "$dir"; exit 1; }
11899 * 可能ならば、テンポラリファイルを作成して使用するが、作成に失敗
11900 しても、エラーメッセージを出さない。ファイルは、環境変数 `TMPDIR'
11901 が設定されていれば、そこで指名されているディレクトリに作られるが、
11902 設定されていなければ、`/tmp' に作られる。
11903 $ file=$(mktemp -q) && {
11904 > # $file の使用をこのブロックの内側に限定しておけば、
11905 > # 安全である。$file を引用符で囲んでいるのは、$TMPDIR が、
11906 > # 従って、$file が、ホワイトスペースを含んでいるかも
11908 > echo ... > "$file"
11912 * 擬似ランダム文字発生装置として動作する (カレントディレクトリの内容
11913 によって影響を受けるので、完全にランダムではない)。セキュリティ
11914 ホールを避けたいならば、生成された名前を使って、ファイルを作っては
11922 このプログラムでは以下のオプションが使用できる。参照: *note Common
11927 ファイルではなく、ディレクトリを作成する。作成されるディレクトリには
11928 現在のユーザに対して、読み、書き、検索の許可が付くが、グループや
11929 その他のユーザに対しては、いかなる許可も付かない。現在の umask が
11930 より厳格な場合、付けられる許可はさらに厳しくなる。
11934 ファイルやディレクトリの作成に失敗しても、エラーメッセージを出さない。
11935 終了ステータスは、ファイルが作成されたかどうかをやはり反映する。
11939 既存のファイルの名前と重ならないテンポラリファイル用の名前を生成
11940 するが、ファイルシステムの内容を変更することはない (訳注: 要する
11941 に、テンポラリファイル名を生成表示するだけで、実際にファイルを
11942 作成することはないということ)。このコマンドの出力を使って、新しい
11943 ファイルを作るのは、本質的に安全ではない。名前の生成とその使用との
11944 間には、時間差があり、その間に他のプロセスが同じ名前でオブジェクト
11949 TEMPLATE をディレクトリ DIR を基点とする相対パスとして扱う。 DIR
11950 が指定されていない場合や (ロングオプションの `--tmpdir' でのみ
11951 可能)、空文字列の場合は、環境変数 `TMPDIR' が設定されていれば、その
11952 値を使用し、設定されていなければ、`/tmp' を使用する。このオプション
11953 を指定する場合、 TEMPLATE は絶対パスであってはならない。とは言え、
11954 TEMPLATE にスラッシュが含まれていても構わないが、その場合、途中に
11955 あるディレクトリはすでに存在していなければならない。
11958 TEMPLATE の末尾に SUFFIX を追加する。SUFFIX はスラッシュを含んで
11959 いてはならない。`--suffix' を指定する場合、TEMPLATE は `X' で終わっ
11960 ていなければならない。`--suffix' が指定されていない場合は、TEMPLATE
11961 中の最後の `X' の位置を調べることで、SUFFIX としてふさわしいもの
11962 を割り出す。このオプションが存在するのは、デフォルトの TEMPLATE を
11963 使用しているとき、`X' で始まる SUFFIX を付けられるようにするため
11967 TEMPLATE を、環境変数 `TMPDIR' が設定されていれば、その値である
11968 ディレクトリ直下の 1 個のファイルとして扱う。`TMPDIR' が設定されて
11969 いなければ、`-p' で指定されるディレクトリ直下、それ以外の場合は、
11970 `/tmp' 直下になる。なお、TEMPLATE にスラッシュが含まれていてはなら
11971 ない。このオプションは非推奨である。`-t' なしで `-p' を使う方が
11972 (`TMPDIR' よりコマンドラインの指定を優先するという点で) デフォルト
11973 の動作として優れているし、(途中のディレクトリも指定できるという
11983 File: coreutils-ja.info, Node: realpath invocation, Prev: mktemp invocation, Up: File name manipulation
11985 18.5 `realpath': ファイル名を展開して表示する
11986 ===========================================================
11988 `realpath' は、すべてのシンボリックリンクを展開し、`/./' や `/../' に
11989 対する参照を解決する。さらに、余分な `/' 文字の削除も行う。デフォルト
11990 では、指定したファイル名のうち、最後の要素以外のすべての要素が実在して
11995 realpath [OPTION]... FILE...
11997 このプログラムでは以下のオプションが使用できる。参照: *note Common
12001 `--canonicalize-existing'
12002 指定されたファイル名中のすべての構成要素が実在することを確認する。
12003 存在しなかったり、利用できなかったりする要素があると、`-q' オプ
12004 ションが指定されていないかぎり、`realpath' はエラーメッセージを
12005 出し、0 以外の終了コードで終了する。ファイル名の末尾にスラッシュ
12006 を付けると、その名前はディレクトリであるという指定になる。
12009 `--canonicalize-missing'
12010 指定されたファイル名中に存在しなかったり、使用できなかったりする
12011 構成要素があれば、それをディレクトリとして処理する。
12015 指定されたファイル名中にあるシンボリックリンクを展開する。ただし、
12016 シンボリックリンクに `..' という要素が後続している場合は、シンボ
12017 リックリンクの展開を行う前に、そちらを先に処理する。(訳注: 例を
12018 挙げた方が、わかりやすいだろう。`symlink-directory/../..' といった
12019 ファイル名が与えられた場合、symlink-directory というシンボリック
12020 リンクそのものの親ディレクトリの親ディレクトリに展開するという
12021 こと。次項の注と比較していただきたい。)
12025 指定されたファイル名中にあるシンボリックリンクを展開する。シンボ
12026 リックリンクに `..' という要素が後続している場合も、シンボリック
12027 リンクを展開してから、`..' の処理を行う。こちらがデフォルトの動作
12028 モードである。(訳注: すなわち、`symlink-directory/../..' といった
12029 ファイル名が与えられた場合、シンボリックリンクの参照先の親ディレ
12034 指定されたファイル名についてエラーメッセージを出力しない。
12039 シンボリックリンクの展開を行わない。すなわち、`/./' や `/../' の
12040 参照の解決と、余分な `/' 文字の削除だけを行う。`-m' オプションと
12041 組み合わせた場合、`realpath' は与えられたファイル名に対して操作を
12042 行うだけであり、その各要素が存在しているかどうか、実在のファイルに
12047 出力する項目を NUL 文字で区切る。
12049 `--relative-to=FILE'
12050 オプション引数に指定したファイルを基点とする相対パスとして、
12051 ファイル名を展開する。このオプションは、ファイルの存在に関して
12052 `-m' や `-e' オプションを認識することに注意していただきたい。
12054 `--relative-base=BASE'
12055 このオプションは `--relative-to' と一緒に使うこともでき、その
12056 場合は、操作対象の FILE が BASE 以下のディレクトリに存在するとき
12057 にのみ、相対パス名を表示するように、`--relative-to' の出力に制限
12058 を課す。FILE が BASE 以下のディレクトリに存在しないときは、出力
12059 は絶対パスのファイル名になる。`--relative-to' を指定しなかった
12060 場合、BASE 以下のディレクトリに存在するファイルは、BASE を基点
12061 とする相対パスで表示される。`--relative-to' も指定するなら、その
12062 ディレクトリは BASE の下位ディレクトリでなければならず、さもない
12063 と、このオプションは効果を持たない。このオプションは、ファイル
12064 の存在に関して `-m' や `-e' オプションを認識することに注意して
12067 realpath --relative-to=/usr /tmp /usr/bin
12070 realpath --relative-base=/usr /tmp /usr/bin
12077 0: すべてのファイル名が問題なく表示できた場合。
12081 File: coreutils-ja.info, Node: Working context, Next: User information, Prev: File name manipulation, Up: Top
12086 この章では、現在作業中の環境を表示したり、変更したりするコマンドを説明
12087 する。ここで環境というのは、カレントディレクトリ、端末の設定などである。
12088 次章で取り上げるユーザ関係のコマンドも参照していただきたい。
12092 * pwd invocation:: 現在作業中のディレクトリを表示する。
12093 * stty invocation:: 端末の諸特性を表示・変更する。
12094 * printenv invocation:: 環境変数を表示する。
12095 * tty invocation:: 標準出力に接続している端末のファイル名を表示する。
12098 File: coreutils-ja.info, Node: pwd invocation, Next: stty invocation, Up: Working context
12100 19.1 `pwd': 現在作業中のディレクトリを表示する
12101 ===============================================================
12103 `pwd' は、カレントディレクトリの名前を表示する。
12109 このプログラムでは以下のオプションが使用できる。参照: *note Common
12114 環境変数 `PWD' の値が、`.' や `..' を含まないカレントディレクトリ
12115 の絶対パス名であっても、シンボリックリンクは含んでいるかもしれない。
12116 その場合は、その値をそのまま出力する。それ以外の場合は、デフォルトの
12117 `-P' オプションと同じ処理を行う。
12121 カレントディレクトリについて、参照を完全に解決した名前を表示する。
12122 すなわち、表示される名前のすべての要素が、本物のディレクトリの名前
12123 になり、シンボリックリンクは一つも含まれない。
12125 `-L' と `-P' のオプションが両方とも指定されている場合は、最後に
12126 指定された方が優先される。どちらのオプションも指定されない場合は、
12127 環境変数 `POSIXLY_CORRECT' が設定されていないかぎり、この実装では、
12128 `-P' がデフォルトとして使用される。
12130 シェルの組み込み機能の `pwd' やエイリアスのために、`pwd' に何の
12131 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
12132 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
12133 避けるためには、`env' 経由で `pwd' を起動すればよい (すなわち、 `env
12136 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12139 File: coreutils-ja.info, Node: stty invocation, Next: printenv invocation, Prev: pwd invocation, Up: Working context
12141 19.2 `stty': 端末の諸特性を表示・変更する
12142 =======================================================
12144 `stty' は、たとえばボーレート (baud rate) のような、端末の諸特性を表示、
12149 stty [OPTION] [SETTING]...
12152 tty ラインの設定を一つも指定しない場合、`stty' は、ボーレートと
12153 (それをサポートしているシステムでは) ライン制御規則番号 (line discipline
12154 number)、それに、ライン設定のうち `stty sane' によって設定される値から
12155 変更のあるものを表示する。デフォルトでは、モードの取得や設定は、
12156 標準入力に結びついている tty ラインに対して行うが、これは `--file'
12157 オプションによって変更することができる。
12159 `stty' では、以下で述べるように、オプションではないたくさんの
12160 引数が使える。そうした引数は、端末ライン運用の様々な面を変更する。
12162 このプログラムでは以下のオプションが使用できる。参照: *note Common
12167 現在のすべての設定を人間に読みやすい形で表示する。このオプションを
12168 指定したときには、ラインの設定はできない。
12172 標準入力に結びついている tty ラインを操作の対象にする代わりに、
12173 DEVICE で指定されたファイル名を使ってオープンするラインを操作
12174 の対象にする。このオプションが必要なのは、POSIX 準拠の tty を
12175 オープンするには、`O_NONDELAY' フラグを使う必要があるからだ。
12176 そうしないと、POSIX 準拠の tty は、`clocal' フラグがセットされて
12177 いない場合に、キャリア検出線 (carrier detect line) が活発化する
12178 まで、ブロッキングを起こす。そんなわけで、デバイスのオープンは、
12179 いつも通りのやり方で (訳注: たとえば、`stty < /dev/ttyS1' といった
12180 形で) シェルにやらせておけばよい、というわけには必ずしも行かない
12185 現在の設定を別の `stty' コマンドを使って再現する際に、その引数と
12186 して使えるような形で、現在のすべての設定を表示する。このオプション
12187 を指定したときには、ラインの設定はできない。
12190 設定の多くは、前に `-' を付けることで OFF にすることができる。以下
12191 では、そうした引数については、説明中に「無効化できる」と記しておいた。
12192 説明そのものは、有効にする場合について、すなわち、`-' で OFF にしない
12193 場合について述べている (「無効にした場合」とはっきりことわっている場合
12196 設定の中には、すべての POSIX 準拠システムで利用できるとはかぎらない
12197 ものもある。そうしたものは、拡張機能を使用しているからだ。以下では、
12198 そうした引数については、説明中に「非 POSIX」と記しておいた。非 POSIX
12199 のシステムであっても、そうした設定が使えないことがあるかもしれないが、
12200 あらゆる場合について書いておくことは、不可能である。とりあえず、試して
12203 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12207 * Control:: 制御関係の設定
12209 * Output:: 出力に関する設定
12211 * Combination:: 組み合わせ設定
12212 * Characters:: 特殊文字
12216 File: coreutils-ja.info, Node: Control, Next: Input, Up: stty invocation
12219 ----------------------------
12224 出力にパリティビットを生成し、入力にもパリティビットがあるものと
12228 パリティを奇数に設定する。無効化できる (この設定の場合、`-' の前置
12232 "stick" (mark/space) パリティを使用する。parodd が設定されている
12233 場合、このパリティビットは常に 1 である。parodd が設定されていない
12234 場合、このパリティビットは常に 0 だ。非 POSIX。無効化できる。
12235 (coreutils-8.22 の新機能)
12241 キャラクタ・サイズを 5, 6, 7, 8 ビットにする。
12245 最後のプロセスが tty をクローズするとき、ハングアップ・シグナルを
12249 1 キャラクタにつき 2 個のストップビットを使用する。無効化できる
12250 (この設定の場合、`-' の前置は 1 個のストップビット使用を意味する)。
12256 モデムのコントロール・シグナルを無効にする。無効化できる。
12259 RTS/CTS フロー制御を有効にする。非 POSIX。無効化できる。
12262 DTR/DSR フロー制御を有効にする。非 POSIX。無効化できる。
12265 File: coreutils-ja.info, Node: Input, Next: Output, Prev: Control, Up: stty invocation
12268 -------------------------------
12270 以下の設定は、端末から受け取るデータに対する操作を制御する。
12273 ブレーク (break) 文字を無視する。無効化できる。
12276 ブレークが割り込みシグナルを発生するようにする。無効化できる。
12279 パリティエラーのある文字を無視する。無効化できる。
12282 パリティエラーをマークする (その印として 255, 0 (0xFF, 0x00) という
12283 2 文字の連続を使う)。無効化できる。
12286 入力のパリティチェックを有効にする。無効化できる。
12289 入力文字の高位ビット (8 番目のビット) をクリアする。無効化できる。
12292 改行文字 (newline) を復帰文字 (carriage return) に変換する。無効化
12299 復帰文字を改行文字に変換する。無効化できる。
12302 入力文字が UTF-8 で符号化されていると見なす。無効化できる。
12305 XON/XOFF フロー制御を有効にする (すなわち、`CTRL-S'/`CTRL-Q' を
12310 システムの入力バッファが一杯になりかけたら、`stop' 文字を送り、
12311 バッファがほぼ空に戻ったら、`start' 文字を送るようにする。
12315 大文字を小文字に変換する。非 POSIX。無効化できる。ilcuc は実装
12316 されていないことに注意していただきたい。そんなものを有効にしたら、
12317 ほとんどの (小文字である) Unix のコマンドが、打ち込めなくなって
12321 どんな文字でも出力を再開できるようにする (これを無効にすると、start
12322 文字のみが出力を再開する)。非 POSIX。無効化できる。
12325 入力バッファが一杯のとき、文字を受け取ると、入力バッファをフラッシュ
12326 せずに、ビープ音を鳴らすようにする。非 POSIX。無効化できる。
12329 File: coreutils-ja.info, Node: Output, Next: Local, Prev: Input, Up: stty invocation
12332 -------------------------------
12334 以下の設定は、端末に送るデータに対する操作を制御する。
12337 出力に対して後処理 (postprocess) を行う (訳注: すなわち、以下に列挙
12338 するようなことをする)。無効化できる。
12341 小文字を大文字に変換する。非 POSIX。無効化できる。(ouclc は現在の
12342 ところ、実装されていないことに注意。)
12345 復帰文字 (carriage return) を改行文字 (newline) に変換する。 非
12349 改行文字を復帰文字 + 改行文字に変換する。非 POSIX。無効化できる。
12352 行頭に復帰文字を出力しない。非 POSIX。無効化できる。
12355 改行が復帰として動作する。非 POSIX。無効化できる。
12358 時間で間合いを計る代りに、充填文字 (埋め草文字) を何字か送る
12359 ことで、遅延を行う。非 POSIX。無効化できる。(訳注: 遅延という
12360 のは、端末側の処理が済むまで、データの送出を遅らせること)。
12363 充填文字として ASCII NUL 文字ではなく、ASCII DEL 文字を使う。 非
12368 改行 (newline) 用の遅延方式。非 POSIX。
12374 復帰 (carriage return) 用の遅延方式。非 POSIX。
12380 水平タブ用の遅延方式。非 POSIX。
12384 バックスペース用の遅延方式。非 POSIX。
12388 垂直タブ用の遅延方式。非 POSIX。
12392 改ページ (form feed) 用の遅延方式。非 POSIX。
12395 File: coreutils-ja.info, Node: Local, Next: Combination, Prev: Output, Up: stty invocation
12398 -------------------------
12401 特殊文字 `interrupt', `quit', `suspend' を有効にする。無効化
12405 特殊文字 `erase', `kill', `werase', `rprnt' を有効にする。無効化
12409 POSIX にない特殊文字を有効にする。無効化できる。
12412 入力した文字をエコーする。無効化できる。
12416 `erase' 文字を「バックスペース、スペース、バックスペース」として
12420 `kill' 文字に続けて、改行文字をエコーする。無効化できる。
12423 他の文字のエコーを行わないない場合でも、改行文字はエコーする。
12427 特殊文字 `interrupt' や `quit' の後で、フラッシュを行わない。無効化
12431 `icanon' が設定されているとき、小文字を表す文字の頭に `\' を付ける
12432 ことで、大文字の入出力を可能にする。非 POSIX。無効化できる。
12433 (訳注: たとえば、大文字しか入出力できない端末で、ただの `A' なら
12434 小文字の a を意味し、`\A' なら大文字の A を意味するということ。
12435 次節「組み合わせ設定」の lcase と termios(3) を参照。)
12438 端末に書き込もうとしているバックグラウンドジョブを止める。 非
12443 削除した文字を `\' と `/' で囲んで、逆順にエコーする。非 POSIX。
12444 無効化できる。(訳注: プリンタ端末で使用する設定らしい。)
12448 制御文字をそのまま表示するのではなく、ハット記法 (`^C') で
12449 エコーする。非 POSIX。無効化できる。
12453 行上の各文字を削除することで、特殊文字 `kill' のエコーを行う際、
12454 `echoctl' や `echok' の設定ではなく、`echoprt' や `echoe' の設定が
12455 指示するところに従う。非 POSIX。無効化できる。
12458 File: coreutils-ja.info, Node: Combination, Next: Characters, Prev: Local, Up: stty invocation
12461 ----------------------------
12467 `parenb -parodd cs7' に相当する。無効化できる。無効化した場合、
12468 `-parenb cs8' と同じになる。
12471 `parenb parodd cs7' に相当する。無効化できる。無効化した場合、
12472 `-parenb cs8' と同じになる。
12475 `-icrnl -onlcr' に相当する。無効化できる。無効化した場合、`icrnl
12476 -inlcr -igncr onlcr -ocrnl -onlret' と同じになる。
12479 特殊文字 `erase' と `kill' をデフォルトの値に戻す。
12484 cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
12485 -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
12486 -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
12487 ff0 isig icanon iexten echo echoe echok -echonl
12488 -noflsh -xcase -tostop -echoprt echoctl echoke
12490 さらに、すべての特殊文字をそのデフォルトの値に設定する。
12493 `brkint ignpar istrip icrnl ixon opost isig icanon' に相当する。
12494 さらに、特殊文字 `eof' と `eol' が `min' 及び `time' 文字と同じ
12495 ならば、`eof' と `eol' をデフォルトの値に設定する。無効化できる。
12496 無効化した場合は、`raw' と同じになる。
12501 -ignbrk -brkint -ignpar -parmrk -inpck -istrip
12502 -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
12503 -imaxbel -opost -isig -icanon -xcase min 1 time 0
12505 無効化できる。無効化した場合は、`cooked' と同じになる。
12508 `-icanon' と同じである。無効化できる。無効化した場合は、`icanon'
12512 `-parenb -istrip cs8' に相当する。無効化できる。無効化した場合は、
12513 `parenb istrip cs7' と同じになる。
12516 `-parenb -istrip -opost cs8' に相当する。無効化できる。無効化した
12517 場合は、`parenb istrip opost cs7' と同じになる。
12520 `-ixany' と同じである。非 POSIX。無効化できる。
12523 `tab0' と同じである。非 POSIX。無効化できる。無効化した場合は、
12528 `xcase iuclc olcuc' に相当する。非 POSIX。無効化できる。(この設定
12529 は、大文字しか扱えない端末で使用する。)
12532 `echoe echoctl echoke' に相当する。
12535 `echoe echoctl echoke -ixany intr ^C erase ^? kill ^U' に相当する。
12538 File: coreutils-ja.info, Node: Characters, Next: Special, Prev: Combination, Up: stty invocation
12541 -------------------
12543 特殊文字のデフォルトの値は、システムによって様々である。特殊文字を設定
12544 するには、`name value' という書式を用いる。この name に何が指定できる
12545 かは、以下に列挙するが、value には、文字そのもの、ハット記法 (`^C')、
12546 整数のいづれかを指定することができる。整数は、`0x' で始まっていれば 16
12547 進数、`0' で始まっていれば 8 進数、それ以外の数字なら 10 進数と
12550 GNU の stty では、値に `^-' や `undef' を指定すると、その特殊文字を
12551 無効にする。(これは、Ultrix の `stty' と互換性がない。そこでは、特殊
12552 文字を無効にするには `u' という値が使用されるのだ。GNU の `stty' は、
12553 `u' という値を特別扱いしない。すなわち、その特殊文字として <U> を設定
12557 割り込み (interrupt) シグナルを送る。
12569 ファイル終端 (end of file) 文字を送る (入力を終了する)。
12575 行を終端する別の文字。非 POSIX。
12578 シェルの別の層 (a different shell layer) に切り換える。非 POSIX。
12587 端末停止シグナル (terminal stop signal) を送る。
12590 入力をフラッシュしてから、端末停止シグナルを送る。非 POSIX。
12596 直前にタイプした単語 (word) を削除する。非 POSIX。
12599 次にタイプする文字が特殊文字であっても、タイプしたとおりの文字として
12600 入力する。非 POSIX。(訳注: たとえば、lnext が ^V の場合、^V^D と
12601 続けてタイプすると、^D を入力終了の印としてではなく、^D という文字
12602 そのものとして入力できるということ。)
12605 File: coreutils-ja.info, Node: Special, Prev: Characters, Up: stty invocation
12608 -------------------
12611 `-icanon' が設定されている際、time の値として指定されている時間が
12612 経過するまでの間に、1 回分の読み込みの条件を満たす最少限の文字数を
12616 `-icanon' が設定されている際、最小限の文字数が読み込まれなかった
12617 場合に、読み込みが時間切れになるまでの時間を 10 分の 1 秒単位で
12627 端末の行数は N 行だと、tty カーネルドライバに伝える。非 POSIX。
12631 端末の横幅は N 桁だと、カーネルに伝える。非 POSIX。
12634 端末の行数と桁数を表示する。これは、端末が持っていると、カーネルが
12635 考えている行数と桁数である。(カーネル中に行数や桁数を保持しない
12636 システムでは、通常その代わりに、環境変数 `LINES' や `COLUMNS' を
12637 使用する。それに対して、GNU の `stty' は、そうした環境変数に全く
12641 ライン制御規則 (line discipline) N を使用する。非 POSIX。
12647 入出力の速度を N に設定する。N には次の一つが使える。0 50 75 110
12648 134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200 38400
12649 `exta' `extb'。`exta' は 19200 と同じであり、`extb' は 38400 と
12650 同じである。GNU/Linux を含む多くのシステムが、もっと早い速度を
12651 サポートしている。`stty' は、システムがサポートしているならという
12652 条件で、次の速度もサポートしている。57600 115200 230400 460800
12653 500000 576000 921600 1000000 1152000 1500000 2000000 2500000
12654 3000000 3500000 4000000。なお、0 は、`-clocal' が設定されている場合
12658 File: coreutils-ja.info, Node: printenv invocation, Next: tty invocation, Prev: stty invocation, Up: Working context
12660 19.3 `printenv': 環境変数のすべて、あるいは一部を表示する
12661 =============================================================================
12663 `printenv' は、環境変数の値を表示する。
12667 printenv [OPTION] [VARIABLE]...
12669 VARIABLE が一つも指定されていない場合、`printenv' はすべての環境変数
12670 の値を表示する。VARIABLE が指定されている場合は、その変数それぞれに
12671 ついて、設定されていれば値を表示し、設定されていなければ何も表示しない。
12673 このプログラムでは、以下のオプションが使える。参照: *note Common
12678 各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。この
12679 オプションを使用すると、`printenv' の出力するデータに、途中に改行を
12680 挟むものがあっても、他のプログラムがその出力を解析できるようになる。
12685 0: 指定されているすべての変数が見つかった。
12686 1: 指定されている変数のうちに、見つからなかったものがある。
12690 File: coreutils-ja.info, Node: tty invocation, Prev: printenv invocation, Up: Working context
12692 19.4 `tty': 標準出力に接続している端末のファイル名を表示する
12693 ====================================================================================
12695 `tty' は、自分の標準入力に接続している端末のファイル名を表示する。
12696 標準入力が端末ではない場合は、`not a tty' というメッセージを出す。
12702 このプログラムでは、以下のオプションが使える。参照: *note Common
12708 何も表示しない。終了ステータスを返すだけ。
12719 File: coreutils-ja.info, Node: User information, Next: System context, Prev: Working context, Up: Top
12724 この章では、ユーザ関係の情報を表示するコマンドの説明をする。誰がログイン
12725 しているか、どんなグループに所属しているか、などである。
12729 * id invocation:: ユーザの ID を表示する。
12730 * logname invocation:: 現在のログイン名を表示する。
12731 * whoami invocation:: 実効ユーザ ID を表示する。
12732 * groups invocation:: ユーザが所属しているグループ名を表示する。
12733 * users invocation:: 現在ログインしている全ユーザのログイン名を表示する。
12734 * who invocation:: 現在誰がログインしているかを表示する。
12737 File: coreutils-ja.info, Node: id invocation, Next: logname invocation, Up: User information
12739 20.1 `id': ユーザの ID を表示する
12740 ==========================================
12742 `id' は、指定されたユーザについて情報を表示する。ユーザが指定されて
12743 いない場合は、`id' を実行しているプロセスについて情報を表示する。
12747 id [OPTION]... [USER]
12749 USER にはユーザ ID (番号) とユーザ名のどちらも使えるが、ID が頭に
12750 `+' を付けて指定されていないかぎり、まずユーザ名として検索が行われる。
12752 デフォルトで表示するのは、実ユーザ ID、実グループ ID、実効ユーザ ID
12753 (実ユーザ ID と違う場合)、実効グループ ID (実グループID と違う場合)、
12754 それに、補助 (supplemental) グループ ID である。さらに、SELinux が
12755 有効になっていて、環境変数 `POSIXLY_CORRECT' が設定されていない場合は、
12756 `context=C' も表示する。この C はセキュリティ・コンテキストである。
12758 表示される各数値には、それが何であるかを示す文字列が前に付き、対応
12759 するユーザ名やグループ名がカッコで囲まれて後ろに続く。
12761 オプションを指定すると、`id' は上で述べた情報のうち、一部のみを表示
12762 する。参照: *note Common options::.
12770 グループ ID と補助グループ ID のみ表示する。
12774 ID 番号の代りに、ユーザ名やグループ名を表示する。`-u', `-g', `-G'
12779 実効ユーザや実効グループの ID ではなく、実ユーザや実グループの ID
12780 を表示する。`-u', `-g', `-G' のどれか一つを指定する必要がある。
12788 実行中のユーザのセキュリティ・コンテキストのみを表示する。SELinux
12789 が無効になっている場合は、警告メッセージを出し、終了ステータスを 1
12794 出力する項目を NUL 文字で区切る。このオプションは、デフォルトの
12795 フォーマットを使用しているときは、使うことができない。
12796 (coreutils-8.22 の新機能)
12800 users <NUL> devs <NUL>
12803 プロセスの基本 (primary) グループや 補助 (supplementary) グループは、
12804 通常その親プロセスから継承され、ログイン後ずっと変わらないのが普通だ。
12805 従って、ログイン後にグループ・データベースを変更しても、現在のログイン
12806 セッションが続いている間は、`id' コマンドはその変更を反映しない。
12807 しかし、引数にユーザの名前を指定して `id' を実行した場合は、ユーザ・
12808 データベースやグループ・データベースの参照が改めて行われるので、
12811 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12814 File: coreutils-ja.info, Node: logname invocation, Next: whoami invocation, Prev: id invocation, Up: User information
12816 20.2 `logname': 現在のログイン名を表示する
12817 =======================================================
12819 `logname' は、自分を呼び出したユーザの名前を、システムが管理して
12820 いるファイル (たいていは `/var/run/utmp' か `/etc/utmp') で調べて
12821 表示し、ステータス 0 で終了する。自分を呼び出しているプロセスの
12822 エントリが存在しない場合は、`logname' はエラーメッセージを出し、
12825 オプションは、`--help' と `--version' だけである。*Note Common
12828 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12831 File: coreutils-ja.info, Node: whoami invocation, Next: groups invocation, Prev: logname invocation, Up: User information
12833 20.3 `whoami': 実効ユーザ ID を表示する
12834 =================================================
12836 `whoami' は、現在の実効ユーザ ID に対応するユーザ名を表示する。 `id
12839 オプションは、`--help' と `--version' だけである。*Note Common
12842 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12845 File: coreutils-ja.info, Node: groups invocation, Next: users invocation, Prev: whoami invocation, Up: User information
12847 20.4 `groups': ユーザが所属しているグループ名を表示する
12848 ===========================================================================
12850 `groups' は、USERNAME が指定されていれば、指定された各ユーザの基本
12851 (primary) グループ名と補助 (supplementary) グループ名を表示し、
12852 ユーザ名が指定されていなければ、現在のプロセスの基本グループ名と
12853 補助グループ名を表示する。複数の名前が指定されている場合は、
12854 各ユーザの名前がグループのリストの前に置かれ、両者の間はコロンで
12859 groups [USERNAME]...
12861 グループのリストは、`id -Gn' コマンドの出力と同じである。
12863 オプションは、`--help' と `--version' だけである。*Note Common
12866 プロセスの基本 (primary) グループや 補助 (supplementary) グループは、
12867 通常その親プロセスから継承され、ログイン後ずっと変わらないのが普通だ。
12868 従って、ログイン後にグループ・データベースを変更しても、現在のログイン
12869 セッションが続いている間は、`groups' コマンドはその変更を反映しない。
12870 しかし、ユーザのリストを指定して `groups' を実行した場合は、ユーザ・
12871 データベースやグループ・データベースの参照が改めて行われるので、
12874 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12877 File: coreutils-ja.info, Node: users invocation, Next: who invocation, Prev: groups invocation, Up: User information
12879 20.5 `users': 現在ログインしている全ユーザのログイン名を表示する
12880 =========================================================================================
12882 `users' は、目下使用しているホストに現在ログインしている全ユーザの
12883 ユーザ名のリストを、空白で区切って 1 行に表示する。ユーザ名はログイン
12884 セッションごとに表示されるので、あるユーザが複数のログインセッションを
12885 行っていれば、そのユーザの名前はログインセッションの数だけ出力に現れる
12892 引数 FILE の指定がない場合、`users' はシステムが管理するファイル
12893 (たいていは `/var/run/utmp' か `/etc/utmp') からログインしているユーザの
12894 情報を引き出す。引数 FILE が指定されている場合は、代りにそのファイルを
12895 使用する。`/var/log/wtmp' が使われることが多い。
12897 オプションは、`--help' と `--version' だけである。*Note Common
12900 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
12903 File: coreutils-ja.info, Node: who invocation, Prev: users invocation, Up: User information
12905 20.6 `who': 現在誰がログインしているかを表示する
12906 ==================================================================
12908 `who' は、現在ログインしているユーザについての情報を表示する。
12912 `who' [OPTION] [FILE] [am i]
12914 オプション以外の引数が一つもない場合、`who' は現在ログインしている
12915 各ユーザについて、次の情報を表示する。ログイン名、端末ライン、ログイン
12916 日時、それにリモート・ホスト名か X ディスプレー名。
12918 オプション以外の引数を一つだけ指定すると、`who' はそれを、ログイン
12919 したユーザを記録しているファイルの名前として、システムが管理している
12920 デフォルトのファイル (たいていは `/var/run/utmp' か `/etc/utmp') の
12921 代りに使用する。`who' に引数として `/var/log/wtmp' を渡して、これまでに
12922 誰がログインしたかを調べるのはよくあることである。
12924 オプション以外の引数を二つ指定すると、`who' は、自分を実行している
12925 ユーザの情報のみを (自分が接続している標準入力からユーザの見当を
12926 付けて)、ホスト名を前に付けて表示する。渡される二つの引数は、
12927 全体として `who am i' になるように、`am i' とするのが慣例である。
12929 タイムスタンプは、タイムゾーンのルールに従って表示されるが、その
12930 ルールを指定しているのは、環境変数 `TZ' である。`TZ' が設定されて
12931 いない場合は、システムのデフォルトのルールに従って表示される。 *Note
12932 Specifying the Time Zone with `TZ': (libc)TZ Variable.
12934 このプログラムでは以下のオプションが使用できる。参照: *note Common
12939 `-b -d --login -p -r -t -T -u' と同じである。
12943 システムをブートした直近の日時を表示する。
12947 終了したプロセスに関する情報を表示する。
12955 現在システムがログインの窓口としてユーザを待ち受けているプロセス
12956 に関する情報のみを表示する。ユーザ名は常に `LOGIN' である。
12959 utmp で見つかったホスト名について DNS を検索して正規名を得ようと
12960 する。これがデフォルトになっていないのは、インターネットに自動
12961 ダイアルアップで接続しているシステムでは、深刻な遅滞を招きかねない
12969 init によって生み出されたプロセスのうち、現在活動中のものをリスト
12974 ログインしているユーザのログイン名と人数のみを表示する。他のすべての
12979 init プロセスの現在のランレベルを表示する (たぶん、直前のラン
12983 無視する。他の版の `who' との互換性のためにある。
12987 システムクロックを最後に変更した日時を表示する。
12990 ログイン日時の後ろに、ユーザが何時間何分端末を使用していないかを
12991 (idle 状態かを) 表示する。`.' は、ユーザがここ 1 分以内に端末操作
12992 をしたことを意味する。`old' は、ユーザが 24 時間以上端末を使用
13000 ログイン名の後ろに、ユーザのメッセージ受け入れ状態を示す 1 文字を
13003 `+' `write' によるメッセージを受け入れる。
13004 `-' `write' によるメッセージを拒否する。
13008 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13011 File: coreutils-ja.info, Node: System context, Next: SELinux context, Prev: User information, Up: Top
13014 *********************
13016 この章では、システム全体に関わる情報を表示したり、変更したりするコマンドを
13021 * date invocation:: システムの日付や時刻を表示、設定する。
13022 * arch invocation:: マシンのハードウェア名を表示する。
13023 * nproc invocation:: プロセッサの数を表示する。
13024 * uname invocation:: システムについて情報を表示する。
13025 * hostname invocation:: システム名を表示、設定する。
13026 * hostid invocation:: 数値によるホストの識別名を表示する。
13027 * uptime invocation:: システムの連続稼働時間と負荷を表示する。
13030 File: coreutils-ja.info, Node: date invocation, Next: arch invocation, Up: System context
13032 21.1 `date': システムの日付や時刻を表示、設定する
13033 ===================================================================
13037 date [OPTION]... [+FORMAT]
13038 date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]
13040 `date' を FORMAT 引数なしで起動すると、デフォルトの書式を指定して
13041 起動するのと同じことになる。デフォルトの書式は、`LC_TIME' ロケール・
13042 カテゴリによって様々である。デフォルトの C ロケールの場合、その書式は
13043 `'+%a %b %e %H:%M:%S %Z %Y'' なので、出力は `Thu Mar 3 13:47:51 PST
13046 通常 `date' は、環境変数 `TZ' が指示しているタイムゾーンのルールを
13047 使用し、`TZ' が設定されていないときは、システムのデフォルトのルールを
13048 使用する。*Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
13050 `+' で始まる引数を指定すると、`date' は現在の日付と時刻を (あるいは、
13051 後述する `--date' オプションで指定した日付と時刻を)、その引数によって
13052 定義された書式で表示する。書式を指定するこの引数は、`strftime' 関数の
13053 それとほぼ同じである。なお、`%' で始まる変換指定子を除いて、書式文字列
13054 中の文字は、変更されずにそのまま表示される。変換指定子については、次節
13057 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13061 * Time conversion specifiers:: 時刻関係の変換指定子 %[HIklMNpPrRsSTXzZ]。
13062 * Date conversion specifiers:: 日付関係の変換指定子 %[aAbBcCdDeFgGhjmuUVwWxyY]。
13063 * Literal conversion specifiers:: 文字変換指定子 %[%nt]。
13064 * Padding and other flags:: 0 や空白による空き埋め、その他。
13065 * Setting the time:: システムクロックの変更。
13066 * Options for date:: 現在の日時以外の指定。
13067 * Date input formats:: 日付文字列の指定法。
13068 * Examples of date:: 用例。
13071 File: coreutils-ja.info, Node: Time conversion specifiers, Next: Date conversion specifiers, Up: date invocation
13074 -------------------------------------
13085 時。一桁のときは、0 ではなく、空白で埋める (` 0'...`23')。`%_H' と
13089 時。一桁のときは、0 ではなく、空白で埋める (` 1'...`12')。`%_I' と
13096 ナノ秒 (`000000000'...`999999999')。これは GNU の拡張である。
13099 現在のロケールで `AM' や `PM' に相当するもの。空白になるロケール
13100 も多い。正午は `PM' として、真夜中は `AM' として扱う。
13103 `%p' と同様だが、小文字を使う。これは GNU の拡張である。
13106 現在のロケールによる 12 時間表記の時刻 (例: `11:11:04 PM')
13109 24 時間表記の時と分。`%H:%M' と同じ。
13112 ジ・エポック (the epoch、Unix 紀元)、すなわち 1970-01-01 00:00:00
13113 UTC からの経過秒数。閏秒のサポートを利用できない場合、閏秒は計算に
13114 入れない。用例については、「`date' の用例」を見ること。 *Note
13115 %s-examples::. これは GNU の拡張である。
13118 秒 (`00'...`60')。閏秒がサポートされている場合、`60' になることが
13122 24 時間表記の時、分、秒。`%H:%M:%S' と同じ。
13125 現在のロケールによる時刻表示 (例: `23:13:48')
13128 RFC 2822/ISO 8601 形式の数値によるタイムゾーン (たとえば、`-0600'
13129 や `+0530')。タイムゾーンが特定できない場合は、空になる。この値は、
13130 環境変数 `TZ' によって指定されたタイムゾーンのルールを使用する
13131 ことで、現在の日時に対応した、数値によるタイムゾーンを正しく反映
13132 する (訳注: 要するに、夏時間、冬時間が存在する地帯では、それを
13133 反映するということ)。操作の対象となる日時は (もしそうしたければ、
13134 その日時におけるタイムゾーンのルールも)、`--date' オプションに
13138 RFC 3339/ISO 8601 形式の、`:' を使用する数値によるタイムゾーン
13139 (たとえば、`-06:00' や `+05:30')。タイムゾーンが特定できない
13140 場合は、空になる。これは GNU による拡張である。
13143 `:' を使用する数値によるタイムゾーンで、もっとも近い秒まで表示する
13144 (たとえば、`-06:00:00' や `+05:30:00')。タイムゾーンが特定できない
13145 場合は、空になる。これは GNU による拡張である。
13148 `:' を使用する数値によるタイムゾーンで、時間の精度は必要最小限で
13149 済ます (たとえば、`-06', `+05:30', `-04:56:02')。タイムゾーンが
13150 特定できない場合は、空になる。これは GNU による拡張である。
13153 アルファベットによるタイムゾーンの略称 (たとえば、`EDT')。タイム
13154 ゾーンが特定できない場合は、空になる。タイムゾーンがどのようにして
13155 特定されるか (訳注: たとえば、アメリカ東部なら、EST (冬時間) と EDT
13156 (夏時間) のどちらが選ばれるか) については、`%z' を参照すること。
13159 File: coreutils-ja.info, Node: Date conversion specifiers, Next: Literal conversion specifiers, Prev: Time conversion specifiers, Up: date invocation
13162 -------------------------------------
13164 `date' の日付関係の変換指定子。
13167 現在のロケールによる曜日の省略形 (例: `Sun')
13170 現在のロケールによる曜日の省略しない表現。長さは不定 (例: `Sunday')
13173 現在のロケールによる月名の省略形 (例: `Jan')
13176 現在のロケールによる月名の省略しない表現。長さは不定 (例:
13180 現在のロケールによる日付と時刻 (例: `Thu Mar 3 23:05:25 2005')
13183 世紀。`%Y' に似ているが、下二桁を省略している。たとえば、`%Y' が
13184 `2000' ならば、`%C' は `20'、`%Y' が `-001' ならば、`%C' は `-0'
13185 である。通例、少なくとも 2 個の文字からなるが、2 個以上のことも
13189 その月の何日目か (e.g., `01')
13195 その月の何日目か。一桁のときは、0 ではなく、空白で埋める。`%_d'
13199 ISO 8601 形式の完全な日付。`%Y-%m-%d' と同じ。日付の形式にこれを
13200 選ぶのは、好判断である。標準的な形式だし、年度が 0000...9999 の
13201 範囲にある通常の場合に、ソートしやすい。
13204 ISO 週番号に対応する年度表示だが、世紀の部分を省略している (その
13205 結果、`00' から `99' の範囲になる)。これは普通 `%y' と同じ形式、
13206 同じ値になるが、ISO 週番号 (`%V' 参照) が前年、または翌年に
13207 属する場合は、そちらの年度が代りに使用される点が異なる。
13210 ISO 週番号に対応する年度表示。これは普通 `%Y' と同じ形式、同じ値
13211 になるが、ISO 週番号 (`%V' 参照) が前年、または翌年に属する場合は、
13212 そちらの年度が代りに使用される点が異なる。通常、これが役に立つのは、
13213 `%V' も一緒に使用するときだけである。たとえば、`%G-%m-%d' という
13214 書式は、ISO 週番号による年度と普段使用する月や日を組み合わせている
13215 ので、たぶん指定の仕方を間違えている。
13221 その年の何日目か (`001'...`366')
13227 その週の何日目か (`1'...`7')。`1' は月曜日に当たる。
13230 日曜日を週の最初の日とする、その年の週番号 (`00'...`53')。新しい
13231 年の最初の日曜日より前の日々は、第 0 週に属する。
13234 ISO 週番号。すなわち、月曜日を週の最初の日とする、その年の週番号
13235 (`01'...`53')。1 月 1 日を含む週が、新しい年の日々を 4 日以上含む
13236 場合は、その週が第 1 週であると見なされる。そうでない場合は、
13237 その週は前年の第 53 週であり、翌週が第 1 週になる。(ISO 8601 の
13241 その週の何日目か (`0'...`6')。0 は日曜日に当たる。
13244 月曜日を週の最初の日とする、その年の週番号 (`00'...`53')。最初の
13245 月曜日より前の新しい年の日々は、第 0 週に属する。
13248 現在のロケールによる日付の表示 (例: `12/31/99')
13251 年度の下二桁 (`00'...`99')
13254 年度。通例、少なくとも 4 文字だが、もっと多いこともある。`0000'
13255 年は `0001' の前年であり、`-001' 年は `0000' の前年である。
13258 File: coreutils-ja.info, Node: Literal conversion specifiers, Next: Padding and other flags, Prev: Date conversion specifiers, Up: date invocation
13261 ----------------------------
13263 日付や時刻以外の `date' の変換指定子。
13275 File: coreutils-ja.info, Node: Padding and other flags, Next: Setting the time, Prev: Literal conversion specifiers, Up: date invocation
13278 -------------------------------------
13280 特に指定がないかぎり、`date' は通常、数値の入るフィールドの空きを 0
13281 で埋める。従って、たとえば、数値による月名は常に二桁の数字として
13282 出力される。しかし、ジ・エポック (Unix 紀元) 以来の経過秒数では、
13283 空きを埋めることはしない。この秒数には決まった長さがないからである。
13285 GNU の拡張として、以下に挙げるフラグの一つを `%' の後ろに置くことが
13289 (ハイフン) フィールドの空き埋めをしない。出力が人間に見せるための
13293 (アンダースコア、下線) 空白で空き埋めをする。出力を一定の文字数に
13294 する必要があるが、0 で埋めたのでは見にくいという場合に、役に立つ。
13297 (ゼロ) 変換指定子が普通なら空白で埋める場合にも、ゼロで空き埋めを
13304 可能なら、反対の文字を使う。通常大文字のフィールドは小文字になり、
13309 date +%d/%m -d "Feb 1"
13311 date +%-d/%-m -d "Feb 1"
13313 date +%_d/%_m -d "Feb 1"
13316 これも GNU の拡張だが、フィールドの幅を 10 進数で指定することができ
13317 る (数字は、上記のフラグがあれば、その後ろに置く)。そのフィールドの
13318 出力の加工前の長さが、幅として指定した文字数より短い場合は、右詰めに
13319 して、指定サイズにまで空き埋めした結果が書き出される。たとえば、`%9B'
13320 は、右詰めにした月の名前を 9 文字分のフィールドに表示する。
13322 上記のフラグやフィールド幅の指定の後ろに、修飾子 (modifier) を付ける
13323 こともできる (指定するしないは自由)。修飾子には、次のものがある。
13326 現在のロケールが持つもう一つの日時表記を使用する。この修飾子は、
13327 `%c', `%C', `%x', `%X', `%y', `%Y' に対して使用できる。たとえば、
13328 日本語ロケールで `%Ex' とすれば、元号による日付を表示するだろう。
13331 現在のロケールが持つもう一つの数字表記を使用する。この修飾子は、
13332 数値を表す変換指定子にしか使用できない。
13334 書式が修飾子をサポートしていても、もう一つの表記が利用できない場合、
13338 File: coreutils-ja.info, Node: Setting the time, Next: Options for date, Prev: Padding and other flags, Up: date invocation
13341 ----------------------------------------
13343 `+' で始まらない引数を指定すると、`date' は、(以下で述べるように) その
13344 引数で指定した日時にシステムクロックを設定する。システムクロックを設定
13345 するには、しかるべき権限が必要である。リブート後も変更を維持するには、
13346 システムクロックに合わせてハードウェアクロックも更新する必要があるかも
13347 しれないことに注意していただきたい。ご使用のシステムでは、ハードウェア
13348 クロックの更新は、自動的に行われないかもしれないからだ。
13350 引き数の構成要素は、すべて数字でなければならない。それは以下の意味を
13353 (訳注: 念のため、この章の冒頭にあるシステムクロック設定用の書式を
13354 再掲しておく。date [-u|-utc|-universal] [ MMDDhhmm[[CC]YY][.ss] ])
13377 注意していただきたいが、`--date' や `--set' オプションは、ここで
13378 述べている書式の引数と組み合わせて使うことができない。`--universal'
13379 オプションは、ここで述べている書式の引数と一緒に使うことができるが、
13380 その場合、指定されている日時が現在地のタイムゾーンではなく、協定世界時
13381 (UTC) に準じているのを示すことになる。
13384 File: coreutils-ja.info, Node: Options for date, Next: Examples of date, Prev: Setting the time, Up: date invocation
13386 21.1.6 `date' のオプション
13387 --------------------------------
13389 このプログラムでは以下のオプションが使用できる。参照: *note Common
13394 現在の日時の代りに、日付文字列 DATESTR で指定した日時を表示する。
13395 DATESTR には、よく使われる書式なら、ほとんどどんな書式でも使う
13396 ことができる。月の名前、タイムゾーン、`am' や `pm'、`yesterday'
13397 といった単語、などを含んでいてもよい。たとえば、`--date="2004-02-27
13398 14:19:13.489392193 +0530"' は、UTC よりも東 5 時間 30 分のタイム
13399 ゾーンで 2004 年 2 月 27 日 午後 2 時 19 分 13 秒から 489,392,193
13401 注意: 現在のところ、入力は、ロケールに依存しない書式でなければ
13402 ならない。たとえば、以下の例の LC_TIME=C は、多くのロケールで正しい
13404 date -d "$(LC_TIME=C date)"
13405 参照: *Note Date input formats::.
13409 DATEFILE の各行を `-d' の場合と同じように解析して、生成された日付
13410 と時刻を表示する。DATEFILE が `-' ならば、標準入力を使用する。処理
13411 する日付がたくさんある場合に、このオプションは重宝である。何故ならば、
13412 `date' コマンドを何度も起動するときのシステムのオーバーヘッドは、
13416 `--iso-8601[=TIMESPEC]'
13417 ISO 8601 の書式、`%Y-%m-%d' を使って、日付を表示する。
13419 引数 TIMESPEC では、日付の後ろに時刻をどの単位まで追加するかを
13420 指定する。以下の一つを指定することができる。
13422 日付のみを表示する。TIMESPEC を省略した場合のデフォルト。
13436 時刻の部分まで表示するときは、`%z' の書式でタイムゾーンも付ける。
13440 現在の日付と時刻の代りに、FILE の内容を最後に更新した (the last
13441 modification) 日付と時刻を表示する。
13446 日付と時刻を `%a, %d %b %Y %H:%M:%S %z' という書式を使用し、C
13447 ロケールで評価して表示する。従って、月や曜日の省略形は常に英語に
13448 なる。一例を挙げると、こんな表示である。
13450 Fri, 09 Sep 2005 13:51:39 -0700
13452 この書式は、Internet RFC 2822
13453 (ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt) と RFC 822
13454 (ftp://ftp.rfc-editor.org/in-notes/rfc822.txt) に従っている。
13455 インターネットの E メールに関する現在と以前の規格である。
13457 `--rfc-3339=TIMESPEC'
13458 Internet RFC 3339 (ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt)
13459 が規定している書式を使用して、日付を表示する。この書式は、ISO 8601
13460 の書式のサブセットだが、日付と時刻を区切るのに、`T' という文字では
13461 なく、空白を使うことをアプリケーションに許している、という相違点も
13462 ある。他の標準の書式とは違って、RFC 3339 の書式は、現在のロケール
13463 が何であろうとも、`--date' (`-d') や `--file' (`-f') オプションに
13466 引数 TIMESPEC では、時刻をどこまで表示するかを指定する。以下の一つ
13470 年から始まる日付だけを表示する。たとえば、`2005-09-14'。これは、
13471 `%Y-%m-%d' という書式と等価ある。
13474 年から始まる日付と秒までの時刻を表示し、両者の間は空白で区切る。
13475 一例を挙げると、`2005-09-14 00:56:06+05:30'。出力の末尾には、
13476 協定世界時からの時差が付く。例の場合、`+05:30' は、地方時が
13477 UTC より 5 時間 30 分進んでいることを意味している。これは、
13478 `%Y-%m-%d %H:%M:%S%:z' という書式と等価である。
13481 `seconds' と似ているが、ナノ秒まで表示する。一例を挙げると、
13482 `2005-09-14 00:56:06.998458565+05:30'。これは、`%Y-%m-%d
13483 %H:%M:%S.%N%:z' という書式と等価である。
13488 日付と時刻を DATESTR に設定する。上記の `-d' を参照。前節「システム
13489 クロックの設定」 も参照すること。*note Setting the time::.
13494 環境変数 `TZ' が、文字列 `UTC0' に設定されているかのように、処理に
13495 協定世界時 (UTC, Coordinated Universal Time) を使用する。協定世界時
13496 は、歴史的な理由から「グリニッジ標準時 (GMT)」と呼ばれることもよく
13497 ある。一般にシステムは閏秒を無視するので、日時は正真の UTC では
13501 File: coreutils-ja.info, Node: Examples of date, Prev: Options for date, Up: date invocation
13504 --------------------------
13506 用例をいくつか挙げてみる。前節の `-d' オプションの説明も参照して
13511 date --date='2 days ago'
13513 * 今から 3 ヶ月と 1 日後の日付けを表示する。
13515 date --date='3 months 1 day'
13517 * 今年のクリスマスは年の初めから何日目かを表示する。
13519 date --date='25 Dec' +%j
13521 * 今日が何月何日かを、省略しない月の名前で表示する。
13525 しかし、月の最初の 9 日間では、`%d' は空きを 0 で埋めた 2 桁の
13526 フィールドに展開されるので、この結果はご希望のものとは違うかも
13527 しれない。たとえば、`date -d 1may '+%B %d'' の出力は、`May 01' に
13530 * 月のうちの 1 桁の日々に対して、先頭に 0 を付けずに日付を表示したい
13531 のなら、(GNU の拡張である) `-' フラグを使用すれば、空き埋めを全く
13534 date -d 1may '+%B %-d'
13536 * 現在の日付と時刻を、non-GNU 版の `date' の多くでシステムクロックを
13537 設定するときに要求される書式で表示する。
13539 date +%m%d%H%M%Y.%S
13541 * システムクロックを 2 分進める。
13543 date --set='+2 minutes'
13545 * 日付を RFC 2822 の書式で表示するためには、`date --rfc-2822' を使用
13546 する。ここに示すのは、出力の一例である。
13548 Fri, 09 Sep 2005 13:51:39 -0700
13550 * 日付を表す文字列をジ・エポック (the epoch、Unix 紀元、すなわち、
13551 1970-01-01 00:00:00 UTC) からの経過秒数に変換するには、`--date'
13552 オプションを `%s' 書式と組み合わせて使用する。これは、データを日付
13553 によってソートしたり、グラフ化したり、比較したりする際に、便利
13554 である。次のコマンドは、ジ・エポックから 2 分経ったときの、
13555 ジ・エポックからの経過秒数を出力する。
13557 date --date='1970-01-01 00:02:00 +0000' +%s
13560 日付を表す文字列でタイムゾーン情報を指定しない場合、`date' は、
13561 コンピュータが認識しているタイムゾーンを使用して、その文字列を
13562 解釈する。たとえば、使用しているコンピュータのタイムゾーンが、
13563 マサチューセッツ州のケンブリッジのものならば、それは UTC より 5
13567 date --date='1970-01-01 00:02:00' +%s
13570 * 日付の付いたデータをソートしたり、グラフ化したりしているとしよう。
13571 その日付の加工前の値は、ジ・エポックからの経過秒数で表されている
13572 かもしれない。もっとも、`946684800' といった日付を見て、「ああ、
13573 イギリスのグリニッジの 2000 年の最初の 0 秒だね」と、さりげなく
13576 date --date='2000-01-01 UTC' +%s
13579 なお、上と同じ結果は、`--utc' (`-u') オプションを使っても得られ、
13580 その場合は、日付を表す文字列で `UTC' を省略することができる。
13581 とは言え、`--utc' を使う方法は、`%s' を始め、多くの書式文字列では、
13582 日付文字列で `UTC' を使うのと同じ結果をもたらすものの、協定世界時
13583 からの時差が 0 ではないタイムゾーンでは、`%z' など、タイムゾーン
13584 によって値が変わってくる書式文字列に対しては、異なる結果をもたらす
13587 date -u --date=2000-01-01 +%s
13590 こうした秒数という扱いにくいデータをもっと読みやすい形に変換し直す
13594 date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
13595 1999-12-31 19:00:00 -0500
13597 coreutils 5.3.0 以来使用できるようになった `@' という表記に頼っても
13598 構わないなら、上記のコマンドを短くすることができる。
13600 date -d @946684800 +"%F %T %z"
13601 1999-12-31 19:00:00 -0500
13603 UTC の日付や時刻を出力した方がよいことも多い。
13605 date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"
13606 2000-01-01 00:00:00 +0000
13608 * 閏秒は秒数計算に入れないのが一般的だが、例外的なシステムもある。
13609 閏秒は予測できないものなので、閏秒を計算に入れる例外的なシステム
13610 では、秒数による計算と未来の日時との対応は信頼性に欠ける。
13612 一般的なシステムと例外的なシステムの両者が、2012-06-30 23:59:60 UTC
13613 の閏秒をどのように処理しているかを以下に示す。
13615 # 一般的なシステムは閏秒を無視する:
13616 date --date='2012-06-30 23:59:59 +0000' +%s
13618 date --date='2012-06-30 23:59:60 +0000' +%s
13619 date: invalid date '2012-06-30 23:59:60 +0000'
13620 date --date='2012-07-01 00:00:00 +0000' +%s
13623 # 例外的なシステムは閏秒をカウントする:
13624 date --date='2012-06-30 23:59:59 +0000' +%s
13626 date --date='2012-06-30 23:59:60 +0000' +%s
13628 date --date='2012-07-01 00:00:00 +0000' +%s
13633 File: coreutils-ja.info, Node: arch invocation, Next: nproc invocation, Prev: date invocation, Up: System context
13635 21.2 `arch': マシンのハードウェア名を表示する
13636 =============================================================
13638 `arch' は、マシンのハードウェア名を表示する。`uname -m' と同じこと
13645 このプログラムでは、共通オプションしか使用できない。*note Common
13648 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13651 File: coreutils-ja.info, Node: nproc invocation, Next: uname invocation, Prev: arch invocation, Up: System context
13653 21.3 `nproc': 利用できるプロセッサの個数を表示する
13654 ====================================================================
13656 カレントプロセスが利用できるプロセシング・ユニットの個数を表示する。
13657 それは、稼働しているプロセッサの数より少ないかもしれない。そうした
13658 情報が取得できない場合は、搭載されているプロセッサの数を表示する。
13659 環境変数 `OMP_NUM_THREADS' が設定されている場合は、その変数が、返さ
13660 れる値を決めることになる。なお、結果は必ず 0 より大きくなる。
13666 このプログラムでは以下のオプションが使用できる。参照: *note Common
13670 システムに搭載されているプロセッサの数を表示する。それは、稼働して
13671 いるプロセッサや、カレントプロセスが利用できるプロセッサの数より
13672 多いかもしれない。このオプションを付けた場合、環境変数
13673 `OMP_NUM_THREADS' は考慮されない。
13676 可能ならば、NUMBER 個のプロセシング・ユニットを除外する。
13679 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13682 File: coreutils-ja.info, Node: uname invocation, Next: hostname invocation, Prev: nproc invocation, Up: System context
13684 21.4 `uname': システムについて情報を表示する
13685 ===========================================================
13687 `uname' は、自分がその上で実行されているマシンとオペレーティング・
13688 システムについて情報を表示する。オプションが一つも指定されない場合は、
13689 `-s' オプションが指定されたかのように振る舞う。
13695 複数のオプションや `-a' オプションが指定された場合、選択された情報は
13698 KERNEL-NAME NODENAME KERNEL-RELEASE KERNEL-VERSION
13699 MACHINE PROCESSOR HARDWARE-PLATFORM OPERATING-SYSTEM
13701 個々の情報が空白を含んでいることがある。そうした場合、出力のどこから
13702 どこまでが、ある情報に当たるかを判断することは難しい。以下の例で RELEASE
13703 に当たるのは、`2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001' の部分である。
13705 (訳注: RELEASE が KERNEL-RELEASE のことならば、それに相当するのは
13706 `2.2.18' だけである。#4 から 2001 までは KERNEL-VERSION。原文は両者を
13707 合わせて、RELEASE と言っているのかもしれない。なお、以下の例はちょっと
13708 古い。最近の `uname -a' では、`-a' オプションの説明にあるように、unknown
13712 => Linux dumdum 2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001 i686 unknown unknown GNU/Linux
13714 このプログラムでは以下のオプションが使用できる。参照: *note Common
13719 以下の情報をすべて表示する。ただし、プロセッサ・タイプとハードウェア・
13720 プラットホームは、unknown ならば省略する。
13723 `--hardware-platform'
13724 ハードウェア・プラットホームの名前を表示する (ハードウェア実装と
13725 呼ばれることもある)。この情報がカーネルから簡単に取得できるように
13726 なっていない場合は、`unknown' と表示する。Linux のカーネルがその
13731 マシンのハードウェア名を表示する (ハードウェア・クラスとかハード
13732 ウェア・タイプと呼ばれることもある)。
13736 ネットワークノードのホスト名を表示する。
13740 プロセッサ・タイプを表示する (命令セット体系、the instruction set
13741 architecture、ISA などと呼ばれることもある)。この情報が
13742 カーネルから簡単に取得できるようになっていない場合は、`unknown' と
13743 表示する。Linux のカーネルがその一例である。
13746 `--operating-system'
13747 オペレーティング・システムの名前を表示する。
13755 カーネル名を表示する。POSIX 1003.1-2001 では (*note Standards
13756 conformance::)、これを「オペレーティング・システムの実装」と
13757 呼んでいる。POSIX の仕様には、カーネルという概念がないから
13758 である。カーネル名は、`-o' や `--operating-system' オプション
13759 で表示されるオペレーティング・システム名と同じかもしれないし、
13760 違うかもしれない。オペレーティング・システムによって、基盤と
13761 なっているカーネルと名前が同じものもあれば (FreeBSD, HP-UX など)、
13762 違うものもある (GNU/Linux, Solaris など) からである。
13769 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13772 File: coreutils-ja.info, Node: hostname invocation, Next: hostid invocation, Prev: uname invocation, Up: System context
13774 21.5 `hostname': システムの名前を表示、または設定する
13775 =======================================================================
13777 `hostname' は、引数なしで実行すると、使用しているホストシステムの
13778 名前を表示する。引数を一つ付けると、使用しているホストの名前を指定
13779 された文字列に設定する。ホストの名前を設定するには、しかるべき権限が
13786 オプションは、`--help' と `--version' だけである。*Note Common
13789 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13792 File: coreutils-ja.info, Node: hostid invocation, Next: uptime invocation, Prev: hostname invocation, Up: System context
13794 21.6 `hostid': 数値によるホストの識別名を表示する
13795 ==================================================================
13797 `hostid' は、使用しているホストの数値による識別名を 16 進数で表示する。
13798 このコマンドは引数を取らない。使用できるオプションは、`--help' と
13799 `--version' だけである。*Note Common options::.
13801 たとえば、筆者が使っているシステムの一つでは、次のように表示される。
13806 たまたまこのシステムでは、識別名の 32 ビットの数値が、システムの
13807 インターネット・アドレスと密接な関係を持っているが、いつでもそうとは
13810 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13813 File: coreutils-ja.info, Node: uptime invocation, Prev: hostid invocation, Up: System context
13815 21.7 `uptime': システムの連続稼働時間と負荷を表示する
13816 ========================================================================
13818 `uptime' は、現在の時刻、システムの連続稼働時間、ログインしているユーザ
13819 の数、それに現在の平均負荷 (load average) を表示する。
13821 引数を指定すると、ユーザが何人ログインしているかを知るために読み込む
13822 ファイルとして、その引数が使用される。引数を指定しない場合は、システムの
13823 デフォルトが使用される (`uptime --help' を実行すれば、デフォルトの設定が
13826 オプションは、`--help' と `--version' だけである。*Note Common
13829 たとえば、以下の例は、筆者が使っているシステムの一つで、ちょうど今表示
13833 14:07 up 3:35, 3 users, load average: 1.39, 1.15, 1.04
13835 細かいことを言うと、平均負荷の計算方法は、システムによっていくらか
13836 異なっている。あるシステムでは、ここ 1 分間、5 分間、15 分間の、実行
13837 可能状態のプロセスの平均数として計算されるが、別のシステムでは、割り込み
13838 不可能なスリープ状態のプロセスも含めている (すなわち、ディスク I/O を
13839 待っているプロセスだ)。Linux のカーネルは、割り込み不可能なプロセスを
13843 File: coreutils-ja.info, Node: SELinux context, Next: Modified command invocation, Prev: System context, Up: Top
13846 *****************************
13848 この章では、SELinux コンテキスト関係の操作を行うコマンドを説明する。
13852 * chcon invocation:: ファイルの SELinux コンテキストを変更する
13853 * runcon invocation:: 指定された SELinux コンテキストでコマンドを実行する
13856 File: coreutils-ja.info, Node: chcon invocation, Next: runcon invocation, Up: SELinux context
13858 22.1 `chcon': ファイルの SELinux コンテキストを変更する
13859 =======================================================================
13861 `chcon' は、指定されたファイルの SELinux セキュリティ・コンテキストを
13866 chcon [OPTION]... CONTEXT FILE...
13867 chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
13868 chcon [OPTION]... --reference=RFILE FILE...
13870 各 FILE の SELinux セキュリティ・コンテキストを CONTEXT に変更する。
13871 `--reference' オプションを使用した場合は、各 FILE のセキュリティ・
13872 コンテキストを RFILE のそれに変更する。
13874 このプログラムでは以下のオプションが使用できる。参照: *note Common
13878 シンボリックリンクそのものではなく、リンクが指しているものを操作の
13883 参照先のファイルではなく、シンボリックリンクそのものを操作の対象
13886 `--reference=RFILE'
13887 CONTEXT の値を直接指定する代わりに、RFILE のセキュリティ・
13892 ファイルやディレクトリに対して再帰的に動作する。
13895 `--recursive' オプションと一緒に使ったとき、ルートディレクトリ
13896 (`/') に対して再帰的に動作することを拒否する。 *Note Treating /
13899 `--no-preserve-root'
13900 `--recursive' オプションと一緒に使ったとき、ルートディレクトリ
13901 (`/') を特別扱いしない。こちらがデフォルトの動作である。 *Note
13902 Treating / specially::.
13905 `--recursive' (`-R') オプションが指定されている場合に、コマンド
13906 ラインで指定された引数がディレクトリへのシンボリックリンクならば、
13907 それをたどる。 *Note Traversing symlinks::.
13910 ディレクトリ階層を再帰的にたどっている際に、ディレクトリへのシンボ
13911 リックリンクに出会ったら、必ずそれをたどる。 *Note Traversing
13915 シンボリックリンクを一切たどらない。これが、`-H', `-L', `-P' の
13916 どれも指定されていないときの、デフォルトである。 *Note Traversing
13921 処理したすべてのファイルについてメッセージを表示する。
13925 操作対象のセキュリティ・コンテキストのユーザを USER にする。
13929 操作対象のセキュリティ・コンテキストのロールを ROLE にする。
13933 操作対象のセキュリティ・コンテキストのタイプを TYPE にする。
13937 操作対象のセキュリティ・コンテキストのセキュリティ・レベルの
13941 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
13944 File: coreutils-ja.info, Node: runcon invocation, Prev: chcon invocation, Up: SELinux context
13946 22.2 `runcon': 指定された SELinux コンテキストでコマンドを実行する。
13947 ==========================================================================================
13949 `runcon' は、指定された SELinux セキュリティ・コンテキストでファイルを
13953 runcon CONTEXT COMMAND [ARGS]
13954 runcon [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [ARGS]
13956 セキュリティ・コンテキストのすべてを CONTEXT で指定して、COMMAND を
13957 実行する。あるいは、現在の、または遷移後のセキュリティ・コンテキストの
13958 うち、USER, ROLE, TYPE, LEVEL (訳注: 上の書式で言えば RANGE) の一つ以上
13959 を変更して、COMMAND を実行する。
13961 `-c', `-u', `-r', `-t', `-l' のどのオプションも指定されていない場合
13962 は、最初の引数が完全なコンテキストとして使用される。COMMAND の後ろに続く
13963 引数があれば、それはそのコマンドに対する引数と見なされる。
13965 CONTEXT と COMMAND のどちらも指定されていない場合は、現在の
13966 セキュリティ・コンテキストを表示する。
13968 このプログラムでは以下のオプションが使用できる。参照: *note Common
13973 セキュリティ・コンテキストの変更を行う前に、プロセスの遷移による
13978 操作対象のセキュリティ・コンテキストのユーザを USER にする。
13982 操作対象のセキュリティ・コンテキストのロールを ROLE にする。
13986 操作対象のセキュリティ・コンテキストのタイプを TYPE にする。
13990 操作対象のセキュリティ・コンテキストのセキュリティ・レベルの
13996 126: COMMAND が見つかったが、起動できなかった。
13997 127: `runcon' そのものの実行に失敗した。あるいは、COMMAND が
13999 それ以外は、COMMAND の終了ステータス。
14002 File: coreutils-ja.info, Node: Modified command invocation, Next: Process control, Prev: SELinux context, Up: Top
14005 ************************************
14007 この章で説明するコマンドは、他のコマンドを現在の条件とは違った条件で
14008 実行するものである。たとえば、環境を変更して実行する、別のユーザとして
14011 (訳注: 「別のユーザとして実行する」というのは、`chroot' の
14012 `--userspec' オプションを指していると考えられなくもないが、元々は `su'
14013 コマンドのことを言っていたのだと思う。`su' も以前はこの章で説明されて
14014 いたが、現在では coreutils に収録されていない。)
14018 * chroot invocation:: ルート・ディレクトリを変更する。
14019 * env invocation:: 環境変数を変更する。
14020 * nice invocation:: niceness を変更する。
14021 * nohup invocation:: ハングアップ・シグナルで終了しない。
14022 * stdbuf invocation:: 標準ストリームのバッファリングを変更する。
14023 * timeout invocation:: タイムリミット付きで実行する。
14026 File: coreutils-ja.info, Node: chroot invocation, Next: env invocation, Up: Modified command invocation
14028 23.1 `chroot': ルートディレクトリを変更して、コマンドを実行する
14029 =======================================================================================
14031 `chroot' は、指定されたディレクトリをルートディレクトリにして、コマンド
14032 を実行する。多くのシステムでは、この操作を行うことができるのはスーパー
14037 chroot OPTION NEWROOT [COMMAND [ARGS]...]
14040 通常、ファイル名の検索は、ディレクトリ構造の根 (ルート、root)、
14041 すなわち `/' を起点として行われる。`chroot' はこのルートを NEWROOT
14042 ディレクトリ (実在するディレクトリでなければならない) に変更し、
14043 その上で COMMAND を、ARGS の指定があれば ARGS を付けて実行する。
14044 COMMAND が指定されていない場合、デフォルトのコマンドは、環境変数
14045 `SHELL' の値か、`SHELL' が設定されていなければ、`/bin/sh' であり、
14046 それが `-i' オプションを付けて、呼び出される。COMMAND は シェルの
14047 組み込みコマンドであってはならない (*note Special built-in
14050 このプログラムでは以下のオプションが使用できる。参照: *note Common
14051 options::. オプションはオペランドの前に置かなければならない。
14053 `--userspec=USER[:GROUP]'
14054 デフォルトでは、COMMAND は呼び出し側のプロセスと同じ資格情報を
14055 使って実行されるが、このオプションを使えば、COMMAND を別の USER
14056 として実行することができる。別の基本 GROUP を指定することも可能だ。
14057 (訳注: coreutils-8.22 では、場合によっては USER や GROUP を名前
14058 ではなく、ID 番号で指定しなければならないことがある。)
14061 このオプションを使えば、新しいプロセスが使用する補助 GROUPS を指定
14062 することができる。グループのリスト (名前でも ID 番号でもよい) は、
14063 コンマで区切られていなければならない。(訳注: coreutils-8.22 では、
14064 このオプションが使用できない場合もある。)
14067 chroot を使う上でよくある問題を避けることができるように、ちょっと
14068 した情報をいくつか挙げておく。まず簡単なことから言うと、COMMAND は、
14069 静的にリンクしたバイナリを指すようにした方がよい。もし、動的にリンク
14070 した実行ファイルを使用するのならば、共有ライブラリが新しいルート
14071 ディレクトリ以下の適切な場所に存在するように、前もって準備しておく
14074 たとえば、静的にリンクした `ls' の実行ファイルを作成して、
14075 `/tmp/empty' に置けば、root ユーザとして次のようなコマンドを実行する
14078 $ chroot /tmp/empty /ls -Rl /
14084 -rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
14086 もし、動的にリンクした実行ファイル、たとえば `bash' を使いたい
14087 ならば、まず `ldd bash' を実行して、どんな共有オブジェクトファイルが
14088 必要かを調べることだ。それから、`bash' 自体のバイナリをコピーするだけ
14089 でなく、`ldd bash' でリストされたファイルも、新しいルートディレクトリ
14090 になるディレクトリ以下のしかるべき場所にコピーしておく。さらに、
14091 実行ファイルが何か他のファイルも必要としているなら (たとえば、データ
14092 ファイル、ステータスファイル、デバイスファイルなど)、それも適切な
14097 125: `chroot' そのものの実行に失敗した。
14098 126: COMMAND は見つかったが、起動できなかった。
14099 127: COMMAND が見つからなかった。
14100 それ以外は、COMMAND の終了ステータス。
14102 ---------- Footnotes ----------
14104 (1) もっとも、システムによっては (たとえば、FreeBSD がそうだが)、
14105 特定の一般ユーザが `chroot' システムコールを使用できるように設定
14106 できるものもある。従って、そうしたユーザは `chroot' コマンドを実行
14107 できるわけだ。また、Cygwin では、どんなユーザでも `chroot' コマンド
14108 を実行できる。MS-Windows では chroot 関数をサポートしていないため、
14109 内部で使用する関数が特権を要求しないからである。
14112 File: coreutils-ja.info, Node: env invocation, Next: nice invocation, Prev: chroot invocation, Up: Modified command invocation
14114 23.2 `env': 変更した環境でコマンドを実行する
14115 ============================================================
14117 `env' は、環境を変更して、コマンドを実行する。
14121 env [OPTION]... [NAME=VALUE]... [COMMAND [ARGS]...]
14124 `VARIABLE=VALUE' という形のオペランドは、環境変数 VARIABLE の値を
14125 VALUE に設定する。VALUE は空っぽでも構わない (`VARIABLE=')。変数の値を
14126 空に設定 (set) するのは、変数を破棄 (unset) するのとは別のことである。
14127 こうしたオペランドは、左から右へ評価されるので、二つのオペランドが同じ
14128 変数を対象にしている場合、前のものは無視される。
14130 環境変数名は、空でもよいし、`=' と ASCII NUL 以外なら、どんな文字を
14131 含んでいても構わない。とは言え、変数名は、アンダースコア、数字、ASCII
14132 文字のみから構成し、数字以外の文字で始めるようにした方が、賢明である。
14133 それ以外の名前だと、シェルなどのアプリケーションがうまく動作しないからだ。
14135 `=' という文字を含まない最初のオペランドが、起動するプログラムで
14136 あり、環境変数 `PATH' に従って、どこにあるかが検索される。残っている
14137 引数があれば、すべてそのプログラムに引数として渡される。起動するプロ
14138 グラムは、シェルの組み込みコマンドであってはならない (*note Special
14139 built-in utilities::)。
14141 `PATH' に対する変更は、COMMAND のありかを検索する前に有効になる。
14142 そこで、`PATH' を短縮するときには、気をつけなければならない。`PATH' が
14143 空だったり、`/bin' のような重要なディレクトリを欠いていると、`PATH' を
14144 変更する前と同じ動作にならないからだ。
14146 めったにないことだが、プログラムの名前に `=' という文字が含まれて
14147 いる場合、それを変数の指定と区別する唯一の方法は、COMMAND として仲介的
14148 なコマンドを使用し、その ARGS として問題のあるプログラム名を渡すこと
14149 である。たとえば、`./prog=' が現在の `PATH' 中に存在する実行ファイルだ
14153 # 環境変数 prog を空に設定して 'true' を実行する。
14155 # 環境変数 ./prog を空に設定して 'true' を実行する。
14157 # 環境変数 prog を空に設定して 'true' を実行する。
14158 env sh -c '\prog= true'
14159 # 'true' を引数にして 'prog=' を実行する。
14160 env sh -c 'exec "$@"' sh prog= true
14161 # これも 'prog=' を実行する。
14163 環境変数の設定の後にコマンド名が指定されていない場合は、生成された
14164 環境が表示される。これは、COMMAND に `printenv' を指定するのと同じこと
14167 以下に例をいくつか挙げる。`env' に渡される環境は、`LOGNAME=rms',
14168 `EDITOR=emacs', `PATH=.:/gnubin:/hacks' からなっているものとする。
14171 $ env | LC_ALL=C sort
14174 PATH=.:/gnubin:/hacks
14176 * 環境を削減して、`foo' を実行する。`foo' が見つからないといけない
14177 ので、`PATH' だけは元のまま残している。
14178 env - PATH="$PATH" foo
14180 * `LOGNAME=rms', `EDITOR=emacs', `PATH=.:/gnubin:/hacks' からなる環境
14181 で `foo' を実行する。`foo' には、シェルの組み込みコマンドではなく、
14182 ファイルシステム中で見つかった実行ファイルが必ず使用される。
14185 * `LOGNAME=foo', `EDITOR=emacs', `PATH=.:/gnubin:/hacks',
14186 `DISPLAY=gnu:0' からなる環境で、`nemacs' を実行する。
14187 env DISPLAY=gnu:0 LOGNAME=foo nemacs
14189 * プログラム `/energy/--' の実行を試みる (パスの検索でそれしか出て
14190 こないようにしている)。`--' というコマンドが存在する場合、環境
14191 は、`LOGNAME=rms' と `PATH=/energy' だけになり、引数には、`e=mc2',
14192 `bar', `baz' が使われる。
14193 env -u EDITOR PATH=/energy -- e=mc2 bar baz
14196 このプログラムでは以下のオプションが使用できる。参照: *note Common
14197 options::. オプションはオペランドの前に置かなければならない。
14201 各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。この
14202 オプションを使用すると、`env' の出力するデータに、途中に改行を
14203 挟むものがあっても、他のプログラムがその出力を解析できるようになる。
14207 変数 NAME が環境中にあれば、それを環境から削除する。
14211 `--ignore-environment'
14212 継承した環境を無視し、空っぽの環境から始める。
14217 0: COMMAND が指定されなかったので、環境を出力した。
14218 125: `env' そのものの実行に失敗した。
14219 126: COMMAND は見つかったが、起動できなかった。
14220 127: COMMAND が見つからなかった。
14221 それ以外は、COMMAND の終了ステータス。
14224 File: coreutils-ja.info, Node: nice invocation, Next: nohup invocation, Prev: env invocation, Up: Modified command invocation
14226 23.3 `nice': niceness を変更して、コマンドを実行する
14227 ===================================================================
14229 "`nice' はプロセスの "niceness" を表示したり、niceness を変更して
14230 コマンドを実行したりする。"niceness" は、プロセスがシステム中でどの程度
14231 優先的にスケジュールされるかに影響を与える。(訳注: niceness を「スケ
14232 ジューリング優先度」と訳さない理由については、三つほど下のパラグラフを
14237 nice [OPTION]... [COMMAND [ARG]...]
14239 引数を指定しないと、`nice' は現在の niceness を表示する。引数に
14240 COMMAND を指定した場合は、niceness を調整して、その COMMAND を実行する。
14241 デフォルトでは、niceness が 10 増加する。
14243 niceness の値は、最小が -20 で、最大が 19 である (値が小さければ、
14244 プロセスの優先度が高くなり、使えるリソースも多くなるが、その分、他の
14245 プロセスの動作が遅くなる。また、値が大きければ、プロセスの優先度が低く
14246 なり、自分自身の動作は遅くなるが、実行中の他のプロセスの速度に与える
14247 影響は小さくなる)。システムによっては、niceness の値の範囲がもっと広い
14248 ものもあるし、反対に、上下限の制限がもっときついものもある。サポート
14249 されている範囲を越えた niceness を指定すると、サポートされている値の
14250 最小、または最大を使用しようとしているものとみなされる。
14252 niceness をスケジューリング優先度 (scheduling priority) と混同しては
14253 ならない。後者は、様々なスレッドをどういう序列で実行するかの予定を組む
14254 際に、その序列をアプリケーション側に決めさせるものである。優先度とは
14255 違って、niceness はスケジューラに対する単なるアドバイスにすぎず、スケ
14256 ジューラはそれを無視することができるのだ。また、用語について言うと、
14257 POSIX は `nice' の動作を "nice value" という用語で定義している。 この
14258 nice value は、ある niceness と 最小の niceness との間の負ではない
14259 差である。`nice' コマンドは POSIX に準拠しているものの、この文書や
14260 エラーメッセージでは、従来の習慣との親和性を考慮して、"niceness" という
14263 COMMAND は、シェルの組み込みコマンドであってはならない (*note
14264 Special built-in utilities::)。
14266 シェルの組み込み機能の `nice' やエイリアスのために、`nice' に何の
14267 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
14268 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
14269 避けるためには、`env' 経由で `nice' を起動すればよい (すなわち、 `env
14272 注意: 現在動作中のプロセスの "niceness" を変更するには、`renice'
14275 このプログラムでは、以下のオプションが使用できる。参照: *note Common
14276 options::. オプションはオペランドの前に置かなければならない。
14279 `--adjustment=ADJUSTMENT'
14280 コマンドの niceness を 10 ではなく、ADJUSTMENT 増加する。ADJUSTMENT
14281 が負の数の場合、ユーザがしかるべき特権を持っていなければ、`nice' は
14282 警告を発する。とは言え、警告を出すだけで、ADJUSTMENT として 0 が
14285 互換性を考慮して、`nice' は `-ADJUSTMENT' というオプションの古い
14286 書式もサポートしている。だが、新しいスクリプトでは、`-n ADJUSTMENT'
14292 0: COMMAND が指定されなかったので、niceness を出力した。
14293 125: `nice' そのものの実行に失敗した。
14294 126: COMMAND が見つかったが、起動できなかった。
14295 127: COMMAND が見つからなかった。
14296 それ以外は、COMMAND の終了ステータス。
14298 対話的ではないプログラムは、niceness を落として (訳注: すなわち、
14299 niceness の値を増やして) 実行すると、都合のよいことがある。
14301 $ nice factor 4611686018427387903
14303 `nice' は、現在の niceness を表示するので、`nice' を通して `nice'
14304 を起動すれば、それがどんな動作をするか、目の当たりに見ることができる。
14306 デフォルトの動作は、niceness を `10' 増加することである。
14315 ADJUSTMENT は、現在の niceness からいくら増減するかということである。
14316 次の例では、最初の `nice' が、二番目の `nice' を niceness 10 で実行し、
14317 二番目の `nice' は、niceness をさらに 3 増やして、三番目の `nice' を
14320 $ nice nice -n 3 nice
14323 サポートされている範囲より大きい niceness を指定するのは、サポート
14324 されている最大値を指定するのと同じことである。
14326 $ nice -n 10000000000 nice
14329 特権ユーザだけが niceness の値を下げて、プロセスを実行できる。
14332 nice: cannot set niceness: Permission denied
14334 $ sudo nice -n -1 nice
14338 File: coreutils-ja.info, Node: nohup invocation, Next: stdbuf invocation, Prev: nice invocation, Up: Modified command invocation
14340 23.4 `nohup': ハングアップ・シグナルで終了しないコマンドを実行する
14341 ============================================================================================
14343 `nohup' を使って、COMMAND を実行すると、指定されたコマンドがハング
14344 アップ・シグナルを無視するようになる。従って、そのコマンドは、ユーザが
14345 ログアウトした後でも、バックグラウンドで実行を継続することができる。
14349 nohup COMMAND [ARG]...
14351 標準入力が端末の場合、標準入力は `/dev/null' に付け換えられる。その
14352 結果、端末セッションが、`nohup' によって実行されているコマンドが端末を
14353 使用していると勘違いすることがなくなる。これは GNU の拡張である。 GNU
14354 以外のホストでも使うことを考えているプログラムでは、GNU の拡張を当てに
14355 せず、`nohup COMMAND [ARG]... </dev/null' を使った方がよい。
14357 標準出力が端末の場合、コマンドの標準出力は、`nohup.out' というファ
14358 イルに追加されて行く。そのファイルに書き込めない場合は、`$HOME/nohup.out'
14359 に追記されることになる。そのファイルにも書き込めない場合は、コマンドの
14360 実行が行われない。`nohup' によって作成されるのが `nohup.out' であれ、
14361 `$HOME/nohup.out' であれ、それは、ファイルの所有者にのみ読み書き可能な
14362 ものになる。現在の umask の設定の影響は受けない。
14364 標準エラーが端末の場合、コマンドの標準エラー出力は、基本的には
14365 標準出力 (リダイレクトされているかもしれない) と同じファイル・
14366 ディスクリプタにリダイレクトされる。ただし、標準出力がクローズ
14367 されている場合には、標準エラーの端末への出力は、リダイレクトされる
14368 ことなく、直接 `nohup.out' や `$HOME/nohup.out' というファイルに
14369 追加される。どちらのファイルが使用されるかは、上述のとおりである。
14371 コマンドの出力を `nohup.out' 以外のファイルに書き込みたければ、
14372 リダイレクトすればよい。たとえば、`make' の出力を `make.log' に書き
14375 nohup make > make.log
14377 `nohup' は、実行するコマンドを自動的にバックグラウンドに送ることを
14378 しない。そこで、ユーザは、コマンドラインの末尾に `&' を付けることで、
14379 明示的にそれを行わなければならない。また、`nohup' は、COMMAND の
14380 niceness を変更しない。niceness を変更したかったら、`nice' を使って、
14381 `nohup nice COMMAND' のように実行すればよい。
14383 COMMAND は、シェルの組み込みコマンドであってはならない (*note
14384 Special built-in utilities::)。
14386 指定できるオプションは、`--help' と `--version' だけである。 *Note
14387 Common options::. オプションはオペランドの前に置かなければならない。
14391 125: `POSIXLY_CORRECT' が設定されていない場合に、`nohup' そのものの
14393 126: COMMAND は見つかったが、起動できなかった。
14394 127: COMMAND が見つからなかった。
14395 それ以外の場合は、COMMAND の終了ステータス。
14397 `POSIXLY_CORRECT' が設定されている場合は、`nohup' そのものが実行に
14398 失敗したときの終了ステータスは、125 ではなく 127 になる。
14401 File: coreutils-ja.info, Node: stdbuf invocation, Next: timeout invocation, Prev: nohup invocation, Up: Modified command invocation
14403 23.5 `stdbuf': 入出力ストリームのバッファリングを変更して、コマンドを実行する
14404 ============================================================================================================
14406 `stdbuf' を使用すると、プログラムと結びついている 3 種類の標準入出力
14407 ストリームに対して、そのバッファリング動作を変更することができる。
14411 stdbuf OPTION... COMMAND
14413 COMMAND は、次の条件を満たすプログラムの名前で始まっていなければ
14415 1. 入出力に ISO C `FILE' ストリームを使用している (注意: プログラム
14416 `dd' や `cat' は、これを使用していない)。
14418 2. 自分で標準ストリームのバッファリングを調整していない (注意: プログ
14419 ラム `tee' は、この部類に入らない)。
14421 後に続く引数があれば、COMMAND に引数として渡される。
14423 このプログラムでは以下のオプションが使用できる。参照: *note Common
14428 標準入力ストリームのバッファリングを調整する。
14432 標準出力ストリームのバッファリングを調整する。
14436 標準エラーストリームのバッファリングを調整する。
14439 MODE には、以下のものを指定できる。
14442 ストリームを行単位のバッファ・モードにする。このモードでは、
14443 改行が出力されることになるか、あるいは、端末デバイスに結びついて
14444 いるストリームから入力が読み込まれるまで、データを溜めておく。
14445 このオプションは、標準入力に対しては無効である。
14448 選択したストリームのバッファリングを無効にする。このモードでは、
14449 データは即座に出力される。また、要求された量のデータしか入力から
14450 読み込まない。入力と出力で動作が違うことに気をつけていただきたい。
14451 なお、入力のバッファリングを無効にしても、ストリーム入力関数の
14452 応答性やブロッキング動作に影響することはない。たとえば、`fread'
14453 は、要求した量より少ないデータを、下層で動いている `read' が返して
14454 きても、`EOF' が来るか、エラーが起きるまで、やはりブロッキングを
14458 バッファ一杯モード (fully buffered mode) で使用するバッファのサイズ
14459 を指定する。 SIZE は、整数であり、
14460 以下に挙げるような何倍かを示す接尾辞を 後ろに付けることもできる。
14461 接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと
14463 `KB' => 1000 (KiloBytes)
14464 `K' => 1024 (KibiBytes)
14465 `MB' => 1000*1000 (MegaBytes)
14466 `M' => 1024*1024 (MebiBytes)
14467 `GB' => 1000*1000*1000 (GigaBytes)
14468 `G' => 1024*1024*1024 (GibiBytes)
14469 `T', `P', `E', `Z', `Y' についても同様。
14474 125: `stdbuf' そのものの実行に失敗した。
14475 126: COMMAND は見つかったが、起動できなかった。
14476 127: COMMAND が見つからなかった。
14477 それ以外は、COMMAND の終了ステータス。
14480 File: coreutils-ja.info, Node: timeout invocation, Prev: stdbuf invocation, Up: Modified command invocation
14482 23.6 `timeout': タイムリミット付きでコマンドを実行する
14483 =========================================================================
14485 `timeout' は渡されたコマンドを実行し、指定された時間が経過しても
14486 まだ実行が続いていたら、そのコマンドを終了させる。
14490 timeout [OPTION] DURATION COMMAND [ARG]...
14492 COMMAND は、シェルの組み込みコマンドであってはならない (*note
14493 Special built-in utilities::)。
14495 このプログラムでは以下のオプションが使用できる。参照: *note Common
14496 options::. オプションはオペランドの前に置かなければならない。
14498 `--preserve-status'
14499 タイムアウトしたときに、タイムアウトであることを示す `timeout'
14500 コマンドの終了ステータスではなく、`timeout' が管理している COMMAND
14501 の終了ステータスを返す。このオプションが役に立つのは、 管理される
14502 COMMAND が無期限の続行時間をサポートしている場合である。
14505 独立したバックグラウンドのプログラム・グループを作成しない。
14506 その結果、`timeout' に管理される COMMAND が、フォアグラウンドの
14507 TTY を通常どおり使用できるようになる。コマンドが対話的シェルから
14508 直接実行されない場合でも (訳注: たとえば、シェルスクリプト中で
14509 実行される場合でも)、そのコマンドのタイムアウトを実現するには、
14510 この動作が必要になることがあり、次の二つの場合がそれに当たる。
14511 1. COMMAND が対話的であり、たとえば端末からの読み込みが必要な
14514 2. 端末から直接 COMMAND にシグナルを送ることができるようにしたい
14515 場合。(たとえば、Ctrl-C を送るとか)。
14517 この動作モードでは、COMMAND のいかなる子プロセスも、時間切れで
14521 `--kill-after=DURATION'
14522 ここで指定した DURATION の経過後に、改めて `KILL' シグナルを送り
14523 付けて、監視対象の COMMAND を確実に終了させる。このオプションを
14524 付けないと、選択したシグナルに COMMAND を終了させる力がなかった
14525 場合に、`timeout' は COMMAND を殺すことができない。
14529 制限時間が来たとき、デフォルトの `TERM' シグナルではなく、指定した
14530 SIGNAL を COMMAND に送る。SIGNAL は `HUP' のような名前でもよく、
14531 番号でもよい。*Note Signal specifications::.
14533 DURATION は浮動小数点数であり、後ろに単位を付けることもできる。
14538 DURATION が 0 だと、対象となるコマンドが時間切れなしになる。実際の
14539 制限時間は、システムの制約を受けることに注意していただきたい。秒以下の
14540 制限時間を指定するときは、とりわけそれを考慮に入れるべきである。
14544 124: COMMAND がタイムアウトした。
14545 125: `timeout' そのものの実行に失敗した。
14546 126: COMMAND は見つかったが、起動できなかった。
14547 127: COMMAND が見つからなかった。
14548 137: COMMAND に the KILL(9) シグナルを送った (128+9)
14549 それ以外は、COMMAND の終了ステータス。
14552 File: coreutils-ja.info, Node: Process control, Next: Delaying, Prev: Modified command invocation, Up: Top
14555 *********************
14559 * kill invocation:: プロセスにシグナルを送る。
14562 File: coreutils-ja.info, Node: kill invocation, Up: Process control
14564 24.1 `kill': プロセスにシグナルを送る
14565 =================================================
14567 `kill' コマンドは、プロセスにシグナルを送る。シグナルを送られた
14568 プロセスは、終了するか、あるいは、シグナルを受け取った瞬間に他の
14569 何らかの形で反応する。また、`kill' は、シグナルに関する情報を一覧
14574 kill [-s SIGNAL | --signal SIGNAL | -SIGNAL] PID...
14575 kill [-l | --list | -t | --table] [SIGNAL]...
14577 シェルの組み込み機能の `kill' やエイリアスのために、`kill' に何の
14578 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
14579 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
14580 避けるためには、`env' 経由で `kill' を起動すればよい (すなわち、 `env
14583 `kill' コマンドの最初の書式では、すべての PID 引数に対してシグナルが
14584 送られる。シグナルが指定されていない場合に送られるデフォルトのシグナル
14585 は、`TERM' である。 `0' という特別なシグナル番号は、有効なシグナルを
14586 表していないが、引数 PID が指しているプロセスに対してシグナルを送る
14587 ことが可能かどうかを、調べるために使うことができる。
14589 PID が正の数なら、シグナルはプロセス ID が PID のプロセスに送られる。
14590 PID が 0 なら、シグナルはカレントプロセスのプロセスグループに属する
14591 すべてのプロセスに送られる。PID が -1 の場合、シグナルが送られるのは、
14592 ユーザがシグナルを送る権限を持っているすべてのプロセスである。PID が -1
14593 より小さい場合は、PID の絶対値に等しいプロセスグループに属するすべての
14596 PID が正の数ではない場合、システムプロセスに属するプロセス (システム
14597 によって様々である) は、シグナルが送られるプロセスのリストから除外
14600 最初の PID 引数として負の PID を使用したい場合は、その前に`--' オプ
14601 ションを置くべきである。とは言え、`kill -SIGNAL -PID' という書式を使う
14602 場合は、`--' は必要がない。これは、POSIX に対する一般的な拡張である。
14603 そこで、次に挙げるコマンドは等価になる。
14610 最初の書式の `kill' コマンドは、すべての PID 引数が、シグナルが
14611 送られたプロセスをそれぞれ少なくとも一つは指している場合に、成功の
14614 `kill' コマンドの二番目の書式では、シグナルに関する情報が表示される。
14615 `-l' または `--list'、あるいは、`-t' または `--table' オプションの
14616 指定は必須である。引数 SIGNAL を一つも指定しないと、サポートされている
14617 すべてのシグナルがリストされる。`-l' や `--list' の出力は、シグナル名の
14618 リストであり、1 行に一つづつ表示される。ただし、引数 SIGNAL がすでに
14619 シグナル名である場合に表示されるのは、名前ではなく、シグナル番号だ。
14620 `-t' や `--table' の出力は、シグナル番号、シグナル名、その説明からなる
14621 表である。この書式の `kill' コマンドは、引数として指定されたすべての
14622 SIGNAL が有効なものであり、出力エラーがなかったとき、成功のステータスで
14625 `kill' コマンドでは、`--help' や `--version' オプションも使用できる。
14626 *Note Common options::.
14628 SIGNAL の指定には、`HUP' のようなシグナル名や、`1'のようなシグナル
14629 番号、それに、シグナルによって終了させられるときのプロセスの終了ステー
14630 タスを使うことができる (訳注: 最後のものは、GNU coreutils の `kill'
14631 コマンドでは使用できるが、他の系統の `kill' では使えないかもしれない)。
14632 シグナル名は、標準的な形式でも、頭に `SIG' を付けた形式でも構わない。
14633 大文字小文字はどちらを使ってもよいが、`-SIGNAL' という形式のオプション
14634 の場合は例外で、大文字を使わなければならない。小文字を使うと、他の
14635 オプションとまぎらわしいからである。サポートしているシグナル名と
14636 シグナル番号については、「2.5 シグナルの指定」を参照していただきたい。
14637 *Note Signal specifications::.
14640 File: coreutils-ja.info, Node: Delaying, Next: Numeric operations, Prev: Process control, Up: Top
14647 * sleep invocation:: 指定された時間、停止する。
14650 File: coreutils-ja.info, Node: sleep invocation, Up: Delaying
14652 25.1 `sleep': 指定された時間、停止する
14653 ==================================================
14655 `sleep' は、コマンドラインで引数として指定された値を合計した時間だけ
14660 sleep NUMBER[smhd]...
14662 各引数は数値であり、後ろに単位を付けてもよい。デフォルトの単位は
14663 秒である。単位には、以下のものが指定できる。
14677 `sleep' の従来の実装では、NUMBER は整数でなければならず、引数は
14678 接尾辞なしのものが 1 個しか認められていなかった。それに対して GNU の
14679 `sleep' では、任意の浮動小数点数を複数個指定できる。 *Note Floating
14682 オプションは、`--help' と `--version' だけである。*Note Common
14685 シェルの組み込み機能の `sleep' やエイリアスのために、`sleep' に何の
14686 修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、動作が
14687 ここで述べているものとは違うことがあるかもしれない。シェルによる干渉を
14688 避けるためには、`env' 経由で `sleep' を起動すればよい (すなわち、 `env
14691 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14694 File: coreutils-ja.info, Node: Numeric operations, Next: File permissions, Prev: Delaying, Up: Top
14699 以下のプログラムは、数に関係した作業をする。
14703 * factor invocation:: 素因数を表示する。
14704 * seq invocation:: 連続する数を表示する。
14707 File: coreutils-ja.info, Node: factor invocation, Next: seq invocation, Up: Numeric operations
14709 26.1 `factor': 素因数を表示する
14710 =======================================
14712 `factor' は、素因数を表示する。
14719 NUMBER がコマンドラインで指定されていない場合、`factor' は標準入力
14720 から数値を読み込む。このとき、改行、タブ、空白で区切って複数の数値を
14723 `factor' コマンドで使えるオプションは、いくつもない。
14726 簡単なヘルプメッセージを標準出力に表示し、それ以上の処理をせずに
14730 プログラムのバージョンを標準出力に表示し、それ以上の処理をせずに
14733 メルセンヌ素数の 8 番目と 9 番目の積を素因数に分解するには、2.2 GHz
14734 Athlon のシステムで、30 ミリセコンドの CPU 時間を要する。
14736 M8=$(echo 2^31-1|bc)
14737 M9=$(echo 2^61-1|bc)
14738 n=$(echo "$M8 * $M9" | bc)
14739 /usr/bin/time -f %U factor $n
14740 4951760154835678088235319297: 2147483647 2305843009213693951
14743 同様に、8 番目のフェルマー数、2^256+1 では、同じマシンで約 20 秒
14746 大きな数の素因数分解は、そもそも大変な作業である。`factor' が使用
14747 している Pollard Rho アルゴリズムは、比較的小さな因数を持つ数値に
14748 対してとりわけ効率がよい。もし、小さな因数を持たない大きな数値 (たと
14749 えば、二つの大きな素数の積からなる数値) の素因数分解をなさりたいのなら、
14752 `factor' が GNU MP を使用せずにビルドされている場合は、単精度の
14753 算術しか利用できない。従って、大きな数値 (一般には 2^64 以上)
14754 には対応していない。単精度用のコードが使用しているアルゴリズムは、
14755 比較的小さな数値を素因数に分解するためのものなのである。
14757 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14760 File: coreutils-ja.info, Node: seq invocation, Prev: factor invocation, Up: Numeric operations
14762 26.2 `seq': 数列を表示する
14763 =================================
14765 `seq' は、数列を標準出力に表示する。
14769 seq [OPTION]... LAST
14770 seq [OPTION]... FIRST LAST
14771 seq [OPTION]... FIRST INCREMENT LAST
14773 `seq' は、FIRST から LAST までの数を INCREMENT おきに表示する。
14774 デフォルトでは、それぞれの数は 1 行に 1 個づつ表示される。INCREMENT が
14775 指定されていない場合は、FIRST が LAST より大きい場合でも、デフォルトの
14776 `1' が INCREMENT として使用される。FIRST のデフォルトもまた `1' である。
14777 従って、`seq 1' は `1' を表示するが、`seq 0' や `seq 10 5' は、何も出力
14778 しない。数列が終了するのは、現在の数値に INCREMENT を加えると LAST より
14779 大きくなる時点である。だから、`seq 1 10 10' は、`1' しか表示しない。
14780 なお、数値には浮動小数点数を指定してもよい。*Note Floating point::.
14782 このプログラムでは以下のオプションが使用できる。参照: *note Common
14783 options::. オプションはオペランドの前に置かなければならない。
14787 すべての数を FORMAT を使用して表示する。FORMAT は、 `printf' 形式の
14788 浮動小数点数の変換指定をただ一つ含むものでなければならない。すなわち、
14789 `%a', `%e', `%f', `%g', `%A', `%E', `%F', `%G' のいづれかである。
14790 `%' の後ろには 0 個以上のフラグを、`-+#0 '' のうちから選んで置く
14791 ことができる。また、それに続けて、1 個以上の数字からなるフィールド
14792 幅を指定することもできるし、さらにその後ろに、`.' とそれに続く 0 個
14793 以上の数字からなる精度を指定することもできる。FORMAT には、任意の
14794 数の `%%' 変換指定が含まれていてもよい。変換指定はすべて、`printf'
14797 デフォルトの表示形式は、FIRST, INCREMENT, LAST がどういう表記を使用
14798 しているかよって決まる。そのすべてが固定小数点の 10進数表記を使用
14799 しているならば、デフォルトの表示形式は `%.Pf' になる。ここで P は、
14800 出力する数値を過不足なく表現できる最小の精度である。それ以外の場合、
14801 デフォルトの表示形式は `%g' になる。
14804 `--separator=STRING'
14805 数の区切りに STRING を使う。デフォルトは改行である。出力の最後
14810 すべての数を同じ桁数で表示する。先頭の空きは 0 で埋める。FIRST,
14811 INCREMENT, LAST は、すべて固定小数点の 10 進数表記でなければなら
14812 ない (他のやり方で先頭を埋めたければ、`--format' を使うこと)。
14815 `-f' オプションを使えば、出力をもっときめ細かく制御することができる。
14817 $ seq -f '(%9.2E)' -9e5 1.1e6 1.3e6
14822 出力を 16 進数の整数にしたかったら、`printf' を使って変換すればよい。
14824 $ printf '%x\n' $(seq 1048575 1024 1050623)
14829 数のリストが非常に長くなる場合は、`xargs' を使用すると、引数リストの
14830 長さに対するシステムの制限を回避することができる。
14832 $ seq 1000000 | xargs printf '%x\n' | tail -n 3
14837 8 進数の出力を生成するには、printf に対して `%x' の代わりに、`%o'
14840 ほとんどのシステムで `seq' は、少なくとも 2^53 までの数値に対して
14841 整数の出力を生成することができる。それより大きい整数に対しては概算に
14842 なる。細かい点は、ご使用のシステムの浮動小数点の実装によって異なって
14843 いる。*Note Floating point::. `seq' が 2^64 までの整数に対しては、
14844 きちんと動作するが、それより大きな整数に対しては、数値が不正確になる
14845 ことがあるというのは、よくある話である。
14847 $ seq 50000000000000000000 2 50000000000000000004
14848 50000000000000000000
14849 50000000000000000000
14850 50000000000000000004
14852 とは言え、負ではない整数を対象とし、インクリメントが 1 で、フォー
14853 マット指定オプションはないという条件の元では、`seq' は任意の大きな
14854 数値を表示できることも心に留めておいていただきたい。
14856 `seq' でとんでもなく大きな桁の値を扱うときは、気をつけた方がよい。
14857 さもないと、`seq' は内部で浮動小数点を使用しているので、結果を見て
14858 びっくりするかもしれない。たとえば、x86 のプラットフォームでは、
14859 内部表現が 64 ビットの仮数部を使用しているが、そこで次のコマンドを
14862 seq 1 0.0000000000000000001 1.0000000000000000009
14864 `seq' は 1.0000000000000000007 を二度出力し、1.0000000000000000008
14865 をスキップする (訳注: 訳者の amd64 環境では、1.0000000000000000008 では
14866 なく、1.0000000000000000006 をスキップする)。
14868 終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
14871 File: coreutils-ja.info, Node: File permissions, Next: Date input formats, Prev: Numeric operations, Up: Top
14874 ******************************
14876 各ファイルには、一組のファイル・モードビット ("file mode bits") という
14877 ものがあって、ユーザがそのファイルに対してどんなアクセスができるかを
14878 制御している。モードビットは、シンボルによっても、8 進数によっても
14883 * Mode Structure:: ファイル・モードビットの構成。
14884 * Symbolic Modes:: ファイル・モードビットの覚えやすい表現。
14885 * Numeric Modes:: ファイル・モードビットの 8 進数による表現。
14886 * Operator Numeric Modes:: 8 進数によるモードの追加、削除、絶対指定。
14887 * Directory Setuid and Setgid:: ディレクトリの set-user-ID と set-group-ID。
14890 File: coreutils-ja.info, Node: Mode Structure, Next: Symbolic Modes, Up: File permissions
14892 27.1 ファイル・モードビットの構成
14893 ===============================================
14895 ファイル・モードビットには、二つの構成部分がある。ファイルに対する
14896 通常のアクセスを制御するファイル許可属性ビット ("file permission bits")
14897 と、若干のファイルのみに働く特殊モードビット ("special mode bits")
14900 ユーザがファイルに対して持つ許可 (訳注: アクセス権とも言う) には、 3
14903 1. ファイルを読み込む許可。ディレクトリに対しては、ディレクトリの
14906 2. ファイルに書き出す (ファイルを変更する) 許可。ディレクトリに
14907 対しては、そのディレクトリ中でファイルを作成したり、削除したり
14910 3. ファイルを実行する (プログラムとしてそれを動かす) 許可。
14911 ディレクトリに対しては、ディレクトリ中のファイルにアクセスする
14914 ユーザにも 3 種類あり、ファイルに対する上記の操作のいづれについても、
14915 それぞれ違った許可を持つことができる。
14919 2. ファイルの所有グループに属するファイルの所有者以外のユーザ。
14923 ファイルには、作成されるときに所有者とグループが割り当てられる。
14924 たいていの場合、所有者はファイルを作成したユーザであり、グループは
14925 ファイルが存在するディレクトリのグループだが、オペレーティング
14926 システムやファイルが作成されるファイルシステム、ファイルの作成方法
14927 などによって違うこともある。ファイルの所有者やグループは、`chown' や
14928 `chgrp' コマンドを使って、変更することができる。
14930 上に挙げた 3 種類の許可属性 3 組のほかに、ファイルのモードビット
14931 には三つの特殊モードビットが存在するが、そうしたものは、実行ファイル
14932 (すなわち、プログラム) と -- ほとんどのシステムでは -- ディレクトリ
14935 1. ファイルの実行時に、そのプロセスの実効ユーザ ID をファイルの
14936 所有者のものにする ("set-user-ID bit" とか "setuid bit" と
14937 呼ばれる)。若干のシステムでは、ディレクトリに set-user-ID ビット
14938 を付けると、ファイルの作成者が誰であれ、そのディレクトリ中で
14939 作成されるファイルの所有者が、ディレクトリの所有者と同じになる。
14940 また、新しく作られるサブディレクトリに set-user-ID ビットが付く。
14942 2. ファイルの実行時に、そのプロセスの実効グループ ID をファイルの
14943 グループのものにする ("set-group-ID bit" とか "setgid bit" と
14944 呼ばれる)。ほとんどのシステムでは、ディレクトリに set-group-ID
14945 ビットを付けると、ファイルの作成者がどんなグループに属して
14946 いようとも、そのディレクトリ中で作成されるファイルのグループが、
14947 ディレクトリのグループと同じになる。また、新しく作成されるサブ
14948 ディレクトリに set-group-ID ビットが付く。
14950 3. 特権を持たないユーザ (訳注: 要するに、root 以外の一般ユーザ) に
14951 対して、自分が所有するファイルやディレクトリを除き、ディレクトリ
14952 中のファイルの削除や、名前の変更を禁じる。これは、ディレクトリの
14953 削除制限フラグ ("restricted deletion flag") と呼ばれ、`/tmp' の
14954 ような、誰でも書き込めるディレクトリでよく見かけられる。
14956 古いシステムの中には、通常ファイルにこのビットが付いていると、
14957 プログラムのテキスト・イメージをスワップ・デバイスにセーブする
14958 ものがある。そうすることで、実行時にロードが速くなるわけだ。
14959 こちらは、スティッキー・ビット ("sticky bit") と呼ばれる。
14961 上記のファイル・モードビットのほかに、ファイルシステムに固有の
14962 ファイル属性が存在することがある。たとえば、アクセス・コントロール・
14963 リスト (ACL) がそうだし、ファイルが圧縮されているか否か、ファイルが
14964 変更可能か否か (変更不可属性)、ファイルがダンプ可能か否か、といった
14965 属性が存在することもある。そうした属性は、通常、ファイルシステム固有の
14966 プログラムを使って設定される。例を挙げよう。
14969 GNU 及び GNU/Linux では、ext2 ファイルシステムに固有なファイル
14970 属性は、`chattr' コマンドを使って設定される。
14973 FreeBSD では、FFS ファイルシステムに固有なファイルフラグは、
14974 `chflags' コマンドを使って設定される。
14976 ファイルのモードビットがそのファイルに対するある操作を許可していたと
14977 しても、それでもその操作に失敗することがある。その理由としては、次の
14980 * ファイルシステムに固有な属性やフラグが、その操作を許可していない。
14982 * ファイルシステムが読み込み専用でマウントされている。
14984 たとえば、ファイルに変更不可属性が設定されていると、`chmod a+w FILE'
14985 を直前に実行したとしても、ファイルを変更することはできない。
14988 File: coreutils-ja.info, Node: Symbolic Modes, Next: Numeric Modes, Prev: Mode Structure, Up: File permissions
14991 ================================
14993 シンボリックモード ("Symbolic modes") では、ファイルのモードビットの
14994 変更を、1 文字からなるシンボルに対する操作として表現している。
14995 シンボリックモードを使えば、ファイルのモードビットのすべてを変更する
14996 こともできるし、その一部を選択して変更することもできる。もしそうした
14997 ければ、変更前のモードビットの値に基づいて変更することも可能だ。現在の
14998 `umask' に基づいて変更することも、多分できるはずである (*note Umask and
15001 シンボリックモードの書式は、次のとおりである。
15003 [ugoa...][+-=]PERMS...[,...]
15005 ここで PERMS は `rwxXst' の内の 0 個以上の文字、または `ugo' の内の 1
15008 以下のセクションでは、シンボリックモードについて、演算子 (operator)
15013 * Setting Permissions:: 許可属性の基本操作。
15014 * Copying Permissions:: 存在する許可属性をコピーする。
15015 * Changing Special Mode Bits:: 特殊モードビット。
15016 * Conditional Executability:: 条件付きで実行属性の変更をする。
15017 * Multiple Changes:: 複数の変更をする。
15018 * Umask and Protection:: umask の働き。
15021 File: coreutils-ja.info, Node: Setting Permissions, Next: Copying Permissions, Up: Symbolic Modes
15024 ----------------------------
15026 ファイルの許可属性に対するシンボルによる操作 (operation) の基本は、
15027 あるタイプのユーザに対して、ファイルの、読み、書き、実行または
15028 検索を行うための許可属性を、追加したり、削除したり、設定したり
15029 することである。そうした操作には、以下の書式を使用する。
15031 USERS OPERATION PERMISSIONS
15033 上の書式では、三つの部分を空白で区切って示しているが、見やすくする
15034 ためにすぎない。シンボリックモードの指定には空白があってはならない。
15036 USERS の部分は、どのタイプのユーザの、ファイルに対するアクセス権を
15037 変更するかを示している。この部分には、1 個以上の下記の文字を指定する
15038 (あるいは、何も指定しないでもよい。その場合どうなるかは、「Umask と
15039 保険」セクションで説明している。 *note Umask and Protection::)。文字を
15040 2 個以上指定した場合の順番に特別な意味はない。
15046 ファイルの所有グループに属するファイルの所有者以外のユーザ。
15049 `u' や `g' 以外のすべてのユーザ。
15054 OPERATION の部分は、対象となるユーザのファイルに対するアクセス権を
15055 どんなふうに変更するかを指示しており、以下の記号の一つを使用する。
15058 USERS がそのファイルに対して、すでにどんな許可を持っているかに
15059 かかわりなく、それに PERMISSIONS を追加する。
15062 USERS がそのファイルに対して、すでにどんな許可を持っているかに
15063 かかわりなく、そこから PERMISSIONS を削除する。
15066 PERMISSIONS を、そのファイルに対して USERS が持つ許可のすべてに
15069 PERMISSIONS の部分は、ファイルに対するどんなアクセス権を変更するか
15070 を指示しており、通常は 0 個以上の下記の文字を指定する。USERS の部分と
15071 同様、文字を 2 個以上指定した場合の順番に特別な意味はない。PERMISSIONS
15072 の部分に何も指定しないことに意味があるのは、操作に `=' 演算子を使用する
15073 場合だけである。その場合、指定されたユーザは、そのファイルに対して
15074 いかなるアクセス権も持たないことになる。
15077 USERS の、そのファイルを読む権限。
15080 USERS の、そのファイルに書き込む権限。
15083 USERS の、そのファイルを実行する権限。ディレクトリの場合は、
15086 たとえば、ある通常ファイルについて、すべてのユーザに読み書きを許可
15087 するが、その実行は許可しないならば、次のように指定する。
15091 そのファイルの所有者以外のすべてのユーザから書き込み権限を取り上げる
15096 上記の指定は、ファイルの所有者がファイルに対して持っているアクセス権には
15097 影響を及ぼさない。また、所有者以外のユーザがそのファイルを読んだり、実行
15098 したりできるかどうかにも、影響を及ぼさない。
15100 ファイルの所有者以外のすべてのユーザに対して、そのファイルに何をする
15101 権限も一切与えないためには、以下のモードを使用すればよい。それでも、
15102 所有者以外のユーザは、ファイルの存在するディレクトリに対する書き込み
15103 権限を持っていれば、そのファイルを削除することができるだろうけれど。
15112 File: coreutils-ja.info, Node: Copying Permissions, Next: Changing Special Mode Bits, Prev: Setting Permissions, Up: Symbolic Modes
15114 27.2.2 存在する許可属性のコピー
15115 -------------------------------------------
15117 ファイルの許可属性を、それが既に持っている許可属性を元にして指定する
15118 こともできる。そうするには、演算子の後ろに `r', `w', `x' という文字を
15119 続ける代わりに、`u', `g', `o' という文字を使用する。一例を挙げよう。
15123 上記のモード指定は、ファイルのグループに属するユーザのアクセス権を、
15124 その他のユーザがそのファイルに対して持っているアクセス権に追加する。
15125 従って、仮にファイルの最初のモードが 664 (`rw-rw-r--') ならば、上記の
15126 モード指定は、それを 666 (`rw-rw-rw-') に変更することになる。ファイル
15127 の最初のモードが 741 (`rwxr----x') だったら、745 (`rwxr--r-x') になる
15128 だろう。`-' と `=' の演算子の働きも、同様である。
15131 File: coreutils-ja.info, Node: Changing Special Mode Bits, Next: Conditional Executability, Prev: Copying Permissions, Up: Symbolic Modes
15134 ----------------------------------------
15136 読み込み、書き出し、実行/検索に関するファイルの許可属性を変更できるだけ
15137 ではない。特殊モードビットも変更することができる。特殊モードビットに
15138 ついては、「ファイルのモードビットの構成」の節で簡単に説明している。
15139 *Note Mode Structure::.
15141 ファイルの実行時にユーザ ID をセットするように、ファイルのモード
15142 ビットを変更するには、シンボリックモードの USERS の部分に `u' を使用し、
15143 PERMISSIONS の部分に`s' を使用する。
15145 ファイルの実行時にグループ ID をセットするように、ファイルのモード
15146 ビットを変更するには、シンボリックモードの USERS の部分に `g' を使用し、
15147 PERMISSIONS の部分に `s' を使用する。
15149 ファイルの実行時にユーザ ID とグループ ID の両方をセットするように
15150 するには、シンボリックモードの USERS の部分に何も指定せず (あるいは、
15151 `a' を使用し)、 PERMISSIONS の部分に `s' を使用する。
15153 削除制限フラグやスティッキー・ビットが有効になるように、ファイルの
15154 モードビットを変更するには、シンボリックモードの USERS の部分に何も
15155 指定せず (あるいは、`a' を使用し)、PERMISSIONS の部分に `t' を使用する。
15157 たとえば、あるプログラムに set-user-ID モードビットを設定するには、
15162 そのプログラムから set-user-ID と set-group-ID の両方のモードビットを
15167 削除制限フラグやスティッキー・ビットを設定するには、次のモードを
15172 `o+s' という組み合わせには、何の効果もない。GNU のシステムでは、
15173 `u+t' や `g+t' という組み合わせにも、全く効果がなく、また `o+t' は、
15176 特殊モードビットの設定や変更では、`=' はあまり役に立たない。
15181 上記のモードは、確かに、削除制限フラグやスティッキー・ビットを設定
15182 することはするが、同時に、ファイルのグループに属していないユーザが、
15183 そのファイルに対して、読み、書き、実行/検索の権限を持っていたとしても、
15186 set-user-ID や set-group-ID ビットがディレクトリに付いている場合の、
15187 ほかの約束事については、「ディレクトリの Set-User-ID と Set-Group-ID
15188 ビット」の節をご覧になっていただきたい。*Note Directory Setuid and
15192 File: coreutils-ja.info, Node: Conditional Executability, Next: Multiple Changes, Prev: Changing Special Mode Bits, Up: Symbolic Modes
15195 ----------------------------------------
15197 シンボルによる許可属性の指定には、もう一つ特別なタイプがある。`x' の
15198 代わりに、`X' を使用すると、実行/検索の許可属性に変更があるのは、
15199 ファイルがディレクトリである場合か、あるいは、(どのユーザかに) すでに
15206 上記のモードは、すべてのユーザにディレクトリを検索する許可、または、
15207 ファイルを実行する許可を与えるが、後者については、どのユーザかが、
15208 すでにそのファイルを実行できたならば、という条件が付く。
15211 File: coreutils-ja.info, Node: Multiple Changes, Next: Umask and Protection, Prev: Conditional Executability, Up: Symbolic Modes
15214 ----------------------
15216 シンボリックモードの書式は、これまでに述べてきたよりも、実際にはもっと
15217 複雑である (*note Setting Permissions::)。ファイルのモードビットに
15218 対して、複数の変更を一度に行うには、二つの方法がある。
15220 一つ目の方法は、シンボリックモードの USERS の部分の後ろに、 複数の
15221 OPERATION と PERMISSIONS を指定することである。
15227 このモードは、ファイルの所有者以外のユーザに、読み込み許可を与え、さらに、
15228 ファイルがディレクトリであるか、どのユーザかがすでに実行許可を持っていた
15229 場合には、実行/検索許可も与えている。また、ファイルの所有者以外のユーザ
15230 から、ファイルへの書き出し許可を取り上げている。なお、この指定は、ファイル
15231 の所有者が持っている許可には影響を及ぼさない。このモードは、以下の二つの
15237 複数の変更を行う二つ目の方法は、単純なシンボリックモードを 2 個以上、
15238 コンマで区切って指定することである。たとえば、
15242 これは、すべてのユーザにそのファイルに対する読み込み許可を与え、
15243 所有者以外のすべてのユーザから書き出し許可を削除している。もう一つ、
15248 こちらは、そのファイルに対するすべての許可ビットを明示的に設定して
15249 いる。(ファイルのグループに属さないユーザには、ファイルに対する許可を
15252 複数の変更を行う二つの方法を組み合わせて使うこともできる。
15256 この指定は、すべてのユーザにファイルの読み込み許可を与え、さらに、
15257 ファイルのグループに属するユーザには、実行/検索許可も与えているが、
15258 書き出し許可は与えていない。上記のモードを指定する方法は、ほかにも
15259 いくつかあるだろう。その一つを挙げておく。
15264 File: coreutils-ja.info, Node: Umask and Protection, Prev: Multiple Changes, Up: Symbolic Modes
15267 ----------------------
15269 シンボリックモードの USERS の部分を省略すると、デフォルトの `a' が
15270 使用される (すべてのユーザが対象になる)。が、この場合、システム変数
15271 `umask' で設定されている許可属性は、全く影響を受けない (訳注: `umask'
15272 で許可しないことになっている許可属性は、現在実際には許可になって
15273 いようと、不許可であろうと、`-w' や `+w' といった USERS 部のない指定
15274 では、変更されないということ。以下で例を挙げて説明している)。`umask'
15275 の値は、`umask' コマンドで設定することができる。`umask' のデフォルト
15278 シンボリックモードで USERS の部分を省略するのは、`+' 以外の操作では、
15279 おおむね役に立たない。USERS の省略が `+' で役に立つのは、その場合、
15280 意図した以上の許可をファイルに付けてしまわないための、簡単にカスタマイズ
15281 できる保険として、`umask' が使用できるからである。
15283 一例を挙げると、`umask' の値が 2 ということは、ファイルの所有者でも
15284 なく、ファイルのグループにも所属していない一般ユーザに、書き出し許可を
15289 というモードは、ファイルの所有者とファイルのグループに所属するユーザに、
15290 書き出し許可を追加するが、それ以外のユーザには、書き出し許可を追加
15295 というモードは、`umask' を無視して、ファイルへの書き出し許可を、文字通り
15299 File: coreutils-ja.info, Node: Numeric Modes, Next: Operator Numeric Modes, Prev: Symbolic Modes, Up: File permissions
15302 ====================
15304 シンボリックモードで指定する代わりに、モードを表す 1 個の 8 進数 (基数
15305 8) を指定することもできる。この数値は常に 8 進数として解釈されるので、
15306 C 言語の場合とは違って、先頭に `0' を付ける必要はない。`0055' という
15307 モードは、`55' というモードと同じなのだ。(とは言え、`00055' のような、
15308 5 桁以上のモードは、特別な扱いを受けることがある。*Note Directory
15309 Setuid and Setgid::.)
15311 数値モードは、たいていの場合、対応するシンボリックモードより短くて
15312 すむが、ファイルの変更前のモードビットを踏まえて指定することが、普通は
15313 できないという制限がある。数値モードでは、絶対的な形で指定することしか
15314 できないのだ。ディレクトリの set-user-ID ビットと set-group-ID ビット
15315 は、この一般的な制限の対象外である。 *Note Directory Setuid and
15316 Setgid::. なお、演算子付き数値モードを使えば、ファイルの変更前のモード
15317 ビットを踏まえた指定が可能になる。 *Note Operator Numeric Modes::.
15319 ファイルの所有者、ファイルのグループに所属する他のユーザ、それ以外の
15320 一般ユーザ、この 3 種のユーザに与える許可属性には、それぞれ 3 ビットを
15321 要し、その 3 ビットは 1 個の 8 進数で表現される。三つの特殊モードビット
15322 にも、おのおの 1 ビットが必要であり、こちらも一つにまとめて、もう一つの
15323 8 進数として表現される。各ビットの並び方は、最下位のビットから上位の
15324 ビットへ向かって、次のようになっている。
15329 ファイルのグループに所属しない一般ユーザ:
15334 ファイルのグループに所属する所有者以外のユーザ:
15345 1000 削除制限フラグ、またはスティッキー・ビット
15346 2000 ファイルの実行時にグループ ID をセットする
15347 4000 ファイルの実行時にユーザ ID をセットする
15349 たとえば、数値モードの `4755' は、シンボリックモードの `u=rwxs,go=rx'
15350 に当たり、数値モードの `664' は、シンボリックモードの `ug=rw,o=r' に相当
15351 している。数値モードの `0' は、シンボリックモードの `a=' に相当する。
15354 File: coreutils-ja.info, Node: Operator Numeric Modes, Next: Directory Setuid and Setgid, Prev: Numeric Modes, Up: File permissions
15357 ===================================
15359 演算子付き数値モードは、`-', `+', `=' を前に付けた数値モードである。
15360 そうした演算子が表している意味は、シンボリックモードの場合と同じだ。
15361 たとえば、`+440' は、ファイルの所有者とグループに対する読み込み許可を
15362 有効にし、`-1' は、その他の一般ユーザに対する実行許可を無効にする。
15363 また、`=600' は、ファイルの所有者に対する読み込みと書き出しの許可を
15364 有効にするが、それ以外のすべての許可を無効にする。演算子付き数値モード
15365 は、シンボリックモードと組み合わせて使うことも可能だ。両者の間は
15366 コンマで区切ればよい。一例を挙げると、`=0,u+r' は、すべての許可を
15367 無効にした上で、ファイルの所有者の読み込み許可だけを有効にする。
15369 コマンド `chmod =755 DIR' と `chmod 755 DIR' の違いは、前者が
15370 ディレクトリ DIR の setuid と setgid をクリアするのに対して、後者は
15371 それをそのまま維持するという点にある。 *Note Directory Setuid and
15374 演算子付き数値モードは、GNU による拡張である。
15377 File: coreutils-ja.info, Node: Directory Setuid and Setgid, Prev: Operator Numeric Modes, Up: File permissions
15379 27.5 ディレクトリの Set-User-ID と Set-Group-ID ビット
15380 =================================================================
15382 ほとんどのシステムでは、ディレクトリに set-group-ID ビットが付いている
15383 と、そのディレクトリ内で新しく作られるファイルは、ディレクトリと同じ
15384 グループを継承し、新しく作られるサブディレクトリは、親ディレクトリの
15385 set-group-ID ビットを継承する。また、若干のシステムでは、ディレクトリの
15386 set-user-ID ビットが、ディレクトリ内の新規ファイルの所有者と、新規サブ
15387 ディレクトリの set-user-ID ビットに対して、同様の効果を持っている。
15388 こうした仕組みによって、新しいファイルを共有するために `chmod' や
15389 `chown' を使う必要が軽減し、ユーザにとってファイルの共有がやりやすく
15392 ユーザの便宜のためのこうした仕組みは、ディレクトリの set-user-ID
15393 ビットや set-group-ID ビットを拠り所にしている。もし、`chmod' や
15394 `mkdir' が、ディレクトリのそうしたビットを常時クリアする仕様になって
15395 いたら、この仕組みもそれほど便利ではなくなり、ファイルの共有が面倒なこと
15396 になるだろう。それ故、`chmod' などのコマンドは、原則としてディレクトリ
15397 の set-user-ID ビットや set-group-ID ビットを変更しないのである。
15398 set-user-ID ビットや set-group-ID ビットを変更するには、ユーザが
15399 シンボリックモードで明示的にそう指定するか、`=755' のような演算子付き
15400 数値モードを使用するか、数値モードでビットを立てるか、5 桁以上の 8 進数
15401 からなる数値モードでビットをクリアするか、そのどれかをやる必要がある。
15402 set-group-ID ビットの継承をサポートしているシステムでの例を挙げよう。
15404 # 以下のコマンドは、サブディレクトリの set-user-ID ビットと
15405 # set-group-ID ビットを変更しない。従って、デフォルトの値が
15410 chmod u=rwx,go=rx C
15413 mkdir -m u=rwx,go=rx F
15415 サブディレクトリの set-user-ID ビットや set-group-ID ビットを設定
15416 したかったら、シンボリックモードや数値モードで明示的に指定しなければ
15419 # 以下のコマンドは、サブディレクトリに set-user-ID ビットと
15420 # set-group-ID bits を付けようとしている。
15424 chmod u=rwx,go=rx,a+s G
15427 mkdir -m u=rwx,go=rx,a+s J
15429 サブディレクトリの set-user-ID ビットや set-group-ID ビットを
15430 消去したかったら、シンボリックモードで明示的にそう指定するか、
15431 演算子付き数値モードを使用するか、5 桁以上の 8 進数からなる数値
15432 モードで指定するかしなければならない。
15434 # 以下のコマンドは、ディレクトリ D の set-user-ID ビットと
15435 # set-group-ID ビットをクリアしようとしている。
15441 こうした動作は、GNU による拡張である。移植を考慮したスクリプト
15442 では、ディレクトリの set-user-ID ビットや set-group-ID ビットを
15443 立てたり、クリアしたりするリクエストを当てにしない方がよい。POSIX
15444 の規格で、そうしたリクエストを無視する実装が認められているからだ。
15445 なお、GNU の許可属性指定における 4 桁以下の数値モードの動作は、
15446 ディレクトリの set-user-ID ビットや set-group-ID ビットを維持する
15447 システムで使うスクリプト向けであり、5 桁以上の数値モードの動作は、
15448 そうしたビットを維持しないシステムでも使えるスクリプト向けである。
15450 (訳注: 4 桁以下と 5 桁以上の数値によるモード指定の違いについて
15451 少し整理しておく。数値によるモード指定は、原則として絶対的な指定
15452 である。たとえば、755 と指定すれば、755 に対応するモードビットだけ
15453 が立てられ、それ以外のビットは 0 になる。ただし、ディレクトリの
15454 set-user-ID ビットと set-group-ID ビットについてだけは、話がもう
15455 少し複雑である。4 桁以下の数値による指定の場合、ディレクトリの
15456 set-user-ID ビットや set-group-ID ビットを維持するシステムでは、
15457 そうしたビットはデフォルトや現在の状態が引き継がれるのだから、
15458 ユーザがディレクトリの set-user-ID ビットや set-group-ID ビットを
15459 数値によって指定しても、それは絶対的な指定にならない。デフォルト値や
15460 現在値に対する追加にしかならないのである。当然のこととして、この
15461 方法では消去もできない。それに対して、5 桁以上の数値による指定の
15462 場合は、どんなシステムでも、すべてのモードビットについて、ユーザ
15463 の指定は絶対指定になる。従って、こちらなら、ディレクトリの set-user-ID
15464 ビットや set-group-ID ビットの選択的な設定や消去もできるのである。
15465 もちろん、お使いの `chmod' のバージョンが、5 桁の数値指定をサポート
15469 File: coreutils-ja.info, Node: Date input formats, Next: Opening the software toolbox, Prev: File permissions, Up: Top
15472 ************************
15476 時間を計るための我々の単位は、秒から月にいたるまで、あまりにも
15477 複雑で、一貫性がなく、ばらばらなので、時間について間違わずに暗算
15478 をすることなど、ほとんど不可能なほどだ。まったくの話、どこかの
15479 横暴な神様が、人間の知能を時間の奴隷にしてやろうと企んだとしても
15480 -- 腐った決まりごとや不愉快な不意打ちに隷従せずに済ますことなど、
15481 人間にはほとんど不可能にしてやろうと企んだとしても -- 現在我々が
15482 使っているシステムをお下げ渡しになる以上のことは、できなかったに
15483 違いない。我々の時間計算のシステムは、垂直な面も水平な面もない
15484 台形の建築ブロックの集まりのようなものだ。あるいは、ほんの簡単な
15485 考えを述べるにも、凝りに凝った構成や、無駄な不変化詞や、長々しい
15486 婉曲表現が必要な言語のようなものだ。言語や科学のもっとうまく行って
15487 いる思考様式は、我々が経験に果敢に立ち向かうことを、少なくとも
15488 冷静に立ち向かうことを可能にしてくれる。ところが、そうしたものとは
15489 違って、我々の時間計算のシステムは、密かに、しかも執拗に時間に
15490 対する我々の恐怖をかきたてるのである。
15492 ... それは、建築家が長さをフィートで、幅をメートルで、高さをエルで
15493 測らなければならないようなものだ。あるいは、基本的な使用説明書を
15494 読むのに、五つの異なった言語の知識が必要なようなものだ。だから、
15495 我々が、自分にとってすぐ最近の過去や未来を表す、この前の火曜日
15496 (last Tuesday) とか、来週の日曜日 (a week from Sunday) とかいった
15497 表現について、それは一体いつを指しているのだろうと考え込んでは、
15498 どうしようもない混乱を覚えることがよくあるのも、無理からぬこと
15501 -- Robert Grudin, `Time and the Art of Living'.
15503 この章では、GNU のプログラムが認識する日付表現文字列について説明
15504 する。そうした文字列は、ユーザである読者が、様々なプログラムに引数
15505 として渡すことのできるものだ。C のインターフェース (`parse_datetime'
15506 関数で使用する) については、ここでは説明しない。
15510 * General date syntax:: 共通規則。
15511 * Calendar date items:: 暦日の項目 (19 Dec 1994)。
15512 * Time of day items:: 時刻の項目 (9:20pm)。
15513 * Time zone items:: タイムゾーンの項目 (EST, PDT, UTC, ...)。
15514 * Combined date and time of day items:: 暦日と時刻を組み合わせた項目
15515 (1972-09-24T20:02:00,000000-0500)。
15516 * Day of week items:: 曜日の項目 (Monday, Tuesday)。
15517 * Relative items in date strings:: 相対表現の項目
15518 (next tuesday, 2 years ago)。
15519 * Pure numbers in date strings:: 純粋な数値 (19931219, 1440)。
15520 * Seconds since the Epoch:: 紀元からの秒数 (@1078100502)。
15521 * Specifying time zone rules:: タイムゾーン・ルールの指定
15522 (TZ="America/New_York", TZ="UTC0")。
15523 * Authors of parse_datetime:: parse_datetime の作者 (Bellovin, Eggert,
15524 Salz, Berets, et al.)。
15527 File: coreutils-ja.info, Node: General date syntax, Next: Calendar date items, Up: Date input formats
15530 ==========================
15532 日付 ("date") は、空文字列のこともある文字列であり、空白 (whitespace)
15533 で区切られた多くの項目を含んでいる。各項目の意味に曖昧さが生じないなら、
15534 空白は省略できる。空の文字列は、今日の始まり (すなわち、真夜中) を意味
15535 している。項目の順序は重要ではない。日付文字列では、様々な種類の項目を
15552 個々の項目については、次節以下で順番に説明する。
15554 何番目かを示す序数の中には、現れる場所によっては、単語で表現できる
15555 ものがいくつかある。これは、曜日や相対的表現の項目を指定するとき、
15556 たいへん便利だ (下記参照)。使用頻度のきわめて高い序数を取り上げると、
15557 `last' という単語は -1 を表し、`this' は 0 を、`first' と `next' は
15558 両方とも 1 を表している。`second' という単語は時間の単位でもあるので、
15559 序数の 2 を単語で表現する方法はない。だが、便宜を考えて、`third' は 3
15560 を、`fourth' は 4 を、`fifth' は 5 を、`sixth' は 6 を、`seventh' は 7
15561 を、`eighth' は 8 を、`ninth' は 9 を、`tenth' は 10 を、`eleventh' は
15562 11 を、`twelfth' は 12 を表すことになっている。
15564 月がこの形で表現されたときも、やはり数値として (訳注: たとえば、今月
15565 から何ヶ月後と) 指定されたと見なされるのであって、月の名前の省略なしの
15566 表記と解釈されるわけではない (訳注: たとえば、third month を March の
15567 別名の完全表記とは考えない)。そのため、March のような月名を使った場合
15570 現在の実装で使用できる単語は、英語の単語とその省略形のみである。
15571 すなわち、`AM', `DST', `EST', `first', `January', `Sunday', `tomorrow',
15574 `date' コマンドの出力だからと言って、必ずしも日付文字列として
15575 プログラムに渡せるとはかぎらない。言語の問題のせいばかりではない。
15576 `IST' のようなタイムゾーン項目には、標準的な意味が存在しないからでも
15577 ある。後でプログラムに構文解析をさせる予定の日付文字列を、`date'
15578 を使用して生成するのなら、日付の書式には、言語が何であるかに依存せず、
15579 `UTC' と `Z' 以外のタイムゾーン項目を使用しないものを指定するべきだ。
15582 $ LC_ALL=C TZ=UTC0 date
15583 Mon Mar 1 00:21:42 UTC 2004
15584 $ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
15585 2004-03-01 00:21:42Z
15586 $ date --rfc-3339=ns # --rfc-3339 は GNU の拡張。
15587 2004-02-29 16:21:42.692722128-08:00
15588 $ date --rfc-2822 # GNU の拡張。
15589 Sun, 29 Feb 2004 16:21:42 -0800
15590 $ date +'%Y-%m-%d %H:%M:%S %z' # %z は GNU の拡張。
15591 2004-02-29 16:21:42 -0800
15592 $ date +'@%s.%N' # %s と %N も GNU の拡張。
15593 @1078100502.692722128
15595 日付を指定する際、アルファベットの大文字と小文字は全く区別されない。
15596 丸カッコで囲めば、コメントを入れることができる。ただし、丸カッコを入れ子
15597 にするときは、開きカッコと閉じカッコがきちんと対応していなければならない。
15598 数字が後に続かないハイフンは、現在のところ無視される。また、数値の前に
15601 `2005-02-29' のような無効な日付や `24:00' のような無効な時刻は、
15602 却下される。閏秒をサポートしていないホストでは、`23:59:60' のような
15603 時刻は、たとえ閏秒に正しく対応する値であっても、却下されるのが普通である。
15606 File: coreutils-ja.info, Node: Calendar date items, Next: Time of day items, Prev: General date syntax, Up: Date input formats
15609 ====================
15611 暦日の項目 ("calendar date item") では、ある年のある一日を指定する。
15612 月を数字で指定するか、文字で指定するかにかによって、日付の指定法が変わって
15613 くる。以下に挙げる文字列は、すべて暦の上の同じ日付を指定している。
15615 1972-09-24 # ISO 8601 形式。
15616 72-9-24 # 69 から 99 までは、19xx 年と見なし、
15617 # 00 から 68 までは、20xx 年と見なす。
15618 72-09-24 # 先頭の 0 は無視される。
15619 9/24/72 # アメリカでよく使われる表記。
15621 24 Sept 72 # September には、4 文字の省略形もある。
15622 24 Sep 72 # 3 文字の省略形は、何月に対しても使用できる。
15627 年を省略することもできる。その場合は、日付文字列の後方で指定された
15628 年が使用される (訳注: たとえば、`date -d "5/3 2:00 UTC 2015"' のような
15629 場合だろう)。それもない場合は、今年が使われる。例を挙げると、次のような
15637 月を数字で表す場合、ISO 8601 の形式、すなわち `YEAR-MONTH-DAY' が
15638 使用できる。ここで YEAR は任意の正の数であり、MONTH は 01 から 12
15639 までの数、DAY は 01 から 31 までの数である。数が 10 未満のときは、 0
15640 を前に付けることになる。YEAR が 68 以下の場合は、YEAR に2000 が加算
15641 される。また、YEAR が 69 以上、100 未満ならば、1900 が加算される。
15642 アメリカ合衆国で一般的な `MONTH/DAY/YEAR' という書式も使うことが
15643 できる。年を省略した `MONTH/DAY' も可能である。
15645 月の名前を使用する場合は、フルスペルで書いてもよい。すなわち、
15646 `January', `February', `March', `April', `May', `June', `July',
15647 `August', `September', `October', `November', `December' である。月の
15648 名前は、最初の 3 文字に省略することができる。その場合、省略の印の
15649 ピリオドは、付けても付けなくてもよい。また、`September' の代わりに、
15650 `Sept' と書くことも認められている。
15652 月名を使用する場合、暦の上の日付は、以下のどの形で指定してもよい。
15664 File: coreutils-ja.info, Node: Time of day items, Next: Time zone items, Prev: Calendar date items, Up: Date input formats
15667 ====================
15669 日付文字列中の時刻の項目 ("time of day item") では、当日の時刻を指定
15670 する。以下に挙げるいくつかの例は、すべて同じ時刻を表している。
15675 20:02-0500 # EST (U.S. Eastern Standard Time)
15677 もっと一般的に言うと、時刻は `HOUR:MINUTE:SECOND' の形で指定できる。
15678 HOUR は 0 から 23 までの数であり、MINUTE は 0 から 59 までの数である。
15679 SECOND は 0 から 59 までの数であり、`.' や `,' を後ろに付けて、一桁以上
15680 の数字からなる小数を続けてもよい。なお、`:SECOND' は省略することもでき、
15681 その場合は 0 を指定したことになる。閏秒をサポートするホストもまれには
15682 あり、そうしたところでは SECOND に 60 を指定することができる。
15684 時刻に `am' や `pm' (または `a.m.' や `p.m.') が続く場合は、HOUR が
15685 1 から 12 までになる。`:MINUTE' は省略してもよい (0 を指定したものと
15686 見なされる)。`am' は一日の前半を示し、`pm' は一日の後半を示す。この
15687 表記法では、1 の前が 12 になる。すなわち、真夜中は `12am' であり、正午
15688 は `12pm' である。(これは `12am' や `12pm' の 12 を 0 のように見なす解釈
15689 であり、正午を `12m'、深夜を `12pm' とするラテン文化から来た従来の習慣
15692 また、時刻にはタイムゾーン補正を続けてもよい。補正は `SHHMM' という
15693 形で表現され、S は `+' または `-' 符号、HH は時間帯の時間差、MM は分差の
15694 部分である。分差の部分 MM は指定しないでもよく、その場合は、1 桁ないし
15695 2 桁の補正は、時間差の指定と見なされる。なお、HH と MM の間をコロンで
15696 区切ってもよい。タイムゾーン補正をこの方法で指定した場合、それが、それ
15697 までに指定したいかなるタイムゾーンよりも、また、ローカル・タイムゾーン
15698 よりも優先され、指定した時刻は、協定世界時 (UTC) よりも補正分進んでいる
15699 (あるいは、遅れている) タイムゾーンの時刻であると解釈されることになる。
15700 一例を挙げると、`+0530' と `+05:30' は両方とも、UTC より 5.5 時間進んだ
15701 タイムゾーンを表している (たとえば、インドである)。これは、タイムゾーン
15702 補正を 1 時間以下の部分まで指定する最善の方法である。タイムゾーン補正の
15705 `am'/`pm' とタイムゾーン補正は、どちらか一方のみが指定できる。両方を
15709 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
15712 ================================
15714 タイムゾーン項目 ("time zone item") では、国際時間帯を指定する。これは
15715 数個の文字によって表されるもので、たとえば、協定世界時 (Coordinated
15716 Universal Time) なら `UTC' または `Z' である。省略の印のピリオドは、
15717 すべて無視される。標準時のタイムゾーン (a non-daylight-saving time
15718 zone) の後ろに、文字列 `DST' を独立した単語として (すなわち、空白、
15719 タブなどを間に置いて) 続ければ、対応する夏時間のタイムゾーンを指定
15720 することができる。ちなみに、標準時のタイムゾーンの後ろに、タイムゾーン
15721 補正を続けて、両方の値を加算することもできる。ただし、その指定法は、
15722 通常 `UTC' に対してしか行われない。たとえば、`UTC+05:30' は `+05:30' と
15725 `UTC' と `Z' 以外のタイムゾーン項目は、時代遅れになりかかっている
15726 ので、使用しない方がよい。理由は解釈が一定しないからであり、たとえば、
15727 `EST' はオーストラリアとアメリカ合衆国で違った意味を持っている。タイム
15728 ゾーン項目を使用するよりも、前節で述べた `-0500' のような、数値による
15729 タイムゾーン補正を使った方が、曖昧さがないので、賢明である。
15731 タイムゾーン項目とタイムゾーン補正のどちらも指定されていない場合、
15732 日付の解釈は、デフォルトのタイムゾーンのルールを用いて行われる (*note
15733 Specifying time zone rules::)。
15736 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
15738 28.5 暦日と時刻を組み合わせた項目
15739 ===============================================
15741 ISO 8601 の拡張日時書式は、ISO 8601 形式の日付、`T' という区切り文字、
15742 ISO 8601 形式の時刻という構成になっている。`T' の代わりにスペースが
15743 使われていても、この書式として認識される。
15745 この書式では、時刻は 24 時間表記を使用するべきである。秒については、
15746 コンマまたはピリオドに小数部分を続けることで、小数点以下も指定できる。
15747 ISO 8601 で認められている分や時の小数表現には対応していない。たいていの
15748 ホストがナノセコンドの精度のタイムスタンプをサポートしている。サポート
15749 を超えた精度は、エラーや警告を出さずに単に除去される。
15753 2012-09-24T20:02:00.052-0500
15754 2012-12-31T23:59:59,999999999+1100
15758 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
15761 ====================
15763 曜日を明示的に指定すると、未来のその曜日にまで日付を前に進めることに
15764 なる (これが行われるのは、その必要があるときだけである)。
15766 曜日は省略なしに書いてもよい。すなわち、`Sunday', `Monday',
15767 `Tuesday', `Wednesday', `Thursday', `Friday', `Saturday' である。最初の
15768 3 文字に短縮することもでき、その場合、省略の印のピリオドは付けても
15769 付けなくてもよい。`Tuesday' には `Tues'、`Wednesday' には `Wednes'、
15770 `Thursday' には `Thur' または `Thurs' という特殊な省略形もある。
15772 曜日項目の前に数値を付けてもよい。週がその分だけ前に進むことになる。
15773 これは、`third monday' のような表現で使うのが、一番よい。その伝で、
15774 `last DAY' や `next DAY' という表現も許されている (訳注: DAY の部分には
15775 Sunday, Monday などの曜日を指定する)。それぞれ、単独の DAY が表すことに
15776 なる日付より 1 週間前、または 1 週間後の日付になる。
15778 (訳注: next について上記のことが成り立つのは、DAY が今日の曜日の
15779 ときだけである。それ以外の場合は、DAY と `next DAY' は同じになる。)
15781 曜日項目の後ろにコンマがあっても、無視される。
15783 (訳注: 確かに `-d "Thu, 2013-03-07"' といった指定では、コンマが無視
15784 されるが、`-d "next Thu,"' や `-d "3 Thu,"' といった指定では、"invalid
15785 date" と言われ、エラーになる。)
15788 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
15791 ==========================
15793 相対表現の項目 ("Relative items") は、日付を (指定しない場合は、現在の
15794 日付を) 前後に移動させる。また、相対表現の項目の作用は、加算されていく。
15795 相対表現の項目とは、次のようなものである。
15802 時間をどれくらい移動するかの単位は、文字列を使って選択する。まる
15803 数年、あるいは、まる数ヶ月ずらすのなら、`year' や `month' という文字列
15804 を使う。年も月も、曖昧な単位である。すべての年や月が、同じ長さをしている
15805 わけではないからだ。もっと厳密な単位としては、`fortnight' (14 日間)、
15806 `week' (7 日間)、`day' (24 時間)、`hour' (60 分間)、`minute' または
15807 `min' (60 秒間)、`second' または `sec' (1 秒間) がある。こうした単位
15808 には、複数語尾の `s' を付けてもよいが、付けても無視される。
15810 時間の単位の前に、何倍かを示す乗数を置くことができる。乗数には、 `+'
15811 または `-' の符号を付けてもよい。符号なしの数値には、`+' の符号が
15812 付いているものと見なされる。数値を指定しなければ、乗数に 1 を指定した
15813 ことになる。相対表現の項目に `ago' を続けるのは、単位の前にマイナスの
15816 `tomorrow' という文字列は、1 日分未来ということである (`day' と
15817 等しい)。`yesterday' は、1 日分過去ということだ (`day ago' と等しい)。
15819 `now' や `today' という文字列は、値 0 の時間移動に対応する相対表現の
15820 項目である。値 0 の時間移動は、先行する項目によって別の日時に変更されて
15821 いないかぎり、今現在の日時を表すということから、`now' (今) や `today'
15822 (今日) という言い方ができるわけだ。こうしたものは、他の項目を強調する
15823 ために、たとえば、`12:00 today' といった具合に使うこともできる。 `this'
15824 という文字列にも、値 0 の時間移動という意味があるが、こちらは `this
15825 thursday' のような日付文字列で使用される。
15827 相対表現の項目によって生成される日付が、標準時と夏時間の切り替えを
15828 典型とするような、時刻調整の境目を越えたものになる場合、生成される日時
15831 単位の曖昧さが、相対表現の項目では問題を起こすことがある。たとえば、
15832 `2003-07-31 -1 month' は、2003-07-01 と評価されるかもしれない。
15833 2003-06-31 が無効な日付だからだ。先月が何月かをもっと確実に引き出す
15834 ためには、今月の 15 日よりも前に、先行する月を求めればよい。例を挙げる。
15837 Thu, 31 Jul 2003 13:02:39 -0700
15838 $ date --date='-1 month' +'Last month was %B?'
15839 Last month was July?
15840 $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
15841 Last month was June!
15843 また、標準時と夏時間の切り替えのような時刻変更があるときの前後で
15844 日付の操作を行う場合も、気を付けた方がよい。24 時間も加算されたり、
15845 減算されたりしてしまうことも、ないとは言えないからだ。そこで、
15846 たいていの場合、日付の計算に取りかかる前に、環境変数 `TZ' を `UTC0'
15847 に設定して、協定世界時を採用するのが賢明である。
15850 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
15853 =========================================
15855 純粋な 10 進数をどう解釈するかは、日付文字列の文脈次第である。
15857 10 進数が YYYYMMDD の形をとり、日付文字列中のそれより前に他の暦日の
15858 項目 (*note Calendar date items::) が存在しない場合は、YYYY は暦の上の
15859 ある 1 日の年の部分と見なされる。MM は何番目の月かということ、DD は
15862 10 進数が HHMM の形をとり、日付文字列中のそれより前に他の時刻の
15863 項目が存在しない場合は、HH はある 1 日の時刻の何時の部分と、MM は
15864 何分の部分と見なされる。MM を省略してもよい。
15866 日付文字列中で、ある数値の左側に暦の上の日にちとその日の時刻の両方が
15867 存在し、相対表現の項目が存在しない場合は、その数値が今年の代わりに
15870 (訳注: たとえば、`date -d "3/27 10:10 2012"' と指定すると、今年の
15871 代わりに 2012 が使われるということらしい。`date -d "3/27/2001 10:10
15872 2012"' や `date -d "2001-03-27 10:10 2012"' は無効な日付になるし、
15873 `date -d "3/27 1010 2012"' は、1010 年 3 月 27 日 20:12:00 になる。)
15876 File: coreutils-ja.info, Node: Seconds since the Epoch, Next: Specifying time zone rules, Prev: Pure numbers in date strings, Up: Date input formats
15878 28.9 Unix 紀元 (the Epoch) からの秒数
15879 ============================================
15881 `@' に数値を続けると、それは、秒数として、システム内部で使われるタイム
15882 スタンプを表すことになる。数値には、小数点 (`.' または `,') が含まれて
15883 いてもよい。内部表現がサポートしていない余分な精度は、マイナスの無限に
15884 向けて切り詰められる。`@' で始まるこうした数値は、他の日付項目のいかなる
15885 ものとも組み合わせて使うことができない。欠けるところのない完全なタイム
15888 コンピュータの内部では、時間は、ある紀元 (an epoch) -- きちんと定義
15889 された時間中のある一点 -- からの秒数として表現されている。GNU や POSIX
15890 のシステムでは、紀元は 1970-01-01 00:00:00 UTC である。従って、`@0' は
15891 その時刻を表し、`@1' は 1970-01-01 00:00:01 UTC を表す、以下同様と
15892 いうことになる。GNU を始め、POSIX に準拠したほとんどのシステムでは、
15893 POSIX に対する拡張として、こうした時間表記をマイナスの秒数を使うことも
15894 含めて、サポートしている。従って、`@-1' は 1969-12-31 23:59:59 UTC を
15897 旧来の Unix システムでは、秒を 32 ビットの 2 の補数である整数で
15898 数えており、1901-12-13 20:45:52 から 2038-01-19 03:14:07 UTC まで
15899 表すことができる。もっと新しいシステムでは、64 ビットの秒数計算を、
15900 ナノセコンドのサブカウント付きで使用しており、宇宙の寿命として
15901 知られている時間のうちのあらゆる時刻を 1 ナノセコンドの精密さで表す
15904 ほとんどのホストのこうした計算では、閏秒の存在が無視されている。
15905 たとえば、ほとんどのホストで `@915148799' は 1998-12-31 23:59:59 UTC を
15906 表し、`@915148800' は 1999-01-01 00:00:00 UTC を表している。従って、
15907 間にある 1998-12-31 23:59:60 UTC という閏秒を表現する方法は存在しない。
15910 File: coreutils-ja.info, Node: Specifying time zone rules, Next: Authors of parse_datetime, Prev: Seconds since the Epoch, Up: Date input formats
15912 28.10 タイムゾーン・ルールの指定
15913 =============================================
15915 通常、日付の解釈は、現在のタイムゾーンのルールを使って行われる。そして、
15916 その現在のタイムゾーンのルールを指定しているのは、環境変数 `TZ' か、
15917 `TZ' が設定されていなければ、システムのデフォルト設定である。今、
15918 ある一つの日付のみに別のタイムゾーンでデフォルトとして使われる一連の
15919 ルールを適用したいとしよう。その場合は、日付を `TZ="RULE"' という文字列
15920 で始めればよい。日付中では、対になった二重引用符 (`"') で RULE を必ず
15921 囲わなければならない。また、RULE 中に引用符やバックスラッシュが
15922 あるときは、それをバックスラッシュでエスケープしなければならない。
15924 一例を挙げると、GNU の `date' コマンドを使って、「パリで 2004 年 10
15925 月 31 日 午前 6 時 30 分のとき、ニューヨークでは何時か?」という質問に
15926 答えることができる、以下で示すように、`TZ="Europe/Paris"'で始まる
15929 $ export TZ="America/New_York"
15930 $ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
15931 Sun Oct 31 01:30:00 EDT 2004
15933 この例では、`--date' のオペランドの最初の部分で、それ自身の `TZ' が
15934 設定されている。そこで、このオペランドの残りの部分は、`Europe/Paris' の
15935 ルールに従って処理され、`2004-10-31 06:30' という文字列が、パリの日時で
15936 あるかのように扱われる。ところが、`date' コマンドの出力は、全体のタイム
15937 ゾーンのルールに従って処理されるので、出力にはニューヨークの時刻が使用
15938 されるのである。(2004 年には、パリは通常ニューヨークより 6 時間進んで
15939 いた。しかし、この例は、時差が 5 時間だったハロウィーンの日のほんの短い
15942 `TZ' の値はルールであり、ルールには通常、`tz' データベースの地域名が
15943 付けられている (`http://www.twinsun.com/tz/tz-link.htm')。地域名の最新の
15944 一覧は、TWiki Date and Time Gateway で見ることができる
15945 (`http://twiki.org/cgi-bin/xtra/tzdate')。なお、GNU 以外のホストの中
15946 には、`TZ' を設定するとき、`TZ=":America/New_York"' のように、地域名の
15947 前にコロンを置く必要があるものもある。
15949 `tz' データベースには、`Arctic/Longyearbyen' から `Antarctica/South
15950 _Pole' に至るまで、実にさまざまな地域が含まれている。それでも、目下
15951 航海の最中でタイムゾーンが船特有のものである場合や、`tz' データベースに
15952 対応していない non-GNU のホストを使用している場合は、`tz' データベース
15953 の地域名で表されるルールの代わりに、POSIX 式のルールを使う必要がある
15954 かもしれない。`UTC0' のような POSIX 式の単純なルールだと、夏時間なしの
15955 タイムゾーン指定になるが、簡単な夏時間制度なら指定できる他のルールも
15956 存在する。 *Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
15959 File: coreutils-ja.info, Node: Authors of parse_datetime, Prev: Specifying time zone rules, Up: Date input formats
15961 28.11 `parse_datetime' の作者
15962 ================================
15964 `parse_datetime' は、`getdate' として誕生した。最初の実装を行ったのは、
15965 Steven M. Bellovin (<smb@research.att.com>) であり、ノースカロライナ大学
15966 チャペルヒル校に在学中のことだった。その後、Usenet 上で数人によって
15967 機能が追加され、1990 年 8 月に Rich $alz (<rsalz@bbn.com>) と Jim Berets
15968 (<jberets@bbn.com>) によって徹底的なオーバーホールがなされた。GNU シス
15969 テムのための様々な改訂は、David MacKenzie, Jim Meyering, Paul Eggert
15970 などによって行われた。ほぼ同様の機能を持つ Posix の `getdate' 関数との
15971 衝突を避けるために `get_date' と名前を変えたのも、この改訂の一部であり、
15972 さらに後に、`parse_datetime' と改名した。Posix の `getdate' 関数は、
15973 `strptime' の使用によりロケール特有の日付の解析に優れているが、環境変数
15974 や外部のファイルに依存しており、`parse_datetime' の持つスレッド安全性
15975 (thread-safety) を欠いている。
15977 この章は、Franc,ois Pinard (<pinard@iro.umontreal.ca>) がソースコード
15978 の `parse_datetime.y' を元にして最初に作成し、その後、K. Berry
15979 (<kb@cs.umb.edu>) が増補改訂した。
15982 File: coreutils-ja.info, Node: Opening the software toolbox, Next: About the translation, Prev: Date input formats, Up: Top
15985 *********************************
15987 この章の初期のバージョンは、「GNU とは何か? (`What's GNU?')」という
15988 連載記事として `Linux Journal' 1994 年 6 月号に掲載された。執筆者は
15989 Arnold Robbins である。
15990 (`http://www.linuxjournal.com/article.php?sid=2762')
15994 * Toolbox introduction:: はじめに
15995 * I/O redirection:: I/O リダイレクション
15996 * The who command:: `who' コマンド
15997 * The cut command:: `cut' コマンド
15998 * The sort command:: `sort' コマンド
15999 * The uniq command:: `uniq' コマンド
16000 * Putting the tools together:: 工具を組み合わせる
16003 File: coreutils-ja.info, Node: Toolbox introduction, Next: I/O redirection, Up: Opening the software toolbox
16008 今月の記事と GNU プロジェクトの関係は、周辺的なものにすぎない。お手元の
16009 GNU/Linux システムの GNU ツールをいくつか取り上げて、こんな使い方もあり
16010 ますよ、と説明している点で、関係があるにすぎないのだ。今月の記事の真の
16011 狙いは、プログラムを開発したり、使用したりする上での、「ソフトウェアは
16012 工具だ」という考え方を説明することである。
16014 ソフトウェアは工具だという思想は、Unix が最初に設計され、開発された
16015 ときの重要で不可欠な考え方だった (Linux も GNU も本質的には Unix の
16016 クローンである)。残念なことに、最近ではインターネットや見栄えのよい GUI
16017 の勢いに押されて、ソフトウェア工具論は流行らなくなっているようだ。
16018 この思想は、様々な問題を解決するための強力な思考モデルを提供してくれる
16021 スイス・アーミーナイフをズボンのポケットに (または、小物入れに)
16022 入れて、持ち歩いている人は多い。スイス・アーミーナイフは持っていると
16023 重宝な道具だ。それには、何本かのナイフ、ねじ回し、ピンセット、つまようじ、
16024 爪やすり、コルク抜き、他にもたぶん、いろいろ付いているだろう。日常の
16025 ちょっとした雑用には、何にでも使える簡単な道具があれば済むのだから、
16026 そうした用途にはまさにピッタリの道具である。
16028 しかしながら、熟練した大工は、スイス・アーミーナイフを使って家を建て
16029 たりしない。彼は、その代わりに道具箱を持っていて、そこには用途別の工具
16030 -- のこぎり、金槌、ねじ回し、鉋など -- がぎっしり詰まっている。しかも、
16031 彼は一つ一つの工具について、いつどこで使えばよいかをきちんと心得ている。
16032 ねじ回しの柄で釘を打ち込んだりすることは絶対にないのだ。
16034 ベル研究所にいた Unix の開発者たちは、プロのプログラマやコンピュー
16035 タ・サイエンスの専門家ばかりだった。その彼らが、こういうことに気づいた
16036 のだ。万能型のプログラムは、たった一つのプログラムを使えばよいので、
16037 ユーザには受けがよいかもしれない。だが、いざ実際に作ってみると、そうした
16044 c. 新しい状況に合わせて機能を拡張するのが難しい。
16046 むしろ彼らは、プログラムは用途別の工具であるべきだと痛感した。
16047 要するに、個々のプログラムは、「一つの仕事をきちんとやってのければ
16048 よい」。それ以上でもそれ以下でもない。そういったプログラムは、設計
16049 するのも、コードを書くのも、修正するのも、ずっと簡単である --
16052 それだけではない。適切な仕組みを使って、プログラムを組み合わせると、
16053 全体が部分の総和以上になることにも、彼らは気づいた。ある用途専用の
16054 プログラムをいくつか組み合わせると、どのプログラムもそのために作られた
16055 のではない、ある特定の作業をやってのけることができる。それも、それ専用の
16056 プログラムを書かなければならない場合よりも、はるかに迅速に、かつ簡単に
16057 やってのけられるのだ。この記事の以下では、そうした使用法の (典型的な)
16058 例をいくつか紹介する。(大事なことを一つ付記しておく。急がば回れだ。
16059 必要になるかもしれないソフトウェア工具があれば、まずそれを作ること。
16060 道具箱に適切な工具がまだない場合の話であるが。)
16063 File: coreutils-ja.info, Node: I/O redirection, Next: The who command, Prev: Toolbox introduction, Up: Opening the software toolbox
16066 ============================
16068 シェルの入出力リダイレクションについて、基本的なこと、とくに標準入力、
16069 標準出力、標準エラーがどういうものかを、読者がよく御存じだとして、話を
16070 進める。簡単に言うと、標準入力とは、データの入力元、すなわち、データが
16071 そこからやって来る場所のことだ。データの入力元が、ディスク上のファイル
16072 だろうと、キーボードだろうと、磁気テープだろうと、それどころかパンチ
16073 カード・リーダーだろうと、プログラムはそれを知る必要もなければ、気に
16074 かける必要もない。同様に、標準出力とは、データの溜まる場所、データが
16075 そこに行く場所のことだ。プログラムとしては、それがどこになろうと、知ら
16076 なくてもよく、気にかけなくてもよい。標準入力からデータを読み込み、それに
16077 対して何らかの処理を行い、標準出力に送り出すだけのプログラムを、水道の
16078 パイプラインのフィルターになぞらえて、「フィルター ("filter")」と呼ぶ。
16080 Unix のシェルでは、データのパイプラインを作るのはとてもやさしい。
16082 program_to_create_data | filter1 | ... | filterN > final.pretty.data
16084 ここでは、まず最初に生のデータを作成している。各フィルターがその
16085 データに対して何らかの変形を次々に行い、最終的に、データが希望どおりの
16086 形になって、パイプラインから抜け出してくる。
16088 標準入力と標準出力にとっては、それで十分だ。では、標準エラーはどこ
16089 で登場し、どんな役割を果たすのだろうか? 上記パイプラインの `filter1' に
16090 ついて考えてほしい。データを読んでいるうちにエラーが起きたら、どうなる
16091 だろうか? `filter1' がエラーメッセージを標準出力に書き出したら、その
16092 メッセージはパイプラインを下って `filter2' の入力に飲み込まれてしまう。
16093 そうなると、ユーザはたぶんメッセージをまったく目にしないことになるだろう。
16094 そこで、プログラムとしては、ユーザがエラーメッセージに気がついてくれる
16095 ように、それを送ることのできる場所が必要になる。それが、標準エラー
16096 なのであり、標準エラーは通常、現在使用しているコンソールやウィンドウ
16097 に結びついている。プログラムの標準出力を使用中のスクリーン以外に
16098 リダイレクトしている場合でも、それは変わらない。
16100 フィルター・プログラムが協力し合うためには、データのフォーマットに
16101 ついて互いに合意している必要がある。最も素直で使いやすいフォーマットと
16102 言えば、何と言っても、行分けされたテキストだ。そして、Unix のデータファ
16103 イルは、たいていの場合、まさに、ASCII LF (Line Feed) 文字によって行分け
16104 されたバイトの連続なのである。なお、この LF 文字は、Unix の文書では
16105 「改行 (newline)」と呼ばれる習慣になっている (C のプログラマにとっては
16106 `\n' だ)。これこそ、すべての伝統的なフィルター・プログラムによって使用
16107 されて来たフォーマットである。(昔のオペレーティング・システムの多くは、
16108 バイナリ・データを扱うための複雑な手段や専用のプログラムを備えていた。
16109 だが、Unix は、ただ単にテキストエディタでデータを見たり編集できたり
16110 する方がはるかに簡単だという考えから、そうした道具をずっと敬遠してきた
16113 さて、前置きはこれくらいで十分だ。まず、道具のいくつかをざっと見て
16114 みよう。その後で、そうした道具をおもしろいやり方で組み合わせる方法を
16115 ご覧に入れる。以下の解説では、当面の問題に関係のあるコマンドライン・
16116 オプションしか取り上げない。いつでもそうすべきことだが、コマンドについて
16117 詳しいことを知りたかったら、ご使用のシステムの文書を参照なさるとよい。
16120 File: coreutils-ja.info, Node: The who command, Next: The cut command, Prev: I/O redirection, Up: Opening the software toolbox
16125 最初に取り上げるプログラムは、`who' コマンドだ。これは単独で使うと、
16126 現在ログインしているユーザのリストを生成する (参照: *note who
16127 invocation::)。 筆者がこの原稿を書いているのは、シングルユーザのシステム
16128 だが、数人のユーザがログインしていることにしよう。
16131 -| arnold console Jan 22 19:57
16132 -| miriam ttyp0 Jan 23 14:19(:0.0)
16133 -| bill ttyp1 Jan 21 09:32(:0.0)
16134 -| arnold ttyp2 Jan 23 20:48(:0.0)
16136 ここで `$' はお馴染みのシェルプロンプトであり、筆者はそれに対して
16137 `who' と打ち込んだわけだ。三人のユーザがログインしており、筆者は二度
16138 ログインしている。伝統的な Unix のシステムでは、ユーザ名はアルファベット
16139 8 文字までということになっている。このちょっとした豆知識が、後で役に
16140 立つことになる。`who' の出力は悪くはない。だが、大しておもしろいデータ
16144 File: coreutils-ja.info, Node: The cut command, Next: The sort command, Prev: The who command, Up: Opening the software toolbox
16149 次に注目するプログラムは `cut' コマンドだ。このコマンドは、入力された
16150 データから縦の列 (columns) やフィールドを切り出す (参照: *note cut
16151 invocation::)。 そこで、`cut' に命じて、`/etc/passwd' ファイルから
16152 ログイン名とフルネームだけ表示させるといったことができる。`/etc/passwd'
16153 には、七つのフィールドがあり、おのおのコロンで区切られている。
16155 arnold:xyzzy:2076:10:Arnold D. Robbins:/home/arnold:/bin/bash
16157 1 番目と 5 番目のフィールドを取り出すには、次のように `cut' を使用
16160 $ cut -d: -f1,5 /etc/passwd
16163 -| arnold:Arnold D. Robbins
16164 -| miriam:Miriam A. Robbins
16167 `-c' オプションを付けると、 `cut' は入力行中の特定の文字 (すなわち、
16168 特定の縦の列) を切り出す。これは、入力データが固定幅のフィールドを持ち、
16169 フィールド・セパレータがないときに便利である。たとえば、今月の月曜日は、
16170 何日と何日かをリストするには、次のようにする。
16181 File: coreutils-ja.info, Node: The sort command, Next: The uniq command, Prev: The cut command, Up: Opening the software toolbox
16184 ===================
16186 次に `sort' コマンドを一瞥する。これは Unix 風のシステムにおける最も
16187 強力なコマンドの一つであり、パイプを使って手の込んだデータ処理を行う
16188 とき、気がつくと使っていることがよくあるものだ。
16190 `sort' コマンドは、コマンドラインで指名された各ファイルを読み込んで、
16191 ソートする。その後で、ソートしたデータをマージし、それを標準出力に書き
16192 出す。コマンドラインでファイルが指定されていない場合は、標準入力を読み
16193 込む (こうして、フィルターになる)。ソートは、文字の照合順序、あるいは、
16194 ユーザが順序について指定した基準に基づいて行われる (参照: *note sort
16198 File: coreutils-ja.info, Node: The uniq command, Next: Putting the tools together, Prev: The sort command, Up: Opening the software toolbox
16201 ===================
16203 最後に目を向けるのは (少なくとも今のところはだが)、`uniq' プログラムだ。
16204 データのソートをしていると、結果に重複行が現れることがよくある。内容が
16205 全く同じ行だ。たいていの場合、各行は一つだけあればよい。そこで、`uniq'
16206 の出番になる。`uniq' プログラムは、標準入力を読み込み、連続する同一行に
16207 ついては、そのうちの一件だけを表示する。`uniq' には、オプションがいくつ
16208 かある。後で `-c' オプションを使うことになるが、これはユニークな、つまり
16209 他と違っている各行を表示するとき、その行が入力中に現れた回数を前に付ける
16210 ものである (参照: *note uniq invocation::)。
16213 File: coreutils-ja.info, Node: Putting the tools together, Prev: The uniq command, Up: Opening the software toolbox
16216 ====================================
16218 さて、大規模な ISP のサーバーシステムがあって、何十人ものユーザが
16219 ログインしているとしよう。経営側がシステム管理者に、ログインしている
16220 ユーザのソートしたリストを生成するプログラムを書くことを求めている。
16221 しかも、あるユーザが多重ログインをしていても、その人の名前は出力に 1
16224 システム管理者は腰を据えてシステムのマニュアル類に取り組み、そうした
16225 作業を実行する C のプログラムを書くこともできるだろう。そのためには、
16226 たぶん数百行のコードが必要であり、プログラムを書いて、テストして、
16227 デバッグするには、2 時間ぐらいかかるはずだ。それに対して、ソフトウェアの
16228 道具箱に精通しているシステム管理者なら、C のプログラムを書く代わりに、
16229 ログインしているユーザのリストを生成するところから始めることができる。
16239 $ who | cut -c1-8 | sort
16245 最後に、ソートしたリストを `uniq' に渡して、重複を除く。
16247 $ who | cut -c1-8 | sort | uniq
16252 実を言うと、`sort' コマンドには `-u' というオプションがあって、`uniq'
16253 がやることをやってくれる。しかし、`uniq' にはほかの働きもあり、そちらは
16254 `sort -u' で代用することができない。
16256 システム管理者が、以下のように、このパイプラインをシェルスクリプトに
16257 しておけば、システムのすべてのユーザが利用できるようになる (`#' は
16258 システム管理者、すなわち `root' のプロンプトだ)。
16260 # cat > /usr/local/bin/listusers
16261 who | cut -c1-8 | sort | uniq
16263 # chmod +x /usr/local/bin/listusers
16265 ここには、心に留めておくべき重要なことが四つある。まず第一に、1 行の
16266 コマンドラインにたった四つのプログラムを書くことで、システム管理者は約
16267 2 時間分の仕事をしないで済ますことができた。それだけではない。シェルの
16268 パイプラインは、C のプログラムを使った場合と比べても、ほぼ同じくらい
16269 効率がよく、プログラマの労働時間という点から見ると、ずっとずっと効率が
16270 よい。人間の労働時間はコンピュータの時間よりはるかに高価であり、「何も
16271 かもやるには、いつだって時間が足りない」現代社会では、プログラマの時間
16272 を 2 時間も節約するのは、馬鹿にできない成果だ。
16274 二番目に、ツールを組み合わせることで、個々のプログラムの作者が想像も
16275 しなかったような、ある特定の目的のための仕事をやってのけることができる。
16276 これも、強調しておくべき重要なことである。
16278 第三に、ここでやって見せたように、段階を追ってパイプラインを構成する
16279 のも有益な方法だ。そうすれば、パイプラインの段階ごとにデータを目で見る
16280 ことができるので、ツール類を間違いなく適切に使っているという自信を得る
16283 最後に、実行したパイプラインをシェルスクリプトにまとめておけば、
16284 他のユーザがそのコマンドを使うことができる。彼らのために作成した
16285 手の込んだコマンドの配管工事を、彼らは憶える必要すらないのだ。どう
16286 やって実行するかという点から見ると、シェルスクリプトもコンパイル
16287 されたプログラムも見分けが付かないのである。
16289 ここまでは準備運動だ。続いて、もっと複雑なパイプラインをもう二つ
16290 ご覧に入れよう。そのためには、工具をもう二つ紹介する必要がある。
16292 一つ目は `tr' コマンドだ。"transliterate (翻字する、字を置き換える)"
16293 の意味である。 `tr' コマンドは、一字一字処理して行くというやり方で、
16294 文字を置き換える (参照: *note tr invocation::)。通常、このコマンドを使用
16295 するのは、大文字を小文字に変換するといったことのためである。
16297 $ echo ThIs ExAmPlE HaS MIXED case! | tr '[:upper:]' '[:lower:]'
16298 -| this example has mixed case!
16300 役に立ちそうなオプションがいくつかある。
16303 リストされた文字の補集合を動作対象にする。言い換えると、指定された
16304 集合に存在しない文字に対して操作が行われる。
16307 一つ目の集合にある文字を出力から削除する。
16310 出力中の連続する同一文字を、ただの 1 文字に圧縮する。
16312 すぐ後で、この三つのオプションをすべて使うことになる。
16314 紹介するもう一つのコマンドは、`comm' だ。`comm' コマンドは、二つの
16315 ソートされた入力ファイルを入力データとして受け取り、両ファイルの各行を
16316 三つの列に分けて表示する。出力される列は、一番目のファイルにのみ存在
16317 する行、二番目のファイルにのみ存在する行、両方のファイルに存在する行の
16318 順番である。`-1', `-2', `-3' というコマンドライン・オプションを
16319 付けると、対応する列を表示しないようになる。 (これは直感的ではないので、
16320 ちょっとした慣れが必要だ。参照: *note comm invocation::) 例を挙げよう。
16340 ファイル名を `-' にすると、`comm' は通常ファイルではなく、標準入力を
16343 これで、気の利いたパイプラインを組み立てる準備ができた。最初に作る
16344 アプリケーションは、単語の出現頻度カウンターである。これは、ある特定の
16345 単語を使いすぎていないかどうか、文書の作成者が判断するとき、役に立つ。
16347 最初のステップは、入力ファイル中のすべての文字を大文字か小文字の
16348 どちらかに統一することである。"The" と "the" は、頻度計算にとって同じ
16351 $ tr '[:upper:]' '[:lower:]' < whats.gnu | ...
16353 次のステップは、句読点を除去することだ。引用符の付いている単語と
16354 付いていない単語も同じものとして扱った方がよいだろう。それならば、
16355 句読点類をすっぱり取り除いてしまうのが、一番簡単だ。
16357 $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' | ...
16359 二番目の `tr' コマンドは、リストされた文字の補集合を操作対象にして
16360 いる。すなわち、アルファベットのすべての文字、数字、アンダースコア、空白
16361 以外を対象にするわけだ。`\n' は改行文字のことであり、これもそのまま残さ
16362 なければならない。(市販のアプリで使うスクリプトなら、念のため ASCII タブ
16365 この時点で、空白 (訳注: 改行を含む) で区切られた単語からなるデータが
16366 できていることになる。単語には、英数字 (それにアンダースコア) しか含まれ
16367 ていない。次のステップは、データをバラして、1 行 1 単語になるようにする
16368 ことだ。そうすれば、すぐ後で見るように、出現回数の計算がずっと楽になる。
16370 $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16371 > tr -s ' ' '\n' | ...
16373 このコマンドは、空白を改行に変える。`-s' オプションが付いているので、
16374 出力中の連続する改行文字は、たった 1 個に圧縮される。これで、空行を
16375 なくすことができるわけだ。(なお、2 行目行頭の `>' という記号は、シェル
16376 の二次プロンプトである。シェルがユーザに、コマンドがまだ最後まで打ち
16377 込まれていないと知らせるとき、これが表示される。)
16379 今や、1 行 1 単語からなるデータが手元にある。句読点は含まれず、すべて
16380 小文字だ。これで、各単語の出現回数を数える準備が整った。
16382 $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16383 > tr -s ' ' '\n' | sort | uniq -c | ...
16385 この時点で、データはたぶんこんなふうになっているだろう。
16396 なんと、出力が出現回数ではなく、単語によってソートされている! こちら
16397 としては、最も頻繁に使われる単語ほど先に表示したいのにだ。幸いなことに、
16398 それは簡単に実現できる。`sort' のオプションをもう二つ使うだけでよい。
16401 文字としてではなく、数値としてソートする。
16406 最終的なパイプラインは次のようになる。
16408 $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16409 > tr -s ' ' '\n' | sort | uniq -c | sort -n -r
16417 ふう、憶えることがどっさり! うん、でもね、同じ原則を応用してるだけ
16418 なんだよ。たった 2 行、6 個のコマンドで (実際には、長い 1 行を便宜上 2
16419 行に分割しているだけだが) 興味深く有用な作業をするプログラムが
16420 出来上がった。それも、同じこことする C のプログラムを書くよりもずっと
16423 上記のパイプラインをちょっといじるだけで、なんと、簡単なスペル
16424 チェッカーが出来てしまう。ある単語の綴りが正しいかどうかを判断するには、
16425 辞書で調べさえすればよい。その単語が辞書になければ、綴りを間違えている
16426 可能性が高いわけだ。そこで、とりあえず、辞書が必要になる。辞書の在り処
16427 は、慣例からすると `/usr/dict/words' だ。筆者の GNU/Linux システムでは
16428 (1)、それはソートされた 45,402 語からなる辞書である。
16430 それでは、自分の作ったファイルをどうやって辞書と比べるのか? 前の例と
16431 同様、ソートした単語のリストを 1 行 1 語の形式で生成する。
16433 $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16434 > tr -s ' ' '\n' | sort -u | ...
16436 必要なのは、辞書にない単語のリストだけだ。そこで、`comm' の出番に
16439 $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
16440 > tr -s ' ' '\n' | sort -u |
16441 > comm -23 - /usr/dict/words
16443 `-2' と `-3' のオプションを使うと、辞書 (2 番目のファイル) にしかない
16444 行と、両方のファイルにある行が排除される。1 番目のファイル (標準入力、
16445 すなわち、自分が使った単語のリストだ) にしかない行は、辞書に存在しない
16446 単語だ。そうした単語は、綴りを間違えている可能性がかなり高いわけである。
16447 ご覧に入れたこのパイプラインは、Unix における市販のスペルチェッカーに
16450 他にも一言述べておくべきツールがいくつかある。
16453 ファイルを調べて、正規表現にマッチするテキストを検索する。
16459 データが流れるパイプのための T 字管。データをファイルと標準出力に
16466 データ処理用の言語。これも上級ツール。
16468 ソフトウェア工具論が取り入れたものに、次のちょっとしたアドバイスも
16469 ある。「骨の折れる部分は、他の奴にやらせろ」。すなわち、ある道具を
16470 選んで、必要なことの大部分をやらせ、それから、その結果に手を加えて、
16471 こちらの望む形にする、ということである。
16475 1. 個々のプログラムは、一つの仕事をきちんとやってのければよい。それ
16478 2. プログラムを適切な配管工事で組み合わせると、全体が部分の総和以上に
16479 なる結果が生じる。作者が想像もしなかったようなプログラムの新しい
16482 3. プログラムは決して余計なヘッダや追加情報を出力すべきではない。
16483 そうしたものもパイプラインの先へ送られてしまうかもしれないからだ。
16484 (これは、これまでに言及しなかったが、重要なことだ。)
16486 4. 骨の折れる部分は、他の奴にやらせろ。
16488 5. 自分の道具箱をよく知れ! 個々のプログラムを適切に使え。適切なツール
16491 これを執筆している時点で、ここで取り上げたプログラムはすべて次の URL
16493 `http://ftp.gnu.org/old-gnu/textutils/textutils-1.22.tar.gz'
16494 もっと新しいバージョンは以下の場所にある。
16495 `http://ftp.gnu.org/gnu/coreutils'
16497 この記事で筆者が述べたことに、新しいことは何もない。ソフトウェアは
16498 工具だという思想が最初に紹介されたのは、Brian Kernighan と P.J. Plauger
16499 による `Software Tools' という本の中だった (Addison-Wesley, ISBN
16500 0-201-03669-X)。ソフトウェア工具の書き方と使い方を教えるこの本は、1976
16501 年に執筆され、`ratfor' (RATional FORtran) という名前の FORTRAN のプリ
16502 プロセッサを使用している。その当時、C は今ほどありふれてはいず、FORTRAN
16503 がそうだったのだ。最後の章では、`ratfor' を FORTRAN に変換するプロセッサ
16504 を `ratfor' で書いて見せている。`ratfor' は C にとてもよく似ているので、
16505 C を御存じの方なら、コードを追うのに何の苦労もないことだろう。 (訳注:
16506 `Software Tools' の翻訳は「ソフトウェア作法」という題で 1981 年に
16507 出版されている。木村泉 訳、共立出版)
16509 1981 年に本は改訂され、`Software Tools in Pascal' という形でも手に
16510 入るようになった (Addison-Wesley, ISBN 0-201-10342-7)。どちらの本も
16511 現在でも入手可能であり、プログラマなら、一読の価値が十分にある。この 2
16512 冊の本が筆者のプログラミングに対する見方を大きく変えてくれたことに、
16515 両方の本にあるプログラムは、Brian Kernighan のホームページから手に
16516 入れることができる (`http://cm.bell-labs.com/who/bwk')。Software Tools
16517 Users Group という活動的なグループが長年に渡って存在し、そのメンバーが
16518 オリジナルの `ratfor' プログラムを、FORTRAN コンパイラを持っている
16519 ほとんどすべてのコンピュータ・システムに移植していた。だが、1980 年代の
16520 中頃に Unix が大学を越えて浸透し出すにつれて、グループの人気は衰えて
16523 現在では GNU のコードをはじめ、Unix クローンのプログラムがどんどん
16524 作られており、上記のプログラムはほとんど関心を持たれていない。それに、
16525 現代の C のバージョンの方がはるかに効率がよく、できることも上記の
16526 プログラムよりずっと多くなっている。それでも、よいプログラミング・
16527 スタイルのお手本として、また、今でも価値がある考え方を熱心に説いている
16528 点において、この 2 冊の本は肩を並べるものがない。筆者としては、大いに
16531 謝辞: ソフトウェア工具の最初の道具鍛冶である、Bell 研究所の Brian
16532 Kernighan 氏に、この記事を読んでチェックしてくださったことについて、
16535 ---------- Footnotes ----------
16537 (1) この記事を 2000 年 11 月に改訂したとき使用したのは、Redhat Linux
16541 File: coreutils-ja.info, Node: About the translation, Next: GNU Free Documentation License, Prev: Opening the software toolbox, Up: Top
16544 *****************************
16546 この文書は GNU core utilities version 8.22 の info マニュアルの翻訳
16547 である。間違いの御指摘や改良の御提案は Linux JM project 宛にメールで
16548 なさっていただきたい (<linuxjm-discuss@lists.osdn.me>)。
16550 まず最初に、coreutils の日本語版 info マニュアルの呼び出し方を簡単に
16551 説明する。coreutils の 日本語版 info が install-info コマンドを使って
16552 きちんとシステムにインストールされているならば、コマンドラインから
16553 `info coreutils-ja' で日本語マニュアル全体を、`info chmod-ja' などで
16554 個々のプログラムの日本語マニュアルを呼び出すことができる。英語版を
16555 読むときは、今までどおり `info coreutils' や `info chmod' とすればよい。
16556 個々のコマンドについては、英語版なら `info coreutils 'cp invocation''、
16557 日本語版なら `info coreutils-ja 'cp invocation'' といったマニュアルの
16560 (注意: ご使用の coreutils のバージョンが 8.23 の場合は、info
16561 マニュアルのトップレベルのメニューに、Coreutils というメニュー項目
16562 (英語版 coreutils マニュアルの最初のページ) のほかに、 coreutils
16563 という小文字のメニュー項目もあるので、話がもう少し複雑である。英語版
16564 coreutils マニュアルの最初のページを info コマンドで開くときは、 `info
16565 Coreutils' と大文字で指定していただきたい。また、 `info coreutils 'cp
16566 invocation'' といった呼び出し方をする場合も、 `info Coreutils 'cp
16567 invocation'' などと Coreutils を大文字にする必要がある。 バージョン
16568 8.22 には、英語版、日本語版とも、この問題はない。)
16570 また、`info' を引数なしで実行すると、info マニュアルのトップレベルの
16571 メニューが開く。ここで、メニュー項目にカーソルを合わせて、リターンキーを
16572 押せば、その項目に飛ぶ。しかし、読みたい項目をキー操作で指定する方が簡単
16573 である。たとえば、`m' キーを押した後 `chmod-ja' と打ち込んで、リターン
16574 キーを押せば、chmod コマンドの日本語版マニュアルが、`chmod' だけなら
16577 `coreutils-ja'、`chmod-ja' などと `-ja' を付けるのは、`info'
16578 プログラムを起動するときと、info のトップレベル・メニューにいるとき
16579 だけである。すでに日本語版 coreutils マニュアルのどれかを (それが
16580 coreutils-ja であれ、dd-ja であれ) `info' コマンドで開いている場合は、
16581 `-ja' を後ろに付ける必要がなくなる。と言うより、付けてはいけない。
16582 coreutils-ja の先頭ページのようにコマンドのメニューが存在するページ
16583 では (実際には、スクロールしないと、メニューが見えないが)、たとえば、
16584 `m' に続けて `chmod' と打ち込み、リターンキーを押すだけで、chmod の
16585 日本語の説明が開く。また、日本語 coreutils マニュアルの任意のページ
16586 から coreutils-ja の他のノードへ直接飛ぶ場合も (ノードは、ほぼ章や節に
16587 相当する)、`g' キーを押してから、`chmod invocation' などとノード名を
16588 打ち込み、リターンキーを押せばよい。`m' の場合はタブやスペースで、 `g'
16589 の場合はタブで、文字列の補完ができる。(たぶん coreutils-ja.info の
16590 パッケージには、README.ja というファイルが含まれていると思う。その
16591 「2.1 日本語 info マニュアルの呼び出し方」という節にもう少し詳しい
16592 説明を書いておいたので、ご覧になっていただきたい。)
16594 ここで、日本語の info マニュアルを使用するときの問題点を挙げておく。
16596 1. `info' コマンドは、日本語の行末表示が上手ではない。そのため、
16597 行末に余計な文字が入ることがある。そうしたときは、`C-l' を押して
16598 (Ctrl と l (エル) キーを同時に押す)、画面の再描画を行っていただき
16599 たい。表示が正常になるはずである。Emacs の info リーダーでは、この
16602 2. 現在のところ、`info' コマンドでは、`s' や `/' で日本語の単語を検索
16603 できないようだ。`C-s' による日本語の検索は、単語によっては成功する
16604 こともあるが、"Unknown command" で失敗することもあり、これもあまり
16605 頼りにならない。それに対して、Emacs の info リーダーでは、`s' でも
16606 `C-s' でも日本語の検索ができる。
16608 3. coreutils の info のこの翻訳では、インデックスの日本語化まで手が
16609 回らなかった。そのため、インデックスは英語のままである。
16611 4. 古めの Emacs でこの翻訳を読もうとすると、文字化けするかもしれない。
16612 回避法があるのかもしれないが、訳者にはわからなかった。
16614 この翻訳の最初の版は、coreutils-8.20 所収の texinfo ファイルを元に、
16615 Linux JM project のために訳者が新たに翻訳したものだった。以下に、
16616 そのときの後書きをほぼそのまま載せておく。
16618 この info マニュアルの原文は、本文の「序」でも述べているように、
16619 各プログラムの man ページを統合し、増補・改訂したものである。この info
16620 マニュアルがまとめられるにともない、公式の man ページの方はコマンドの
16621 `--help' オプションで見ることができるものとほぼ同文の、簡単な内容の
16624 従来どおりの詳しい man ページを希望する人たちも存在した。そのために
16625 作られたのが、gnumaniak の man ページであり、従来の man ページを info
16626 の情報で増補したものだったが、現在では保守されていないようだ。
16628 作成の経緯がそうしたものなので、この info マニュアルの原文には、
16629 gnumaniak の man ページの原文とほとんど内容が同じものがある。翻訳作業
16630 に当たっては、すべての項目について gnumaniak の man ページの翻訳を
16631 参考にした。あちらの訳文の方がよくできている項目もある (gnumaniak の
16632 翻訳は `http://linuxjm.osdn.jp/html/gnumaniak/man1/' にある)。
16634 この翻訳は、Linux JM project の gnumaniak の翻訳に多くを負っている。
16635 そこで、まず、gnumaniak の翻訳者の方々 -- 中野武雄、佐藤裕一、
16636 白方健太郎、Kazuyuki Tanisako、Omo Kazuki の諸氏にお礼を申し上げる。
16638 訳文を見直す際には、西尾太さんが以前翻訳なさった coreutils-5.2.1 の
16639 info を参考にした。また、当然ながら、新しい man ページ (こちらの
16640 翻訳者は、たぶん Yasuaki Taniguchi さんと Akihiro MOTOKI さん) とも、
16641 できるだけ突き合わせた。西尾さん、Taniguchi さん、元木さんにもお礼を
16644 gnumaniak や coreutils の man や info の翻訳をなさった方で、私が
16645 お名前を挙げ忘れた方がいらっしゃるかもしれない。お知らせくだされば、
16648 訳文には間違った箇所がたくさんあると思う。そのへんは、ご寛恕いただき
16649 たい。皆さんがこの訳文を叩き台にして、増補・改訂・改訳を続け、より
16650 新しく、よりわかりやすい、そして、より正確な coreutils の翻訳を作って
16651 くだされば、最初の翻訳者としてそれにまさる喜びはない。
16658 coreutils-8.20 を翻訳 by 長南洋一
16659 ptx, tsort, chcon, runcon は未訳
16662 coreutils-8.22 を元に増補・改訂 by 長南洋一
16663 numfmt, ptx, tsort, chcon, runcon を翻訳
16666 numfmt の章の構成を修正。訳文の訂正と細かい変更 by 長南洋一
16669 File: coreutils-ja.info, Node: GNU Free Documentation License, Next: Concept index, Prev: About the translation, Up: Top
16671 Appendix B GNU Free Documentation License
16672 *****************************************
16674 Version 1.3, 3 November 2008
16676 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
16679 Everyone is permitted to copy and distribute verbatim copies
16680 of this license document, but changing it is not allowed.
16684 The purpose of this License is to make a manual, textbook, or other
16685 functional and useful document "free" in the sense of freedom: to
16686 assure everyone the effective freedom to copy and redistribute it,
16687 with or without modifying it, either commercially or
16688 noncommercially. Secondarily, this License preserves for the
16689 author and publisher a way to get credit for their work, while not
16690 being considered responsible for modifications made by others.
16692 This License is a kind of "copyleft", which means that derivative
16693 works of the document must themselves be free in the same sense.
16694 It complements the GNU General Public License, which is a copyleft
16695 license designed for free software.
16697 We have designed this License in order to use it for manuals for
16698 free software, because free software needs free documentation: a
16699 free program should come with manuals providing the same freedoms
16700 that the software does. But this License is not limited to
16701 software manuals; it can be used for any textual work, regardless
16702 of subject matter or whether it is published as a printed book.
16703 We recommend this License principally for works whose purpose is
16704 instruction or reference.
16706 1. APPLICABILITY AND DEFINITIONS
16708 This License applies to any manual or other work, in any medium,
16709 that contains a notice placed by the copyright holder saying it
16710 can be distributed under the terms of this License. Such a notice
16711 grants a world-wide, royalty-free license, unlimited in duration,
16712 to use that work under the conditions stated herein. The
16713 "Document", below, refers to any such manual or work. Any member
16714 of the public is a licensee, and is addressed as "you". You
16715 accept the license if you copy, modify or distribute the work in a
16716 way requiring permission under copyright law.
16718 A "Modified Version" of the Document means any work containing the
16719 Document or a portion of it, either copied verbatim, or with
16720 modifications and/or translated into another language.
16722 A "Secondary Section" is a named appendix or a front-matter section
16723 of the Document that deals exclusively with the relationship of the
16724 publishers or authors of the Document to the Document's overall
16725 subject (or to related matters) and contains nothing that could
16726 fall directly within that overall subject. (Thus, if the Document
16727 is in part a textbook of mathematics, a Secondary Section may not
16728 explain any mathematics.) The relationship could be a matter of
16729 historical connection with the subject or with related matters, or
16730 of legal, commercial, philosophical, ethical or political position
16733 The "Invariant Sections" are certain Secondary Sections whose
16734 titles are designated, as being those of Invariant Sections, in
16735 the notice that says that the Document is released under this
16736 License. If a section does not fit the above definition of
16737 Secondary then it is not allowed to be designated as Invariant.
16738 The Document may contain zero Invariant Sections. If the Document
16739 does not identify any Invariant Sections then there are none.
16741 The "Cover Texts" are certain short passages of text that are
16742 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
16743 that says that the Document is released under this License. A
16744 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
16745 be at most 25 words.
16747 A "Transparent" copy of the Document means a machine-readable copy,
16748 represented in a format whose specification is available to the
16749 general public, that is suitable for revising the document
16750 straightforwardly with generic text editors or (for images
16751 composed of pixels) generic paint programs or (for drawings) some
16752 widely available drawing editor, and that is suitable for input to
16753 text formatters or for automatic translation to a variety of
16754 formats suitable for input to text formatters. A copy made in an
16755 otherwise Transparent file format whose markup, or absence of
16756 markup, has been arranged to thwart or discourage subsequent
16757 modification by readers is not Transparent. An image format is
16758 not Transparent if used for any substantial amount of text. A
16759 copy that is not "Transparent" is called "Opaque".
16761 Examples of suitable formats for Transparent copies include plain
16762 ASCII without markup, Texinfo input format, LaTeX input format,
16763 SGML or XML using a publicly available DTD, and
16764 standard-conforming simple HTML, PostScript or PDF designed for
16765 human modification. Examples of transparent image formats include
16766 PNG, XCF and JPG. Opaque formats include proprietary formats that
16767 can be read and edited only by proprietary word processors, SGML or
16768 XML for which the DTD and/or processing tools are not generally
16769 available, and the machine-generated HTML, PostScript or PDF
16770 produced by some word processors for output purposes only.
16772 The "Title Page" means, for a printed book, the title page itself,
16773 plus such following pages as are needed to hold, legibly, the
16774 material this License requires to appear in the title page. For
16775 works in formats which do not have any title page as such, "Title
16776 Page" means the text near the most prominent appearance of the
16777 work's title, preceding the beginning of the body of the text.
16779 The "publisher" means any person or entity that distributes copies
16780 of the Document to the public.
16782 A section "Entitled XYZ" means a named subunit of the Document
16783 whose title either is precisely XYZ or contains XYZ in parentheses
16784 following text that translates XYZ in another language. (Here XYZ
16785 stands for a specific section name mentioned below, such as
16786 "Acknowledgements", "Dedications", "Endorsements", or "History".)
16787 To "Preserve the Title" of such a section when you modify the
16788 Document means that it remains a section "Entitled XYZ" according
16789 to this definition.
16791 The Document may include Warranty Disclaimers next to the notice
16792 which states that this License applies to the Document. These
16793 Warranty Disclaimers are considered to be included by reference in
16794 this License, but only as regards disclaiming warranties: any other
16795 implication that these Warranty Disclaimers may have is void and
16796 has no effect on the meaning of this License.
16798 2. VERBATIM COPYING
16800 You may copy and distribute the Document in any medium, either
16801 commercially or noncommercially, provided that this License, the
16802 copyright notices, and the license notice saying this License
16803 applies to the Document are reproduced in all copies, and that you
16804 add no other conditions whatsoever to those of this License. You
16805 may not use technical measures to obstruct or control the reading
16806 or further copying of the copies you make or distribute. However,
16807 you may accept compensation in exchange for copies. If you
16808 distribute a large enough number of copies you must also follow
16809 the conditions in section 3.
16811 You may also lend copies, under the same conditions stated above,
16812 and you may publicly display copies.
16814 3. COPYING IN QUANTITY
16816 If you publish printed copies (or copies in media that commonly
16817 have printed covers) of the Document, numbering more than 100, and
16818 the Document's license notice requires Cover Texts, you must
16819 enclose the copies in covers that carry, clearly and legibly, all
16820 these Cover Texts: Front-Cover Texts on the front cover, and
16821 Back-Cover Texts on the back cover. Both covers must also clearly
16822 and legibly identify you as the publisher of these copies. The
16823 front cover must present the full title with all words of the
16824 title equally prominent and visible. You may add other material
16825 on the covers in addition. Copying with changes limited to the
16826 covers, as long as they preserve the title of the Document and
16827 satisfy these conditions, can be treated as verbatim copying in
16830 If the required texts for either cover are too voluminous to fit
16831 legibly, you should put the first ones listed (as many as fit
16832 reasonably) on the actual cover, and continue the rest onto
16835 If you publish or distribute Opaque copies of the Document
16836 numbering more than 100, you must either include a
16837 machine-readable Transparent copy along with each Opaque copy, or
16838 state in or with each Opaque copy a computer-network location from
16839 which the general network-using public has access to download
16840 using public-standard network protocols a complete Transparent
16841 copy of the Document, free of added material. If you use the
16842 latter option, you must take reasonably prudent steps, when you
16843 begin distribution of Opaque copies in quantity, to ensure that
16844 this Transparent copy will remain thus accessible at the stated
16845 location until at least one year after the last time you
16846 distribute an Opaque copy (directly or through your agents or
16847 retailers) of that edition to the public.
16849 It is requested, but not required, that you contact the authors of
16850 the Document well before redistributing any large number of
16851 copies, to give them a chance to provide you with an updated
16852 version of the Document.
16856 You may copy and distribute a Modified Version of the Document
16857 under the conditions of sections 2 and 3 above, provided that you
16858 release the Modified Version under precisely this License, with
16859 the Modified Version filling the role of the Document, thus
16860 licensing distribution and modification of the Modified Version to
16861 whoever possesses a copy of it. In addition, you must do these
16862 things in the Modified Version:
16864 A. Use in the Title Page (and on the covers, if any) a title
16865 distinct from that of the Document, and from those of
16866 previous versions (which should, if there were any, be listed
16867 in the History section of the Document). You may use the
16868 same title as a previous version if the original publisher of
16869 that version gives permission.
16871 B. List on the Title Page, as authors, one or more persons or
16872 entities responsible for authorship of the modifications in
16873 the Modified Version, together with at least five of the
16874 principal authors of the Document (all of its principal
16875 authors, if it has fewer than five), unless they release you
16876 from this requirement.
16878 C. State on the Title page the name of the publisher of the
16879 Modified Version, as the publisher.
16881 D. Preserve all the copyright notices of the Document.
16883 E. Add an appropriate copyright notice for your modifications
16884 adjacent to the other copyright notices.
16886 F. Include, immediately after the copyright notices, a license
16887 notice giving the public permission to use the Modified
16888 Version under the terms of this License, in the form shown in
16889 the Addendum below.
16891 G. Preserve in that license notice the full lists of Invariant
16892 Sections and required Cover Texts given in the Document's
16895 H. Include an unaltered copy of this License.
16897 I. Preserve the section Entitled "History", Preserve its Title,
16898 and add to it an item stating at least the title, year, new
16899 authors, and publisher of the Modified Version as given on
16900 the Title Page. If there is no section Entitled "History" in
16901 the Document, create one stating the title, year, authors,
16902 and publisher of the Document as given on its Title Page,
16903 then add an item describing the Modified Version as stated in
16904 the previous sentence.
16906 J. Preserve the network location, if any, given in the Document
16907 for public access to a Transparent copy of the Document, and
16908 likewise the network locations given in the Document for
16909 previous versions it was based on. These may be placed in
16910 the "History" section. You may omit a network location for a
16911 work that was published at least four years before the
16912 Document itself, or if the original publisher of the version
16913 it refers to gives permission.
16915 K. For any section Entitled "Acknowledgements" or "Dedications",
16916 Preserve the Title of the section, and preserve in the
16917 section all the substance and tone of each of the contributor
16918 acknowledgements and/or dedications given therein.
16920 L. Preserve all the Invariant Sections of the Document,
16921 unaltered in their text and in their titles. Section numbers
16922 or the equivalent are not considered part of the section
16925 M. Delete any section Entitled "Endorsements". Such a section
16926 may not be included in the Modified Version.
16928 N. Do not retitle any existing section to be Entitled
16929 "Endorsements" or to conflict in title with any Invariant
16932 O. Preserve any Warranty Disclaimers.
16934 If the Modified Version includes new front-matter sections or
16935 appendices that qualify as Secondary Sections and contain no
16936 material copied from the Document, you may at your option
16937 designate some or all of these sections as invariant. To do this,
16938 add their titles to the list of Invariant Sections in the Modified
16939 Version's license notice. These titles must be distinct from any
16940 other section titles.
16942 You may add a section Entitled "Endorsements", provided it contains
16943 nothing but endorsements of your Modified Version by various
16944 parties--for example, statements of peer review or that the text
16945 has been approved by an organization as the authoritative
16946 definition of a standard.
16948 You may add a passage of up to five words as a Front-Cover Text,
16949 and a passage of up to 25 words as a Back-Cover Text, to the end
16950 of the list of Cover Texts in the Modified Version. Only one
16951 passage of Front-Cover Text and one of Back-Cover Text may be
16952 added by (or through arrangements made by) any one entity. If the
16953 Document already includes a cover text for the same cover,
16954 previously added by you or by arrangement made by the same entity
16955 you are acting on behalf of, you may not add another; but you may
16956 replace the old one, on explicit permission from the previous
16957 publisher that added the old one.
16959 The author(s) and publisher(s) of the Document do not by this
16960 License give permission to use their names for publicity for or to
16961 assert or imply endorsement of any Modified Version.
16963 5. COMBINING DOCUMENTS
16965 You may combine the Document with other documents released under
16966 this License, under the terms defined in section 4 above for
16967 modified versions, provided that you include in the combination
16968 all of the Invariant Sections of all of the original documents,
16969 unmodified, and list them all as Invariant Sections of your
16970 combined work in its license notice, and that you preserve all
16971 their Warranty Disclaimers.
16973 The combined work need only contain one copy of this License, and
16974 multiple identical Invariant Sections may be replaced with a single
16975 copy. If there are multiple Invariant Sections with the same name
16976 but different contents, make the title of each such section unique
16977 by adding at the end of it, in parentheses, the name of the
16978 original author or publisher of that section if known, or else a
16979 unique number. Make the same adjustment to the section titles in
16980 the list of Invariant Sections in the license notice of the
16983 In the combination, you must combine any sections Entitled
16984 "History" in the various original documents, forming one section
16985 Entitled "History"; likewise combine any sections Entitled
16986 "Acknowledgements", and any sections Entitled "Dedications". You
16987 must delete all sections Entitled "Endorsements."
16989 6. COLLECTIONS OF DOCUMENTS
16991 You may make a collection consisting of the Document and other
16992 documents released under this License, and replace the individual
16993 copies of this License in the various documents with a single copy
16994 that is included in the collection, provided that you follow the
16995 rules of this License for verbatim copying of each of the
16996 documents in all other respects.
16998 You may extract a single document from such a collection, and
16999 distribute it individually under this License, provided you insert
17000 a copy of this License into the extracted document, and follow
17001 this License in all other respects regarding verbatim copying of
17004 7. AGGREGATION WITH INDEPENDENT WORKS
17006 A compilation of the Document or its derivatives with other
17007 separate and independent documents or works, in or on a volume of
17008 a storage or distribution medium, is called an "aggregate" if the
17009 copyright resulting from the compilation is not used to limit the
17010 legal rights of the compilation's users beyond what the individual
17011 works permit. When the Document is included in an aggregate, this
17012 License does not apply to the other works in the aggregate which
17013 are not themselves derivative works of the Document.
17015 If the Cover Text requirement of section 3 is applicable to these
17016 copies of the Document, then if the Document is less than one half
17017 of the entire aggregate, the Document's Cover Texts may be placed
17018 on covers that bracket the Document within the aggregate, or the
17019 electronic equivalent of covers if the Document is in electronic
17020 form. Otherwise they must appear on printed covers that bracket
17021 the whole aggregate.
17025 Translation is considered a kind of modification, so you may
17026 distribute translations of the Document under the terms of section
17027 4. Replacing Invariant Sections with translations requires special
17028 permission from their copyright holders, but you may include
17029 translations of some or all Invariant Sections in addition to the
17030 original versions of these Invariant Sections. You may include a
17031 translation of this License, and all the license notices in the
17032 Document, and any Warranty Disclaimers, provided that you also
17033 include the original English version of this License and the
17034 original versions of those notices and disclaimers. In case of a
17035 disagreement between the translation and the original version of
17036 this License or a notice or disclaimer, the original version will
17039 If a section in the Document is Entitled "Acknowledgements",
17040 "Dedications", or "History", the requirement (section 4) to
17041 Preserve its Title (section 1) will typically require changing the
17046 You may not copy, modify, sublicense, or distribute the Document
17047 except as expressly provided under this License. Any attempt
17048 otherwise to copy, modify, sublicense, or distribute it is void,
17049 and will automatically terminate your rights under this License.
17051 However, if you cease all violation of this License, then your
17052 license from a particular copyright holder is reinstated (a)
17053 provisionally, unless and until the copyright holder explicitly
17054 and finally terminates your license, and (b) permanently, if the
17055 copyright holder fails to notify you of the violation by some
17056 reasonable means prior to 60 days after the cessation.
17058 Moreover, your license from a particular copyright holder is
17059 reinstated permanently if the copyright holder notifies you of the
17060 violation by some reasonable means, this is the first time you have
17061 received notice of violation of this License (for any work) from
17062 that copyright holder, and you cure the violation prior to 30 days
17063 after your receipt of the notice.
17065 Termination of your rights under this section does not terminate
17066 the licenses of parties who have received copies or rights from
17067 you under this License. If your rights have been terminated and
17068 not permanently reinstated, receipt of a copy of some or all of
17069 the same material does not give you any rights to use it.
17071 10. FUTURE REVISIONS OF THIS LICENSE
17073 The Free Software Foundation may publish new, revised versions of
17074 the GNU Free Documentation License from time to time. Such new
17075 versions will be similar in spirit to the present version, but may
17076 differ in detail to address new problems or concerns. See
17077 `http://www.gnu.org/copyleft/'.
17079 Each version of the License is given a distinguishing version
17080 number. If the Document specifies that a particular numbered
17081 version of this License "or any later version" applies to it, you
17082 have the option of following the terms and conditions either of
17083 that specified version or of any later version that has been
17084 published (not as a draft) by the Free Software Foundation. If
17085 the Document does not specify a version number of this License,
17086 you may choose any version ever published (not as a draft) by the
17087 Free Software Foundation. If the Document specifies that a proxy
17088 can decide which future versions of this License can be used, that
17089 proxy's public statement of acceptance of a version permanently
17090 authorizes you to choose that version for the Document.
17094 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
17095 World Wide Web server that publishes copyrightable works and also
17096 provides prominent facilities for anybody to edit those works. A
17097 public wiki that anybody can edit is an example of such a server.
17098 A "Massive Multiauthor Collaboration" (or "MMC") contained in the
17099 site means any set of copyrightable works thus published on the MMC
17102 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
17103 license published by Creative Commons Corporation, a not-for-profit
17104 corporation with a principal place of business in San Francisco,
17105 California, as well as future copyleft versions of that license
17106 published by that same organization.
17108 "Incorporate" means to publish or republish a Document, in whole or
17109 in part, as part of another Document.
17111 An MMC is "eligible for relicensing" if it is licensed under this
17112 License, and if all works that were first published under this
17113 License somewhere other than this MMC, and subsequently
17114 incorporated in whole or in part into the MMC, (1) had no cover
17115 texts or invariant sections, and (2) were thus incorporated prior
17116 to November 1, 2008.
17118 The operator of an MMC Site may republish an MMC contained in the
17119 site under CC-BY-SA on the same site at any time before August 1,
17120 2009, provided the MMC is eligible for relicensing.
17123 ADDENDUM: How to use this License for your documents
17124 ====================================================
17126 To use this License in a document you have written, include a copy of
17127 the License in the document and put the following copyright and license
17128 notices just after the title page:
17130 Copyright (C) YEAR YOUR NAME.
17131 Permission is granted to copy, distribute and/or modify this document
17132 under the terms of the GNU Free Documentation License, Version 1.3
17133 or any later version published by the Free Software Foundation;
17134 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
17135 Texts. A copy of the license is included in the section entitled ``GNU
17136 Free Documentation License''.
17138 If you have Invariant Sections, Front-Cover Texts and Back-Cover
17139 Texts, replace the "with...Texts." line with this:
17141 with the Invariant Sections being LIST THEIR TITLES, with
17142 the Front-Cover Texts being LIST, and with the Back-Cover Texts
17145 If you have Invariant Sections without Cover Texts, or some other
17146 combination of the three, merge those two alternatives to suit the
17149 If your document contains nontrivial examples of program code, we
17150 recommend releasing these examples in parallel under your choice of
17151 free software license, such as the GNU General Public License, to
17152 permit their use in free software.
17155 File: coreutils-ja.info, Node: Concept index, Prev: GNU Free Documentation License, Up: Top
17163 * !: Connectives for test.
17165 * !=: String tests. (line 28)
17166 * %: Numeric expressions. (line 15)
17167 * %b: printf invocation. (line 42)
17168 * &: Relations for expr. (line 17)
17169 * *: Numeric expressions. (line 15)
17170 * + <1>: Numeric expressions. (line 11)
17171 * +: String expressions. (line 52)
17172 * +PAGE_RANGE: pr invocation. (line 45)
17173 * - <1>: env invocation. (line 101)
17174 * -: Numeric expressions. (line 11)
17175 * - and Unix rm: rm invocation. (line 130)
17176 * -, removing files beginning with: rm invocation. (line 117)
17177 * --: Common options. (line 46)
17178 * --across: pr invocation. (line 71)
17179 * --additional-suffix: split invocation. (line 138)
17180 * --address-radix: od invocation. (line 44)
17181 * --adjustment: nice invocation. (line 57)
17182 * --all <1>: uname invocation. (line 38)
17183 * --all <2>: nproc invocation. (line 20)
17184 * --all <3>: who invocation. (line 37)
17185 * --all <4>: stty invocation. (line 29)
17186 * --all <5>: du invocation. (line 34)
17187 * --all <6>: df invocation. (line 61)
17188 * --all <7>: Which files are listed.
17190 * --all: unexpand invocation. (line 52)
17191 * --all-repeated: uniq invocation. (line 73)
17192 * --almost-all: Which files are listed.
17194 * --apparent-size: du invocation. (line 37)
17195 * --append: tee invocation. (line 27)
17196 * --archive: cp invocation. (line 80)
17197 * --attributes-only: cp invocation. (line 89)
17198 * --author: What information is listed.
17200 * --backup <1>: ln invocation. (line 96)
17201 * --backup <2>: mv invocation. (line 67)
17202 * --backup <3>: install invocation. (line 46)
17203 * --backup <4>: cp invocation. (line 96)
17204 * --backup: Backup options. (line 14)
17205 * --batch-size: sort invocation. (line 291)
17206 * --before: tac invocation. (line 23)
17207 * --binary: md5sum invocation. (line 43)
17208 * --block-size <1>: du invocation. (line 55)
17209 * --block-size <2>: df invocation. (line 68)
17210 * --block-size: Block size. (line 151)
17211 * --block-size=SIZE: Block size. (line 12)
17212 * --body-numbering: nl invocation. (line 49)
17213 * --boot: who invocation. (line 41)
17214 * --bourne-shell: dircolors invocation.
17216 * --buffer-size: sort invocation. (line 353)
17217 * --bytes <1>: du invocation. (line 61)
17218 * --bytes <2>: cut invocation. (line 31)
17219 * --bytes <3>: wc invocation. (line 47)
17220 * --bytes <4>: split invocation. (line 47)
17221 * --bytes <5>: tail invocation. (line 34)
17222 * --bytes <6>: head invocation. (line 26)
17223 * --bytes: fold invocation. (line 27)
17224 * --c-shell: dircolors invocation.
17226 * --canonicalize: readlink invocation. (line 28)
17227 * --canonicalize-existing <1>: realpath invocation. (line 20)
17228 * --canonicalize-existing: readlink invocation. (line 35)
17229 * --canonicalize-missing <1>: realpath invocation. (line 28)
17230 * --canonicalize-missing: readlink invocation. (line 42)
17231 * --changes <1>: chmod invocation. (line 45)
17232 * --changes <2>: chgrp invocation. (line 23)
17233 * --changes: chown invocation. (line 74)
17234 * --characters: cut invocation. (line 39)
17235 * --chars: wc invocation. (line 51)
17236 * --check: sort invocation. (line 23)
17237 * --check-chars: uniq invocation. (line 144)
17238 * --classify: General output formatting.
17240 * --color: General output formatting.
17242 * --columns: pr invocation. (line 56)
17243 * --compare: install invocation. (line 51)
17244 * --complement: cut invocation. (line 89)
17245 * --compute: runcon invocation. (line 30)
17246 * --context <1>: id invocation. (line 52)
17247 * --context <2>: mknod invocation. (line 63)
17248 * --context <3>: mkfifo invocation. (line 32)
17249 * --context <4>: mkdir invocation. (line 58)
17250 * --context <5>: mv invocation. (line 126)
17251 * --context <6>: install invocation. (line 154)
17252 * --context <7>: cp invocation. (line 435)
17253 * --context: What information is listed.
17255 * --count <1>: who invocation. (line 72)
17256 * --count: uniq invocation. (line 59)
17257 * --count-links: du invocation. (line 134)
17258 * --crown-margin: fmt invocation. (line 39)
17259 * --csh: dircolors invocation.
17261 * --date <1>: Options for date. (line 11)
17262 * --date: touch invocation. (line 97)
17263 * --dead: who invocation. (line 45)
17264 * --debug: General options in numfmt.
17266 * --decode: base64 invocation. (line 33)
17267 * --delimiter <1>: cut invocation. (line 69)
17268 * --delimiter: General options in numfmt.
17270 * --delimiters: paste invocation. (line 62)
17271 * --dereference <1>: chcon invocation. (line 23)
17272 * --dereference <2>: stat invocation. (line 26)
17273 * --dereference <3>: du invocation. (line 129)
17274 * --dereference <4>: chgrp invocation. (line 33)
17275 * --dereference <5>: chown invocation. (line 109)
17276 * --dereference <6>: cp invocation. (line 175)
17277 * --dereference: Which files are listed.
17279 * --dereference-args: du invocation. (line 71)
17280 * --dereference-command-line: Which files are listed.
17282 * --dereference-command-line-symlink-to-dir: Which files are listed.
17284 * --dictionary-order: sort invocation. (line 100)
17285 * --digits: csplit invocation. (line 85)
17286 * --dir: rm invocation. (line 40)
17287 * --directory <1>: mktemp invocation. (line 95)
17288 * --directory <2>: ln invocation. (line 102)
17289 * --directory <3>: install invocation. (line 77)
17290 * --directory: Which files are listed.
17292 * --dired: What information is listed.
17294 * --double-space: pr invocation. (line 84)
17295 * --dry-run: mktemp invocation. (line 107)
17296 * --echo: shuf invocation. (line 21)
17297 * --elide-empty-files <1>: csplit invocation. (line 102)
17298 * --elide-empty-files: split invocation. (line 143)
17299 * --error: stdbuf invocation. (line 36)
17300 * --escape: Formatting the file names.
17302 * --exact: shred invocation. (line 164)
17303 * --exclude-from=FILE: du invocation. (line 284)
17304 * --exclude-type: df invocation. (line 257)
17305 * --exclude=PATTERN: du invocation. (line 289)
17306 * --expand-tabs: pr invocation. (line 108)
17307 * --field: General options in numfmt.
17309 * --field-separator: sort invocation. (line 370)
17310 * --fields: cut invocation. (line 48)
17311 * --file <1>: Options for date. (line 26)
17312 * --file: stty invocation. (line 34)
17313 * --file-system: stat invocation. (line 33)
17314 * --file-type: General output formatting.
17316 * --files0-from=FILE <1>: du invocation. (line 86)
17317 * --files0-from=FILE <2>: sort invocation. (line 247)
17318 * --files0-from=FILE: wc invocation. (line 66)
17319 * --filter: split invocation. (line 68)
17320 * --first-line-number: pr invocation. (line 186)
17321 * --follow: tail invocation. (line 51)
17322 * --footer-numbering: nl invocation. (line 78)
17323 * --force <1>: ln invocation. (line 108)
17324 * --force <2>: shred invocation. (line 114)
17325 * --force <3>: rm invocation. (line 44)
17326 * --force <4>: mv invocation. (line 72)
17327 * --force: cp invocation. (line 138)
17328 * --foreground: timeout invocation. (line 26)
17329 * --form-feed: pr invocation. (line 116)
17330 * --format <1>: General output formatting.
17332 * --format <2>: What information is listed.
17334 * --format <3>: General options in numfmt.
17336 * --format: od invocation. (line 94)
17337 * --format=FORMAT <1>: seq invocation. (line 28)
17338 * --format=FORMAT: stat invocation. (line 39)
17339 * --from <1>: chown invocation. (line 83)
17340 * --from: General options in numfmt.
17342 * --from-unit: General options in numfmt.
17344 * --full-time: What information is listed.
17346 * --general-numeric-sort: sort invocation. (line 123)
17347 * --goal: fmt invocation. (line 69)
17348 * --group <1>: id invocation. (line 30)
17349 * --group <2>: install invocation. (line 84)
17350 * --group: uniq invocation. (line 107)
17351 * --group-directories-first: Which files are listed.
17353 * --grouping: General options in numfmt.
17355 * --groups <1>: chroot invocation. (line 36)
17356 * --groups: id invocation. (line 34)
17357 * --hardware-platform: uname invocation. (line 43)
17358 * --head-count: shuf invocation. (line 34)
17359 * --header <1>: join invocation. (line 101)
17360 * --header <2>: pr invocation. (line 122)
17361 * --header: General options in numfmt.
17363 * --header-numbering: nl invocation. (line 82)
17364 * --header=N: General options in numfmt.
17366 * --heading: who invocation. (line 49)
17367 * --help: Common options. (line 40)
17368 * --hide-control-chars: Formatting the file names.
17370 * --hide=PATTERN: Which files are listed.
17372 * --human-numeric-sort: sort invocation. (line 146)
17373 * --human-readable <1>: du invocation. (line 106)
17374 * --human-readable <2>: df invocation. (line 86)
17375 * --human-readable <3>: What information is listed.
17377 * --human-readable: Block size. (line 151)
17378 * --ignore: nproc invocation. (line 26)
17379 * --ignore-backups: Which files are listed.
17381 * --ignore-case <1>: join invocation. (line 110)
17382 * --ignore-case <2>: uniq invocation. (line 63)
17383 * --ignore-case: sort invocation. (line 107)
17384 * --ignore-environment: env invocation. (line 101)
17385 * --ignore-fail-on-non-empty: rmdir invocation. (line 19)
17386 * --ignore-garbage: base64 invocation. (line 40)
17387 * --ignore-interrupts: tee invocation. (line 32)
17388 * --ignore-leading-blanks: sort invocation. (line 91)
17389 * --ignore-nonprinting: sort invocation. (line 166)
17390 * --ignore=PATTERN: Which files are listed.
17392 * --indent: pr invocation. (line 191)
17393 * --indicator-style: General output formatting.
17395 * --initial: expand invocation. (line 37)
17396 * --inode: What information is listed.
17398 * --inodes <1>: du invocation. (line 113)
17399 * --inodes: df invocation. (line 97)
17400 * --input: stdbuf invocation. (line 28)
17401 * --input-range: shuf invocation. (line 25)
17402 * --interactive <1>: ln invocation. (line 113)
17403 * --interactive <2>: rm invocation. (line 61)
17404 * --interactive <3>: mv invocation. (line 78)
17405 * --interactive: cp invocation. (line 163)
17406 * --invalid: General options in numfmt.
17408 * --io-blocks: truncate invocation. (line 29)
17409 * --iso-8601[=TIMESPEC]: Options for date. (line 34)
17410 * --iterations=NUMBER: shred invocation. (line 119)
17411 * --join-blank-lines: nl invocation. (line 90)
17412 * --join-lines: pr invocation. (line 135)
17413 * --keep-files: csplit invocation. (line 90)
17414 * --kernel-name: uname invocation. (line 74)
17415 * --kernel-release: uname invocation. (line 70)
17416 * --kernel-version: uname invocation. (line 85)
17417 * --key: sort invocation. (line 264)
17418 * --kibibytes: General output formatting.
17420 * --kill-after: timeout invocation. (line 43)
17421 * --length: pr invocation. (line 145)
17422 * --line-bytes: split invocation. (line 62)
17423 * --line-increment: nl invocation. (line 86)
17424 * --lines <1>: wc invocation. (line 59)
17425 * --lines <2>: split invocation. (line 39)
17426 * --lines <3>: tail invocation. (line 182)
17427 * --lines: head invocation. (line 43)
17428 * --link: cp invocation. (line 170)
17429 * --literal: Formatting the file names.
17431 * --local: df invocation. (line 109)
17432 * --logical <1>: pwd invocation. (line 17)
17433 * --logical <2>: realpath invocation. (line 33)
17434 * --logical: ln invocation. (line 118)
17435 * --login: who invocation. (line 53)
17436 * --lookup: who invocation. (line 57)
17437 * --machine: uname invocation. (line 50)
17438 * --max-depth=DEPTH: du invocation. (line 78)
17439 * --max-line-length: wc invocation. (line 63)
17440 * --max-unchanged-stats: tail invocation. (line 170)
17441 * --merge <1>: sort invocation. (line 39)
17442 * --merge: pr invocation. (line 151)
17443 * --mesg: who invocation. (line 98)
17444 * --message: who invocation. (line 98)
17445 * --mode <1>: mknod invocation. (line 56)
17446 * --mode <2>: mkfifo invocation. (line 24)
17447 * --mode <3>: mkdir invocation. (line 22)
17448 * --mode: install invocation. (line 90)
17449 * --month-sort: sort invocation. (line 174)
17450 * --multiple: basename invocation. (line 35)
17451 * --name: id invocation. (line 38)
17452 * --no-clobber <1>: mv invocation. (line 86)
17453 * --no-clobber: cp invocation. (line 183)
17454 * --no-create <1>: truncate invocation. (line 25)
17455 * --no-create: touch invocation. (line 93)
17456 * --no-dereference <1>: chcon invocation. (line 28)
17457 * --no-dereference <2>: du invocation. (line 144)
17458 * --no-dereference <3>: touch invocation. (line 111)
17459 * --no-dereference <4>: chgrp invocation. (line 38)
17460 * --no-dereference <5>: chown invocation. (line 114)
17461 * --no-dereference <6>: ln invocation. (line 125)
17462 * --no-dereference: cp invocation. (line 189)
17463 * --no-file-warnings: pr invocation. (line 198)
17464 * --no-group: What information is listed.
17466 * --no-newline: readlink invocation. (line 48)
17467 * --no-preserve-root <1>: chcon invocation. (line 45)
17468 * --no-preserve-root <2>: chmod invocation. (line 60)
17469 * --no-preserve-root <3>: chgrp invocation. (line 53)
17470 * --no-preserve-root <4>: chown invocation. (line 129)
17471 * --no-preserve-root: rm invocation. (line 103)
17472 * --no-renumber: nl invocation. (line 110)
17473 * --no-symlinks: realpath invocation. (line 57)
17474 * --no-sync: df invocation. (line 113)
17475 * --no-target-directory <1>: ln invocation. (line 203)
17476 * --no-target-directory <2>: mv invocation. (line 121)
17477 * --no-target-directory <3>: install invocation. (line 145)
17478 * --no-target-directory <4>: cp invocation. (line 405)
17479 * --no-target-directory: Target directory. (line 15)
17480 * --nodename: uname invocation. (line 55)
17481 * --null <1>: env invocation. (line 90)
17482 * --null <2>: printenv invocation. (line 21)
17483 * --null: du invocation. (line 28)
17484 * --number <1>: split invocation. (line 86)
17485 * --number: cat invocation. (line 33)
17486 * --number-format: nl invocation. (line 97)
17487 * --number-lines: pr invocation. (line 166)
17488 * --number-nonblank: cat invocation. (line 22)
17489 * --number-separator: nl invocation. (line 114)
17490 * --number-width: nl invocation. (line 123)
17491 * --numeric-sort: sort invocation. (line 185)
17492 * --numeric-suffixes: split invocation. (line 130)
17493 * --numeric-uid-gid: What information is listed.
17495 * --omit-header: pr invocation. (line 226)
17496 * --omit-pagination: pr invocation. (line 238)
17497 * --one-file-system <1>: du invocation. (line 295)
17498 * --one-file-system <2>: rm invocation. (line 74)
17499 * --one-file-system: cp invocation. (line 429)
17500 * --only-delimited: cut invocation. (line 77)
17501 * --operating-system: uname invocation. (line 66)
17502 * --output <1>: stdbuf invocation. (line 32)
17503 * --output <2>: df invocation. (line 121)
17504 * --output <3>: shuf invocation. (line 39)
17505 * --output: sort invocation. (line 318)
17506 * --output-delimiter: cut invocation. (line 82)
17507 * --output-duplicates: od invocation. (line 165)
17508 * --output-tabs: pr invocation. (line 128)
17509 * --owner: install invocation. (line 103)
17510 * --padding: General options in numfmt.
17512 * --page_width: pr invocation. (line 257)
17513 * --pages=PAGE_RANGE: pr invocation. (line 45)
17514 * --parallel: sort invocation. (line 399)
17515 * --parents <1>: rmdir invocation. (line 24)
17516 * --parents <2>: mkdir invocation. (line 36)
17517 * --parents: cp invocation. (line 284)
17518 * --physical <1>: pwd invocation. (line 24)
17519 * --physical <2>: realpath invocation. (line 43)
17520 * --physical: ln invocation. (line 147)
17521 * --pid: tail invocation. (line 147)
17522 * --portability <1>: pathchk invocation. (line 50)
17523 * --portability: df invocation. (line 187)
17524 * --prefix: csplit invocation. (line 66)
17525 * --preserve: cp invocation. (line 197)
17526 * --preserve-context: install invocation. (line 109)
17527 * --preserve-root <1>: chcon invocation. (line 40)
17528 * --preserve-root <2>: chmod invocation. (line 55)
17529 * --preserve-root <3>: chgrp invocation. (line 48)
17530 * --preserve-root <4>: chown invocation. (line 124)
17531 * --preserve-root: rm invocation. (line 92)
17532 * --preserve-status: timeout invocation. (line 20)
17533 * --preserve-timestamps: install invocation. (line 116)
17534 * --print-database: dircolors invocation.
17536 * --print-type: df invocation. (line 230)
17537 * --printf=FORMAT: stat invocation. (line 48)
17538 * --process: who invocation. (line 67)
17539 * --processor: uname invocation. (line 59)
17540 * --quiet <1>: tty invocation. (line 19)
17541 * --quiet <2>: realpath invocation. (line 52)
17542 * --quiet <3>: mktemp invocation. (line 102)
17543 * --quiet <4>: chmod invocation. (line 51)
17544 * --quiet <5>: chgrp invocation. (line 29)
17545 * --quiet <6>: chown invocation. (line 80)
17546 * --quiet <7>: readlink invocation. (line 56)
17547 * --quiet <8>: md5sum invocation. (line 79)
17548 * --quiet <9>: csplit invocation. (line 113)
17549 * --quiet <10>: tail invocation. (line 189)
17550 * --quiet: head invocation. (line 50)
17551 * --quote-name: Formatting the file names.
17553 * --quoting-style: Formatting the file names.
17555 * --random-sort: sort invocation. (line 215)
17556 * --random-source <1>: shred invocation. (line 125)
17557 * --random-source <2>: shuf invocation. (line 45)
17558 * --random-source: sort invocation. (line 334)
17559 * --range <1>: runcon invocation. (line 47)
17560 * --range: chcon invocation. (line 82)
17561 * --read-bytes: od invocation. (line 80)
17562 * --real: id invocation. (line 43)
17563 * --recursive <1>: chcon invocation. (line 37)
17564 * --recursive <2>: chmod invocation. (line 76)
17565 * --recursive <3>: chgrp invocation. (line 71)
17566 * --recursive <4>: chown invocation. (line 148)
17567 * --recursive <5>: rm invocation. (line 110)
17568 * --recursive <6>: cp invocation. (line 298)
17569 * --recursive: Which files are listed.
17571 * --reference <1>: chcon invocation. (line 32)
17572 * --reference <2>: Options for date. (line 57)
17573 * --reference <3>: truncate invocation. (line 33)
17574 * --reference <4>: touch invocation. (line 132)
17575 * --reference <5>: chmod invocation. (line 69)
17576 * --reference <6>: chgrp invocation. (line 57)
17577 * --reference: chown invocation. (line 133)
17578 * --reflink[=WHEN]: cp invocation. (line 314)
17579 * --regex: tac invocation. (line 28)
17580 * --relative: ln invocation. (line 159)
17581 * --relative-base: realpath invocation. (line 73)
17582 * --relative-to: realpath invocation. (line 68)
17583 * --remove: shred invocation. (line 138)
17584 * --remove-destination: cp invocation. (line 342)
17585 * --remove=unlink: shred invocation. (line 138)
17586 * --remove=wipe: shred invocation. (line 138)
17587 * --remove=wipesync: shred invocation. (line 138)
17588 * --repeat: shuf invocation. (line 51)
17589 * --repeated: uniq invocation. (line 67)
17590 * --retry: tail invocation. (line 116)
17591 * --reverse <1>: Sorting the output. (line 28)
17592 * --reverse: sort invocation. (line 209)
17593 * --rfc-2822: Options for date. (line 63)
17594 * --rfc-3339=TIMESPEC: Options for date. (line 75)
17595 * --rfc-822: Options for date. (line 63)
17596 * --role <1>: runcon invocation. (line 39)
17597 * --role: chcon invocation. (line 74)
17598 * --round: General options in numfmt.
17600 * --round=down: General options in numfmt.
17602 * --round=from-zero: General options in numfmt.
17604 * --round=nearest: General options in numfmt.
17606 * --round=towards-zero: General options in numfmt.
17608 * --round=up: General options in numfmt.
17610 * --runlevel: who invocation. (line 77)
17611 * --save: stty invocation. (line 47)
17612 * --section-delimiter: nl invocation. (line 71)
17613 * --sep-string: pr invocation. (line 214)
17614 * --separate-dirs: du invocation. (line 149)
17615 * --separator <1>: pr invocation. (line 203)
17616 * --separator: tac invocation. (line 32)
17617 * --serial: paste invocation. (line 52)
17618 * --set: Options for date. (line 105)
17619 * --sh: dircolors invocation.
17621 * --show-all: cat invocation. (line 18)
17622 * --show-control-chars <1>: Formatting the file names.
17624 * --show-control-chars: pr invocation. (line 78)
17625 * --show-ends: cat invocation. (line 29)
17626 * --show-nonprinting <1>: pr invocation. (line 243)
17627 * --show-nonprinting: cat invocation. (line 53)
17628 * --show-tabs: cat invocation. (line 46)
17629 * --si <1>: du invocation. (line 157)
17630 * --si <2>: df invocation. (line 207)
17631 * --si <3>: What information is listed.
17633 * --si: Block size. (line 151)
17634 * --signal: timeout invocation. (line 50)
17635 * --silent <1>: tty invocation. (line 19)
17636 * --silent <2>: chmod invocation. (line 51)
17637 * --silent <3>: chgrp invocation. (line 29)
17638 * --silent <4>: chown invocation. (line 80)
17639 * --silent <5>: readlink invocation. (line 56)
17640 * --silent <6>: csplit invocation. (line 113)
17641 * --silent <7>: tail invocation. (line 189)
17642 * --silent: head invocation. (line 50)
17643 * --size <1>: truncate invocation. (line 37)
17644 * --size: What information is listed.
17646 * --size=BYTES: shred invocation. (line 131)
17647 * --skip-bytes: od invocation. (line 63)
17648 * --skip-chars: uniq invocation. (line 43)
17649 * --skip-fields: uniq invocation. (line 33)
17650 * --sleep-interval: tail invocation. (line 135)
17651 * --sort <1>: Sorting the output. (line 34)
17652 * --sort: sort invocation. (line 123)
17653 * --spaces: fold invocation. (line 33)
17654 * --sparse=WHEN: cp invocation. (line 346)
17655 * --split-only: fmt invocation. (line 52)
17656 * --squeeze-blank: cat invocation. (line 38)
17657 * --stable: sort invocation. (line 340)
17658 * --starting-line-number: nl invocation. (line 119)
17659 * --status: md5sum invocation. (line 88)
17660 * --strict: md5sum invocation. (line 126)
17661 * --strings: od invocation. (line 85)
17662 * --strip <1>: realpath invocation. (line 57)
17663 * --strip: install invocation. (line 126)
17664 * --strip-program: install invocation. (line 130)
17665 * --strip-trailing-slashes <1>: mv invocation. (line 106)
17666 * --strip-trailing-slashes: cp invocation. (line 382)
17667 * --suffix <1>: mktemp invocation. (line 126)
17668 * --suffix <2>: basename invocation. (line 41)
17669 * --suffix <3>: ln invocation. (line 193)
17670 * --suffix <4>: mv invocation. (line 111)
17671 * --suffix <5>: install invocation. (line 135)
17672 * --suffix <6>: cp invocation. (line 395)
17673 * --suffix <7>: csplit invocation. (line 70)
17674 * --suffix <8>: General options in numfmt.
17676 * --suffix: Backup options. (line 54)
17677 * --suffix-length: split invocation. (line 121)
17678 * --summarize: du invocation. (line 165)
17679 * --suppress-matched: csplit invocation. (line 93)
17680 * --symbolic: ln invocation. (line 187)
17681 * --symbolic-link: cp invocation. (line 387)
17682 * --sync: df invocation. (line 214)
17683 * --sysv: sum invocation. (line 34)
17684 * --tabs <1>: unexpand invocation. (line 28)
17685 * --tabs: expand invocation. (line 24)
17686 * --tabsize: General output formatting.
17688 * --tag: md5sum invocation. (line 99)
17689 * --tagged-paragraph: fmt invocation. (line 45)
17690 * --target-directory <1>: ln invocation. (line 198)
17691 * --target-directory <2>: mv invocation. (line 116)
17692 * --target-directory <3>: install invocation. (line 140)
17693 * --target-directory <4>: cp invocation. (line 400)
17694 * --target-directory: Target directory. (line 35)
17695 * --temporary-directory: sort invocation. (line 390)
17696 * --terse: stat invocation. (line 60)
17697 * --text: md5sum invocation. (line 110)
17698 * --threshold: du invocation. (line 171)
17699 * --time <1>: who invocation. (line 85)
17700 * --time <2>: du invocation. (line 213)
17701 * --time <3>: touch invocation. (line 89)
17702 * --time: Sorting the output. (line 13)
17703 * --time-style <1>: du invocation. (line 243)
17704 * --time-style: Formatting file timestamps.
17706 * --tmpdir: mktemp invocation. (line 117)
17707 * --to: General options in numfmt.
17709 * --to-unit: General options in numfmt.
17711 * --total <1>: du invocation. (line 65)
17712 * --total: df invocation. (line 73)
17713 * --traditional: od invocation. (line 216)
17714 * --type <1>: runcon invocation. (line 43)
17715 * --type <2>: chcon invocation. (line 78)
17716 * --type: df invocation. (line 223)
17717 * --unbuffered: split invocation. (line 153)
17718 * --uniform-spacing: fmt invocation. (line 58)
17719 * --unique <1>: uniq invocation. (line 138)
17720 * --unique: sort invocation. (line 407)
17721 * --universal: Options for date. (line 111)
17722 * --unset: env invocation. (line 96)
17723 * --update <1>: mv invocation. (line 92)
17724 * --update: cp invocation. (line 410)
17725 * --user <1>: runcon invocation. (line 35)
17726 * --user <2>: chcon invocation. (line 70)
17727 * --user: id invocation. (line 48)
17728 * --userspec: chroot invocation. (line 29)
17729 * --utc: Options for date. (line 111)
17730 * --verbose <1>: chcon invocation. (line 66)
17731 * --verbose <2>: chmod invocation. (line 65)
17732 * --verbose <3>: chgrp invocation. (line 63)
17733 * --verbose <4>: chown invocation. (line 140)
17734 * --verbose <5>: rmdir invocation. (line 33)
17735 * --verbose <6>: readlink invocation. (line 60)
17736 * --verbose <7>: mkdir invocation. (line 53)
17737 * --verbose <8>: ln invocation. (line 208)
17738 * --verbose <9>: shred invocation. (line 159)
17739 * --verbose <10>: rm invocation. (line 114)
17740 * --verbose <11>: mv invocation. (line 103)
17741 * --verbose <12>: install invocation. (line 150)
17742 * --verbose <13>: cp invocation. (line 425)
17743 * --verbose <14>: split invocation. (line 157)
17744 * --verbose <15>: tail invocation. (line 193)
17745 * --verbose: head invocation. (line 54)
17746 * --version: Common options. (line 43)
17747 * --version-sort: sort invocation. (line 202)
17748 * --warn: md5sum invocation. (line 120)
17749 * --width <1>: General output formatting.
17751 * --width <2>: fold invocation. (line 39)
17752 * --width <3>: pr invocation. (line 247)
17753 * --width <4>: fmt invocation. (line 64)
17754 * --width: od invocation. (line 172)
17755 * --words: wc invocation. (line 55)
17756 * --wrap: base64 invocation. (line 25)
17757 * --writable: who invocation. (line 98)
17758 * --zero <1>: id invocation. (line 58)
17759 * --zero <2>: realpath invocation. (line 65)
17760 * --zero <3>: dirname invocation. (line 34)
17761 * --zero <4>: basename invocation. (line 46)
17762 * --zero <5>: readlink invocation. (line 64)
17763 * --zero: shred invocation. (line 175)
17764 * --zero-terminated <1>: join invocation. (line 171)
17765 * --zero-terminated <2>: uniq invocation. (line 150)
17766 * --zero-terminated <3>: shuf invocation. (line 61)
17767 * --zero-terminated: sort invocation. (line 423)
17768 * -0 <1>: env invocation. (line 89)
17769 * -0 <2>: printenv invocation. (line 20)
17770 * -0: du invocation. (line 27)
17771 * -1 <1>: General output formatting.
17773 * -1 <2>: join invocation. (line 116)
17774 * -1: comm invocation. (line 24)
17775 * -2 <1>: join invocation. (line 120)
17776 * -2: comm invocation. (line 24)
17777 * -3: comm invocation. (line 24)
17778 * -a <1>: uname invocation. (line 38)
17779 * -a <2>: who invocation. (line 37)
17780 * -a <3>: stty invocation. (line 29)
17781 * -a <4>: basename invocation. (line 35)
17782 * -a <5>: tee invocation. (line 27)
17783 * -a <6>: Connectives for test.
17785 * -a <7>: du invocation. (line 34)
17786 * -a <8>: df invocation. (line 61)
17787 * -a <9>: touch invocation. (line 89)
17788 * -a: cp invocation. (line 80)
17789 * -A: Which files are listed.
17791 * -a <1>: Which files are listed.
17793 * -a <2>: unexpand invocation. (line 52)
17794 * -a <3>: join invocation. (line 84)
17795 * -a <4>: split invocation. (line 121)
17796 * -a <5>: pr invocation. (line 71)
17797 * -a: od invocation. (line 185)
17798 * -A <1>: od invocation. (line 44)
17799 * -A: cat invocation. (line 18)
17800 * -b <1>: who invocation. (line 41)
17801 * -b <2>: File type tests. (line 11)
17802 * -b: du invocation. (line 61)
17803 * -B <1>: du invocation. (line 55)
17804 * -B: df invocation. (line 68)
17805 * -b <1>: ln invocation. (line 96)
17806 * -b <2>: mv invocation. (line 67)
17807 * -b <3>: install invocation. (line 46)
17808 * -b <4>: cp invocation. (line 96)
17809 * -b <5>: dircolors invocation.
17811 * -b: Formatting the file names.
17813 * -B: Which files are listed.
17815 * -b <1>: cut invocation. (line 31)
17816 * -b <2>: sort invocation. (line 91)
17817 * -b <3>: md5sum invocation. (line 43)
17818 * -b <4>: csplit invocation. (line 70)
17819 * -b <5>: split invocation. (line 47)
17820 * -b <6>: fold invocation. (line 27)
17821 * -b <7>: od invocation. (line 188)
17822 * -b <8>: nl invocation. (line 49)
17823 * -b <9>: tac invocation. (line 23)
17824 * -b <10>: cat invocation. (line 22)
17825 * -b: Backup options. (line 14)
17826 * -c <1>: runcon invocation. (line 30)
17827 * -c <2>: File type tests. (line 14)
17828 * -c <3>: truncate invocation. (line 25)
17829 * -c <4>: stat invocation. (line 39)
17830 * -c <5>: du invocation. (line 65)
17831 * -c <6>: touch invocation. (line 93)
17832 * -c <7>: chmod invocation. (line 45)
17833 * -c <8>: chgrp invocation. (line 23)
17834 * -c <9>: chown invocation. (line 74)
17835 * -c: install invocation. (line 66)
17836 * -C: install invocation. (line 51)
17837 * -c: dircolors invocation.
17839 * -C: General output formatting.
17841 * -c <1>: Sorting the output. (line 13)
17842 * -c <2>: cut invocation. (line 39)
17843 * -c <3>: uniq invocation. (line 59)
17844 * -c <4>: shuf invocation. (line 21)
17845 * -c <5>: sort invocation. (line 23)
17846 * -c: wc invocation. (line 47)
17847 * -C: split invocation. (line 62)
17848 * -c <1>: tail invocation. (line 34)
17849 * -c <2>: head invocation. (line 26)
17850 * -c <3>: pr invocation. (line 78)
17851 * -c <4>: fmt invocation. (line 39)
17852 * -c: od invocation. (line 191)
17853 * -COLUMN: pr invocation. (line 56)
17854 * -d <1>: Options for date. (line 11)
17855 * -d <2>: who invocation. (line 45)
17856 * -d <3>: mktemp invocation. (line 95)
17857 * -d: File type tests. (line 17)
17858 * -D: du invocation. (line 71)
17859 * -d <1>: touch invocation. (line 97)
17860 * -d <2>: ln invocation. (line 102)
17861 * -d <3>: rm invocation. (line 40)
17862 * -d: install invocation. (line 77)
17863 * -D: install invocation. (line 70)
17864 * -d: cp invocation. (line 130)
17865 * -D: What information is listed.
17867 * -d <1>: Which files are listed.
17869 * -d <2>: paste invocation. (line 62)
17870 * -d: cut invocation. (line 69)
17871 * -D: uniq invocation. (line 73)
17872 * -d <1>: uniq invocation. (line 67)
17873 * -d <2>: sort invocation. (line 100)
17874 * -d <3>: split invocation. (line 130)
17875 * -d <4>: pr invocation. (line 84)
17876 * -d <5>: General options in numfmt.
17878 * -d <6>: base64 invocation. (line 33)
17879 * -d <7>: od invocation. (line 195)
17880 * -d: nl invocation. (line 71)
17881 * -d DEPTH: du invocation. (line 78)
17882 * -e <1>: stdbuf invocation. (line 36)
17883 * -e <2>: realpath invocation. (line 20)
17884 * -e: File characteristic tests.
17886 * -E: echo invocation. (line 76)
17887 * -e <1>: echo invocation. (line 28)
17888 * -e <2>: readlink invocation. (line 35)
17889 * -e <3>: join invocation. (line 96)
17890 * -e <4>: split invocation. (line 143)
17891 * -e: pr invocation. (line 108)
17892 * -E: cat invocation. (line 29)
17893 * -e: cat invocation. (line 25)
17894 * -ef: File characteristic tests.
17896 * -eq: Numeric tests. (line 19)
17897 * -f: Options for date. (line 26)
17898 * -F: stty invocation. (line 34)
17899 * -f <1>: File type tests. (line 20)
17900 * -f <2>: stat invocation. (line 33)
17901 * -f <3>: touch invocation. (line 107)
17902 * -f <4>: chmod invocation. (line 51)
17903 * -f <5>: chgrp invocation. (line 29)
17904 * -f <6>: chown invocation. (line 80)
17905 * -f <7>: readlink invocation. (line 28)
17906 * -f: ln invocation. (line 108)
17907 * -F: ln invocation. (line 102)
17908 * -f <1>: shred invocation. (line 114)
17909 * -f <2>: rm invocation. (line 44)
17910 * -f <3>: mv invocation. (line 72)
17911 * -f: cp invocation. (line 138)
17912 * -F: General output formatting.
17914 * -f <1>: Sorting the output. (line 20)
17915 * -f <2>: cut invocation. (line 48)
17916 * -f <3>: uniq invocation. (line 33)
17917 * -f <4>: sort invocation. (line 107)
17918 * -f: csplit invocation. (line 66)
17919 * -F: tail invocation. (line 110)
17920 * -f <1>: tail invocation. (line 51)
17921 * -f: pr invocation. (line 116)
17922 * -F: pr invocation. (line 116)
17923 * -f <1>: od invocation. (line 198)
17924 * -f: nl invocation. (line 78)
17925 * -f FORMAT: seq invocation. (line 28)
17926 * -G: id invocation. (line 34)
17927 * -g <1>: id invocation. (line 30)
17928 * -g: stty invocation. (line 47)
17929 * -G: Access permission tests.
17931 * -g <1>: Access permission tests.
17933 * -g: install invocation. (line 84)
17934 * -G: What information is listed.
17936 * -g <1>: What information is listed.
17938 * -g <2>: sort invocation. (line 123)
17939 * -g: fmt invocation. (line 69)
17940 * -ge: Numeric tests. (line 19)
17941 * -gt: Numeric tests. (line 19)
17942 * -H: chcon invocation. (line 50)
17943 * -h: chcon invocation. (line 28)
17944 * -H: who invocation. (line 49)
17945 * -h <1>: File type tests. (line 24)
17946 * -h: du invocation. (line 106)
17947 * -H <1>: du invocation. (line 102)
17948 * -H: df invocation. (line 93)
17949 * -h <1>: df invocation. (line 86)
17950 * -h: touch invocation. (line 111)
17951 * -H: chgrp invocation. (line 74)
17952 * -h: chgrp invocation. (line 38)
17953 * -H: chown invocation. (line 151)
17954 * -h: chown invocation. (line 114)
17955 * -H: cp invocation. (line 155)
17956 * -h: What information is listed.
17958 * -H: Which files are listed.
17960 * -h <1>: sort invocation. (line 146)
17961 * -h <2>: pr invocation. (line 122)
17962 * -h: nl invocation. (line 82)
17963 * -H: Traversing symlinks. (line 20)
17964 * -h: Block size. (line 151)
17965 * -i <1>: stdbuf invocation. (line 28)
17966 * -i <2>: env invocation. (line 101)
17967 * -i <3>: uname invocation. (line 43)
17968 * -i <4>: tee invocation. (line 32)
17969 * -i <5>: df invocation. (line 97)
17970 * -i: ln invocation. (line 113)
17971 * -I: rm invocation. (line 55)
17972 * -i <1>: rm invocation. (line 50)
17973 * -i <2>: mv invocation. (line 78)
17974 * -i <3>: cp invocation. (line 163)
17975 * -i: What information is listed.
17977 * -I: Which files are listed.
17979 * -i <1>: expand invocation. (line 37)
17980 * -i <2>: join invocation. (line 110)
17981 * -i <3>: uniq invocation. (line 63)
17982 * -i <4>: shuf invocation. (line 25)
17983 * -i <5>: sort invocation. (line 166)
17984 * -i <6>: pr invocation. (line 128)
17985 * -i <7>: base64 invocation. (line 40)
17986 * -i <8>: od invocation. (line 201)
17987 * -i: nl invocation. (line 86)
17988 * -I[TIMESPEC]: Options for date. (line 34)
17989 * -J: pr invocation. (line 135)
17990 * -j: od invocation. (line 63)
17991 * -k <1>: timeout invocation. (line 43)
17992 * -k <2>: Access permission tests.
17994 * -k <3>: du invocation. (line 123)
17995 * -k <4>: df invocation. (line 103)
17996 * -k <5>: General output formatting.
17998 * -k <6>: sort invocation. (line 264)
17999 * -k <7>: csplit invocation. (line 90)
18000 * -k: Block size. (line 151)
18001 * -l <1>: runcon invocation. (line 47)
18002 * -l: chcon invocation. (line 82)
18003 * -L: chcon invocation. (line 55)
18004 * -l: who invocation. (line 53)
18005 * -L <1>: pwd invocation. (line 17)
18006 * -L <2>: realpath invocation. (line 33)
18007 * -L <3>: File type tests. (line 24)
18008 * -L: stat invocation. (line 26)
18009 * -l: du invocation. (line 134)
18010 * -L: du invocation. (line 129)
18011 * -l: df invocation. (line 109)
18012 * -L <1>: chgrp invocation. (line 79)
18013 * -L <2>: chown invocation. (line 156)
18014 * -L <3>: ln invocation. (line 118)
18015 * -L: cp invocation. (line 175)
18016 * -l <1>: cp invocation. (line 170)
18017 * -l: What information is listed.
18019 * -L <1>: Which files are listed.
18021 * -L: wc invocation. (line 63)
18022 * -l <1>: wc invocation. (line 59)
18023 * -l <2>: split invocation. (line 39)
18024 * -l <3>: pr invocation. (line 145)
18025 * -l <4>: od invocation. (line 204)
18026 * -l: nl invocation. (line 90)
18027 * -L: Traversing symlinks. (line 25)
18028 * -le: Numeric tests. (line 19)
18029 * -lt: Numeric tests. (line 19)
18030 * -m <1>: uname invocation. (line 50)
18031 * -m <2>: who invocation. (line 63)
18032 * -m <3>: realpath invocation. (line 28)
18033 * -m <4>: du invocation. (line 138)
18034 * -m <5>: touch invocation. (line 128)
18035 * -m <6>: readlink invocation. (line 42)
18036 * -m <7>: mknod invocation. (line 56)
18037 * -m <8>: mkfifo invocation. (line 24)
18038 * -m <9>: mkdir invocation. (line 22)
18039 * -m <10>: install invocation. (line 90)
18040 * -m: General output formatting.
18042 * -M: sort invocation. (line 174)
18043 * -m <1>: sort invocation. (line 39)
18044 * -m <2>: wc invocation. (line 51)
18045 * -m: pr invocation. (line 151)
18046 * -n <1>: nice invocation. (line 57)
18047 * -n <2>: uname invocation. (line 55)
18048 * -n <3>: id invocation. (line 38)
18049 * -n <4>: String tests. (line 19)
18050 * -n <5>: echo invocation. (line 25)
18051 * -n <6>: readlink invocation. (line 48)
18052 * -n <7>: ln invocation. (line 125)
18053 * -n <8>: mv invocation. (line 86)
18054 * -n: cp invocation. (line 183)
18055 * -N: Formatting the file names.
18057 * -n <1>: What information is listed.
18059 * -n <2>: cut invocation. (line 73)
18060 * -n <3>: shuf invocation. (line 34)
18061 * -n <4>: sort invocation. (line 185)
18062 * -n <5>: csplit invocation. (line 85)
18063 * -n <6>: split invocation. (line 86)
18064 * -n <7>: tail invocation. (line 182)
18065 * -n: head invocation. (line 43)
18066 * -N: pr invocation. (line 186)
18067 * -n: pr invocation. (line 166)
18068 * -N: od invocation. (line 80)
18069 * -n <1>: nl invocation. (line 97)
18070 * -n: cat invocation. (line 33)
18071 * -n NUMBER: shred invocation. (line 119)
18072 * -ne: Numeric tests. (line 19)
18073 * -nt: File characteristic tests.
18075 * -o <1>: stdbuf invocation. (line 32)
18076 * -o <2>: uname invocation. (line 66)
18077 * -o: Connectives for test.
18079 * -O: Access permission tests.
18081 * -o <1>: truncate invocation. (line 29)
18082 * -o <2>: install invocation. (line 103)
18083 * -o <3>: What information is listed.
18085 * -o <4>: shuf invocation. (line 39)
18086 * -o <5>: sort invocation. (line 318)
18087 * -o <6>: pr invocation. (line 191)
18088 * -o: od invocation. (line 207)
18089 * -ot: File characteristic tests.
18091 * -P: chcon invocation. (line 60)
18092 * -p <1>: uname invocation. (line 59)
18093 * -p: who invocation. (line 67)
18094 * -P <1>: pwd invocation. (line 24)
18095 * -P: realpath invocation. (line 43)
18096 * -p: mktemp invocation. (line 117)
18097 * -P: pathchk invocation. (line 46)
18098 * -p <1>: pathchk invocation. (line 31)
18099 * -p: File type tests. (line 29)
18100 * -P <1>: du invocation. (line 144)
18101 * -P <2>: df invocation. (line 187)
18102 * -P <3>: chgrp invocation. (line 84)
18103 * -P: chown invocation. (line 161)
18104 * -p <1>: rmdir invocation. (line 24)
18105 * -p: mkdir invocation. (line 36)
18106 * -P: ln invocation. (line 147)
18107 * -p <1>: install invocation. (line 116)
18108 * -p: cp invocation. (line 197)
18109 * -P: cp invocation. (line 189)
18110 * -p <1>: dircolors invocation.
18112 * -p <2>: General output formatting.
18114 * -p: nl invocation. (line 110)
18115 * -P: Traversing symlinks. (line 29)
18116 * -q <1>: who invocation. (line 72)
18117 * -q <2>: realpath invocation. (line 52)
18118 * -q <3>: mktemp invocation. (line 102)
18119 * -q: readlink invocation. (line 56)
18120 * -Q: Formatting the file names.
18122 * -q <1>: Formatting the file names.
18124 * -q <2>: csplit invocation. (line 113)
18125 * -q <3>: tail invocation. (line 189)
18126 * -q: head invocation. (line 50)
18127 * -r <1>: runcon invocation. (line 39)
18128 * -r: chcon invocation. (line 74)
18129 * -R: chcon invocation. (line 37)
18130 * -r: uname invocation. (line 70)
18131 * -R: Options for date. (line 63)
18132 * -r <1>: Options for date. (line 57)
18133 * -r <2>: who invocation. (line 77)
18134 * -r <3>: id invocation. (line 43)
18135 * -r <4>: Access permission tests.
18137 * -r <5>: truncate invocation. (line 33)
18138 * -r: touch invocation. (line 132)
18139 * -R <1>: chmod invocation. (line 76)
18140 * -R <2>: chgrp invocation. (line 71)
18141 * -R: chown invocation. (line 148)
18142 * -r: ln invocation. (line 159)
18143 * -R: rm invocation. (line 110)
18144 * -r <1>: rm invocation. (line 110)
18145 * -r: cp invocation. (line 298)
18146 * -R: cp invocation. (line 298)
18147 * -r: Sorting the output. (line 28)
18148 * -R: Which files are listed.
18150 * -r: shuf invocation. (line 51)
18151 * -R: sort invocation. (line 215)
18152 * -r <1>: sort invocation. (line 209)
18153 * -r <2>: sum invocation. (line 27)
18154 * -r <3>: pr invocation. (line 198)
18155 * -r: tac invocation. (line 28)
18156 * -s <1>: timeout invocation. (line 50)
18157 * -s <2>: uname invocation. (line 74)
18158 * -s <3>: Options for date. (line 105)
18159 * -s <4>: who invocation. (line 81)
18160 * -s <5>: tty invocation. (line 19)
18161 * -s <6>: realpath invocation. (line 57)
18162 * -s <7>: basename invocation. (line 41)
18163 * -s: File characteristic tests.
18165 * -S: File type tests. (line 32)
18166 * -s <1>: truncate invocation. (line 37)
18167 * -s: du invocation. (line 165)
18168 * -S: du invocation. (line 149)
18169 * -s: readlink invocation. (line 56)
18170 * -S: ln invocation. (line 193)
18171 * -s: ln invocation. (line 187)
18172 * -S <1>: mv invocation. (line 111)
18173 * -S: install invocation. (line 135)
18174 * -s: install invocation. (line 126)
18175 * -S: cp invocation. (line 395)
18176 * -s: cp invocation. (line 387)
18177 * -S: Sorting the output. (line 34)
18178 * -s <1>: What information is listed.
18180 * -s <2>: paste invocation. (line 52)
18181 * -s <3>: cut invocation. (line 77)
18182 * -s: uniq invocation. (line 43)
18183 * -S: sort invocation. (line 353)
18184 * -s <1>: sort invocation. (line 340)
18185 * -s <2>: sum invocation. (line 34)
18186 * -s <3>: csplit invocation. (line 113)
18187 * -s: fold invocation. (line 33)
18188 * -S: pr invocation. (line 214)
18189 * -s <1>: pr invocation. (line 203)
18190 * -s <2>: fmt invocation. (line 52)
18191 * -s: od invocation. (line 210)
18192 * -S: od invocation. (line 85)
18193 * -s <1>: nl invocation. (line 114)
18194 * -s <2>: tac invocation. (line 32)
18195 * -s: cat invocation. (line 38)
18196 * -S: Backup options. (line 54)
18197 * -s BYTES: shred invocation. (line 131)
18198 * -t <1>: runcon invocation. (line 43)
18199 * -t: chcon invocation. (line 78)
18200 * -T: who invocation. (line 98)
18201 * -t <1>: who invocation. (line 85)
18202 * -t <2>: mktemp invocation. (line 135)
18203 * -t <3>: File type tests. (line 35)
18204 * -t <4>: stat invocation. (line 60)
18205 * -t: du invocation. (line 171)
18206 * -T: df invocation. (line 230)
18207 * -t: df invocation. (line 223)
18208 * -T: ln invocation. (line 203)
18209 * -t: ln invocation. (line 198)
18210 * -T: mv invocation. (line 121)
18211 * -t: mv invocation. (line 116)
18212 * -T: install invocation. (line 145)
18213 * -t: install invocation. (line 140)
18214 * -T: cp invocation. (line 405)
18215 * -t: cp invocation. (line 400)
18216 * -T: General output formatting.
18218 * -t <1>: Sorting the output. (line 38)
18219 * -t <2>: unexpand invocation. (line 28)
18220 * -t: expand invocation. (line 24)
18221 * -T: sort invocation. (line 390)
18222 * -t <1>: sort invocation. (line 370)
18223 * -t: md5sum invocation. (line 110)
18224 * -T: pr invocation. (line 238)
18225 * -t <1>: pr invocation. (line 226)
18226 * -t <2>: fmt invocation. (line 45)
18227 * -t: od invocation. (line 94)
18228 * -T: cat invocation. (line 46)
18229 * -t: cat invocation. (line 42)
18230 * -u <1>: env invocation. (line 96)
18231 * -u <2>: runcon invocation. (line 35)
18232 * -u <3>: chcon invocation. (line 70)
18233 * -u <4>: Options for date. (line 111)
18234 * -u <5>: who invocation. (line 88)
18235 * -u <6>: id invocation. (line 48)
18236 * -u <7>: mktemp invocation. (line 107)
18237 * -u <8>: Access permission tests.
18239 * -u <9>: shred invocation. (line 138)
18240 * -u <10>: mv invocation. (line 92)
18241 * -u: cp invocation. (line 410)
18242 * -U: Sorting the output. (line 53)
18243 * -u <1>: Sorting the output. (line 45)
18244 * -u <2>: uniq invocation. (line 138)
18245 * -u <3>: sort invocation. (line 407)
18246 * -u <4>: split invocation. (line 153)
18247 * -u <5>: fmt invocation. (line 58)
18248 * -u: cat invocation. (line 49)
18249 * -v <1>: chcon invocation. (line 66)
18250 * -v <2>: uname invocation. (line 85)
18251 * -v <3>: chmod invocation. (line 65)
18252 * -v <4>: chgrp invocation. (line 63)
18253 * -v <5>: chown invocation. (line 140)
18254 * -v <6>: rmdir invocation. (line 33)
18255 * -v <7>: readlink invocation. (line 60)
18256 * -v <8>: mkdir invocation. (line 53)
18257 * -v <9>: ln invocation. (line 208)
18258 * -v <10>: shred invocation. (line 159)
18259 * -v <11>: rm invocation. (line 114)
18260 * -v <12>: mv invocation. (line 103)
18261 * -v <13>: install invocation. (line 150)
18262 * -v <14>: cp invocation. (line 425)
18263 * -v: Sorting the output. (line 62)
18264 * -V: sort invocation. (line 202)
18265 * -v <1>: tail invocation. (line 193)
18266 * -v <2>: head invocation. (line 54)
18267 * -v <3>: pr invocation. (line 243)
18268 * -v <4>: od invocation. (line 165)
18269 * -v <5>: nl invocation. (line 119)
18270 * -v: cat invocation. (line 53)
18271 * -w <1>: who invocation. (line 98)
18272 * -w <2>: Access permission tests.
18274 * -w <3>: General output formatting.
18276 * -w <4>: uniq invocation. (line 144)
18277 * -w <5>: md5sum invocation. (line 120)
18278 * -w <6>: wc invocation. (line 55)
18279 * -w: fold invocation. (line 39)
18280 * -W: pr invocation. (line 257)
18281 * -w <1>: pr invocation. (line 247)
18282 * -w <2>: fmt invocation. (line 64)
18283 * -w <3>: base64 invocation. (line 25)
18284 * -w <4>: od invocation. (line 172)
18285 * -w: nl invocation. (line 123)
18286 * -WIDTH: fmt invocation. (line 64)
18287 * -x <1>: Access permission tests.
18289 * -x <2>: du invocation. (line 295)
18290 * -x <3>: df invocation. (line 257)
18291 * -x <4>: shred invocation. (line 164)
18292 * -x <5>: cp invocation. (line 429)
18293 * -x: General output formatting.
18295 * -X: Sorting the output. (line 70)
18296 * -x: od invocation. (line 213)
18297 * -X FILE: du invocation. (line 284)
18298 * -z: id invocation. (line 58)
18299 * -Z: id invocation. (line 52)
18300 * -z <1>: realpath invocation. (line 65)
18301 * -z <2>: dirname invocation. (line 34)
18302 * -z <3>: basename invocation. (line 46)
18303 * -z <4>: String tests. (line 15)
18304 * -z: readlink invocation. (line 64)
18305 * -Z <1>: mknod invocation. (line 63)
18306 * -Z <2>: mkfifo invocation. (line 32)
18307 * -Z: mkdir invocation. (line 58)
18308 * -z: shred invocation. (line 175)
18309 * -Z <1>: mv invocation. (line 126)
18310 * -Z <2>: install invocation. (line 154)
18311 * -Z <3>: cp invocation. (line 435)
18312 * -Z: What information is listed.
18314 * -z <1>: join invocation. (line 171)
18315 * -z <2>: uniq invocation. (line 150)
18316 * -z <3>: shuf invocation. (line 61)
18317 * -z <4>: sort invocation. (line 423)
18318 * -z: csplit invocation. (line 102)
18319 * /: Numeric expressions. (line 15)
18320 * 128-bit checksum: md5sum invocation. (line 6)
18321 * 16-bit checksum: sum invocation. (line 6)
18322 * 160-bit checksum: sha1sum invocation. (line 6)
18323 * 224-bit checksum: sha2 utilities. (line 6)
18324 * 256-bit checksum: sha2 utilities. (line 6)
18325 * 384-bit checksum: sha2 utilities. (line 6)
18326 * 512-bit checksum: sha2 utilities. (line 6)
18327 * <: Relations for expr. (line 21)
18328 * <=: Relations for expr. (line 21)
18329 * = <1>: Relations for expr. (line 21)
18330 * =: String tests. (line 22)
18331 * == <1>: Relations for expr. (line 21)
18332 * ==: String tests. (line 25)
18333 * >: Relations for expr. (line 21)
18334 * >=: Relations for expr. (line 21)
18335 * \( regexp operator: String expressions. (line 24)
18336 * \+ regexp operator: String expressions. (line 27)
18337 * \? regexp operator: String expressions. (line 27)
18338 * \c: printf invocation. (line 33)
18339 * \OOO: printf invocation. (line 71)
18340 * \uhhhh: printf invocation. (line 78)
18341 * \Uhhhhhhhh: printf invocation. (line 78)
18342 * \xHH: printf invocation. (line 71)
18343 * \| regexp operator: String expressions. (line 27)
18344 * _POSIX2_VERSION <1>: touch invocation. (line 150)
18345 * _POSIX2_VERSION <2>: uniq invocation. (line 48)
18346 * _POSIX2_VERSION <3>: sort invocation. (line 460)
18347 * _POSIX2_VERSION <4>: tail invocation. (line 204)
18348 * _POSIX2_VERSION: Standards conformance.
18350 * abbreviations for months: Calendar date items. (line 40)
18351 * access permission tests: Access permission tests.
18353 * access permissions, changing: chmod invocation. (line 6)
18354 * access time: dd invocation. (line 260)
18355 * access time, changing: touch invocation. (line 89)
18356 * access time, printing or sorting files by: Sorting the output.
18358 * access time, show the most recent: du invocation. (line 238)
18359 * across columns: pr invocation. (line 71)
18360 * across, listing files: General output formatting.
18362 * adding permissions: Setting Permissions. (line 38)
18363 * addition: Numeric expressions. (line 11)
18364 * ago in date strings: Relative items in date strings.
18366 * all lines, grouping: uniq invocation. (line 107)
18367 * all repeated lines, outputting: uniq invocation. (line 73)
18368 * alnum: Character sets. (line 94)
18369 * alpha: Character sets. (line 97)
18370 * alternate ebcdic, converting to: dd invocation. (line 99)
18371 * always color option: General output formatting.
18373 * always interactive option: rm invocation. (line 68)
18374 * am i: who invocation. (line 22)
18375 * am in date strings: Time of day items. (line 21)
18376 * and operator <1>: Relations for expr. (line 17)
18377 * and operator: Connectives for test.
18379 * append: dd invocation. (line 195)
18380 * appending to the output file: dd invocation. (line 195)
18381 * appropriate privileges <1>: nice invocation. (line 6)
18382 * appropriate privileges <2>: hostname invocation. (line 6)
18383 * appropriate privileges <3>: Setting the time. (line 6)
18384 * appropriate privileges: install invocation. (line 103)
18385 * arbitrary date strings, parsing: Options for date. (line 11)
18386 * arbitrary text, displaying: echo invocation. (line 6)
18387 * arch: arch invocation. (line 6)
18388 * arithmetic tests: Numeric tests. (line 6)
18389 * ASCII dump of files: od invocation. (line 6)
18390 * ascii, converting to: dd invocation. (line 90)
18391 * atime, changing: touch invocation. (line 89)
18392 * atime, printing or sorting files by: Sorting the output. (line 45)
18393 * atime, show the most recent: du invocation. (line 238)
18394 * attributes, file: Changing file attributes.
18396 * authors of parse_datetime: Authors of parse_datetime.
18398 * auto color option: General output formatting.
18400 * automounter file systems: df invocation. (line 61)
18401 * b for block special file: mknod invocation. (line 39)
18402 * background jobs, stopping at terminal write: Local. (line 44)
18403 * backslash escapes <1>: echo invocation. (line 28)
18404 * backslash escapes: Character sets. (line 13)
18405 * backslash sequences for file names: Formatting the file names.
18407 * backup files, ignoring: Which files are listed.
18409 * backup options: Backup options. (line 6)
18410 * backup suffix: Backup options. (line 54)
18411 * backups, making <1>: ln invocation. (line 96)
18412 * backups, making <2>: mv invocation. (line 67)
18413 * backups, making <3>: install invocation. (line 46)
18414 * backups, making <4>: cp invocation. (line 96)
18415 * backups, making: Backup options. (line 14)
18416 * backups, making only: cp invocation. (line 66)
18417 * base64: base64 invocation. (line 6)
18418 * Base64 decoding: base64 invocation. (line 33)
18419 * base64 encoding: base64 invocation. (line 6)
18420 * basename: basename invocation. (line 6)
18421 * baud rate, setting: Special. (line 43)
18422 * beeping at input buffer full: Input. (line 61)
18423 * beginning of time: Time conversion specifiers.
18425 * beginning of time, for POSIX: Seconds since the Epoch.
18427 * Bellovin, Steven M.: Authors of parse_datetime.
18429 * Berets, Jim: Authors of parse_datetime.
18431 * Berry, K. <1>: Authors of parse_datetime.
18433 * Berry, K.: Introduction. (line 22)
18434 * binary: dd invocation. (line 278)
18435 * binary I/O: dd invocation. (line 278)
18436 * binary input files: md5sum invocation. (line 43)
18437 * bind mount <1>: stat invocation. (line 166)
18438 * bind mount: rm invocation. (line 78)
18439 * blank: Character sets. (line 100)
18440 * blank lines, numbering: nl invocation. (line 90)
18441 * blanks, ignoring leading: sort invocation. (line 91)
18442 * block (space-padding): dd invocation. (line 107)
18443 * block size <1>: dd invocation. (line 37)
18444 * block size: Block size. (line 6)
18445 * block size of conversion: dd invocation. (line 44)
18446 * block size of input: dd invocation. (line 29)
18447 * block size of output: dd invocation. (line 33)
18448 * block special check: File type tests. (line 11)
18449 * block special files: mknod invocation. (line 13)
18450 * block special files, creating: mknod invocation. (line 6)
18451 * BLOCK_SIZE: Block size. (line 12)
18452 * BLOCKSIZE: Block size. (line 12)
18453 * body, numbering: nl invocation. (line 19)
18454 * Bourne shell syntax for color setup: dircolors invocation.
18456 * breaks, cause interrupts: Input. (line 12)
18457 * breaks, ignoring: Input. (line 9)
18458 * brkint: Input. (line 12)
18459 * bs: dd invocation. (line 37)
18460 * BSD output: md5sum invocation. (line 99)
18461 * BSD sum: sum invocation. (line 27)
18462 * BSD tail: tail invocation. (line 21)
18463 * BSD touch compatibility: touch invocation. (line 107)
18464 * bsN: Output. (line 56)
18465 * btrfs file system type: df invocation. (line 243)
18466 * bugs, reporting: Introduction. (line 13)
18467 * built-in shell commands, conflicts with <1>: sleep invocation.
18469 * built-in shell commands, conflicts with <2>: kill invocation.
18471 * built-in shell commands, conflicts with <3>: nice invocation.
18473 * built-in shell commands, conflicts with <4>: pwd invocation.
18475 * built-in shell commands, conflicts with <5>: test invocation.
18477 * built-in shell commands, conflicts with <6>: printf invocation.
18479 * built-in shell commands, conflicts with <7>: echo invocation.
18481 * built-in shell commands, conflicts with <8>: stat invocation.
18483 * built-in shell commands, conflicts with: mknod invocation. (line 27)
18484 * byte count: wc invocation. (line 6)
18485 * byte-swapping: dd invocation. (line 141)
18486 * c for character special file: mknod invocation. (line 42)
18487 * C shell syntax for color setup: dircolors invocation.
18489 * C-s/C-q flow control: Input. (line 41)
18490 * calendar date item: Calendar date items. (line 6)
18491 * canonical file name <1>: realpath invocation. (line 6)
18492 * canonical file name: readlink invocation. (line 6)
18493 * canonicalize a file name <1>: realpath invocation. (line 6)
18494 * canonicalize a file name: readlink invocation. (line 6)
18495 * case folding: sort invocation. (line 107)
18496 * case translation: Local. (line 37)
18497 * case, ignored in dates: General date syntax. (line 69)
18498 * cat: cat invocation. (line 6)
18499 * cbreak: Combination. (line 51)
18500 * cbs: dd invocation. (line 44)
18501 * CD-ROM file system type: df invocation. (line 248)
18502 * cdfs file system type: df invocation. (line 248)
18503 * cdtrdsr: Control. (line 47)
18504 * change or print terminal settings: stty invocation. (line 6)
18505 * change SELinux context: chcon invocation. (line 6)
18506 * changed files, verbosely describing: chgrp invocation. (line 23)
18507 * changed owners, verbosely describing: chown invocation. (line 74)
18508 * changing access permissions: chmod invocation. (line 6)
18509 * changing file attributes: Changing file attributes.
18511 * changing file ownership: chown invocation. (line 6)
18512 * changing file timestamps: touch invocation. (line 6)
18513 * changing group ownership <1>: chgrp invocation. (line 6)
18514 * changing group ownership: chown invocation. (line 6)
18515 * changing security context: chcon invocation. (line 6)
18516 * changing special mode bits: Changing Special Mode Bits.
18518 * character classes: Character sets. (line 81)
18519 * character count: wc invocation. (line 6)
18520 * character size: Control. (line 26)
18521 * character special check: File type tests. (line 14)
18522 * character special files: mknod invocation. (line 13)
18523 * character special files, creating: mknod invocation. (line 6)
18524 * characters, special: Characters. (line 6)
18525 * chcon: chcon invocation. (line 6)
18526 * check file types: test invocation. (line 6)
18527 * checking for sortedness: sort invocation. (line 23)
18528 * checksum, 128-bit: md5sum invocation. (line 6)
18529 * checksum, 16-bit: sum invocation. (line 6)
18530 * checksum, 160-bit: sha1sum invocation. (line 6)
18531 * checksum, 224-bit: sha2 utilities. (line 6)
18532 * checksum, 256-bit: sha2 utilities. (line 6)
18533 * checksum, 384-bit: sha2 utilities. (line 6)
18534 * checksum, 512-bit: sha2 utilities. (line 6)
18535 * chgrp: chgrp invocation. (line 6)
18536 * chmod: chmod invocation. (line 6)
18537 * chown: chown invocation. (line 6)
18538 * chroot: chroot invocation. (line 6)
18539 * cio: dd invocation. (line 205)
18540 * cksum: cksum invocation. (line 6)
18541 * clocal: Control. (line 41)
18542 * clock skew <1>: touch invocation. (line 20)
18543 * clock skew: Formatting file timestamps.
18545 * clone: cp invocation. (line 314)
18546 * cmspar: Control. (line 17)
18547 * cntrl: Character sets. (line 103)
18548 * color database, printing: dircolors invocation.
18550 * color setup: dircolors invocation.
18552 * color, distinguishing file types with: General output formatting.
18554 * cols: Special. (line 27)
18555 * column to wrap data after: base64 invocation. (line 25)
18556 * COLUMNS: Special. (line 30)
18557 * columns: Special. (line 27)
18558 * COLUMNS: General output formatting.
18560 * combination settings: Combination. (line 6)
18561 * combined date and time of day item: Combined date and time of day items.
18563 * comm: comm invocation. (line 6)
18564 * command-line operands to shuffle: shuf invocation. (line 21)
18565 * commands for controlling processes: Process control. (line 6)
18566 * commands for delaying: Delaying. (line 6)
18567 * commands for exit status: Conditions. (line 6)
18568 * commands for file name manipulation: File name manipulation.
18570 * commands for invoking other commands: Modified command invocation.
18572 * commands for printing text: Printing text. (line 6)
18573 * commands for printing the working context: Working context. (line 6)
18574 * commands for printing user information: User information. (line 6)
18575 * commands for redirection: Redirection. (line 6)
18576 * commands for SELinux context: SELinux context. (line 6)
18577 * commands for system context: System context. (line 6)
18578 * commas, outputting between files: General output formatting.
18580 * comments, in dates: General date syntax. (line 69)
18581 * common field, joining on: join invocation. (line 6)
18582 * common lines: comm invocation. (line 19)
18583 * common options: Common options. (line 6)
18584 * compare values: test invocation. (line 6)
18585 * comparing sorted files: comm invocation. (line 6)
18586 * comparison operators: Relations for expr. (line 21)
18587 * concatenate and write files: cat invocation. (line 6)
18588 * concurrent I/O: dd invocation. (line 205)
18589 * conditional executability: Conditional Executability.
18591 * conditions: Conditions. (line 6)
18592 * conflicts with shell built-ins <1>: sleep invocation. (line 36)
18593 * conflicts with shell built-ins <2>: kill invocation. (line 16)
18594 * conflicts with shell built-ins <3>: nice invocation. (line 43)
18595 * conflicts with shell built-ins <4>: pwd invocation. (line 33)
18596 * conflicts with shell built-ins <5>: test invocation. (line 28)
18597 * conflicts with shell built-ins <6>: printf invocation. (line 19)
18598 * conflicts with shell built-ins <7>: echo invocation. (line 13)
18599 * conflicts with shell built-ins <8>: stat invocation. (line 18)
18600 * conflicts with shell built-ins: mknod invocation. (line 27)
18601 * connectives, logical <1>: Relations for expr. (line 6)
18602 * connectives, logical: Connectives for test.
18604 * constant parity: Control. (line 17)
18605 * context splitting: csplit invocation. (line 6)
18606 * context, system: System context. (line 6)
18607 * control characters, using ^C: Local. (line 54)
18608 * control settings: Control. (line 6)
18609 * controlling terminal: dd invocation. (line 266)
18610 * conv: dd invocation. (line 84)
18611 * conversion block size: dd invocation. (line 44)
18612 * conversion specifiers, date: Date conversion specifiers.
18614 * conversion specifiers, literal: Literal conversion specifiers.
18616 * conversion specifiers, time: Time conversion specifiers.
18618 * converting tabs to spaces: expand invocation. (line 6)
18619 * converting while copying a file: dd invocation. (line 6)
18620 * cooked: Combination. (line 36)
18621 * Coordinated Universal Time: Options for date. (line 111)
18622 * copy on write: cp invocation. (line 314)
18623 * copying directories recursively: cp invocation. (line 115)
18624 * copying existing permissions: Copying Permissions. (line 6)
18625 * copying files: cat invocation. (line 6)
18626 * copying files and directories: cp invocation. (line 6)
18627 * copying files and setting attributes: install invocation. (line 6)
18628 * core utilities: Top. (line 33)
18629 * count: dd invocation. (line 59)
18630 * count_bytes: dd invocation. (line 299)
18631 * COW: cp invocation. (line 314)
18632 * cp: cp invocation. (line 6)
18633 * crashes and corruption: sync invocation. (line 12)
18634 * CRC checksum: cksum invocation. (line 6)
18635 * cread: Control. (line 38)
18636 * creating directories: mkdir invocation. (line 6)
18637 * creating FIFOs (named pipes): mkfifo invocation. (line 6)
18638 * creating links (hard only): link invocation. (line 6)
18639 * creating links (hard or soft): ln invocation. (line 6)
18640 * creating output file, avoiding: dd invocation. (line 161)
18641 * creating output file, requiring: dd invocation. (line 156)
18642 * crN: Output. (line 46)
18643 * crown margin: fmt invocation. (line 39)
18644 * crt: Combination. (line 75)
18645 * crterase: Local. (line 22)
18646 * crtkill: Local. (line 59)
18647 * crtscts: Control. (line 44)
18648 * csh syntax for color setup: dircolors invocation.
18650 * csN: Control. (line 26)
18651 * csplit: csplit invocation. (line 6)
18652 * cstopb: Control. (line 34)
18653 * ctime, printing or sorting by: Sorting the output. (line 13)
18654 * ctime, show the most recent: du invocation. (line 228)
18655 * ctlecho: Local. (line 54)
18656 * current working directory, printing: pwd invocation. (line 6)
18657 * cut: cut invocation. (line 6)
18658 * cyclic redundancy check: cksum invocation. (line 6)
18659 * data, erasing: shred invocation. (line 6)
18660 * database for color setup, printing: dircolors invocation.
18662 * date: date invocation. (line 6)
18663 * date and time of day format, ISO 8601: Combined date and time of day items.
18665 * date conversion specifiers: Date conversion specifiers.
18667 * date format, ISO 8601: Calendar date items. (line 32)
18668 * date input formats: Date input formats. (line 6)
18669 * date options: Options for date. (line 6)
18670 * date strings, parsing: Options for date. (line 11)
18671 * day in date strings: Relative items in date strings.
18673 * day of week item: Day of week items. (line 6)
18674 * dd: dd invocation. (line 6)
18675 * dec: Combination. (line 78)
18676 * decctlq: Combination. (line 63)
18677 * Decode base64 data: base64 invocation. (line 33)
18678 * delay for a specified time: sleep invocation. (line 6)
18679 * delaying commands: Delaying. (line 6)
18680 * deleting characters: Squeezing. (line 6)
18681 * dereferencing symbolic links: ln invocation. (line 49)
18682 * descriptor follow option: tail invocation. (line 51)
18683 * destination directory <1>: ln invocation. (line 198)
18684 * destination directory <2>: mv invocation. (line 116)
18685 * destination directory <3>: install invocation. (line 140)
18686 * destination directory <4>: cp invocation. (line 400)
18687 * destination directory: Target directory. (line 15)
18688 * destinations, multiple output: tee invocation. (line 6)
18689 * device file, disk: df invocation. (line 36)
18690 * df: df invocation. (line 6)
18691 * DF_BLOCK_SIZE: Block size. (line 12)
18692 * diagnostic: chcon invocation. (line 66)
18693 * dictionary order: sort invocation. (line 100)
18694 * differing lines: comm invocation. (line 19)
18695 * digit: Character sets. (line 106)
18696 * dir: dir invocation. (line 6)
18697 * dircolors: dircolors invocation.
18699 * direct: dd invocation. (line 212)
18700 * direct I/O: dd invocation. (line 212)
18701 * directories, copying: cp invocation. (line 6)
18702 * directories, copying recursively: cp invocation. (line 115)
18703 * directories, creating: mkdir invocation. (line 6)
18704 * directories, creating with given attributes: install invocation.
18706 * directories, removing: rm invocation. (line 40)
18707 * directories, removing (recursively): rm invocation. (line 110)
18708 * directories, removing empty: rmdir invocation. (line 6)
18709 * directory: dd invocation. (line 220)
18710 * directory check: File type tests. (line 17)
18711 * directory components, printing: dirname invocation. (line 6)
18712 * directory deletion, ignoring failures: rmdir invocation. (line 19)
18713 * directory deletion, reporting: rmdir invocation. (line 33)
18714 * directory I/O: dd invocation. (line 220)
18715 * directory listing: ls invocation. (line 6)
18716 * directory listing, brief: dir invocation. (line 6)
18717 * directory listing, recursive: Which files are listed.
18719 * directory listing, verbose: vdir invocation. (line 6)
18720 * directory order, listing by: Sorting the output. (line 20)
18721 * directory, creating temporary: mktemp invocation. (line 6)
18722 * directory, stripping from file names: basename invocation. (line 6)
18723 * dired Emacs mode support: What information is listed.
18725 * dirname: dirname invocation. (line 6)
18726 * disabling special characters: Characters. (line 13)
18727 * disambiguating group names and IDs: Disambiguating names and IDs.
18729 * discarding file cache: dd invocation. (line 237)
18730 * disk allocation: What information is listed.
18732 * disk device file: df invocation. (line 36)
18733 * disk usage: Disk usage. (line 6)
18734 * disk usage by file system: df invocation. (line 6)
18735 * disk usage for files: du invocation. (line 6)
18736 * displacement of dates: Relative items in date strings.
18738 * displaying text: echo invocation. (line 6)
18739 * displaying value of a symbolic link: readlink invocation. (line 6)
18740 * division: Numeric expressions. (line 15)
18741 * do nothing, successfully: true invocation. (line 6)
18742 * do nothing, unsuccessfully: false invocation. (line 6)
18743 * DOS file system: df invocation. (line 252)
18744 * double spacing: pr invocation. (line 84)
18745 * down columns: pr invocation. (line 56)
18746 * dsusp: Characters. (line 53)
18747 * dsync: dd invocation. (line 225)
18748 * DTR/DSR flow control: Control. (line 47)
18749 * du: du invocation. (line 6)
18750 * DU_BLOCK_SIZE: Block size. (line 12)
18751 * DVD file system type: df invocation. (line 248)
18752 * ebcdic, converting to: dd invocation. (line 95)
18753 * echo <1>: Local. (line 18)
18754 * echo: echo invocation. (line 6)
18755 * echoctl: Local. (line 54)
18756 * echoe: Local. (line 22)
18757 * echok: Local. (line 26)
18758 * echoke: Local. (line 59)
18759 * echonl: Local. (line 29)
18760 * echoprt: Local. (line 49)
18761 * effective user and group IDs, printing: id invocation. (line 6)
18762 * effective user ID, printing: whoami invocation. (line 6)
18763 * Eggert, Paul: Authors of parse_datetime.
18765 * eight-bit characters <1>: Combination. (line 55)
18766 * eight-bit characters: Control. (line 26)
18767 * eight-bit input: Input. (line 25)
18768 * ek: Combination. (line 22)
18769 * empty files, creating: touch invocation. (line 13)
18770 * empty lines, numbering: nl invocation. (line 90)
18771 * entire files, output of: Output of entire files.
18773 * env: env invocation. (line 6)
18774 * environment variables, printing: printenv invocation. (line 6)
18775 * environment, printing: env invocation. (line 52)
18776 * environment, running a program in a modified: env invocation.
18778 * eof: Characters. (line 32)
18779 * eol: Characters. (line 35)
18780 * eol2: Characters. (line 38)
18781 * epoch, for POSIX: Seconds since the Epoch.
18783 * epoch, seconds since: Time conversion specifiers.
18785 * equal string check: String tests. (line 22)
18786 * equivalence classes: Character sets. (line 132)
18787 * erase: Characters. (line 26)
18788 * erasing data: shred invocation. (line 6)
18789 * error messages, omitting <1>: chmod invocation. (line 51)
18790 * error messages, omitting <2>: chgrp invocation. (line 29)
18791 * error messages, omitting: chown invocation. (line 80)
18792 * evaluation of expressions: expr invocation. (line 6)
18793 * even parity: Control. (line 13)
18794 * evenp: Combination. (line 9)
18795 * exabyte, definition of: Block size. (line 126)
18796 * examples of date: Examples of date. (line 6)
18797 * examples of expr: Examples of expr. (line 6)
18798 * exbibyte, definition of: Block size. (line 130)
18799 * excl: dd invocation. (line 156)
18800 * excluding files from du: du invocation. (line 284)
18801 * executable file check: Access permission tests.
18803 * executables and file type, marking: General output formatting.
18805 * execute/search permission: Mode Structure. (line 21)
18806 * execute/search permission, symbolic: Setting Permissions. (line 63)
18807 * existence-of-file check: File characteristic tests.
18809 * existing backup method: Backup options. (line 41)
18810 * exit status commands: Conditions. (line 6)
18811 * exit status of chroot: chroot invocation. (line 70)
18812 * exit status of env: env invocation. (line 104)
18813 * exit status of expr: expr invocation. (line 48)
18814 * exit status of false: false invocation. (line 6)
18815 * exit status of ls: ls invocation. (line 31)
18816 * exit status of mktemp: mktemp invocation. (line 145)
18817 * exit status of nice: nice invocation. (line 67)
18818 * exit status of nohup: nohup invocation. (line 52)
18819 * exit status of pathchk: pathchk invocation. (line 55)
18820 * exit status of printenv: printenv invocation. (line 26)
18821 * exit status of realpath: realpath invocation. (line 93)
18822 * exit status of runcon: runcon invocation. (line 51)
18823 * exit status of sort: sort invocation. (line 67)
18824 * exit status of stdbuf: stdbuf invocation. (line 72)
18825 * exit status of test: test invocation. (line 43)
18826 * exit status of timeout: timeout invocation. (line 63)
18827 * exit status of true: true invocation. (line 6)
18828 * exit status of tty: tty invocation. (line 22)
18829 * expand: expand invocation. (line 6)
18830 * expr: expr invocation. (line 6)
18831 * expression evaluation <1>: expr invocation. (line 6)
18832 * expression evaluation: test invocation. (line 6)
18833 * expressions, numeric: Numeric expressions. (line 6)
18834 * expressions, string: String expressions. (line 6)
18835 * ext2 file system type: df invocation. (line 243)
18836 * ext3 file system type: df invocation. (line 243)
18837 * ext4 file system type: df invocation. (line 243)
18838 * extended attributes, xattr <1>: mv invocation. (line 39)
18839 * extended attributes, xattr: install invocation. (line 39)
18840 * extension, sorting files by: Sorting the output. (line 70)
18841 * factor: factor invocation. (line 6)
18842 * failure exit status: false invocation. (line 6)
18843 * false: false invocation. (line 6)
18844 * fat file system file: df invocation. (line 252)
18845 * fdatasync: dd invocation. (line 174)
18846 * ffN: Output. (line 64)
18847 * field separator character: sort invocation. (line 370)
18848 * fields, padding numeric: Padding and other flags.
18850 * FIFOs, creating: mkfifo invocation. (line 6)
18851 * file attributes, changing: Changing file attributes.
18853 * file characteristic tests: File characteristic tests.
18855 * file contents, dumping unambiguously: od invocation. (line 6)
18856 * file information, preserving: cp invocation. (line 280)
18857 * file information, preserving, extended attributes, xattr: cp invocation.
18859 * file mode bits, numeric: Numeric Modes. (line 6)
18860 * file name manipulation: File name manipulation.
18862 * file names, canonicalization: realpath invocation. (line 6)
18863 * file names, checking validity and portability: pathchk invocation.
18865 * file names, creating temporary: mktemp invocation. (line 6)
18866 * file names, stripping directory and suffix: basename invocation.
18868 * file offset radix: od invocation. (line 44)
18869 * file ownership, changing: chown invocation. (line 6)
18870 * file sizes: du invocation. (line 55)
18871 * file space usage: du invocation. (line 6)
18872 * file status: stat invocation. (line 6)
18873 * file system disk usage: df invocation. (line 6)
18874 * file system sizes: df invocation. (line 68)
18875 * file system space, retrieving current data more slowly: df invocation.
18877 * file system space, retrieving old data more quickly: df invocation.
18879 * file system status: stat invocation. (line 6)
18880 * file system types, limiting output to certain: df invocation.
18882 * file system types, printing: df invocation. (line 230)
18883 * file systems: stat invocation. (line 33)
18884 * file systems and hard links: ln invocation. (line 6)
18885 * file systems, omitting copying to different: cp invocation. (line 429)
18886 * file timestamp resolution: touch invocation. (line 31)
18887 * file timestamps, changing: touch invocation. (line 6)
18888 * file type and executables, marking: General output formatting.
18890 * file type tests: File type tests. (line 6)
18891 * file type, marking: General output formatting.
18893 * file types: Special file types. (line 10)
18894 * file types, special: Special file types. (line 6)
18895 * file utilities: Top. (line 33)
18896 * files beginning with -, removing: rm invocation. (line 117)
18897 * files, copying: cp invocation. (line 6)
18898 * files, creating: truncate invocation. (line 13)
18899 * fingerprint, 128-bit: md5sum invocation. (line 6)
18900 * fingerprint, 160-bit: sha1sum invocation. (line 6)
18901 * fingerprint, 224-bit: sha2 utilities. (line 6)
18902 * fingerprint, 256-bit: sha2 utilities. (line 6)
18903 * fingerprint, 384-bit: sha2 utilities. (line 6)
18904 * fingerprint, 512-bit: sha2 utilities. (line 6)
18905 * first in date strings: General date syntax. (line 28)
18906 * first part of files, outputting: head invocation. (line 6)
18907 * fixed-length records, converting to variable-length: dd invocation.
18909 * floating point: Floating point. (line 6)
18910 * flow control, hardware: Control. (line 44)
18911 * flow control, software: Input. (line 46)
18912 * flushing, disabling: Local. (line 33)
18913 * fmt: fmt invocation. (line 6)
18914 * fold: fold invocation. (line 6)
18915 * folding long input lines: fold invocation. (line 6)
18916 * footers, numbering: nl invocation. (line 19)
18917 * force deletion: shred invocation. (line 114)
18918 * formatting file contents: Formatting file contents.
18920 * formatting of numbers in seq: seq invocation. (line 28)
18921 * formatting times <1>: date invocation. (line 21)
18922 * formatting times: pr invocation. (line 88)
18923 * fortnight in date strings: Relative items in date strings.
18925 * fsync: dd invocation. (line 178)
18926 * fullblock: dd invocation. (line 287)
18927 * general date syntax: General date syntax. (line 6)
18928 * general numeric sort: sort invocation. (line 123)
18929 * gibibyte, definition of: Block size. (line 109)
18930 * gigabyte, definition of: Block size. (line 105)
18931 * giving away permissions: Umask and Protection.
18933 * GMT: Options for date. (line 111)
18934 * grand total of disk size, usage and available space: df invocation.
18936 * grand total of disk space: du invocation. (line 65)
18937 * graph: Character sets. (line 109)
18938 * Greenwich Mean Time: Options for date. (line 111)
18939 * group IDs, disambiguating: Disambiguating names and IDs.
18941 * group names, disambiguating: Disambiguating names and IDs.
18943 * group owner, default: Mode Structure. (line 34)
18944 * group ownership of installed files, setting: install invocation.
18946 * group ownership, changing <1>: chgrp invocation. (line 6)
18947 * group ownership, changing: chown invocation. (line 6)
18948 * group, permissions for: Setting Permissions. (line 26)
18949 * groups: groups invocation. (line 6)
18950 * growing files: tail invocation. (line 51)
18951 * hangups, immunity to: nohup invocation. (line 6)
18952 * hard link check: File characteristic tests.
18954 * hard link, defined: ln invocation. (line 37)
18955 * hard links: dd invocation. (line 275)
18956 * hard links to directories: ln invocation. (line 102)
18957 * hard links to symbolic links: ln invocation. (line 211)
18958 * hard links, counting in du: du invocation. (line 134)
18959 * hard links, creating <1>: ln invocation. (line 6)
18960 * hard links, creating: link invocation. (line 6)
18961 * hard links, preserving: cp invocation. (line 130)
18962 * hardware class: uname invocation. (line 50)
18963 * hardware flow control: Control. (line 44)
18964 * hardware platform: uname invocation. (line 43)
18965 * hardware type: uname invocation. (line 50)
18966 * hat notation for control characters: Local. (line 54)
18967 * head: head invocation. (line 6)
18968 * head of output: shuf invocation. (line 34)
18969 * headers, numbering: nl invocation. (line 19)
18970 * help, online: Common options. (line 40)
18971 * hex dump of files: od invocation. (line 6)
18972 * holes, copying files with: cp invocation. (line 346)
18973 * holes, creating files with: truncate invocation. (line 15)
18974 * horizontal, listing files: General output formatting.
18976 * host processor type: uname invocation. (line 59)
18977 * hostid: hostid invocation. (line 6)
18978 * hostname <1>: hostname invocation. (line 6)
18979 * hostname: uname invocation. (line 55)
18980 * hour in date strings: Relative items in date strings.
18982 * human numeric sort: sort invocation. (line 146)
18983 * human-readable output <1>: du invocation. (line 106)
18984 * human-readable output <2>: df invocation. (line 86)
18985 * human-readable output <3>: What information is listed.
18987 * human-readable output: Block size. (line 44)
18988 * hup[cl]: Control. (line 30)
18989 * hurd, author, printing: What information is listed.
18991 * ibs: dd invocation. (line 29)
18992 * icanon: Local. (line 11)
18993 * icrnl: Input. (line 35)
18994 * id: id invocation. (line 6)
18995 * idle time: who invocation. (line 88)
18996 * IEEE floating point: Floating point. (line 6)
18997 * iexten: Local. (line 15)
18998 * if: dd invocation. (line 21)
18999 * iflag: dd invocation. (line 184)
19000 * ignbrk: Input. (line 9)
19001 * igncr: Input. (line 32)
19002 * ignore file systems: df invocation. (line 61)
19003 * Ignore garbage in base64 stream: base64 invocation. (line 40)
19004 * ignoring case: sort invocation. (line 107)
19005 * ignpar: Input. (line 15)
19006 * imaxbel: Input. (line 61)
19007 * immunity to hangups: nohup invocation. (line 6)
19008 * implementation, hardware: uname invocation. (line 43)
19009 * indenting lines: pr invocation. (line 191)
19010 * index: String expressions. (line 45)
19011 * information, about current users: who invocation. (line 6)
19012 * initial part of files, outputting: head invocation. (line 6)
19013 * initial tabs, converting: expand invocation. (line 37)
19014 * inlcr: Input. (line 28)
19015 * inode number, printing: What information is listed.
19017 * inode usage: df invocation. (line 97)
19018 * inode usage, dereferencing in du: du invocation. (line 113)
19019 * inode, and hard links: ln invocation. (line 37)
19020 * inodes, written buffered: sync invocation. (line 6)
19021 * inpck: Input. (line 22)
19022 * input block size: dd invocation. (line 29)
19023 * input encoding, UTF-8: Input. (line 38)
19024 * input range to shuffle: shuf invocation. (line 25)
19025 * input settings: Input. (line 6)
19026 * input tabs: pr invocation. (line 108)
19027 * install: install invocation. (line 6)
19028 * intr: Characters. (line 20)
19029 * invocation of commands, modified: Modified command invocation.
19031 * isig: Local. (line 7)
19032 * ISO 8601 date and time of day format: Combined date and time of day items.
19034 * ISO 8601 date format: Calendar date items. (line 32)
19035 * ISO/IEC 10646: printf invocation. (line 78)
19036 * iso9660 file system type: df invocation. (line 248)
19037 * ISO9660 file system type: df invocation. (line 248)
19038 * ispeed: Special. (line 17)
19039 * istrip: Input. (line 25)
19040 * items in date strings: General date syntax. (line 6)
19041 * iterations, selecting the number of: shred invocation. (line 119)
19042 * iuclc: Input. (line 51)
19043 * iutf8: Input. (line 38)
19044 * ixany: Input. (line 57)
19045 * ixoff: Input. (line 46)
19046 * ixon: Input. (line 41)
19047 * join: join invocation. (line 6)
19048 * kernel name: uname invocation. (line 74)
19049 * kernel release: uname invocation. (line 70)
19050 * kernel version: uname invocation. (line 85)
19051 * kibibyte, definition of: Block size. (line 91)
19052 * kibibytes for file sizes: du invocation. (line 123)
19053 * kibibytes for file system sizes: df invocation. (line 103)
19054 * kill <1>: kill invocation. (line 6)
19055 * kill: Characters. (line 29)
19056 * kilobyte, definition of: Block size. (line 86)
19057 * Knuth, Donald E.: fmt invocation. (line 22)
19058 * language, in dates: General date syntax. (line 44)
19059 * last DAY <1>: Day of week items. (line 15)
19060 * last DAY: Options for date. (line 11)
19061 * last in date strings: General date syntax. (line 28)
19062 * last modified dates, displaying in du: du invocation. (line 213)
19063 * last part of files, outputting: tail invocation. (line 6)
19064 * LC_ALL <1>: ls invocation. (line 18)
19065 * LC_ALL: sort invocation. (line 58)
19066 * LC_COLLATE <1>: Relations for expr. (line 21)
19067 * LC_COLLATE <2>: join invocation. (line 18)
19068 * LC_COLLATE <3>: comm invocation. (line 13)
19069 * LC_COLLATE <4>: uniq invocation. (line 23)
19070 * LC_COLLATE: sort invocation. (line 58)
19071 * LC_CTYPE <1>: printf invocation. (line 78)
19072 * LC_CTYPE: sort invocation. (line 91)
19073 * LC_MESSAGES: pr invocation. (line 16)
19074 * LC_NUMERIC <1>: printf invocation. (line 65)
19075 * LC_NUMERIC <2>: sort invocation. (line 123)
19076 * LC_NUMERIC <3>: Floating point. (line 17)
19077 * LC_NUMERIC: Block size. (line 64)
19078 * LC_TIME <1>: date invocation. (line 11)
19079 * LC_TIME <2>: du invocation. (line 248)
19080 * LC_TIME <3>: Formatting file timestamps.
19082 * LC_TIME <4>: sort invocation. (line 174)
19083 * LC_TIME: pr invocation. (line 95)
19084 * LCASE: Combination. (line 71)
19085 * lcase: Combination. (line 71)
19086 * lcase, converting to: dd invocation. (line 118)
19087 * lchown <1>: chgrp invocation. (line 33)
19088 * lchown: chown invocation. (line 109)
19089 * leading directories, creating missing: install invocation. (line 77)
19090 * leading directory components, stripping: basename invocation.
19092 * leap seconds <1>: Seconds since the Epoch.
19094 * leap seconds <2>: Time of day items. (line 14)
19095 * leap seconds <3>: General date syntax. (line 75)
19096 * leap seconds <4>: Examples of date. (line 108)
19097 * leap seconds <5>: Options for date. (line 111)
19098 * leap seconds <6>: Time conversion specifiers.
19100 * leap seconds: touch invocation. (line 142)
19101 * left margin: pr invocation. (line 191)
19102 * length: String expressions. (line 49)
19103 * limiting output of du: du invocation. (line 78)
19104 * line: Special. (line 37)
19105 * line buffered: stdbuf invocation. (line 6)
19106 * line count: wc invocation. (line 6)
19107 * line numbering: nl invocation. (line 6)
19108 * line settings of terminal: stty invocation. (line 6)
19109 * line-breaking: fmt invocation. (line 22)
19110 * line-by-line comparison: comm invocation. (line 6)
19111 * LINES: Special. (line 30)
19112 * link: link invocation. (line 6)
19113 * links, creating <1>: ln invocation. (line 6)
19114 * links, creating: link invocation. (line 6)
19115 * Linux file system types: df invocation. (line 243)
19116 * literal conversion specifiers: Literal conversion specifiers.
19118 * litout: Combination. (line 59)
19119 * ln: ln invocation. (line 6)
19120 * ln format for nl: nl invocation. (line 100)
19121 * lnext: Characters. (line 62)
19122 * local file system types: df invocation. (line 243)
19123 * local settings: Local. (line 6)
19124 * logging out and continuing to run: nohup invocation. (line 6)
19125 * logical and operator <1>: Relations for expr. (line 17)
19126 * logical and operator: Connectives for test.
19128 * logical connectives <1>: Relations for expr. (line 6)
19129 * logical connectives: Connectives for test.
19131 * logical or operator <1>: Relations for expr. (line 11)
19132 * logical or operator: Connectives for test.
19134 * logical pages, numbering on: nl invocation. (line 14)
19135 * login name, printing: logname invocation. (line 6)
19136 * login sessions, printing users with: users invocation. (line 6)
19137 * login time: who invocation. (line 12)
19138 * logname: logname invocation. (line 6)
19139 * long ls format: What information is listed.
19141 * lower: Character sets. (line 113)
19142 * lowercase, translating to output: Output. (line 13)
19143 * ls: ls invocation. (line 6)
19144 * LS_BLOCK_SIZE: Block size. (line 12)
19145 * LS_COLORS <1>: dircolors invocation.
19147 * LS_COLORS: General output formatting.
19149 * lutimes: touch invocation. (line 111)
19150 * machine type: uname invocation. (line 50)
19151 * machine-readable stty output: stty invocation. (line 47)
19152 * MacKenzie, D.: Introduction. (line 22)
19153 * MacKenzie, David: Authors of parse_datetime.
19155 * Makefiles, installing programs in: install invocation. (line 34)
19156 * manipulating files: Basic operations. (line 6)
19157 * manipulation of file names: File name manipulation.
19159 * mark parity: Control. (line 17)
19160 * match: String expressions. (line 36)
19161 * matching patterns: String expressions. (line 11)
19162 * MD5: md5sum invocation. (line 6)
19163 * md5sum: md5sum invocation. (line 6)
19164 * mebibyte, definition of: Block size. (line 102)
19165 * mebibytes for file sizes: du invocation. (line 138)
19166 * megabyte, definition of: Block size. (line 98)
19167 * merging files: paste invocation. (line 6)
19168 * merging files in parallel: pr invocation. (line 6)
19169 * merging sorted files: sort invocation. (line 39)
19170 * message status: who invocation. (line 98)
19171 * message-digest, 128-bit: md5sum invocation. (line 6)
19172 * message-digest, 160-bit: sha1sum invocation. (line 6)
19173 * message-digest, 224-bit: sha2 utilities. (line 6)
19174 * message-digest, 256-bit: sha2 utilities. (line 6)
19175 * message-digest, 384-bit: sha2 utilities. (line 6)
19176 * message-digest, 512-bit: sha2 utilities. (line 6)
19177 * Meyering, J.: Introduction. (line 22)
19178 * Meyering, Jim: Authors of parse_datetime.
19180 * midnight in date strings: Time of day items. (line 21)
19181 * min: Special. (line 7)
19182 * minute in date strings: Relative items in date strings.
19184 * minutes, time zone correction by: Time of day items. (line 29)
19185 * mkdir: mkdir invocation. (line 6)
19186 * mkfifo: mkfifo invocation. (line 6)
19187 * mknod: mknod invocation. (line 6)
19188 * mktemp: mktemp invocation. (line 6)
19189 * modem control: Control. (line 41)
19190 * modes and umask: Umask and Protection.
19192 * modes of created directories, setting: mkdir invocation. (line 22)
19193 * modes of created FIFOs, setting: mkfifo invocation. (line 24)
19194 * modification time, sorting files by: Sorting the output. (line 38)
19195 * modified command invocation: Modified command invocation.
19197 * modified environment, running a program in a: env invocation.
19199 * modify time, changing: touch invocation. (line 128)
19200 * month in date strings: Relative items in date strings.
19202 * month names in date strings: Calendar date items. (line 40)
19203 * months, sorting by: sort invocation. (line 174)
19204 * months, written-out: General date syntax. (line 38)
19205 * MS-DOS file system: df invocation. (line 252)
19206 * MS-Windows file system: df invocation. (line 252)
19207 * mtime, changing: touch invocation. (line 128)
19208 * multicolumn output, generating: pr invocation. (line 6)
19209 * multiple changes to permissions: Multiple Changes. (line 6)
19210 * multiplication: Numeric expressions. (line 15)
19211 * multipliers after numbers: dd invocation. (line 326)
19212 * multithreaded sort: sort invocation. (line 399)
19213 * mv: mv invocation. (line 6)
19214 * name follow option: tail invocation. (line 51)
19215 * name of kernel: uname invocation. (line 74)
19216 * named pipe check: File type tests. (line 29)
19217 * named pipes, creating: mkfifo invocation. (line 6)
19218 * network node name: uname invocation. (line 55)
19219 * never interactive option: rm invocation. (line 63)
19220 * newer files, copying only: cp invocation. (line 410)
19221 * newer files, moving only: mv invocation. (line 92)
19222 * newer-than file check: File characteristic tests.
19224 * newline echoing after kill: Local. (line 26)
19225 * newline, echoing: Local. (line 29)
19226 * newline, translating to crlf: Output. (line 21)
19227 * newline, translating to return: Input. (line 28)
19228 * next DAY <1>: Day of week items. (line 15)
19229 * next DAY: Options for date. (line 11)
19230 * next in date strings: General date syntax. (line 28)
19231 * NFS file system type: df invocation. (line 238)
19232 * NFS mounts from BSD to HP-UX <1>: du invocation. (line 299)
19233 * NFS mounts from BSD to HP-UX: What information is listed.
19235 * nice: nice invocation. (line 6)
19236 * niceness: nice invocation. (line 6)
19237 * nl <1>: Combination. (line 18)
19238 * nl: nl invocation. (line 6)
19239 * nlN: Output. (line 40)
19240 * no dereference: chcon invocation. (line 28)
19241 * no-op: true invocation. (line 6)
19242 * noatime: dd invocation. (line 260)
19243 * nocache: dd invocation. (line 237)
19244 * nocreat: dd invocation. (line 161)
19245 * noctty: dd invocation. (line 266)
19246 * node name: uname invocation. (line 55)
19247 * noerror: dd invocation. (line 171)
19248 * noflsh: Local. (line 33)
19249 * nofollow: dd invocation. (line 272)
19250 * nohup: nohup invocation. (line 6)
19251 * nohup.out: nohup invocation. (line 6)
19252 * nolinks: dd invocation. (line 275)
19253 * non-directories, copying as special files: cp invocation. (line 115)
19254 * non-directory suffix, stripping: dirname invocation. (line 6)
19255 * nonblock: dd invocation. (line 257)
19256 * nonblocking I/O: dd invocation. (line 257)
19257 * none backup method: Backup options. (line 33)
19258 * none color option: General output formatting.
19260 * none dd status=: dd invocation. (line 79)
19261 * none, sorting option for ls: Sorting the output. (line 53)
19262 * nonempty file check: File characteristic tests.
19264 * nonprinting characters, ignoring: sort invocation. (line 166)
19265 * nonzero-length string check: String tests. (line 19)
19266 * noon in date strings: Time of day items. (line 21)
19267 * not-equal string check: String tests. (line 28)
19268 * notrunc: dd invocation. (line 167)
19269 * now in date strings: Relative items in date strings.
19271 * noxfer dd status=: dd invocation. (line 75)
19272 * nproc: nproc invocation. (line 6)
19273 * NTFS file system: df invocation. (line 252)
19274 * ntfs file system file: df invocation. (line 252)
19275 * number of inputs to merge, nmerge: sort invocation. (line 291)
19276 * numbered backup method: Backup options. (line 37)
19277 * numbering lines: nl invocation. (line 6)
19278 * numbers, written-out: General date syntax. (line 28)
19279 * numeric expressions: Numeric expressions. (line 6)
19280 * numeric field padding: Padding and other flags.
19282 * numeric modes: Numeric Modes. (line 6)
19283 * numeric operations: Numeric operations. (line 6)
19284 * numeric sequences: seq invocation. (line 6)
19285 * numeric sort: sort invocation. (line 185)
19286 * numeric tests: Numeric tests. (line 6)
19287 * numeric uid and gid: What information is listed.
19289 * numeric user and group IDs: What information is listed.
19291 * numfmt: numfmt invocation. (line 6)
19292 * obs: dd invocation. (line 33)
19293 * ocrnl: Output. (line 17)
19294 * octal dump of files: od invocation. (line 6)
19295 * octal numbers for file modes: Numeric Modes. (line 6)
19296 * od: od invocation. (line 6)
19297 * odd parity: Control. (line 13)
19298 * oddp: Combination. (line 14)
19299 * of: dd invocation. (line 24)
19300 * ofdel: Output. (line 35)
19301 * ofill: Output. (line 30)
19302 * oflag: dd invocation. (line 188)
19303 * olcuc: Output. (line 13)
19304 * older-than file check: File characteristic tests.
19306 * once interactive option: rm invocation. (line 65)
19307 * one file system, restricting du to: du invocation. (line 295)
19308 * one file system, restricting rm to: rm invocation. (line 74)
19309 * one-line output format: df invocation. (line 187)
19310 * onlcr: Output. (line 21)
19311 * onlret: Output. (line 27)
19312 * onocr: Output. (line 24)
19313 * operating on characters: Operating on characters.
19315 * operating on sorted files: Operating on sorted files.
19317 * operating system name: uname invocation. (line 66)
19318 * opost: Output. (line 9)
19319 * option delimiter: Common options. (line 46)
19320 * options for date: Options for date. (line 6)
19321 * or operator <1>: Relations for expr. (line 11)
19322 * or operator: Connectives for test.
19324 * ordinal numbers: General date syntax. (line 28)
19325 * ospeed: Special. (line 20)
19326 * other permissions: Setting Permissions. (line 29)
19327 * output block size: dd invocation. (line 33)
19328 * output file name prefix <1>: csplit invocation. (line 66)
19329 * output file name prefix: split invocation. (line 20)
19330 * output file name suffix: csplit invocation. (line 70)
19331 * output format: stat invocation. (line 39)
19332 * output format, portable: df invocation. (line 187)
19333 * output NUL-byte-terminated lines <1>: env invocation. (line 90)
19334 * output NUL-byte-terminated lines <2>: printenv invocation. (line 21)
19335 * output NUL-byte-terminated lines: du invocation. (line 28)
19336 * output of entire files: Output of entire files.
19338 * output of parts of files: Output of parts of files.
19340 * output settings: Output. (line 6)
19341 * output tabs: pr invocation. (line 128)
19342 * overwriting of input, allowed <1>: shuf invocation. (line 39)
19343 * overwriting of input, allowed: sort invocation. (line 318)
19344 * owned by effective group ID check: Access permission tests.
19346 * owned by effective user ID check: Access permission tests.
19348 * owner of file, permissions for: Setting Permissions. (line 23)
19349 * owner, default: Mode Structure. (line 34)
19350 * ownership of installed files, setting: install invocation. (line 103)
19351 * p for FIFO file: mknod invocation. (line 36)
19352 * pad character: Output. (line 35)
19353 * pad instead of timing for delaying: Output. (line 30)
19354 * padding of numeric fields: Padding and other flags.
19356 * paragraphs, reformatting: fmt invocation. (line 6)
19357 * parenb: Control. (line 9)
19358 * parent directories and cp: cp invocation. (line 284)
19359 * parent directories, creating: mkdir invocation. (line 36)
19360 * parent directories, creating missing: install invocation. (line 77)
19361 * parent directories, removing: rmdir invocation. (line 24)
19362 * parentheses for grouping: expr invocation. (line 36)
19363 * parity: Combination. (line 10)
19364 * parity errors, marking: Input. (line 18)
19365 * parity, ignoring: Input. (line 15)
19366 * parmrk: Input. (line 18)
19367 * parodd: Control. (line 13)
19368 * parse_datetime: Date input formats. (line 6)
19369 * parsing date strings: Options for date. (line 11)
19370 * parts of files, output of: Output of parts of files.
19372 * pass8: Combination. (line 55)
19373 * paste: paste invocation. (line 6)
19374 * Paterson, R.: Introduction. (line 22)
19375 * PATH: env invocation. (line 24)
19376 * pathchk: pathchk invocation. (line 6)
19377 * pattern matching: String expressions. (line 11)
19378 * pebibyte, definition of: Block size. (line 123)
19379 * permission tests: Access permission tests.
19381 * permissions of installed files, setting: install invocation.
19383 * permissions, changing access: chmod invocation. (line 6)
19384 * permissions, copying existing: Copying Permissions. (line 6)
19385 * permissions, for changing file timestamps: touch invocation.
19387 * permissions, output by ls: What information is listed.
19389 * petabyte, definition of: Block size. (line 119)
19390 * phone directory order: sort invocation. (line 100)
19391 * pieces, splitting a file into: split invocation. (line 6)
19392 * Pinard, F. <1>: Authors of parse_datetime.
19394 * Pinard, F.: Introduction. (line 22)
19395 * pipe fitting: tee invocation. (line 6)
19396 * Plass, Michael F.: fmt invocation. (line 22)
19397 * platform, hardware: uname invocation. (line 43)
19398 * pm in date strings: Time of day items. (line 21)
19399 * portable file names, checking for: pathchk invocation. (line 6)
19400 * portable output format: df invocation. (line 187)
19401 * POSIX: Introduction. (line 12)
19402 * POSIX output format: df invocation. (line 187)
19403 * POSIXLY_CORRECT <1>: id invocation. (line 16)
19404 * POSIXLY_CORRECT <2>: printf invocation. (line 55)
19405 * POSIXLY_CORRECT <3>: echo invocation. (line 81)
19406 * POSIXLY_CORRECT <4>: dd invocation. (line 371)
19407 * POSIXLY_CORRECT <5>: sort invocation. (line 328)
19408 * POSIXLY_CORRECT <6>: pr invocation. (line 95)
19409 * POSIXLY_CORRECT <7>: Standards conformance.
19411 * POSIXLY_CORRECT: Common options. (line 11)
19412 * POSIXLY_CORRECT, and block size: Block size. (line 12)
19413 * pr: pr invocation. (line 6)
19414 * prime factors: factor invocation. (line 6)
19415 * print: Character sets. (line 116)
19416 * print machine hardware name: arch invocation. (line 6)
19417 * print name of current directory: pwd invocation. (line 6)
19418 * print system information: uname invocation. (line 6)
19419 * print terminal file name: tty invocation. (line 6)
19420 * Print the number of processors: nproc invocation. (line 6)
19421 * printenv: printenv invocation. (line 6)
19422 * printf: printf invocation. (line 6)
19423 * printing all or some environment variables: printenv invocation.
19425 * printing color database: dircolors invocation.
19427 * printing current user information: who invocation. (line 6)
19428 * printing current usernames: users invocation. (line 6)
19429 * printing groups a user is in: groups invocation. (line 6)
19430 * printing real and effective user and group IDs: id invocation.
19432 * printing text: echo invocation. (line 6)
19433 * printing text, commands for: Printing text. (line 6)
19434 * printing the current time: date invocation. (line 6)
19435 * printing the effective user ID: whoami invocation. (line 6)
19436 * printing the host identifier: hostid invocation. (line 6)
19437 * printing the hostname: hostname invocation. (line 6)
19438 * printing the system uptime and load: uptime invocation. (line 6)
19439 * printing user's login name: logname invocation. (line 6)
19440 * printing, preparing files for: pr invocation. (line 6)
19441 * process zero-terminated items <1>: join invocation. (line 171)
19442 * process zero-terminated items <2>: uniq invocation. (line 150)
19443 * process zero-terminated items <3>: shuf invocation. (line 61)
19444 * process zero-terminated items: sort invocation. (line 423)
19445 * processes, commands for controlling: Process control. (line 6)
19446 * prompting, and ln: ln invocation. (line 113)
19447 * prompting, and mv: mv invocation. (line 44)
19448 * prompting, and rm: rm invocation. (line 13)
19449 * prompts, forcing: mv invocation. (line 78)
19450 * prompts, omitting: mv invocation. (line 72)
19451 * prterase: Local. (line 49)
19452 * ptx: ptx invocation. (line 6)
19453 * punct: Character sets. (line 120)
19454 * pure numbers in date strings: Pure numbers in date strings.
19456 * pwd: pwd invocation. (line 6)
19457 * quit: Characters. (line 23)
19458 * quoting style: Formatting the file names.
19460 * radix for file offsets: od invocation. (line 44)
19461 * random sort: sort invocation. (line 215)
19462 * random source for shredding: shred invocation. (line 125)
19463 * random source for shuffling: shuf invocation. (line 45)
19464 * random source for sorting: sort invocation. (line 334)
19465 * random sources: Random sources. (line 6)
19466 * ranges: Character sets. (line 50)
19467 * raw: Combination. (line 42)
19468 * read errors, ignoring: dd invocation. (line 171)
19469 * read from stdin and write to stdout and files: tee invocation.
19471 * read permission: Mode Structure. (line 14)
19472 * read permission, symbolic: Setting Permissions. (line 57)
19473 * read system call, and holes: cp invocation. (line 346)
19474 * readable file check: Access permission tests.
19476 * readlink: readlink invocation. (line 6)
19477 * real user and group IDs, printing: id invocation. (line 6)
19478 * realpath <1>: realpath invocation. (line 6)
19479 * realpath: readlink invocation. (line 6)
19480 * recursive directory listing: Which files are listed.
19482 * recursively changing access permissions: chmod invocation. (line 76)
19483 * recursively changing file ownership: chown invocation. (line 148)
19484 * recursively changing group ownership: chgrp invocation. (line 71)
19485 * recursively copying directories: cp invocation. (line 115)
19486 * redirection: Redirection. (line 6)
19487 * reference file: chcon invocation. (line 32)
19488 * reformatting paragraph text: fmt invocation. (line 6)
19489 * regular expression matching: String expressions. (line 11)
19490 * regular file check: File type tests. (line 20)
19491 * relations, numeric or string: Relations for expr. (line 6)
19492 * relative items in date strings: Relative items in date strings.
19494 * release of kernel: uname invocation. (line 70)
19495 * relpath: realpath invocation. (line 68)
19496 * remainder: Numeric expressions. (line 15)
19497 * remote hostname: who invocation. (line 12)
19498 * removing empty directories: rmdir invocation. (line 6)
19499 * removing files after shredding: shred invocation. (line 138)
19500 * removing files or directories: rm invocation. (line 6)
19501 * removing files or directories (via the unlink syscall): unlink invocation.
19503 * removing permissions: Setting Permissions. (line 42)
19504 * repeat output values: shuf invocation. (line 51)
19505 * repeated characters: Character sets. (line 74)
19506 * repeated lines, outputting: uniq invocation. (line 67)
19507 * repeated output of a string: yes invocation. (line 6)
19508 * restricted deletion flag: Mode Structure. (line 61)
19509 * return, ignoring: Input. (line 32)
19510 * return, translating to newline <1>: Output. (line 17)
19511 * return, translating to newline: Input. (line 35)
19512 * reverse sorting <1>: Sorting the output. (line 28)
19513 * reverse sorting: sort invocation. (line 209)
19514 * reversing files: tac invocation. (line 6)
19515 * rm: rm invocation. (line 6)
19516 * rmdir: rmdir invocation. (line 6)
19517 * rn format for nl: nl invocation. (line 103)
19518 * root as default owner: install invocation. (line 103)
19519 * root directory, allow recursive destruction: rm invocation. (line 103)
19520 * root directory, allow recursive modification <1>: chmod invocation.
19522 * root directory, allow recursive modification <2>: chgrp invocation.
19524 * root directory, allow recursive modification: chown invocation.
19526 * root directory, disallow recursive destruction: rm invocation.
19528 * root directory, disallow recursive modification <1>: chmod invocation.
19530 * root directory, disallow recursive modification <2>: chgrp invocation.
19532 * root directory, disallow recursive modification: chown invocation.
19534 * root directory, running a program in a specified: chroot invocation.
19536 * rows: Special. (line 23)
19537 * rprnt: Characters. (line 56)
19538 * RTS/CTS flow control: Control. (line 44)
19539 * run commands with bounded time: timeout invocation. (line 6)
19540 * run with security context: runcon invocation. (line 6)
19541 * runcon: runcon invocation. (line 6)
19542 * running a program in a modified environment: env invocation.
19544 * running a program in a specified root directory: chroot invocation.
19546 * rz format for nl: nl invocation. (line 106)
19547 * Salz, Rich: Authors of parse_datetime.
19549 * same file check: File characteristic tests.
19551 * sane: Combination. (line 25)
19552 * scheduling, affecting: nice invocation. (line 6)
19553 * screen columns: fold invocation. (line 18)
19554 * seconds since the epoch: Time conversion specifiers.
19556 * section delimiters of pages: nl invocation. (line 71)
19557 * security context <1>: id invocation. (line 52)
19558 * security context <2>: mknod invocation. (line 63)
19559 * security context <3>: mkfifo invocation. (line 32)
19560 * security context <4>: mkdir invocation. (line 58)
19561 * security context <5>: mv invocation. (line 126)
19562 * security context <6>: install invocation. (line 109)
19563 * security context <7>: cp invocation. (line 435)
19564 * security context: What information is listed.
19566 * seek: dd invocation. (line 54)
19567 * seek_bytes: dd invocation. (line 311)
19568 * self-backups: cp invocation. (line 66)
19569 * SELinux <1>: id invocation. (line 52)
19570 * SELinux <2>: install invocation. (line 109)
19571 * SELinux: What information is listed.
19573 * SELinux context: SELinux context. (line 6)
19574 * SELinux, context: SELinux context. (line 6)
19575 * SELinux, restoring security context: mv invocation. (line 126)
19576 * SELinux, setting/restoring security context <1>: mknod invocation.
19578 * SELinux, setting/restoring security context <2>: mkfifo invocation.
19580 * SELinux, setting/restoring security context <3>: mkdir invocation.
19582 * SELinux, setting/restoring security context <4>: install invocation.
19584 * SELinux, setting/restoring security context: cp invocation. (line 435)
19585 * send a signal to processes: kill invocation. (line 6)
19586 * sentences and line-breaking: fmt invocation. (line 22)
19587 * separator for numbers in seq: seq invocation. (line 46)
19588 * seq: seq invocation. (line 6)
19589 * sequence of numbers: seq invocation. (line 6)
19590 * set-group-ID: Mode Structure. (line 53)
19591 * set-group-ID check: Access permission tests.
19593 * set-user-ID: Mode Structure. (line 46)
19594 * set-user-ID check: Access permission tests.
19596 * setgid: Mode Structure. (line 53)
19597 * setting permissions: Setting Permissions. (line 46)
19598 * setting the hostname: hostname invocation. (line 6)
19599 * setting the time: Setting the time. (line 6)
19600 * setuid: Mode Structure. (line 46)
19601 * setup for color: dircolors invocation.
19603 * sh syntax for color setup: dircolors invocation.
19605 * SHA-1: sha1sum invocation. (line 6)
19606 * SHA-2: sha2 utilities. (line 6)
19607 * sha1sum: sha1sum invocation. (line 6)
19608 * sha224sum: sha2 utilities. (line 6)
19609 * sha256sum: sha2 utilities. (line 6)
19610 * sha384sum: sha2 utilities. (line 6)
19611 * sha512sum: sha2 utilities. (line 6)
19612 * SHELL environment variable, and color <1>: dircolors invocation.
19614 * SHELL environment variable, and color: General output formatting.
19616 * shell utilities: Top. (line 33)
19617 * shred: shred invocation. (line 6)
19618 * shuf: shuf invocation. (line 6)
19619 * shuffling files: shuf invocation. (line 6)
19620 * SI output <1>: du invocation. (line 157)
19621 * SI output <2>: df invocation. (line 207)
19622 * SI output <3>: What information is listed.
19624 * SI output: Block size. (line 44)
19625 * signals, specifying: Signal specifications.
19627 * simple backup method: Backup options. (line 48)
19628 * SIMPLE_BACKUP_SUFFIX: Backup options. (line 54)
19629 * single-column output of files: General output formatting.
19631 * size: Special. (line 30)
19632 * size for main memory sorting: sort invocation. (line 353)
19633 * size of file to shred: shred invocation. (line 131)
19634 * size of files, reporting: What information is listed.
19636 * size of files, sorting files by: Sorting the output. (line 34)
19637 * skip: dd invocation. (line 49)
19638 * skip_bytes: dd invocation. (line 305)
19639 * sleep: sleep invocation. (line 6)
19640 * socket check: File type tests. (line 32)
19641 * software flow control: Input. (line 46)
19642 * sort: sort invocation. (line 6)
19643 * sort field: sort invocation. (line 264)
19644 * sort stability: sort invocation. (line 46)
19645 * sort's last-resort comparison: sort invocation. (line 46)
19646 * sorted files, operations on: Operating on sorted files.
19648 * sorting files: sort invocation. (line 6)
19649 * sorting ls output: Sorting the output. (line 6)
19650 * space: Character sets. (line 123)
19651 * space parity: Control. (line 17)
19652 * sparse: dd invocation. (line 126)
19653 * sparse files, copying: cp invocation. (line 346)
19654 * sparse files, creating: truncate invocation. (line 15)
19655 * special characters: Characters. (line 6)
19656 * special file types: Special file types. (line 6)
19657 * special files: mknod invocation. (line 13)
19658 * special settings: Special. (line 6)
19659 * specifying sets of characters: Character sets. (line 6)
19660 * speed: Special. (line 40)
19661 * split: split invocation. (line 6)
19662 * splitting a file into pieces: split invocation. (line 6)
19663 * splitting a file into pieces by context: csplit invocation. (line 6)
19664 * squeezing empty lines: cat invocation. (line 38)
19665 * squeezing repeat characters: Squeezing. (line 6)
19666 * Stallman, R.: Introduction. (line 22)
19667 * standard input: Common options. (line 51)
19668 * standard output: Common options. (line 51)
19669 * standard streams, buffering: stdbuf invocation. (line 6)
19670 * start: Characters. (line 44)
19671 * stat: stat invocation. (line 6)
19672 * status: dd invocation. (line 70)
19673 * status time, printing or sorting by: Sorting the output. (line 13)
19674 * status time, show the most recent: du invocation. (line 228)
19675 * stdbuf: stdbuf invocation. (line 6)
19676 * stick parity: Control. (line 17)
19677 * sticky: Mode Structure. (line 61)
19678 * sticky bit check: Access permission tests.
19680 * stop: Characters. (line 47)
19681 * stop bits: Control. (line 34)
19682 * strftime and date: date invocation. (line 21)
19683 * string constants, outputting: od invocation. (line 85)
19684 * string expressions: String expressions. (line 6)
19685 * string tests: String tests. (line 6)
19686 * strip directory and suffix from file names: basename invocation.
19688 * stripping non-directory suffix: dirname invocation. (line 6)
19689 * stripping symbol table information: install invocation. (line 126)
19690 * stripping trailing slashes <1>: mv invocation. (line 106)
19691 * stripping trailing slashes: cp invocation. (line 382)
19692 * stty: stty invocation. (line 6)
19693 * substr: String expressions. (line 40)
19694 * subtracting permissions: Setting Permissions. (line 42)
19695 * subtraction: Numeric expressions. (line 11)
19696 * successful exit: true invocation. (line 6)
19697 * suffix, stripping from file names: basename invocation. (line 6)
19698 * sum: sum invocation. (line 6)
19699 * summarizing files: Summarizing files. (line 6)
19700 * superblock, writing: sync invocation. (line 6)
19701 * supplementary groups, printing: groups invocation. (line 6)
19702 * susp: Characters. (line 50)
19703 * swab (byte-swapping): dd invocation. (line 141)
19704 * swap space, saving text image in: Mode Structure. (line 61)
19705 * swtch: Characters. (line 41)
19706 * symbol table information, stripping: install invocation. (line 126)
19707 * symbol table information, stripping, program: install invocation.
19709 * symbolic (soft) links, creating: ln invocation. (line 6)
19710 * symbolic link check: File type tests. (line 24)
19711 * symbolic link to directory, controlling traversal of: Traversing symlinks.
19713 * symbolic link to directory, never traverse <1>: chcon invocation.
19715 * symbolic link to directory, never traverse <2>: chgrp invocation.
19717 * symbolic link to directory, never traverse <3>: chown invocation.
19719 * symbolic link to directory, never traverse: Traversing symlinks.
19721 * symbolic link to directory, traverse each that is encountered <1>: chcon invocation.
19723 * symbolic link to directory, traverse each that is encountered <2>: chgrp invocation.
19725 * symbolic link to directory, traverse each that is encountered <3>: chown invocation.
19727 * symbolic link to directory, traverse each that is encountered: Traversing symlinks.
19729 * symbolic link to directory, traverse if on the command line <1>: chcon invocation.
19731 * symbolic link to directory, traverse if on the command line <2>: chgrp invocation.
19733 * symbolic link to directory, traverse if on the command line <3>: chown invocation.
19735 * symbolic link to directory, traverse if on the command line: Traversing symlinks.
19737 * symbolic link, defined: ln invocation. (line 49)
19738 * symbolic links and ln: ln invocation. (line 211)
19739 * symbolic links and pwd: pwd invocation. (line 28)
19740 * symbolic links, changing group: chgrp invocation. (line 38)
19741 * symbolic links, changing owner <1>: chgrp invocation. (line 33)
19742 * symbolic links, changing owner: chown invocation. (line 83)
19743 * symbolic links, changing time: touch invocation. (line 111)
19744 * symbolic links, copying: cp invocation. (line 130)
19745 * symbolic links, copying with: cp invocation. (line 387)
19746 * symbolic links, dereferencing: Which files are listed.
19748 * symbolic links, dereferencing in du: du invocation. (line 129)
19749 * symbolic links, dereferencing in stat: stat invocation. (line 26)
19750 * symbolic links, following: dd invocation. (line 272)
19751 * symbolic links, permissions of: chmod invocation. (line 12)
19752 * symbolic modes: Symbolic Modes. (line 6)
19753 * symlinks, resolution: realpath invocation. (line 6)
19754 * sync <1>: sync invocation. (line 6)
19755 * sync: dd invocation. (line 234)
19756 * sync (padding with ASCII NULs): dd invocation. (line 147)
19757 * synchronize disk and memory: sync invocation. (line 6)
19758 * synchronized data and metadata I/O: dd invocation. (line 234)
19759 * synchronized data and metadata writes, before finishing: dd invocation.
19761 * synchronized data reads: dd invocation. (line 225)
19762 * synchronized data writes, before finishing: dd invocation. (line 174)
19763 * system context: System context. (line 6)
19764 * system information, printing <1>: uname invocation. (line 6)
19765 * system information, printing <2>: nproc invocation. (line 6)
19766 * system information, printing: arch invocation. (line 6)
19767 * system name, printing: hostname invocation. (line 6)
19768 * System V sum: sum invocation. (line 34)
19769 * tab stops, setting: expand invocation. (line 24)
19770 * tabN: Output. (line 52)
19771 * tabs: Combination. (line 66)
19772 * tabs to spaces, converting: expand invocation. (line 6)
19773 * tac: tac invocation. (line 6)
19774 * tagged paragraphs: fmt invocation. (line 45)
19775 * tail: tail invocation. (line 6)
19776 * tandem: Input. (line 46)
19777 * target directory <1>: ln invocation. (line 198)
19778 * target directory <2>: mv invocation. (line 116)
19779 * target directory <3>: install invocation. (line 140)
19780 * target directory <4>: cp invocation. (line 400)
19781 * target directory: Target directory. (line 6)
19782 * tebibyte, definition of: Block size. (line 116)
19783 * tee: tee invocation. (line 6)
19784 * telephone directory order: sort invocation. (line 100)
19785 * temporary directory: sort invocation. (line 390)
19786 * temporary files and directories: mktemp invocation. (line 6)
19787 * terabyte, definition of: Block size. (line 112)
19788 * terminal check: File type tests. (line 35)
19789 * terminal file name, printing: tty invocation. (line 6)
19790 * terminal lines, currently used: who invocation. (line 12)
19791 * terminal settings: stty invocation. (line 6)
19792 * terminal, using color iff: General output formatting.
19794 * terse output: stat invocation. (line 60)
19795 * test: test invocation. (line 6)
19796 * text: dd invocation. (line 283)
19797 * text I/O: dd invocation. (line 283)
19798 * text image, saving in swap space: Mode Structure. (line 61)
19799 * text input files: md5sum invocation. (line 110)
19800 * text utilities: Top. (line 33)
19801 * text, displaying: echo invocation. (line 6)
19802 * text, reformatting: fmt invocation. (line 6)
19803 * this in date strings: Relative items in date strings.
19805 * time <1>: Special. (line 12)
19806 * time: touch invocation. (line 97)
19807 * time conversion specifiers: Time conversion specifiers.
19809 * time formats <1>: date invocation. (line 21)
19810 * time formats: pr invocation. (line 88)
19811 * time limit: timeout invocation. (line 6)
19812 * time of day item: Time of day items. (line 6)
19813 * time setting: Setting the time. (line 6)
19814 * time style <1>: du invocation. (line 243)
19815 * time style: Formatting file timestamps.
19817 * time units <1>: sleep invocation. (line 13)
19818 * time units: timeout invocation. (line 54)
19819 * time zone correction: Time of day items. (line 29)
19820 * time zone item <1>: Time zone items. (line 6)
19821 * time zone item: General date syntax. (line 48)
19822 * time, printing or setting: date invocation. (line 6)
19823 * TIME_STYLE <1>: du invocation. (line 273)
19824 * TIME_STYLE: Formatting file timestamps.
19826 * timeout: timeout invocation. (line 6)
19827 * timestamps of installed files, preserving: install invocation.
19829 * timestamps, changing file: touch invocation. (line 6)
19830 * TMPDIR: sort invocation. (line 73)
19831 * today in date strings: Relative items in date strings.
19833 * tomorrow: Options for date. (line 11)
19834 * tomorrow in date strings: Relative items in date strings.
19836 * topological sort: tsort invocation. (line 6)
19837 * tostop: Local. (line 44)
19838 * total counts: wc invocation. (line 15)
19839 * touch: touch invocation. (line 6)
19840 * tr: tr invocation. (line 6)
19841 * trailing slashes: Trailing slashes. (line 6)
19842 * translating characters: Translating. (line 6)
19843 * true: true invocation. (line 6)
19844 * truncate: truncate invocation. (line 6)
19845 * truncating output file, avoiding: dd invocation. (line 167)
19846 * truncating, file sizes: truncate invocation. (line 6)
19847 * tsort: tsort invocation. (line 6)
19848 * tty: tty invocation. (line 6)
19849 * two-way parity: Control. (line 9)
19850 * type size: od invocation. (line 132)
19851 * TZ <1>: Specifying time zone rules.
19853 * TZ <2>: Options for date. (line 111)
19854 * TZ <3>: date invocation. (line 17)
19855 * TZ <4>: who invocation. (line 27)
19856 * TZ <5>: stat invocation. (line 214)
19857 * TZ <6>: touch invocation. (line 76)
19858 * TZ <7>: Formatting file timestamps.
19860 * TZ: pr invocation. (line 101)
19861 * u, and disabling special characters: Characters. (line 13)
19862 * ucase, converting to: dd invocation. (line 121)
19863 * umask and modes: Umask and Protection.
19865 * uname: uname invocation. (line 6)
19866 * unblock: dd invocation. (line 112)
19867 * unexpand: unexpand invocation. (line 6)
19868 * Unicode: printf invocation. (line 78)
19869 * uniq: uniq invocation. (line 6)
19870 * unique lines, outputting: uniq invocation. (line 138)
19871 * uniquify files: uniq invocation. (line 6)
19872 * uniquifying output: sort invocation. (line 407)
19873 * unlink: unlink invocation. (line 6)
19874 * unprintable characters, ignoring: sort invocation. (line 166)
19875 * unsorted directory listing: Sorting the output. (line 20)
19876 * upper: Character sets. (line 126)
19877 * uppercase, translating to lowercase: Input. (line 51)
19878 * uptime: uptime invocation. (line 6)
19879 * use time, changing: touch invocation. (line 89)
19880 * use time, printing or sorting files by: Sorting the output. (line 13)
19881 * use time, show the most recent: du invocation. (line 228)
19882 * user IDs, disambiguating: Disambiguating names and IDs.
19884 * user information, commands for: User information. (line 6)
19885 * user name, printing: logname invocation. (line 6)
19886 * user names, disambiguating: Disambiguating names and IDs.
19888 * usernames, printing current: users invocation. (line 6)
19889 * users: users invocation. (line 6)
19890 * UTC: Options for date. (line 111)
19891 * utmp <1>: who invocation. (line 16)
19892 * utmp <2>: users invocation. (line 16)
19893 * utmp: logname invocation. (line 6)
19894 * valid file names, checking for: pathchk invocation. (line 6)
19895 * variable-length records, converting to fixed-length: dd invocation.
19897 * vdir: vdir invocation. (line 6)
19898 * verbose ls format: What information is listed.
19900 * verifying MD5 checksums: md5sum invocation. (line 79)
19901 * version number sort: sort invocation. (line 202)
19902 * version number, finding: Common options. (line 43)
19903 * version of kernel: uname invocation. (line 85)
19904 * version, sorting option for ls: Sorting the output. (line 62)
19905 * version-control Emacs variable: Backup options. (line 25)
19906 * VERSION_CONTROL <1>: ln invocation. (line 96)
19907 * VERSION_CONTROL <2>: mv invocation. (line 67)
19908 * VERSION_CONTROL <3>: install invocation. (line 46)
19909 * VERSION_CONTROL <4>: cp invocation. (line 96)
19910 * VERSION_CONTROL: Backup options. (line 14)
19911 * vertical sorted files in columns: General output formatting.
19913 * vtN: Output. (line 60)
19914 * wc: wc invocation. (line 6)
19915 * week in date strings: Relative items in date strings.
19917 * werase: Characters. (line 59)
19918 * who: who invocation. (line 6)
19919 * who am i: who invocation. (line 22)
19920 * whoami: whoami invocation. (line 6)
19921 * word count: wc invocation. (line 6)
19922 * working context: Working context. (line 6)
19923 * working directory, printing: pwd invocation. (line 6)
19924 * wrap data: base64 invocation. (line 25)
19925 * wrapping long input lines: fold invocation. (line 6)
19926 * writable file check: Access permission tests.
19928 * write permission: Mode Structure. (line 17)
19929 * write permission, symbolic: Setting Permissions. (line 60)
19930 * write, allowed: who invocation. (line 98)
19931 * wtmp <1>: who invocation. (line 16)
19932 * wtmp: users invocation. (line 16)
19933 * xcase: Local. (line 37)
19934 * xdigit: Character sets. (line 129)
19935 * xfs file system type: df invocation. (line 243)
19936 * XON/XOFF flow control: Input. (line 41)
19937 * year in date strings: Relative items in date strings.
19939 * yes: yes invocation. (line 6)
19940 * yesterday: Options for date. (line 11)
19941 * yesterday in date strings: Relative items in date strings.
19943 * yottabyte, definition of: Block size. (line 143)
19944 * Youmans, B.: Introduction. (line 22)
19945 * zero-length string check: String tests. (line 15)
19946 * zettabyte, definition of: Block size. (line 134)
19947 * |: Relations for expr. (line 11)
19953 Node: Introduction
\7f28067
19954 Node: Common options
\7f30563
19955 Node: Exit status
\7f35498
19956 Node: Backup options
\7f36669
19957 Node: Block size
\7f39785
19958 Node: Floating point
\7f47879
19959 Node: Signal specifications
\7f49693
19960 Node: Disambiguating names and IDs
\7f53126
19961 Ref: Disambiguating names and IDs-Footnote-1
\7f55658
19962 Node: Random sources
\7f55760
19963 Node: Target directory
\7f58116
19964 Node: Trailing slashes
\7f63444
19965 Node: Traversing symlinks
\7f65175
19966 Node: Treating / specially
\7f66977
19967 Node: Special built-in utilities
\7f69749
19968 Node: Standards conformance
\7f72094
19969 Node: Output of entire files
\7f74363
19970 Node: cat invocation
\7f75147
19971 Node: tac invocation
\7f77569
19972 Node: nl invocation
\7f79346
19973 Node: od invocation
\7f84676
19974 Node: base64 invocation
\7f94483
19975 Node: Formatting file contents
\7f96494
19976 Node: fmt invocation
\7f97106
19977 Node: numfmt invocation
\7f101354
19978 Node: General options in numfmt
\7f102756
19979 Node: Possible UNITs
\7f108614
19980 Node: Examples of using numfmt
\7f112541
19981 Node: pr invocation
\7f116781
19982 Node: fold invocation
\7f134363
19983 Node: Output of parts of files
\7f136472
19984 Node: head invocation
\7f137025
19985 Node: tail invocation
\7f140325
19986 Node: split invocation
\7f155847
19987 Node: csplit invocation
\7f166769
19988 Node: Summarizing files
\7f174092
19989 Node: wc invocation
\7f174993
19990 Node: sum invocation
\7f179564
19991 Node: cksum invocation
\7f181674
19992 Node: md5sum invocation
\7f183228
19993 Node: sha1sum invocation
\7f192762
19994 Node: sha2 utilities
\7f193828
19995 Node: Operating on sorted files
\7f194642
19996 Node: sort invocation
\7f195409
19997 Ref: sort invocation-Footnote-1
\7f235436
19998 Node: shuf invocation
\7f236301
19999 Node: uniq invocation
\7f240783
20000 Node: comm invocation
\7f249447
20001 Node: ptx invocation
\7f252971
20002 Node: General options in ptx
\7f258882
20003 Node: Charset selection in ptx
\7f259611
20004 Node: Input processing in ptx
\7f261101
20005 Node: Output formatting in ptx
\7f270249
20006 Node: Compatibility in ptx
\7f280920
20007 Node: tsort invocation
\7f285777
20008 Node: tsort background
\7f290195
20009 Node: Operating on fields
\7f293072
20010 Node: cut invocation
\7f293508
20011 Node: paste invocation
\7f299441
20012 Node: join invocation
\7f301585
20013 Node: Operating on characters
\7f311945
20014 Node: tr invocation
\7f312396
20015 Node: Character sets
\7f314934
20016 Node: Translating
\7f321652
20017 Node: Squeezing
\7f324671
20018 Node: expand invocation
\7f329131
20019 Node: unexpand invocation
\7f331348
20020 Node: Directory listing
\7f334795
20021 Node: ls invocation
\7f335407
20022 Ref: ls invocation-Footnote-1
\7f339006
20023 Node: Which files are listed
\7f339307
20024 Node: What information is listed
\7f344902
20025 Node: Sorting the output
\7f358610
20026 Node: Details about version sort
\7f362273
20027 Node: General output formatting
\7f364627
20028 Node: Formatting file timestamps
\7f372161
20029 Node: Formatting the file names
\7f379996
20030 Node: dir invocation
\7f384347
20031 Node: vdir invocation
\7f384972
20032 Node: dircolors invocation
\7f385474
20033 Node: Basic operations
\7f387963
20034 Node: cp invocation
\7f388816
20035 Node: dd invocation
\7f417213
20036 Node: install invocation
\7f437954
20037 Node: mv invocation
\7f447088
20038 Node: rm invocation
\7f454549
20039 Node: shred invocation
\7f462029
20040 Node: Special file types
\7f476501
20041 Node: link invocation
\7f478993
20042 Node: ln invocation
\7f480764
20043 Node: mkdir invocation
\7f495547
20044 Node: mkfifo invocation
\7f499568
20045 Node: mknod invocation
\7f501822
20046 Node: readlink invocation
\7f506020
20047 Node: rmdir invocation
\7f509139
20048 Node: unlink invocation
\7f510824
20049 Node: Changing file attributes
\7f512184
20050 Node: chown invocation
\7f513392
20051 Node: chgrp invocation
\7f522489
20052 Node: chmod invocation
\7f526993
20053 Node: touch invocation
\7f531179
20054 Node: Disk usage
\7f542628
20055 Node: df invocation
\7f543648
20056 Node: du invocation
\7f558333
20057 Node: stat invocation
\7f575464
20058 Node: sync invocation
\7f585891
20059 Node: truncate invocation
\7f587392
20060 Node: Printing text
\7f589895
20061 Node: echo invocation
\7f590361
20062 Node: printf invocation
\7f594157
20063 Node: yes invocation
\7f603117
20064 Node: Conditions
\7f604046
20065 Node: false invocation
\7f604792
20066 Node: true invocation
\7f606466
20067 Node: test invocation
\7f608417
20068 Node: File type tests
\7f611508
20069 Node: Access permission tests
\7f612752
20070 Node: File characteristic tests
\7f613919
20071 Node: String tests
\7f614910
20072 Node: Numeric tests
\7f615858
20073 Node: Connectives for test
\7f617077
20074 Node: expr invocation
\7f617504
20075 Node: String expressions
\7f621476
20076 Node: Numeric expressions
\7f625009
20077 Node: Relations for expr
\7f625770
20078 Node: Examples of expr
\7f627259
20079 Node: Redirection
\7f628276
20080 Node: tee invocation
\7f628951
20081 Node: File name manipulation
\7f635909
20082 Node: basename invocation
\7f636612
20083 Node: dirname invocation
\7f639386
20084 Node: pathchk invocation
\7f641631
20085 Node: mktemp invocation
\7f644339
20086 Node: realpath invocation
\7f653634
20087 Node: Working context
\7f658610
20088 Node: pwd invocation
\7f659401
20089 Node: stty invocation
\7f661375
20090 Node: Control
\7f665447
20091 Node: Input
\7f667063
20092 Node: Output
\7f669434
20093 Node: Local
\7f671300
20094 Node: Combination
\7f673607
20095 Node: Characters
\7f676356
20096 Node: Special
\7f678700
20097 Node: printenv invocation
\7f680885
20098 Node: tty invocation
\7f682236
20099 Node: User information
\7f683143
20100 Node: id invocation
\7f683963
20101 Node: logname invocation
\7f687241
20102 Node: whoami invocation
\7f688054
20103 Node: groups invocation
\7f688600
20104 Node: users invocation
\7f690316
20105 Node: who invocation
\7f691615
20106 Node: System context
\7f695865
20107 Node: date invocation
\7f696719
20108 Node: Time conversion specifiers
\7f698913
20109 Node: Date conversion specifiers
\7f702608
20110 Node: Literal conversion specifiers
\7f706408
20111 Node: Padding and other flags
\7f706756
20112 Node: Setting the time
\7f709696
20113 Node: Options for date
\7f711469
20114 Node: Examples of date
\7f717069
20115 Ref: %s-examples
\7f718795
20116 Node: arch invocation
\7f723027
20117 Node: nproc invocation
\7f723601
20118 Node: uname invocation
\7f725034
20119 Node: hostname invocation
\7f729025
20120 Node: hostid invocation
\7f729824
20121 Node: uptime invocation
\7f730779
20122 Node: SELinux context
\7f732375
20123 Node: chcon invocation
\7f732847
20124 Node: runcon invocation
\7f736142
20125 Node: Modified command invocation
\7f738492
20126 Node: chroot invocation
\7f739752
20127 Ref: chroot invocation-Footnote-1
\7f744054
20128 Node: env invocation
\7f744594
20129 Node: nice invocation
\7f750159
20130 Node: nohup invocation
\7f755996
20131 Node: stdbuf invocation
\7f759798
20132 Node: timeout invocation
\7f763462
20133 Node: Process control
\7f767227
20134 Node: kill invocation
\7f767465
20135 Node: Delaying
\7f772360
20136 Node: sleep invocation
\7f772577
20137 Node: Numeric operations
\7f774029
20138 Node: factor invocation
\7f774372
20139 Node: seq invocation
\7f776618
20140 Node: File permissions
\7f782222
20141 Node: Mode Structure
\7f783175
20142 Node: Symbolic Modes
\7f789146
20143 Node: Setting Permissions
\7f790725
20144 Node: Copying Permissions
\7f794819
20145 Node: Changing Special Mode Bits
\7f795907
20146 Node: Conditional Executability
\7f799018
20147 Node: Multiple Changes
\7f799927
20148 Node: Umask and Protection
\7f802368
20149 Node: Numeric Modes
\7f804306
20150 Node: Operator Numeric Modes
\7f807342
20151 Node: Directory Setuid and Setgid
\7f808784
20152 Node: Date input formats
\7f814656
20153 Node: General date syntax
\7f818541
20154 Node: Calendar date items
\7f822802
20155 Node: Time of day items
\7f825532
20156 Node: Time zone items
\7f828481
20157 Node: Combined date and time of day items
\7f830316
20158 Node: Day of week items
\7f831458
20159 Node: Relative items in date strings
\7f833230
20160 Node: Pure numbers in date strings
\7f837025
20161 Node: Seconds since the Epoch
\7f838490
20162 Node: Specifying time zone rules
\7f840845
20163 Node: Authors of parse_datetime
\7f844333
20164 Ref: Authors of get_date
\7f844521
20165 Node: Opening the software toolbox
\7f845793
20166 Node: Toolbox introduction
\7f846621
20167 Node: I/O redirection
\7f850838
20168 Node: The who command
\7f855418
20169 Node: The cut command
\7f856665
20170 Node: The sort command
\7f858098
20171 Node: The uniq command
\7f859084
20172 Node: Putting the tools together
\7f860062
20173 Ref: Putting the tools together-Footnote-1
\7f877410
20174 Node: About the translation
\7f877518
20175 Node: GNU Free Documentation License
\7f885994
20176 Node: Concept index
\7f911183