私のls --helpが機能しないのはなぜですか?

私のls --helpが機能しないのはなぜですか?
Marias-MacBook-Air:~ marias$ ls --help

ls: illegal option -- -

usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

答え1

Mac OS XバージョンはlsBSDに基づいており、インクルードlsをサポートしていません--helplsマンページまたは、man lsシステムの詳細をご覧ください。

答え2

さまざまなコマンドはさまざまなオプションスタイルをサポートしています。主な動向は次のとおりです。

  • getopt():getopt() はオプション解析のための 30 年のプログラミング API です。広く使用され、唯一のPOSIX標準です。

    単一文字オプションのみをサポートし、その一部はパラメータを使用できます。簡単にするために、複数のオプションを一緒に組み合わせることができます。

    例: tail -fn -2:parameterless option( -f) の後に-n引数が続きます (または-2で書くこともできます )。オプションの終わりを表示するために使用されます。tail -fn-2tail -f -n -2--

  • XrmParseCommand():(1980年代)はい:から電話をかけますXtOpenApplication()

    伝統的に使用されているAPI(読み取り昔ながら今日)X11アプリケーションです。オプションは通常-option(または)伝統的に単一の引数です+option

    オプションは引数を受け入れることができますが、forのように結合することはできません(for省略形など、1文字getopt()オプションで定義されていても)。-d-display

  • グヌgetopt_long。 (1980年代後半)。 GNUはgetopt()APIを拡張し、互換性のある方法で長いオプションのサポートを追加しました。

    GNUはこれらのオプションの起源です--long。これがGNUシステムでは一般的ですが、他の場所では一般的ではありません。

    これには、長いオプションと短いオプションの2種類があります。長いのは--foo。パラメータを許可するパラメータはまたは--foo=argで作成できます--foo arg

    -o別の拡張は引数( or -oarg--optor )を受け入れるオプションですが--opt=arg、短いバリアントでは空の引数渡しを許可しません。長いオプションは省略できます。と同様に、orを--help渡すことができます(またはで始まる唯一のオプションの場合)。 GNUオプションの解析では、オプション引数とオプション引数ではなく引数をインターリーブすることもできます(オプションの終わりを表示するためにまだ使用できます)。--he--hh--

    GNUスタイルのオプションは現在、新しい事実上の標準となっており、ほとんどの言語にはそれを解析するAPIがあります(時には完全な機能セットがないか、時には拡張機能があります)。

  • Wild West:多くのアプリケーションがオプションを手動で解析するか、代替構文を使用して一般的ではないライブラリを使用するようになりました。彼らが標準に固執しない限り、彼らが望むことをするのを防ぐことはできません。もちろん、いくつかのコマンドはオプションをまったく受け入れません。

これで、コマンドにヘルプを印刷するかメッセージを使用するオプションがあるかどうかは、完全にアプリケーションの作成者の判断で決まります。

多くのアプリケーションが印刷されます。使用法オプションが認識されないときのメッセージ (オプションがあるコマンドの場合) 一部は、、、、、-h… にメッセージを印刷することもできます。-?-help--help--usage--long-help

今何をするのか分からず、任意の引数を使ってコマンドを呼び出すのは危険です。-hおそらく助けるまたは他のもの。例えばshutdown -h時間システムを変更してください。 or ... を使用するコマンドの場合 (or or ...)-helpの略語です。-h -e -l -p-h -e lp-h elp--host=elpgetopt()getopt_long()

コマンド承認オプションがわかっている場合、比較的安全な選択はまたは-?です-:。シェルから:

cmd -\?
cmd -:

getopt()API の場合、:特別な?意味を持つため、有効なオプションではない可能性があります。これにより、サポートを受けるための有効なオプションがある場合は、それを求めるエラーメッセージが表示されます。

$ xterm -:
xterm: bad command line option "-:"

usage:  xterm [-/+132] [-C] [-Sccn] [-T string] [-/+ah] [-/+ai] [-/+aw]
[...]

Type xterm -help for a full description.
$ dd -:
dd: invalid option -- ':'
Try 'dd --help' for more information.
$ ls -:
ls: illegal option -- :
usage: ls -1RadCxmnlogrtucpFbqisfL [files]

すべてのコマンドには使用できません。

とにかく最善の方法は、すでにman述べたように、最初に試してみることです。

一部のコマンドはシェルに組み込まれている(参照してくださいtype the-command)、そのドキュメントはシェルマニュアルにあります。

しかし、これは一般的に真実ではありませんls

関連情報