ワイルドカード文字 `* ` は一部の文字列と一致しませんか?

ワイルドカード文字 `* ` は一部の文字列と一致しませんか?
ls  -al  .functions*
-rw-r--r-- 1 root root 471040 Mar  2 10:01 .functions.php.swo
-rw-r--r-- 1 root root 438272 Mar  2 09:57 .functions.php.swp

*一致できる理由.php.swoと一致できない.php.swp
理由は何ですか?*.functions.php

ls  -al  *.swo
ls: cannot access '*.swo': No such file or directory
ls  -al  *swo
ls: cannot access '*swo': No such file or directory

答え1

ドットで始まるファイルは、デフォルトではファイル一覧に表示されません。このような種類のファイルを一致させる最も簡単な方法は、式の先頭にドットを置くことです。ただし、これでは で始まるファイルにのみ一致します.

ls  -al  .*.swo

別の方法としては、dotglobコマンドを実行する前に を設定すると、 で始まるファイルが.含まれます。

shopt -s dotglob

~/.bashrcデフォルトに設定するには、これを追加します。

ご了承ください設定dotglobにより意図しない結果が生じる可能性があるbashシェルを使用する場合、 を使用すると.(現在のディレクトリ)と..(親ディレクトリ)の両方が表示されるためです*。setdotglobを使用すると、一度もない使用してみてくださいrm -R *

答え2

として拡大-aShaido の回答に対して、オプションがここでは機能しない理由をいくつか説明したいと思います。

コマンドlsないワイルドカードを処理します。コマンドラインインタープリターは次の手順を実行します。

コマンドライン「 」を入力すると、mycommand *.cコマンドラインインタープリタは最初にワイルドカード文字列「*.c」を一致するファイルのリストに置き換え、結果のコマンドラインを実行します。

mycommand a.c file.c test.c

コマンドラインインタープリターはすべてのコマンドに対して同じように動作するため、-aそのコマンドの場合に「隠しファイルを含む」という意味であることを認識できませんls(-a他のコマンドの場合、はまったく異なる意味を持ちます)...

関連情報