*
の方法を知っています ls
のようなコマンドで解釈されます 例えば。ただし、*
を実行しようとすると コマンドとして、シェルは作業ディレクトリの最初のファイルまたはディレクトリを実行しようとします。どうしてこれなの?シェルは*
をどのように理解しますか ?
承認された回答:
他のいくつかのオペレーティングシステムとは異なり、Unixでは、ファイル名のワイルドカードを展開するのはシェルです。最初にパラメータ展開とグロブを展開し、次に(現在の)最初の単語を実行するコマンドの名前として使用します。
これは、先頭にダッシュが付いた名前のファイルが面倒な場合がある理由でもあります。*
のようなグロブです。 ファイル名に展開され、ダッシュで始まる名前をオプションとして使用できます。 (恐ろしい例は、-r
というファイルです。 作業ディレクトリにあると、rm *
になります すべてを再帰的に削除します…)
通常、*
は使用しません ただし、コマンドラインの最初の項目として、最初のファイルで実行するコマンドを決定することで、問題が発生する可能性は低くなります。