
man -aw printf
私のPop!_OS 20.04 LTSシステムでこれを使用すると、次のものが返されます。
/usr/share/fish/man/man1/printf.1
/usr/share/man/man1/printf.1.gz
/usr/share/man/man3/printf.3.gz
しかし、私がman -k printf
orman -f printf
またはを使用するとapropos printf
そうなります。ただ次の情報を返します。
/usr/share/man/man1/printf.1.gz
/usr/share/man/man3/printf.3.gz
なぜこのコマンドは可能なものを見つけることができないのですかman -a
?
これを試してみましたが、mandb
更新することはありません。
答え1
以下は、あなたman
とあなたの友人が次のものであると仮定します。人データベース。 Pop!_OSがUbuntuに基づいており、Ubuntu 20.04にはデフォルトでman-dbがインストールされていることを考慮すると、これは正しいことです。
man -f
「whatis」または「apropos」モード(およびそれぞれapropos)man -k
で動作すると、バイナリがman
実際に呼び出され、検索が委任されます。whatis
一方、デフォルトモード(例)または「where」モード()で実行すると、バイナリ自体で検索が実行されます。そして検索ルーチンは互いに独立して実装される。man page
man -w page
man
man
whatis
whatis
より少ない数のマニュアルページがリストされている2つの主な理由は次のとおりですman -a
。
不完全な設定:設定された検索パス
/etc/manpath.config
(Debianとその派生製品、他のいくつか/etc/man_db.conf
のディストリビューションで使用されています)には、マニュアルページを含むシステム上のすべてのディレクトリが含まれていますが、そのMANDB_MAP
一部がファイルに存在しない場合、インデックスデータベースは初期化されませんでした(検索されません)なし)。 (存在する場合)インデックスデータベースのみを検索するため、インデックスデータベースではなく検索パスにリストされているman -a
ディレクトリを直接検索するため、含まれているページはとにかく見つかります。whatis
マニュアルページを含むすべてのディレクトリに正しいものとエントリが含まれてい
MANDATORY_MANPATH
てMANDB_MAP
も、まだ表示されることがあります/etc/manpath.config
。whatis
man -a
それは単に省略出力に名前部分の組み合わせが重複しています。。あなたの場合は、printf(1)
両方に見つかり、検索パスに最初に表示されるディレクトリのみが一覧表示されます。/usr/share/man
/usr/share/fish/man
検索パスを使用するmanpath
Show & Friends コマンドを使用し、関連するすべてのディレクトリが含まれていることを確認できます。man
デフォルトではのMANDATORY_MANPATH
項目に基づいて作成されます/etc/manpath.config
。
man
MANPATH
&Friendsは、検索結果の設定を変更して、明示的に定義された検索パスを使用して呼び出すこともできます。例えば(2)の状況にあった場合、
MANPATH=/usr/share/fish/man:/usr/share/man whatis printf
1行の説明ではなく、1行/usr/share/fish/man/man1/printf.1
の説明を印刷できます/usr/share/man/man1/printf.1.gz
。
また、このオプションを使用して、後で何が起こっているのかを確認することもできます--debug
。プログラムは/usr/share/man
以前にリストされた検索パスを使用しており、3つのファイルがすべて見つかり/usr/share/fish/man
ましたが、printf
セクションで見つかった2番目のファイルの行は(または)1
として印刷されていないように見えることがあります。whatis
man -f
最後に、ケース(2)を解決するために、重複する名前部分の組み合わせもリストするようにラップするman
ヘルパー関数を定義できます。
slowman () (
IFS=:
for path in ${MANPATH-$(manpath)}
do
printf '%s\n' "Searching ${path}:" 1>&2
MANPATH="$path" man "$@"
done
)
答え2
男性男性:
-w, --where, --path, --location
Don't actually display the manual page, but do print the loca‐
tion of the source nroff file that would be formatted. If the
-a option is also used, then print the locations of all source
files that match the search criteria.
答え3
正確なバージョンman(1)
(元のUnixバージョンかどうか疑わしい...)と設定(環境変数、LinuxMANPATH
エントリ - Debianの実際のバージョン...)によって異なります。/etc/man_db.conf