インタラクティブコマンドの使用法リファレンス:通常Unixで使用できますか?

インタラクティブコマンドの使用法リファレンス:通常Unixで使用できますか?

コマンドの使用への参照を提供するために、一部のコマンドはフラグのようなものに依存し、manpages他のコマンドはフラグのようなものに依存するのはなぜですか?--help新しいものではありません。一般に、2つの間に範囲の違いがあります。文書コマンドとコマンド使用法の概要。後者は一般に前者のサブセットである。しかし、ほとんどのコマンドとユーティリティにはマンページがありますが、要約セクションの形式には違いがあり、これを試してみると非常に実用的な意味があります。タブレットそのような情報。他の場合には、stringsコマンドが文書化されていないように見えるときにユーティリティの手がかりを見つけることもできます。

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

use -d dir >>file

/baseデフォルトでは、システム内の/proc/bootすべてのコマンドのすべての使用法を抽出します。

だから少しソースを見ました。GNU coreutils lsそしてFreeBSDs前者が使用情報を一部に入れる場所で同様の作業を行っていることを確認してください。使用法名前付き機能--help私の考えには)そして後者は全くどこにも置かないようです(?)。


  • この解決策(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. 

答え1

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

使用の概要を表示するオプションがあります--help(通常、オプションのリスト、1行に1つ、オプションごとに最大約60文字の説明を含む)。GNU規格。私が知る限り、このルールはGNUプロジェクトのマルチ文字オプション名の二重ダッシュルールの一部として始まりました。単一のダッシュとサポートを含む複数の文字オプション名を使用するX11ユーティリティなどの他のユーティリティがあります。-helpどちらが先に出たのかわかりません。

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

答え2

あなたの例ではGNUツールを参照しました。これはLinuxや他の多くのプラットフォームで利用可能であり、文書化の点でやや珍しいです。

実際、GNUツールは〜らしい持つ3つのレベルますますインタラクティブな参照:

--help一般的なコマンドオプション - 短い使い方一般化する,
man- クラシックマニュアルページ、「クイックリファレンス」、および
info- 詳細なGNU関連マニュアル - 完全、公式文書

多くの場合、人々はマニュアルページを基本文書として使用します。さらに、GNU情報文書がより詳細で正式であることを知っています。

好みによって少しずつ異なりますが、次のような使用パターンが非常に一般的だと思います。

  • man foo使用先基本
    • すべてのオプションの説明とともに
    • たまにはちょっと恥ずかしい感じがする時もありますが十分です
  • 時々使用さfoo --helpれる小さいオプション名がわからないなどの質問、
    • 短い要約を含む簡潔なレイアウト
  • そしてinfo foo...ほとんどの使用いいえ
    • これにより、より多くの状況固有の詳細と他のコマンドへのリンクを提供できます。
    • しかし、誰もemacsスタイルの情報ブラウザUIにアクセスできないので、確かにわかりません。
  • その他のウェブベースのドキュメント、
    • マニュアルページがとても簡潔なようです。


しかし、問題があります。

最も一般的に使用されるコマンドの場合は、次から始めます。パックcoreutils、、、、、そしてもっと、lscpmkdircsplit

マニュアルページにはman fooまったく同じ情報が含まれていますfoo --help (1)

これは意味する「真の文書」、実際にはマニュアルページにはありません。私たちが思ったように...
実際にはマニュアルページにあります。GNUについて私たちにファイルを送信してください読まなかった

manこれで、ページと(下部)を見ると、--helpマニュアルページが「より詳細」に見えるため、内容が同じであることに気付くことは困難です。これは、テキストレイアウト密度が2つのバリエーション間で大きく異なるためです。--help非常に緩い間隔に比べて極度の圧縮ですman


直接比較してみると本当に衝撃的です。

ls --help | less

man ls | less

info --subnodes ls | less

(このオプションは--subnodes比較のためにページを線形にレンダリングします。infoハイパーテキスト自体を表示し、HTMLに似た文書間をリンクします。このmanコマンドには、less比較を容易にするために強制的に比色出力が含まれます。)


関連ヒント:

ターミナル用やGUI用 infoなどの基本情報ビューアのより便利な代替方法があります。使用例は次のとおりです。または、またはURL列にあります。pinfokonqueror
pinfo lskonqueror info:lsinfo:lskonqueror


として特別な場合,文書内部コマンドGNUのbash
呼び出されたシェル組み込み関数、コマンドでアクセスできますhelp
たとえば、コマンドラインでbash次のことを試してみてください。
help cd


1)幸いにも@PádraigBradyは彼の答えでこれを指摘しました。

答え3

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

また、bash組み込みコマンドは少なくとも--helpをサポートしません。そこで例えば使用する必要がありますhelp umask。 POSIXはこれを許可し、kshは少なくともそれを使用しますumask --help。最近では、bashもこの構文を受け入れることができると提案されています。

関連情報