echo*とecho.*の結果

echo*とecho.*の結果

理論的には、コマンドの結果はecho *「現在のディレクトリのすべてのファイル」でなければなりません。ドットファイルを含める必要がありますか?

同様に、結果にls *ドットファイルを含める必要がありますか?

ベストアンサー1

~からファイル名拡張子GNU bashリファレンスセクション:

ファイル名拡張にパターンを使用する場合、シェルオプション dotglob が設定されていない限り、ファイル名の先頭またはスラッシュの直後の「.」文字は明示的に一致する必要があります。ファイル名を一致させるときは、スラッシュ文字は常に明示的に一致する必要があります。それ以外の場合は、「。」文字は特別な処理を受けません。

これは、すべてのPOSIXシェルの文書化された(予想される)動作です。ファイル名拡張に使用されるパターン:

ファイル名がピリオド( '.' )で始まる場合は、ピリオドをパターンの最初の文字として使用するか、スラッシュ文字の直後にピリオドを明示的に一致させる必要があります。先行期間は次のものと一致しないでください。

  • アスタリスクまたは疑問符の特殊文字

  • 角かっこ式 (例: "[!a]")、範囲式 (例: "[%-0]")、または文字クラス式 (例: "[[:punct:]]") と一致しないリスト

角かっこ式の一致リスト(例:「[.abc]」)の明示的なピリオドがファイル名の前のピリオドと一致できるかどうかは指定されません。

おすすめ記事