たとえば、
[fakename]$ type echo
echo is a shell builtin
しかし、man echo
echo
のGNUcoreutilsバージョンを教えてください 。私が見ているマニュアルページが正しいかどうかを判断する最も簡単な方法は何ですか。つまり、直接呼び出した場合に得られるユーティリティのページです。
承認された回答:
本当にそうではありません。マニュアルページの外部の知識がないわけではありません。
echo
の場合 (およびprintf
、およびtest
、…)、多くの場合、シェルビルトインであるため、それを理解し、シェルのドキュメントを読む必要があります。 (そしてecho
実装によって悪名高い違いがある場合は、printf
を使用してください 代わりに。)
ほとんどの場合、すべてではないにしても、type command
、例: type echo
echo is a shell builtin
を出力します 。 (type
POSIXで指定されていますが、例: fishもそれをサポートしますが、POSIXyではありません。)Bashでは、man bash
を読みます。 、オンラインドキュメント、または組み込みコマンドhelp
を使用します (これはBashに固有であり、存在することを知っておく必要があります)。
コマンドがない場合でも 組み込みの場合、同じ名前のコマンドが複数ある可能性があります。rename
有名な例です(Debian / Ubuntuの名前変更ユーティリティがCentOSなどの他のディストリビューションのものと異なるのはなぜですか?を参照してください)。これで、OSに実際にインストールされたユーティリティの正しいマニュアルページが表示されます。 Debianでは、「alternatives」システムは、コマンドのalternativesが変更された場合にも、対応するマニュアルページを更新します。ただし、オンラインのマニュアルページを読む場合は、そのことに注意する必要があります。
多くのユーティリティには、--version
のようなコマンドラインオプションがあります これは、そのコマンドがどのような実装であるかを教えてくれるかもしれません。 (しかし、ほとんどすべてのユーティリティがそれを持っているわけではありません。元々はGNUismだと思うので、GNUユーティリティと、たまたまカスタムをコピーしたものがあります。)rename
の場合 、たまたま2つの異なる実装を区別するのに役立ちます:
debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)
さらに、システムには、通常はユーティリティの動作を変更するために、ユーティリティと同じ名前のエイリアスまたは関数が含まれている場合があります。その場合、マニュアルページに表示されるデフォルトが適用されない可能性があります。 ls
のエイリアス -i
を追加するエイリアスと同様に一般的です rm
へ またはmv
。ただし、type foo
foo
かどうかも教えてくれます エイリアスまたは関数です。