![ワイルドカード文字 `* ` は一部の文字列と一致しませんか?](https://rvso.com/image/1554899/%E3%83%AF%E3%82%A4%E3%83%AB%E3%83%89%E3%82%AB%E3%83%BC%E3%83%89%E6%96%87%E5%AD%97%20%60*%20%60%20%E3%81%AF%E4%B8%80%E9%83%A8%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%81%A8%E4%B8%80%E8%87%B4%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8B%3F.png)
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
として拡大-a
Shaido の回答に対して、オプションがここでは機能しない理由をいくつか説明したいと思います。
コマンドls
はないワイルドカードを処理します。コマンドラインインタープリターは次の手順を実行します。
コマンドライン「 」を入力すると、mycommand *.c
コマンドラインインタープリタは最初にワイルドカード文字列「*.c
」を一致するファイルのリストに置き換え、結果のコマンドラインを実行します。
mycommand a.c file.c test.c
コマンドラインインタープリターはすべてのコマンドに対して同じように動作するため、-a
そのコマンドの場合に「隠しファイルを含む」という意味であることを認識できませんls
(-a
他のコマンドの場合、はまったく異なる意味を持ちます)...