すべてのCLIコマンドオプションは意味的な略語ですか?

すべてのCLIコマンドオプションは意味的な略語ですか?

鍵は意味論です。

curl -Iつまりcurl --head、私を混乱させます。Iアルファベットが何を意味するのか疑問に思います。意味論的な言葉の略語ではなく、参照にすぎませんか?繰り返しますが、curl -bこれはcurl --cookie同じ混乱の問題があることを意味します。

発明者が最初にそのようなデザインを思いついたことを教えてくれる人はいますか?上記の例は、オプションが意味論的である必要はないことを意味しますか?

ベストアンサー1

一見すると、この質問には「いいえ、オプション」と答える以外は答えられないようです。〜らしいいつも言わないことが見つかります。まったく意味のない命名オプションを意図的に使用する独自のプログラムを作成できます。 (もちろん、それにもかかわらず、意図的に無意味に選択された場合は、無意味に意味があると言うかもしれません。)

しかし、もう少し考えた結果、私は気づいた。オプションセマンティクスのあいまいさは、実際にコマンドラインオプション名を指定する方法にとって重要で便利な部分です。curl -I特に例示的な例である。

ムルが言うように、オプションなし持つ意味論的。しかし、curl選択-Iはい意味論。~からカール(1):

-i/--include
        (HTTP) 出力に HTTP ヘッダーを含めます。 HTTP ヘッダーには、サーバー名、文書日付、HTTP バージョンなどが含まれます。

-I/--head
       (HTTP/FTP/FILE) HTTP ヘッダーのみを取得します。 HTTPサーバーには、文書のタイトルのみを取得するHEADコマンドがあります。 FTPまたはFILEファイルと組み合わせて使用​​すると、カールはファイルサイズと最後の変更時間のみを表示します。

-i--includeHTTPヘッダーを含める省略形です。-I短縮形ですが、意味--headではより強くform -i-iHTTPヘッダーを提供-IしながらただHTTPヘッダー。

これにより、より大きな質問に対する洞察が得られます。オプション名が意味的かどうかを判断するには、さまざまな基準があります。オプションの場合はい意味的には意図的であっても意図しなかったかもしれません。かどうか気にするなら一部このオプションを意味論的に覚えておいてください。これにより、いつでもその意味に関連する名前の理由を作成できます。

一部のオプションには複数の意味があります。 GNUを作成できますgrep-Aforに一致する行に隣接する行を表示します。後ろに-Bのための今後-Cコンテキストそれはあなたに2つのことを提供します。したがって、-A/ --after-context-B/ --before-context、/ -C3つのオプションの略語は--context意味が非常に近く、アルファベットでも互いに近いです。これは意味論ですか?

これをさらに追求し、厳格な回答を得るには、その基準を検索できます。POSIX.1-2008。意味のない名前付きオプションを無効にします。これは非常に信じられないようですが、確実にするためには内容全体を注意深く読む必要があります。表面的な検索では、オプションが意味を持つための要件は表示されませんでした。特に、この公式ガイドライン--文書に準拠していると記載されているコマンドにのみ必要です - オプションの命名方法とオプションの配信の効果にはさまざまな制限がありますが、オプション名の要件や推奨事項として解釈される可能性はありません。感じる。何かを発見しても、多くのUnixシリーズシステムはPOSIXと完全に互換性があることを目指していません。

しかし、各オプションの名前が適切かどうかを判断するために公式ソースを参照すること(サプライヤーは偽装する必要があります)、全体的なアイデアは少し愚かです。オプションについて知っておくと、本当に便利なのは、名前を互いに関連付けることができるさまざまな方法です。単語、別のオプションにちなんで名前を付けるか、別のオプションにアルファベット順に隣接して名前を付けることができます。時には利用可能な文字(または数字)があります。これらの方法を考えると、オプションを覚えていて、マニュアルページを検索するときにそのオプションを見つけ、スクリプトまたはプログラムが使用する必要があるオプション名について正しい決定を下すのに役立ちます。

最後に、これは略語オプションの名前は、意味を推論できない方法で指定されます。たとえば、長いフォーマットオプション--regex--regexpmlocateすべて正規表現に関連しているので、意味上名前が付けられました。しかし、名前の付いた方法では、それが何を--regexp意味するのかわかりません。Nextパラメータは着替えるそして--regex意味みんなモードパラメータは次のとおりです。むしろS.

おすすめ記事