どうも、nippaです。
最近知った、shellの中括弧{}の便利な使い方を紹介します。
1. 変数の表現
よく知られているのが変数を表現するに中括弧{}を利用する場合です。
例えば、コマンドラインで
VAR='aaa' echo ${VAR} # 結果 aaa
のような使い方はよく知られています。
変数名の前後に文字列を結合する場合、変数を中括弧{}で括って表現します。
2. コマンドをまとめる
最近使うようになったものとして、中括弧{}を使ってコマンドをまとめる使い方です。
テキストファイルに文字を書き込む場合、これまでは以下のように行っていました。
echo "this" > test.txt echo "is" > test.txt echo "a pen" > test.txt cat test.txt # 結果 this is a pen
これを中括弧{}を使って表現すると、
{ echo "this"; echo "is"; echo "a pen"; } > test.txt cat test.txt # 結果 this is a pen
とまとめることができます。
{の後、}の前のはスペースは必須ですので忘れないでください。
3. ファイル名を順に展開する
ファイルのコピーや移動にファイルを複数指定する際に中括弧{}を使って手間を省けます。
test1ディレクトリの配下にある2つのテキストファイル(text1.txt text2.txt)をtest2ディレクトリに移動させます。
test1/ ├ text1.txt └ text2.txt test2/
これまでだと、
mv test1/text1.txt test2/ mv test1/text2.txt test2/ ls test2 text1.txt text2.txt
のように移動させていました。
中括弧{}を使うと
mv test1/text{1,2}.txt test2/ ls test2 text1.txt text2.txt
と上の1ファイルずつ移動させることと同じ結果になります。
細かく言えば、実際は、mv test1/text1.txt test1/text2.txt test2/
の省略形になります。
ディレクトリ構造が深い場合などに非常に便利な使い方です。
またファイル名が違う場合には、
mv test1/{text1.txt,tmp.tar.gz} test2/ ls test2 text1.txt tmp.tar.gz
と書けば、一度にファイル名を指定することができます。
また、中括弧{}は順に展開されるため、ファイル名の変更にも使えます。
mv test2/text{1,3}.txt ls test2 text2.txt text3.txt
このような便利な使い方もできます。
注意としては、中括弧{}内には、スペースを含んではいけません。 カンマの前後、{の後、}の前にスペースを入れるとエラーになります。
感想
- 3.の使い方は非常に便利な時があります。
コマンドライン上で何ども同じ作業をしなければならない場合があるので、中括弧{}を利用すれば作業を効率化できます。
shellの中括弧{}の便利な使い方でした。
ではでは、また次回。