エコなしでパターンマッチング

エコなしでパターンマッチング

出力が異なる理由は何ですか?

touch a aa bb ccc

echo *

a aa bb ccc //理解しています。 *は0個以上一致することを意味します。

*

aa bb ccc // 混乱しています。

echo ?

大丈夫

?

a aa bb ccc //また混乱します。

*?

aa bb ccc //非常に混乱している

* *

a aa aa bb bb ccc ccc // とても混乱しています。

echoの使用と使用しないものの違いが何であるかを知りたいです。

答え1

作成するすべての行には通常、最初の単語であるコマンドが必要です。

何かを印刷するための一般的なコマンドはですecho

pwd(現在の作業ディレクトリ)にa、およびがaaある場合、このコマンドはディレクトリ内のすべてのファイルを印刷します。bbccc

 $ echo *
 a aa bb ccc

このコマンドは、pwdに文字を含むすべてのファイルを印刷します。

$ echo ?
a

ただし、コマンドを指定しないと、最初の「単語」(ほとんどの場合は最初のスペースまで)がコマンドとして扱われます。

アスタリスクのみを提供する場合は、*アスタリスク拡張の後の最初の単語が実行するコマンドとして使用されます。

コマンドaがない場合、エラーが出力されます。

$ *
bash: a: command not found

コマンドが呼び出されると、a3つのパラメータで呼び出されますaa bb ccc

詳細を提供していないので、その名前でどのコマンドが実行されているかを推測できますa(デフォルトのコマンドではありません)。また、どのケースを使用しているのかわかりません。

ただし、すべての例は、最初の例が欠落していることをa示しています。

$ *
aa bb ccc              ### missing first `a`.
$ *?
aa bb ccc              ### missing first `a`.
$ * *
a aa aa bb bb ccc ccc  ### missing first `a`.

とは別に:

$ ?
a aa bb ccc

コマンドが何であるかわからないので、結論を出すのは難しいですa

関連情報