`^(*.c|*.md)` とはどういう意味ですか?

`^(*.c|*.md)` とはどういう意味ですか?

^()あまりにも当たり前の質問だったら申し訳ありませんが、それがどういう意味なのかはわかりません。

ls ^(*.c|*.md)

zshこのパラメータは、ファイルを除く*.cすべての*.md項目に展開されます。

  1. 何ですか^
  2. ()この文脈では、括弧はどういう意味ですか?
  3. このコマンドも機能します。またはを^(*.c||*.md)使用する必要がありますか?|||

ベストアンサー1

  1. ^ZshではグローバルオペレータEXTENDED_GLOB設定後に利用可能、すべてのコンテンツと一致とは別に次のモード。

  2. 括弧グループパターンは、|区切りがパイプとして解釈されないように括弧が必要な区切り()に役立ちます。

  3. ^(*.c||*.md)「一致するファイル、空の名前のファイル、または一致するファイルを*.c除くすべてのもの」を意味します。空の名前は役に立たないので、重複を避けるためにも*.md使用|できます。^*.(c|md)*.

--また、オプションの区切り文字を使用する必要があります。lsそれ以外の場合は、ファイル名がで始まる場合は-オプションとして扱われますls

ls型が発生したglob拡張子によって生成されたファイルの内容を一覧表示したくない場合目次、このオプションを使用する必要があります-d。または、組み込み機能を使用してこれらのファイル名を印刷します。printこれらのファイルからメタデータ情報を取得するlsなどのオプションにのみ役立ちます。-l

ls -ld -- ^*.(md|c)
print -rC1 -- ^*.(md|c)(N)

ここでファイル名はprinted raw on 1 Column です。一致するファイルが見つからない場合(そしてそのファイルから出力を取得できない場合)、エラーを防ぐためNのglob修飾子です。NULL_GLOBprint

おすすめ記事