Unixサブコマンド名は大文字と小文字を区別する必要がありますか?

Unixサブコマンド名は大文字と小文字を区別する必要がありますか?

githgおよび同じコマンドにはapt-getサブコマンド(より良い名前はありますか?)があり、すべて大文字と小文字を区別します。

hg log                    # not hg Log
git status                # not git Status
sudo apt-get install nano # not sudo apt-get Install nano

明らかに、Unixの多くは大文字と小文字を区別する必要があります。Unixはそうです。

しかし、この場合、潜在的なあいまいさはありません。引数はコマンド名のみ可能で、他のものは不可能です(そうですか?)。gitエラーメッセージは、状況が次のようであることを示します。

> git Status
git: 'Status' is not a git command. See 'git --help'.

Did you mean this?
        status

初心者に少し不満を与え、Unixの文化と一貫性を維持することに加えて、大文字と小文字を区別する理由がありますか?

答え1

大文字と小文字を区別する理由はありますか?

それは大きなものを残す名前空間書くことができる。たとえば、将来のバージョンのgitでは、コマンド名の大文字のバリエーションを実装したり、シェルなどのカスタムマクロ/エイリアスを受け入れることで、オーバーライドすることなく独自の背中を定義できますMVCPmvcp

答え2

大文字と小文字の区別は、POSIXがコマンドと引数を処理する方法の一部であり、意味とは何の関係もありません。

システムのデフォルトのファイルシステムは、POSIXの規則によって大文字と小文字が区別されるため、状態と状態が同じではないことは非常に良いことです。通常、システム全体で同じ動作を維持することをお勧めします。

たとえば、2番目の引数がファイル名またはキーワードである可能性がある場合、キーワードは大文字と小文字を区別することが許可されていると思いますか?コマンドが大文字と小文字を区別する引数を受け入れる場合もそうでない場合も、混乱する可能性があります。

私の考えでは、キー感度の最後の重要な点は、ls -L型を直接定義して実際に大文字で入力したい場合は、Lシステムが推測しようとしないこと、常にユーザーが入力したとおりに実行する必要があることです。

答え3

別の観点から見てください。コンピュータは言語やアルファベットを理解しておらず、数字を見て文字にマップします。 I(文字I)と|(パイプ)はあなたと非常に似ているようですが、コンピュータとはまったく異なります。

これを説明するために、以下の表を見てください。大文字コードと対応する小文字コードが一致しないことがわかります。連続的ではなく、まったく異なるコードで表されます(表源泉):

                                     ここに画像の説明を入力してください。

つまり、ユーザーとは同じように見えますが、コンピューターではそうではありませんaA

関連情報