1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
.\" -*- nroff -*-
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Translated Thu May 11 1997
.\" by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Translatedd for 4.9.0, 2022/04/18 ribbon <ribbon@usesr.osdn.me>
.\"
.TH LOCATEDB 5
.SH 名前
locatedb \- 前置圧縮されたファイル名データベース
.
.SH 説明
このマニュアルページは GNU 版 \fBlocate\fP
で用いるファイル名データベースのフォーマットについて記述したものです。ファイル名データベースには、最後に更新された時点において、特定のディレクトリツリー下に存在していたファイルのリストが含まれています。
.P
複数のデータベースを共存させることもできます。環境変数やコマンドラインオプションを指定すれば、ユーザーは \fBlocate\fP
に検索させるデータベースを選択することができます。詳しくは \fBlocate\fP(1)
を参照してください。システム管理者はデフォルトで用いられるデータベースの名前や、データベースの更新頻度、またデータベースに入れるディレクトリなどを選択することができます。通常ファイル名データベースの更新は
\fBupdatedb\fP プログラムを定期的に実行させることによって行ないます(夜間が良いでしょう)。詳細は \fBupdatedb\fP(1)
を参照してください。
.
.SH "GNU LOCATE02 データベースフォーマット"
これは \fBupdatedb\fP により生成されるデフォルトのデータベースフォーマットです。\fBupdatedb\fP は \fBfrcode\fP
というプログラムを呼び出してファイル名のリストを前置圧縮 (front compression) します。これによってデータベースのサイズは 1/4
から 1/5 になります。前置圧縮 (インクリメンタルエンコーディングとも呼ばれる) は以下のような動作をします。
.P
データベースのエントリは整列されたリストからなってます
(ユーザーの利便性のため、大文字小文字は区別していません)。従って、各々のエントリは直前のエントリと最初の数文字が一致していることが多くなります。それぞれのデータベースエントリには、まずオフセット差分カウントという
1
バイトのデータが入っています。これは現在のエントリと直前のエントリの共有部分の文字数から、直前のエントリとそのもうひとつ前のエントリの共有文字数を引いたものです
(従ってこの数値は負になることもあります)。カウントの後には共有部分の文字列以降の残りが ASCII
文字列で与えられます。これはヌル文字で終端するとみなされます。
.P
もしオフセット差分カウントがバイトデータで与えられる範囲 (\(+-127) を越えた場合は、バイトデータ 0x80 がカウントに代入され、2
バイトのワードデータがその後に続きます。このワードデータでは高位バイトが先に来ます
(ネットワークバイトオーダー)。このカウントは負になることもあります(符号ビットは2バイトの最初の方にあります)。
.P
すべてのデータベースは、ファイルエントリの最初に `LOCATE02' というダミーのエントリを持ちます。これは \fBlocate\fP
によってチェックされ、このデータベースが正しいフォーマットであることを確認するために用いられます。実際の検索においてはこのエントリは無視されます。
.P
複数のデータベースを連結することはできません。最初の (ダミー)
エントリを結合するデータベースから取り去れば良さそうですが、これは正しくはありません。なぜなら後に続くデータベースの最初のエントリにおけるオフセット差分カウントは正しい値を取り得ないからです。
.P
将来的に locate データベース内のデータは、特定順での並び替えができなくなるかもしれません。並び替えを必要とする場合は、\fBlocate\fP
の出力に対してパイプにより \fBsort \-f\fP を処理してください。
.
.SH "slocate データベースフォーマット"
\fBslocate\fP プログラムが利用するデータベースフォーマットは \fBlocate\fP
が利用するものと似ていますが、全く同じではありません。データベースの最初のバイトは \fIsecurity\fP \fIlevel\fP (セキュリティレベル)
を指定しています。このセキュリティレベルが 0 のときは \fBslocate\fP
が読み込みを行い、データベース内にのみある情報に基づいて、ファイル名の検索と表示を行います。一方、セキュリティレベルが 1
のとき、実行ユーザのデータベースアクセスが不能である場合、\fBslocate\fP はエントリ出力を省略する。データベースの 2 番目のバイトはゼロです。3
番目のバイト以降にデータベースエントリが続きます。データベースエントリの先頭に、差分カウントやダミーエントリが置かれることはありません。その代わりに最初の項目に対する差分カウントは、ゼロとして取り扱われます。
.P
2 番目のエントリがデータベースに存在していたとすると、データは GNU LOCATE02 フォーマットと同様のものとして解釈されます。
.
.SH "古い locate データベースフォーマット"
Unix 版 \fBlocate\fP および \fBfind\fP や、以前の GNU
版で用いられていた古いデータベースフォーマットも存在しています。この古い形式のデータベースを作成する場合には、\fBupdatedb\fP は
\fBbigram\fP と \fBcode\fP
というプログラムを呼び出します。古いフォーマットが上に述べた記述と異なる点を以下に示します。それぞれのエントリがオフセット差分カウントのバイトデータで始まりヌル文字で終わる代わりに、0
から 28 までのバイトデータが \-14 から 14
までのオフセット差分カウントとして用いられ、これがエントリ区切りを兼ねることになります。この範囲外の長いオフセット差分カウントを示すデータには、0x80
ではなく 0x1e (30) が使われます。長いカウントを保有するデータにはホストのバイトオーダが用いられ
(これはネットワークバイトオーダと等しいとは限りません)、またホストの integer のワードサイズ (4 バイトのことが多い)
が用いられます。またここにストアされるデータは実際の値から 14 を引いた値になります。データベースの各エントリには終端バイトが無く、30
以下の値を持つバイトデータが次のエントリの始まりであると認識されます。
.P
さらに古いデータベース形式では、ダミーエントリの代わりに先頭に 256 バイトのテーブルがあり、ファイルリストでもっとも頻繁に用いられている
bigram が並べてあります。bigram
とは隣接した二つのバイトデータをインデックス付けしたものです。データベースに現われるバイトデータのうち、最高位ビットがセットされているものは (残りの
7 ビットをインデックスとして) bigram テーブルのデータと置換されます。この bigram
とオフセット差分カウントを用いることで、データベースの大きさは新しいフォーマットより 20\-25% 小さくなっています。しかし 8
ビットクリーンでないという欠点を併せ持ちます。ファイル名に含まれるバイトデータのうち、スペシャルコードに属するものは、データベース中ではすべてクエスチョンマークで置き換えられます。これは任意の一文字を表わすシェルのワイルドカードなので、実際のファイル名に現われることはありません。
.
.SH 例
.nf
.\" with nulls changed to newlines:
\fBfrcode\fP への入力が以下のようなものとします:
/usr/src
/usr/src/cmd/aardvark.c
/usr/src/cmd/armadillo.c
/usr/tmp/zoo
直前のエントリとの最長一致部分の長さは:
0 /usr/src
8 /cmd/aardvark.c
14 rmadillo.c
5 tmp/zoo
.fi
\fBfrcode\fP からの出力は、最後のヌル文字を改行に代え、カウントバイトを数字に代えると以下のようなものになります:
.nf
0 LOCATE02
0 /usr/src
8 /cmd/aardvark.c
6 rmadillo.c
\-9 tmp/zoo
(6 = 14 \- 8 または \-9 = 5 \- 14)
.fi
.
.SH バグ報告
GNU findutils オンラインヘルプ:
<https://www.gnu.org/software/findutils/#get\-help>
.br
翻訳に関するバグ報告: <https://translationproject.org/team/>
.PP
その他の問題について GNU Savannah バグトラッカー経由での報告:
.RS
<https://savannah.gnu.org/bugs/?group=findutils>
.RE
GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック:
.RS
<https://lists.gnu.org/mailman/listinfo/bug\-findutils>
.RE
.
.SH 著作権
Copyright \(co 1994\-2022 Free Software Foundation, Inc. License GPLv3+: GNU
GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
.br
This is free software: you are free to change and redistribute it. There is
NO WARRANTY, to the extent permitted by law.
.
.SH 関連項目
\fBfind\fP(1), \fBlocate\fP(1), \fBxargs\fP(1), \fBlocatedb\fP(5)
.PP
充実したドキュメントは <https://www.gnu.org/software/findutils/locatedb>
を参照してください。
.br
またローカルにおいては \fBinfo locatedb\fP により参照できます。
|