lsユーティリティを使用するとき(?)はどういう意味ですか?

lsユーティリティを使用するとき(?)はどういう意味ですか?

使っていますエルエスユーティリティと私のコマンドは次のとおりです。

$ ls x?[a-c]*

そのようなコマンドの結果は何ですか?これまで、私は次の項目がリストされていることを理解しました(そしてこれが正しいことを願っています)。

  • xで始まる
  • 3番目の文字は{a、b、c}です。
  • 3番目の文字(無関係)以降のすべての内容が含まれます。

私の質問うん、それは何ですか?(疑問符)とはどういう意味ですか?

よろしくお願いします。

答え1

ls機能ではなくbash機能であり、「パターン一致」のセクションで説明されています。大きな打撃(1):

特殊パターン文字の意味は次のとおりです。

*

      空の文字列を含むすべての文字列と一致します。いつ。 。 。いつglobstarシェルオプションが有効になっています *パス名拡張コンテキストで使用され、2つの隣接*単一パターンとして使用される場合、すべてのファイルはゼロ個以上のディレクトリとサブディレクトリと一致します。次に/、隣接する 2 つ *s はディレクトリとサブディレクトリにのみ一致します。
?
      単一文字と一致します。
[...]
      含まれているすべての文字と一致します。ハイフンで区切られた文字のペアで表示されます。範囲表現;現在のロケールの組み合わせ順序と文字セットを使用して、これら2つの文字の間のすべての文字と一致します。次の最初の文字の場合 [! または^その後、含まれていないすべての文字が一致します。範囲式の文字ソート順序は、現在のロケールとLC_COLLATEまたはLC_ALL設定されている場合はシェル変数。範囲式の伝統的な解釈を得るには[a-d]等しい[abcd]、設定値 LC_ALL シェル変数は Cまたは有効 globasciiranges住宅オプション。 ㅏ-セットの最初または最後の文字で作成して一致させることができます。 ㅏ]セットの最初の文字で作成して一致させることができます。

あなたの理解も完全に正確ではありません。?これは単一文字を意味するため、式がx?[a-c]*一致することになります。要点は、これが3番目の文字ではxQcFoo.barなく2番目の文字である可能性があることです。コマンドの出力は、パターンと一致するファイルのリストになります。あるいは、そのようなファイルがなければ、シェルはそれを何も変更しないので、リテラル名をリストしようとします。xmabcx1axabc{a,b,c}ls x?[a-c]*x?[a-c]*x?[a-c]*lsx?[a-c]*

関連情報