bashで `.[].foo[]`は何をしますか?なぜ「..」と一致するのですか?

bashで `.[].foo[]`は何をしますか?なぜ「..」と一致するのですか?

以下をご覧ください:

$ echo .[].aliases[]
..
$ echo .[].foo[]
..
$ echo .[].[]
..
$ echo .[].xyz[]
..
$ echo .xyz[].xyz[]
.xyz[].xyz[]
$ echo .xyz[].[]
.xyz[].[]

明らかに、これは何かを伝えるようですが、結果がどのように調和しているのか理解していません。私の理解によると、[]これは空の文字クラスです。直観的に見ると

  • これは空の文字列にのみ一致します。この場合、そのディレクトリに一致するものがないので、bashが文字列全体を再現できることを願っています。また..aliases、(最初の例では)次のようになります。
  • それとも何もありません。この場合、bashが文字列も正確に再現できることを願っています。

これはGNU bashバージョン4.4.23(1)リリースバージョンです。

ベストアンサー1

[グループを始めてください。グループがによって終了しました]。ただし、]これをセットの一部にする方法があります。つまり、]最初の文字で指定することです。空のセットは意味がないので、これはあいまいではありません。

したがって、あなたの例は、基本的にポイントとそのポイントを含むセットが続きますので、2つのポイントと一致します。

後の例ではファイルが見つからないため、そのまま返します。

おすすめ記事