bash には {} の展開機能があります。
これがものすごく便利ですよね。
1〜10までの連番を作る
たとえば連番を作る
$ echo {1..10} 1 2 3 4 5 6 7 8 9 10
ゼロ埋めで、連番を作る
$ echo {001..10} 001 002 003 004 005 006 007 008 009 010
展開をする。
その他に、複数の展開が可能なんですね。
$ echo hoge.{a,b,c}.txt hoge.a.txt hoge.b.txt hoge.c.txt
展開を組み合わて、ファイル名をぱぱっとコピーする
そもそも、なんどもファイル名を入力するの面倒じゃないですか。
そこで、bashの展開を使ってファイルをコピーする
サンプルファイルを作る
$ touch sample.txt
これをコピーする
$ cp sample.{txt,back}
この記述は、以下のように、コマンド実行前にbashに依り展開されます。
$ cp sample.txt sample.back
ファイル名をぱぱっと記述するにはとってもクールだと思いませんか。
つまり、ファイルをコピーには、{} 展開
が便利です
$ cp sample.{txt,back}
元ファイル名は省略できる
拡張子を変えるだけに、元のファイル名を入力するのは不便すぎる。
そういうときは、省略してしまえばイイ。
$ echo sample.txt{,.back} sample.txt sample.txt.back
拡張子の前に、名前をつける
元ファイル名を省略する方法と組み合わせて戦う。
この方法だと、拡張子の前に名前を挿入するのもカンタン。
echo sample{,.back}.txt sample.txt sample.back.txt
さらに、コマンド呼び出しと組み合わせる
$ echo hoge{,$(date -I)}.txt hoge.txt hoge2016-10-13.txt
ほら、日付を付けたバックアップファイル作成もスッキリ記述できる。
展開機能は知ってたけど、ナニに使っていいか未だによくわかってなかったので目からうろこでした。