狠狠撸

狠狠撸Share a Scribd company logo
ブレース展開のススメ
Tomoyuki KOYAMA
$ whoami
?Name: Tomoyuki KOYAMA
?Twitter: @tmyk_kym
?BLOG: http://blog.koyama.me/
シェル?使ってますか?
シェル?
? シェルといえば…?
bash zsh dash csh …
? 入力インターフェース
? [コマンド]ー>[シェル] ー [システムコール]ー>[システム
操作]
(問) カレントディレクトリに?
1~100のディレクトリ?
を作成せよ.
一般的な解答
?phpの場合
?mkdir.php?
<?php?
for($i=0;$i<=100;$i++){?
shell_exec( mkdir .$i);?
}?
?>
?$ php mkdir.php
面倒くない??
シェルを使った解答
?Bashの場合
?$ for i in $(seq 1 100); do?
mkdir $i?
done
解説
? for (ループ変数:よくあるi) in (1から100まで)?
do?
(ループする処理)?
done
DEMO
まだ面倒(??ω?缚)
シェルを使った解答(改)
? $ mkdir {1..100}
? Bashの「ブレース展開」を使う
? {1..100}は?
「1 2 3 4 … 98 99 100」?
に展開されて実行される
(役に立たないそう…)
ブレース展開は?
応用すると便利になる!!
ブレース展開の応用例1
? ファイルa.txt z.txtを作成する?
$ touch {a..z}.txt?
-> touch a.txt b.txt c.txt … y.txt z.txt
? 数学の展開に似ている!!?
4(a+b+c+d+ … +x+y+z)?
= 4a + 4b + 4c + … + 4x + 4y + 4z
ブレース展開の応用例2
? ファイル Report_01.java Report_20.java を作
成する?
$ touch Report_{01..20}.java # bash 4.4で確認
ブレース展開の応用例3
? 単語区切りでブレース展開も出来る
? $ echo 5000兆円{ほしい,たべたい,うまい}?
-> 5000兆円ほしい 5000兆円たべたい 5000兆円うまい
? $ echo Linux{,,,}?
Linux Linux Linux Linux
???
すし
たくさん欲しい
?
?$ echo ?{,,,,,} ←ずっと,打ち込むの
つらい?
-> ? ? ? ? ? ?
?
?$ eval echo ?{$(yes , ? head -n
5000000000000000 ? tr -d 'n')}
実行したらフリーズした

More Related Content

第2回 学生LT