多くのコマンドラインユーティリティは長い([1]によると「GNUスタイル」)オプションを受け入れます--version。驚くべきことに、切り捨てられたバージョンは完全なオプションとして解釈されることがよくあります。たとえば、dfGNU Coreutils は以下を提供します。 user@computer ~ $ df --version
df (GNU coreutils) 8.32
Packaged by Gentoo (8.32-r1 (p0))
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Torbjorn Granlund, David MacKenzie, and Paul Eggert.
--version--v切り捨てバリアント、、、およびを--ve変更すると、--ver同じ出力が得られます。ただし、オプションに文字を追加すると、突然そのオプションが無効であることが認識されます。--vers--versi--versio user@computer ~ $ df --versionn
df: unrecognized option '--versionn'
Try 'df --help' for more information.
この動作は意図的なものですか?その理由は何ですか?私の理解は、ほとんどのユーティリティが(または同様の)依存しているということですgetopts。getoptだからマンページで手がかりを見つけましたが、説明が見つかりませんでした。 [1] ESレーモンド。UNIXプログラミングの技術。ピアソン教育、Inc.、2004
Linuxファイルコマンドのマニュアルを読んでください。魔法テストの説明で以下を見つけました。 Any file with some invariant identifier at a small fixed offset into the file
can usually be described in this way. The information identifying these files
is read from /etc/magic and the compiled magic file /usr/share/misc/magic.mgc,
or the files in the directory /usr/share/misc/magic if the compiled file
does not exist. In addition, if $HOME/.magic.mgc or $HOME/.magic exists,
it will be used in preference to the system magic files.
マジックファイルが「MagicNumber ->ファイルの種類」関係のコレクションであると想像できます。 「ファイル」プログラムが実行され、ファイル形式を見つけてファイルヘッダーを取得します。しかし、なぜそうなのか理解できません。 なぜこのファイルをコンパイルするのですか? コマンドで使用する魔法のコンパイルファイルを作成する方法はありますか? これらのテストとファイルに関連するコマンドオプションの使い方は何ですか?前任者: -C or -m。