例えば、
[fakename]$ type echo
echo is a shell builtin
しかし、man echo
私はGNU coreutilsのバージョンを受け取りましたecho
。私が見ているマニュアルページが正しいかどうか(つまり、直接呼び出すことで取得できるユーティリティ)を知る最も簡単な方法は何ですか?
ベストアンサー1
あなたは本当に知りません。マニュアルページ以上の知識がなければ。
echo
(and printf
、and、...)の場合、通常はtest
シェルが組み込まれているので、それを知ってシェルのドキュメントを読む必要があります。
(そしてecho
実装ごとに異なることが知られています。printf
代わりに使用.)
ほとんどの(すべてではありませんが)シェルでは、たとえばwill printを使用して何かが組み込まれていることを確認できます。 (type command
type echo
echo is a shell builtin
type
POSIXで指定しかし、例えば魚POSIXyではありませんが、サポートされています。 )Bashでは、次のように読み取ることができますman bash
。オンライン文書、または使用組み込みコマンドhelp
(これはBashに固有のものであり、これが存在することを知る必要があります)。
命令があってもいいえ組み込みコマンドには、同じ名前の複数のコマンドがあります。rename
これが有名な例です(参照:Debian / Ubuntuの名前変更ユーティリティがCentOSなどの他のディストリビューションの名前変更ユーティリティと異なるのはなぜですか?)。オペレーティングシステムには、Debianなどの実際にインストールされているユーティリティの正しいマニュアルページが必要です。「代替」システムコマンド置換が変更されると、対応するマニュアルページも更新されます。しかし、もしあなたが読むならオンラインマニュアルページ、この点を知っておく必要があります。
--version
多くのユーティリティには、コマンドがどの実装であるかを示すコマンドラインオプションがあります。 (ただし、ほとんどすべてのユーティリティにこの機能があるわけではありません。もともとはGNUismだったと思いますので、GNUユーティリティとカスタムコピーに発生したユーティリティにはこの機能があります。rename
)
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