Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
{}(ブレース展開)
ブレース展開(『{}』)はカンマ区切りの文字列や連続する数値・文字のリストを一度に生成します。ファイルの一括作成・コピー・ループなどで繰り返しを大幅に減らせます。
構文
# カンマ区切りで展開
{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}.txt | file1.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 ループと組み合わせます。
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}』のようなゼロ幅展開テクニックはファイルのバックアップ作成に重宝します。『{,}』の最初の要素が空文字列になるためです。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。