マンページエイリアス

マンページエイリアス

一部のマニュアルページは1ページに複数のコマンド/機能を文書化し、manコマンドは通常、各コマンド/機能の正しいマニュアルページを提供します。

例: 多くのシステムの malloc/free/calloc/realloc のマニュアルページ

人々はそのような照会にどのようなメカニズムを使用しますか?

これまで私が出会ったのは次のとおりです。

  • 下のシンボリックリンク/usr/share/man/manX
  • .so manX/fooソースディレクティブのみを含むAliasのマニュアルページ

もちろん、マンページのハードリンクとコピーも思い浮かびます。

manコマンドは他のメカニズムをサポートしていますか?

たとえば、このカテゴリ名を定義する中央インデックスファイルはありますか?

答え1

OpenBSDでは、各manディレクトリ(/usr/share/man基本システムに関連するマニュアルなど)にmandoc.db毎週実行されるクローンジョブで作成されたデータベースmakewhatis

これらのデータベースは、特定の文字列のさまざまな手動ソース(roffソースファイル)を解析して作成され、次のように生成されます。man便利です。インデックスの内容の1つは、OpenBSDを使用するマニュアルセクション組版.Nmの(「名前」)マクロが参照する文字列です。.Sh NAMEmdocマクロ。

たとえば、最初にソースコードの一部malloc(3)手動入力/usr/share/man/man3/malloc.3次のようになります。

.Dd $Mdocdate: May 19 2019 $
.Dt MALLOC 3
.Os
.Sh NAME
.Nm malloc ,
.Nm calloc ,
.Nm realloc ,
.Nm free ,
.Nm reallocarray ,
.Nm recallocarray ,
.Nm freezero ,
.Nm aligned_alloc ,
.Nm malloc_conceal ,
.Nm calloc_conceal
.Nd memory allocation and deallocation
.Sh SYNOPSIS

ツールは各値を索引付けmakewhatisし、.Nmユーザーがリストされている機能(たとえば)のマニュアルを要求すると、コマンドはソースのmanレンダリングされたバージョンを表示します。malloc.3man free

OpenBSDベースシステムに関連しないマニュアル(例:以下のサードパーティのマニュアル/usr/local/man)も解析されますが、makewhatisこれらのマニュアルはroffタグを使用しないことが多いためmdoc(通常は他のマクロパッケージを使用してLinux用に書かれています)マクロ値で使用されるタグをインデックス化します(.THタイトルマクロ)。

一部のサードパーティプログラムは、ドキュメントを複製して別の名前を付けた場合でも、個々のツールまたは機能用に別々のドキュメントを展開するようです。シンボルおよび/またはハードリンクを使用することも一般的なソリューションです。

他の人は少しスマートです。zzip_fread(3)完全なマニュアルソース(パッケージの一部)は次のとおりですzziplib

.so man3/zzip_read.3

つまり、パーサーに別のファイルを読み取るマクロが含まれます。

関連情報