web-dev-qa-db-ja.com

インタラクティブなコマンド使用法のリファレンス:一般的にUnixでそれを持っていますか?

一部のコマンドがmanpagesに依存しているのに対し、他のコマンドはコマンド使用法の参照を提供するために--helpフラグのようなものに依存している理由の質問 新規ではありません 。通常、コマンドのドキュメントコマンドの使用法の概要の間にはスコープの違いがあります。後者はしばしば前者のサブセットです。しかし、たとえばほとんどのコマンドやユーティリティにマンページがある場合でも、概要セクションのフォーマットには違いがあり、そのような情報を extract しようとすると非常に実用的な意味があります。また、コマンドにドキュメントがないように見える場合は、stringsユーティリティの手がかりが見つかる場合があります。

この[〜#〜] qnx [〜#〜]プラットフォームで使用しているコマンドに興味があり、 use を発見しました。コマンド1 使用情報を表示します。 usemsg で説明されているように、フレームワークにはユーティリティソースでの標準使用レコードの設定が含まれ、コンパイル後はuseコマンドでアクセスでき、ラップすることもできます。ネイティブ機能など。簡単にできるのでとても便利です。

use -d dir >>file

/baseおよび/proc/bootで、基本的にシステム上のすべてのコマンドのすべての使用法を抽出します。

そこで、 GNU coreutils lsFreeBSD ls のソースを簡単に調べて、それらがそのようなことをしたかどうかを確認し、前者は使用情報をいくつかusagenamedfunction(for --help Igues)一方で、後者はそれをどこにも配置していないようです(?)。


  • この種のソリューション(use)は、コマンド使用法のリファレンスをインタラクティブに提示するための商用Unixで見られる典型的なものですか?
  • POSIX/SUSは、コマンドでのコマンド使用法参照の提示/実装について何かを推奨または提案していますか( シェルユーティリティ表記 を指定するのではなく)?

1 .useコマンド:

use
Print a usage message (QNX Neutrino)

Syntax:
use [-aeis] [-d directory] [-f filelist] files

Options:
-a
    Extract all usage information from the load module in its source form, suitable for piping into usemsg. 
-d directory
    Recursively display information for all files under directory. 
-e
    Include only ELF files. 
-f filelist
    Read a list of files, one per line, from the specified filelist file, and display information for each. 
-i
    Display build properties about a load module. 
-s
    Display the version numbers of the source used in the executable. 
files
    One or more executable load modules or Shell scripts that contain usage messages. 
3
user44370

商用ユニスは通常、マニュアルページでのみ使用情報を表示します。コマンド自体に使用法情報を表示させることは、従来のUnix機能ではありません(サポートされているオプションのリストを表示することを除いて、使用法エラーについての説明はありません)。 POSIXとその親戚はこのようなことについて話しません。

使用法の要約を表示する--helpオプション(通常、オプションのリスト、1行に1つ、各オプションの最大説明は最大60文字)を持つことは GNU標準 です。私の知る限り、この規則は、複数文字のオプション名の二重ダッシュ規則の一部として、GNUプロジェクトによって開始されました。X11ユーティリティなど、他のユーティリティもあります。ダッシュが1つ付いた複数文字のオプション名を使用し、-helpをサポートします。どちらが最初に来たのかわかりません。

useコマンドはQNXのものです。

注GNU coreutilsのマニュアルページは$ cmd--helpから生成されます

また、bashビルトインは少なくとも--helpをサポートしていないことに注意してください。そこでは、たとえばhelp umaskを使用する必要があります。現在、POSIXは許可しており、kshは少なくともumask --helpを使用します。最近、bashもこの構文を受け入れる可能性があることが提案されました

2
Pádraig Brady