たとえば、次のコマンドを入力した場合:
$ man -k compare
diff
コマンドは結果から欠落していますtest
が、実際には存在しません。apropos
期待どおりに使用して同じ結果を得ました。
$ whereis diff
diff: /usr/bin/diff /usr/share/man/man1/diff.1.gz
$ whereis test
test: /usr/bin/test /usr/share/man/man1/test.1.gz
簡単な説明を確認すると、diff
結果は次のようになります。
NAME
GNU diff - compare files line by line
ご覧のとおり、短い説明に「比較」があります。また、長い説明も確認してみましょう。
DESCRIPTION
Compare FILES line by line.
説明に「比較」が再び表示されます。
それでは、次の簡単な説明を見てみましょうtest
。
NAME
test - check file types and compare values
これがまさに私が期待したものです。しかし、テストの説明には「比較」がありませんでした。
それで、なぜ見つけることman -k compare
ができないのかわかりません。しかし、私はこれがコマンドの出力に関連していると思います。apropos compare
diff
whatis
$ whatis diff
diff (1) - (unknown subject)
$ whatis test
test (1) - check file types and compare values
今、これらの違いが発生する理由は、マニュアルページの名前が1つではなく「GNU diff」という2つの単語で構成されているためですが、diff
わかりません。
ベストアンサー1
これはGNU diffutilsパッケージのマニュアルページのバグです。疑いがあるように、問題はプログラム名として「diff」だけを表示するのではなく、「GNU diff」などを表示することです。これにより、manプログラムが簡単な説明を認識できなくなります。
python3
>>> import dbm
>>> db = dbm.open('/var/cache/man/index.db')
>>> db['diff\0']
b'-\t1\t1\t1554725040\t0\tA\t-\t-\tgz\t\x00'
>>> db['cat\0']
b'-\t1\t1\t1567679920\t0\tA\t-\t-\tgz\tconcatenate files and print on the standard output\x00'
このバグはdiffutils 3.3以降に発生しましたが、diffutils 3.6より前に発生しました。報告によるとバグ #39760そして固定今回提出してくださいまたは実際に可能です今回提出してください。この修正はまだリリースされておらず、diffutils 3.8でリリースされる予定です。