名前は何ですか
*.*
シンボルとその意味は何ですか?
答え1
*.*
古いWindows/DOSシステムでの解釈
ここでの意味は Unix/Linux ではなく Windows/DOS とより関連があります。以前のWindows / DOSシステムでは、「ワイルドカード」モードです。ワイルドカードパターンは、Unix globと同様の方法でファイル名を一致させるために使用されます。ワイルドカードは*.*
ファイルを一致させるためによく使用されます。
Unix globと同じように、*
ファイル名のすべての文字シーケンスと一致するため、それ自体は*
すべてのファイルと一致します。ただし、*.*
これらのワイルドカード文字の動作方法の違いにより、すべてのファイル名が一致します。 ~によるとこの記事:
アスタリスクを除いて、アスタリスクの後のすべての文字は効果がありません。アスタリスクはカーソルを位置 12 に移動するためです。この時点では、最後の3つの位置をクリアしてカーソルを移動する点を除いて、解析状態は何も変わりません。
この動作(Unixの観点からは少し奇妙です)は、aの後の点が*
実際には点と一致しないことを意味しますが、パターンにさらに多くの文字を追加できるハッキングだけです。これは、別のアイテムを追加すると、*
最後の3つの場所のすべてのアイテムと一致することを意味します。
この構文がWindows 95より前のDOSと以前のWindowsシステムで使用されていることを考慮すると、これはより意味があります。8.3 ファイル名。これらのファイル名には1つのドットしか使用できず、ドットの後の文字は最大3文字まで可能です。システム内のすべてのファイルでなくても、ほとんどのファイル拡張子は3文字です(技術的に短い拡張子が許可されているか拡張子が許可されていない場合でも)。それで、どういうわけか*.*
すべてのファイルを一致させることが意味があると思いました(少なくともねじれたWindowsey論理の観点からは)。 。
*.*
Unixシェルでの説明
Unixシェルでは、他の人が指摘したように、これは「パス名の拡張」または「glob」を表します。*
奇妙なジャンプエンド動作がないため、後続の文字は無視されません。*.*
パターンは、ドットを含むすべてのファイル名と一致します(開始部分を除く)。 Unix / Linuxシステムには多くのファイルがあるため、これはどのファイルとも一致しません。いいえ拡張子が必要です(またはドットが許可されるため、ドットを含める必要があります)。
Unixのファイル名の先頭にあるドットが一致しないのは、ファイル名の先頭にドットを追加するとファイルが「隠れる*.*
」方法で、隠されたファイルはデフォルトでグローバルから除外されるためです。 POSIXシェルでそれを一致させるには、パターンの先頭に明示的に点を配置する必要があります。オプションはシェルで設定するか、変数を適切に設定bash
できますが、これは別の質問です!dotglob
GLOBIGNORE
答え2
それglob
存在するbash
。以下では bash マニュアルを引用します。
bash - GNU Bourne-Again シェル
*
空の文字列を含むすべての文字列と一致します。
globstar
シェルオプションが有効で*
パス名拡張のコンテキストで使用される場合、単一パターン*s
として使用される2つの隣接オプションは、すべてのファイルとゼロ個以上のディレクトリとサブディレクトリと一致します。従うと、/
隣接する2つのエントリは*s
ディレクトリとサブディレクトリとのみ一致します。
この場合、*.*
名前にドットを含むすべてのファイルが一致します。.
詳細を見ることができますここ。
答え3
答え4
*
実行のためにシェルで使用されるワイルドカード。ファイル名拡張子、「ワイルドカード」とも呼ばれます。 *
何も含めずにすべてに拡張されます(*.*
一致するfile.
など)。もう1つの一般的なワイルドカード?
は、単一の文字と一致することです。
これらのワイルドカード文字の機能は、正規表現(たとえば、grepで使用される文字)の同じ文字使用と混同しないでください。