.\"O .TH LOCATEDB 5 \" -*- nroff -*- .TH LOCATEDB 5 .\"O ---------------------------------------- .\"O .SH NAME .\"O locatedb \- front-compressed file name database .\"O . .SH 名前 locatedb \- 前置圧縮されたファイル名データベース . .\"O ---------------------------------------- .\"O .SH DESCRIPTION .\"O This manual page documents the format of file name databases for the .\"O GNU version of .\"O .BR locate . .\"O The file name databases contain lists of files that were in .\"O particular directory trees when the databases were last updated. .SH 説明 このマニュアルページは GNU 版 \fBlocate\fP で用いるファイル名データベースのフォーマットについて記述したものである。ファイル名データベースには、最後に更新された時点において、特定のディレクトリツリー下に存在していたファイルのリストが含まれている。 .\"O ---------------------------------------- .\"O .P .\"O There can be multiple databases. Users can select which databases .\"O \fBlocate\fP searches using an environment variable or command line .\"O option; see \fBlocate\fP(1). The system administrator can choose the .\"O file name of the default database, the frequency with which the .\"O databases are updated, and the directories for which they contain .\"O entries. Normally, file name databases are updated by running the .\"O \fBupdatedb\fP program periodically, typically nightly; see .\"O \fBupdatedb\fP(1). .\"O . .P 複数のデータベースを共存させることもできる。環境変数やコマンドラインオプションを指定すれば、ユーザーは \fBlocate\fP に検索させるデータベースを選択することができる。詳しくは \fBlocate\fP(1) を見よ。システム管理者はデフォルトで用いられるデータベースの名前や、データベースの更新頻度、またデータベースに入れるディレクトリなどを選択することができる。通常ファイル名データベースの更新は \fBupdatedb\fP プログラムを定期的に実行させることによって行なう(夜間が良いだろう)。詳細は \fBupdatedb\fP(1) を見よ。 . .\"O ---------------------------------------- .\"O .SH GNU LOCATE02 database format .\"O This is the default format of databases produced by .\"O .BR updatedb . .\"O The .\"O .B updatedb .\"O program runs .\"O .B frcode .\"O to compress the list of file names using front-compression, which .\"O reduces the database size by a factor of 4 to 5. Front-compression .\"O (also known as incremental encoding) works as follows. .SH "GNU LOCATE02 データベースフォーマット" これは \fBupdatedb\fP により生成されるデフォルトのデータベースフォーマットである。\fBupdatedb\fP は \fBfrcode\fP というプログラムを呼び出してファイル名のリストを前置圧縮 (front compression) する。これによってデータベースのサイズは 1/4 から 1/5 になる。前置圧縮 (インクリメンタルエンコーディングとも呼ばれる) は以下のような動作をする。 .\"O ---------------------------------------- .\"O .P .\"O The database entries are a sorted list (case-insensitively, for users' .\"O convenience). Since the list is sorted, each entry is likely to share .\"O a prefix (initial string) with the previous entry. Each database .\"O entry begins with an signed offset-differential count byte, which is .\"O the additional number of characters of prefix of the preceding entry .\"O to use beyond the number that the preceding entry is using of its .\"O predecessor. (The counts can be negative.) Following the count is a .\"O null-terminated ASCII remainder \(em the part of the name that follows .\"O the shared prefix. .P データベースのエントリはソートされたリストからなっている (ユーザーの利便性のため、大文字小文字は区別していない)。従って、各々のエントリは直前のエントリと最初の数文字が一致していることが多い。それぞれのデータベースエントリには、まずオフセット差分カウントという 1 バイトのデータが入っている。これは現在のエントリと直前のエントリの共有部分の文字数から、直前のエントリとそのもうひとつ前のエントリの共有文字数を引いたものである (従ってこの数値は負になることもある)。カウントの後には共有部分の文字列以降の残りが ASCII 文字列で与えられる。これはヌル文字で終端するとみなされる。 .\"O ---------------------------------------- .\"O .P .\"O If the offset-differential count is larger than can be stored in a .\"O signed byte (\(+-127), the byte has the value 0x80 (binary 10000000) .\"O and the actual count follows in a 2-byte word, with the high byte .\"O first (network byte order). This count can also be negative (the sign .\"O bit being in the first of the two bytes). .P もしオフセット差分カウントがバイトデータで与えられる範囲 (\(+-127) を越えた場合は、バイトデータ 0x80 がカウントに代入され、2 バイトのワードデータがその後に続く。このワードデータでは高位バイトが先に来る (ネットワークバイトオーダー)。This count can also be negative (the sign bit being in the first of the two bytes). .\"O ---------------------------------------- .\"O .P .\"O Every database begins with a dummy entry for a file called `LOCATE02', .\"O which \fBlocate\fP checks for to ensure that the database file has the .\"O correct format; it ignores the entry in doing the search. .P すべてのデータベースは、ファイルエントリの最初に `LOCATE02' というダミーのエントリを持つ。これは \fBlocate\fP によってチェックされ、このデータベースが正しいフォーマットであることを確認するために用いられる。実際の検索においてはこのエントリは無視される。 .\"O ---------------------------------------- .\"O .P .\"O Databases cannot be concatenated together, even if the first .\"O (dummy) entry is trimmed from all but the first database. This .\"O is because the offset-differential count in the first entry of the .\"O second and following databases will be wrong. .P 複数のデータベースを連結することはできない。最初の (ダミー) エントリを結合するデータベースから取り去れば良さそうだが、これは正しくない。なぜなら後に続くデータベースの最初のエントリにおけるオフセット差分カウントは正しい値を取り得ないからである。 .\"O ---------------------------------------- .\"O .P .\"O In the future, the data within the locate database may not be sorted .\"O in any particular order. To obtain sorted results, pipe the output of .\"O .B locate .\"O through .\"O .BR "sort -f" . .\"O . .P 将来的に locate データベース内のデータは、特定順での並び替えができなくなるかもしれない。並び替えを必要とする場合は、\fBlocate\fP の出力に対してパイプにより \fBsort \-f\fP を処理すること。 . .\"O ---------------------------------------- .\"O .SH slocate database format .\"O The .\"O .B slocate .\"O program uses a database format similar to, but not quite the same as, .\"O GNU .\"O .BR locate . .\"O The first byte of the database specifies its .\"O .I security .\"O .IR level . .\"O If the security level is 0, .\"O .B slocate .\"O will read, match and print filenames on the basis of the information .\"O in the database only. However, if the security level byte is 1, .\"O .B slocate .\"O omits entries from its output if the invoking user is unable to access .\"O them. The second byte of the database is zero. The second byte is .\"O followed by the first database entry. The first entry in the database .\"O is not preceded by any differential count or dummy entry. Instead .\"O the differential count for the first item is assumed to be zero. .SH "slocate データベースフォーマット" \fBslocate\fP プログラムが利用するデータベースフォーマットは \fBlocate\fP が利用するものと似ているが、全く同じというわけではない。データベースの最初のバイトは \fIsecurity\fP \fIlevel\fP (セキュリティレベル) を指定している。このセキュリティレベルが 0 のときは \fBslocate\fP が読み込みを行い、データベース内にのみある情報に基づいて、ファイル名の検索と表示を行う。一方、セキュリティレベルが 1 のとき、実行ユーザのデータベースアクセスが不能である場合、\fBslocate\fP はエントリ出力を省略する。データベースの 2 番目のバイトはゼロである。3 番目のバイト以降にデータベースエントリが続く。データベースエントリの先頭に、差分カウントやダミーエントリが置かれることはない。その代わりに最初の項目に対する差分カウントは、ゼロとして取り扱われる。 .\"O ---------------------------------------- .\"O .P .\"O Starting with the second entry (if any) in the database, data is .\"O interpreted as for the GNU LOCATE02 format. .\"O . .P 2 番目のエントリがデータベースに存在していたとすると、データは GNU LOCATE02 フォーマットと同様のものとして解釈される。 . .\"O ---------------------------------------- .\"O .SH Old Locate Database format .\"O There is also an old database format, used by Unix .\"O .B locate .\"O and .\"O .B find .\"O programs and earlier releases of the GNU ones. \fBupdatedb\fP runs .\"O programs called \fBbigram\fP and \fBcode\fP to produce old-format .\"O databases. The old format differs from the above description in the .\"O following ways. Instead of each entry starting with an .\"O offset-differential count byte and ending with a null, byte values .\"O from 0 through 28 indicate offset-differential counts from -14 through .\"O 14. The byte value indicating that a long offset-differential count .\"O follows is 0x1e (30), not 0x80. The long counts are stored in host .\"O byte order, which is not necessarily network byte order, and host .\"O integer word size, which is usually 4 bytes. They also represent a .\"O count 14 less than their value. The database lines have no .\"O termination byte; the start of the next line is indicated by its first .\"O byte having a value \(<= 30. .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 以下の値を持つバイトデータが次のエントリの始まりであると認識される。 .\"O ---------------------------------------- .\"O .P .\"O In addition, instead of starting with a dummy entry, the old database .\"O format starts with a 256 byte table containing the 128 most common .\"O bigrams in the file list. A bigram is a pair of adjacent bytes. .\"O Bytes in the database that have the high bit set are indexes (with the .\"O high bit cleared) into the bigram table. The bigram and .\"O offset-differential count coding makes these databases 20\(en25% smaller .\"O than the new format, but makes them not 8-bit clean. Any byte in a .\"O file name that is in the ranges used for the special codes is replaced .\"O in the database by a question mark, which not coincidentally is the .\"O shell wildcard to match a single character. .\"O . .P さらに古いデータベース形式では、ダミーエントリの代わりに先頭に 256 バイトのテーブルがあり、ファイルリストでもっとも頻繁に用いられている bigram が並べてある。bigram とは隣接した二つのバイトデータをインデックス付けしたものである。データベースに現われるバイトデータのうち、最高位ビットがセットされているものは (残りの 7 ビットをインデックスとして) bigram テーブルのデータと置換される。この bigram とオフセット差分カウントを用いることで、データベースの大きさは新しいフォーマットより 20\-25% 小さくなっている。しかし 8 ビットクリーンでないという欠点を併せ持つ。ファイル名に含まれるバイトデータのうち、スペシャルコードに属するものは、データベース中ではすべてクエスチョンマークで置き換えられる。これは任意の一文字を表わすシェルのワイルドカードなので、実際のファイル名に現われることはない。 . .\"O ---------------------------------------- .\"O .SH EXAMPLE .\"O .nf .SH 例 .nf .\"O ---------------------------------------- .\"O .\"O Input to \fBfrcode\fP: .\"O /usr/src .\"O /usr/src/cmd/aardvark.c .\"O /usr/src/cmd/armadillo.c .\"O /usr/tmp/zoo \fBfrcode\fP への入力が以下のようなものとする: /usr/src /usr/src/cmd/aardvark.c /usr/src/cmd/armadillo.c /usr/tmp/zoo .\"O ---------------------------------------- .\"O .\"O Length of the longest prefix of the preceding entry to share: .\"O 0 /usr/src .\"O 8 /cmd/aardvark.c .\"O 14 rmadillo.c .\"O 5 tmp/zoo 直前のエントリとの最長一致部分の長さは: 0 /usr/src 8 /cmd/aardvark.c 14 rmadillo.c 5 tmp/zoo .\"O ---------------------------------------- .\"O .\"O .fi .\"O Output from \fBfrcode\fP, with trailing nulls changed to newlines .\"O and count bytes made printable: .\"O .nf .\"O 0 LOCATE02 .\"O 0 /usr/src .\"O 8 /cmd/aardvark.c .\"O 6 rmadillo.c .\"O \-9 tmp/zoo .fi \fBfrcode\fP からの出力は、最後のヌル文字を改行に代え、カウントバイトを数字に代えると以下のようなものになる: .nf 0 LOCATE02 0 /usr/src 8 /cmd/aardvark.c 6 rmadillo.c \-9 tmp/zoo .\"O ---------------------------------------- .\"O .\"O (6 = 14 - 8, and -9 = 5 - 14) .\"O .fi .\"O . (6 = 14 \- 8 または \-9 = 5 \- 14) .fi . .\"O ---------------------------------------- .\"O .SH "REPORTING BUGS" .\"O GNU findutils online help: .\"O .br .\"O Report any translation bugs to .SH バグ報告 GNU findutils オンラインヘルプ: .br 翻訳に関するバグ報告: .\"O ---------------------------------------- .\"O .PP .\"O Report any other issue via the form at the GNU Savannah bug tracker: .PP その他の問題について GNU Savannah バグトラッカー経由での報告: .\"O ---------------------------------------- .\"O .RS .\"O .RS .\"O ---------------------------------------- .\"O .RE .\"O General topics about the GNU findutils package are discussed at the .\"O .I bug\-findutils .\"O mailing list: .RE GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: .\"O ---------------------------------------- .\"O .RS .\"O .RS .\"O ---------------------------------------- .\"O .RE .\"O . .RE . .\"O ---------------------------------------- .\"O .SH COPYRIGHT .\"O Copyright \(co 1994-2021 Free Software Foundation, Inc. .\"O License GPLv3+: GNU GPL version 3 or later . .\"O .br .\"O This is free software: you are free to change and redistribute it. .\"O There is NO WARRANTY, to the extent permitted by law. .\"O . .SH 著作権 Copyright \(co 1994\-2021 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. . .\"O ---------------------------------------- .\"O .SH "SEE ALSO" .\"O .BR find (1), .\"O .BR locate (1), .\"O .BR xargs (1), .\"O .BR locatedb (5) .SH 関連項目 \fBfind\fP(1), \fBlocate\fP(1), \fBxargs\fP(1), \fBlocatedb\fP(5) .\"O ---------------------------------------- .\"O .PP .\"O Full documentation .\"O .br .\"O or available locally via: .\"O .B info locatedb .PP 充実したドキュメントは を参照のこと。 .br またローカルにおいては \fBinfo locatedb\fP により参照可。 .\"O ----------------------------------------