man -f の挙動について
CentOS-6.7
, ubuntu-15.04
のそれぞれで以下のコマンドを実行すると、man
ページ(セクション1のみ)の概要一覧を意図通りに表示できます。
(ubuntu
での実行例: manpage-ja
をインストールしているのでところどころ日本語で表示されています)
$ for filename in /usr/share/man/man1/*.1.gz; do cmd=`basename $filename .1.gz`; man -f $cmd; done
2to3-2.7 (1) - Python2 to Python3 converter
2to3-3.4 (1) - Python2 to Python3 converter
2to3 (1) - Python2 to Python3 converter
411toppm (1) - convert Sony Mavica .411 image to ppm
Mail (1) - send and receive Internet mail
...
zless (1) - 圧縮されたテキストを CRT で見るためのファイル閲覧フィルタ
zlib-flate (1) - raw zlib compression program
zmore (1) - 圧縮されたテキストを CRT で見るためのファイル閲覧フィルタ
znew (1) - .Z ファイルを再圧縮して .gz ファイルにする
zsoelim (1) - satisfy .so requests in roff input
これがfreeBSD-10.2-stable
で実行した場合、全く想定外の挙動をしました。
$ for filename in /usr/share/man/man1/*.1.gz; do cmd=`basename $filename .1.gz`; man -f ${cmd:-}; done
c2ph(1), pstruct(1) - Dump C structures as generated from "cc -g -S" stabs
biff(1) - be notified if mail arrives and who it is from
ctm_smail(1), ctm_dequeue(1), ctm_rmail(1) - send and receive ctm(1) deltas via mail
forward(5) - mail forwarding instructions
from(1) - print names of those who have sent mail
...
...
[: nothing appropriate
...
...
tblgen(1) - Target Description To C++ Code Generator rst2man-indent-level 0 1 rstReportMargin \$1
[an-margin] level
[rst2man-indent-level] level margin:
[rst2man-indent
[rst2man-indent-level]] -
[rst2man-indent0]
[rst2man-indent1]
[rst2man-indent2] . 1 INDENT RS \$1 nr rst2man-indent
[rst2man-indent-level]
[an-margin] nr rst2man-indent-level +1 . UNINDENT RE rst2man-indent-level -1
[rst2man-indent
[rst2man-indent-level]]u
tcsh(1) - C shell with file name completion and command line editing
xstr(1) - extract strings from C programs to implement shared strings
DynaLoader(3) - Dynamically load C libraries into Perl code
ExtUtils::CBuilder(3) - Compile and link C code for Perl modules
ExtUtils::Constant(3) - generate XS code to import C header constants
ExtUtils::Constant::XS(3) - generate C code for XS modules' constants
ExtUtils::Embed(3) - Utilities for embedding Perl in C/C++ applications
ExtUtils::Miniperl(3) - write the C code for perlmain.c
ExtUtils::ParseXS(3) - converts Perl XS code into C code
Fcntl(3) - load the C Fcntl.h defines
List::Util::XS(3) - Indicate if List::Util was compiled with a C compiler
XSLoader(3) - Dynamically load C libraries into Perl code
c2ph(1), pstruct(1) - Dump C structures as generated from "cc -g -S" stabs
--More-- (byte 2220)
man -f
としているだけなのにどういうわけか途中でページャ(more
)よるユーザー入力待ち状態になってしまいます。
確かにfreeBSD
のman
を見るとman -f
はwhatis(1)
コマンドを実行し、そのwhatis
は環境変数PAGER
の影響を受けると書かれていました。ページャデフォルトがmore
であるとも。
しかしman -f
を単体で動作したときにはページャ表示に切り替わってユーザー入力待ちとなるような動作は確認できませんでした。
$ man -f c2ph
c2ph(1), pstruct(1) - Dump C structures as generated from "cc -g -S" stabs
コマンドの仕様について分かってないとか、実行コマンドの書き方に問題があるとか、そういうことだろうと思って調べてみたものの理解が及びません。ご教示お願いいたします。