出力が異なる理由は何ですか?
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
ある場合、このコマンドはディレクトリ内のすべてのファイルを印刷します。bb
ccc
$ echo *
a aa bb ccc
このコマンドは、pwdに文字を含むすべてのファイルを印刷します。
$ echo ?
a
ただし、コマンドを指定しないと、最初の「単語」(ほとんどの場合は最初のスペースまで)がコマンドとして扱われます。
アスタリスクのみを提供する場合は、*
アスタリスク拡張の後の最初の単語が実行するコマンドとして使用されます。
コマンドa
がない場合、エラーが出力されます。
$ *
bash: a: command not found
コマンドが呼び出されると、a
3つのパラメータで呼び出されます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
。