「cat{foo}」はfooを出力しませんが、「cat{foo,bar}」はなぜ出力されますか?

「cat{foo}」はfooを出力しませんが、「cat{foo,bar}」はなぜ出力されますか?

サブフォルダー内のテキストファイルをリンクしようとしています。

cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1}/book.txt > out$var

しかし、これは何も返しません。したがって、存在しない「subfolder2」を追加してみてください。

cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1,subfolder2}/book.txt > out$var

今回はうまくいき、ファイルが正常にリンクされました。なぜこれが起こるのですか?

ベストアンサー1

定義に応じて、GNU Bashの中括弧拡張にはシーケンス式またはカンマ区切り値のリストが必要です。

中括弧を拡張するパターンは、オプションの序文、その後に一連のカンマ区切り文字列、または一対の中括弧の間のシーケンス式、その後にオプションのPostScriptの形式を取ります。

あなたはできますドキュメントを読むもっと学ぶ。

いくつかの簡単な例:

echo {subfolder1}
{subfolder1}

echo {subfolder1,subfolder2}
subfolder1 subfolder2

echo subfolder{1}
subfolder{1}

echo subfolder{1..2}
subfolder1 subfolder2

おすすめ記事