言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

  1. トップページ
  2. Bash辞典
  3. {}(ブレース展開)

{}(ブレース展開)

ブレース展開(『{}』)はカンマ区切りの文字列や連続する数値・文字のリストを一度に生成します。ファイルの一括作成・コピー・ループなどで繰り返しを大幅に減らせます。

構文

カンマ区切りで展開します。

{a,b,c}

連続する整数を展開します。

{開始..終了}
{開始..終了..ステップ}

連続する文字を展開します。

{a..z}
{A..Z}

前置・後置文字列と組み合わせます。

前置{a,b,c}後置

ネストもできます。

{a,{b,c},d}

展開パターン一覧

展開結果の例概要
{a,b,c}a b cカンマ区切りの文字列を展開します。
{1..5}1 2 3 4 5連続する整数を展開します。
{1..10..2}1 3 5 7 9ステップ付きで整数を展開します。
{a..e}a b c d e連続するアルファベットを展開します。
file{1..3}.txtfile1.txt file2.txt file3.txt前後に文字列を付けて展開します。
{01..05}01 02 03 04 05ゼロパディングで展開します。
{a,b}{1,2}a1 a2 b1 b2複数のブレースを組み合わせて全組み合わせを生成します。

サンプルコード

基本的なカンマ展開です。

echo {apple,banana,cherry}
apple banana cherry

整数の連続展開です。

echo {1..5}
1 2 3 4 5

ステップ付きで展開します。

echo {0..20..5}
0 5 10 15 20

逆順の展開もできます。

echo {5..1}
5 4 3 2 1

アルファベットの連続展開です。

echo {a..f}
a b c d e f

ファイルやディレクトリの一括作成に便利です。

touch report_{2023,2024,2025}.txt
ls report_*.txt
report_2023.txt  report_2024.txt  report_2025.txt
mkdir -p project/{src,tests,docs,build}
ls project/
build  docs  src  tests

『{,.bak}』の展開テクニックでファイルのバックアップを作成します。最初の要素が空文字列になるため、『cp config.json config.json.bak』と同じ意味になります。

cp config.json{,.bak}

ゼロパディングで展開します。

echo {01..05}
01 02 03 04 05

for ループと組み合わせます。

deploy.sh
for env in {dev,staging,prod}; do
    echo "デプロイ先: $env"
done
bash deploy.sh
デプロイ先: dev
デプロイ先: staging
デプロイ先: prod

なお、for 文はターミナルでも直接入力できます。『do』の後で Enter を押すと『> 』マークが表示され、これは「まだ入力が続く」というサインで、『done』を入力すると実行されます。

for env in {dev,staging,prod}; do
    echo "デプロイ先: $env"
done
デプロイ先: dev
デプロイ先: staging
デプロイ先: prod

複数のブレースを組み合わせると全組み合わせ(直積)を生成します。

echo {A,B}{1,2,3}
A1 A2 A3 B1 B2 B3

概要

ブレース展開はシェルの展開順序の中で最も早く処理されます。そのため変数を展開順序の中で使う場合は注意が必要です(例: 『{1..$n}』は動作しません。変数はブレース展開の後に処理されるためです。変数を使いたい場合は for ループ の『$ seq』コマンドや C スタイルループを使います)。

『cp file{,.bak}』のようなゼロ幅展開テクニックはファイルのバックアップ作成に重宝します。『{,}』の最初の要素が空文字列になるためです。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。