コマンドの出力echo *
が次の行という本があります。なぜこれが出力されるのか見つかりません。助けてください。
$ echo *
local.cshrc local.login local.profile
答え1
*
現在のディレクトリのファイル名とディレクトリ名に一致するシェル特殊文字(グローバル一致)。
$ ls *
これにより、現在のディレクトリ内のすべてのファイルとディレクトリが一覧表示されます。したがって、あなたの場合は「*」が返され、「echo」はそれをコンソールに印刷します。確認するには、以下を試してください。
$ x=*
$ echo $x
答え2
あなたはワイルドカード- と一緒に使用されます*
。globbing
file-expansion
上記のリンクはこれについて詳しく説明しています。
さまざまなコマンドラインユーティリティは、標準のワイルドカード文字(ワイルドカードパターンとも呼ばれます)を使用して複数のファイルを処理します。標準ワイルドカード(ワイルドカードパターン)の詳細については、次のように入力してマニュアルページを参照してください。
そして
*
(アスタリスク)任意の数の文字を表すことができます(ゼロを含む、つまりゼロを超える文字を含む)。 「cd*」を指定すると、「cda」、「cdrom」、「cdrecord」、「cd」自体など、「cd」で始まるすべてのエントリが使用されます。 「m * l」は、mil、mull、ml、および m で始まり、l で終わる任意の項目にすることができます。