●●なbash 
2014/09/29 #ssmjp @th0x0472
今一番ホットなシェル 
それは間違いなくGNU bash 
CVE-2014-6271 
CVE-2014-7169 
#ShellShock
きょうのおはなし 
#ShellShockは関係ありません。 
bashの変態機能・・・ではなくて、 
日々のオペレーションを楽にしてくれるかもしれない 
ちょっとした機能を紹介します。 
スライドやデモはSlideShare、Qiitaにアップします。
おまえだれよ 
@th0x0472 
黒字に緑のQRコードアイコン。 
twitter, blog はこれで探せます。 
そこからSlideshare, Qiitaたどれます。 
facebook放置気味、、、すみません。
サマリ 
プロセス置換(Process Substitution) 
チルダ展開(Tilde Expansion) 
ぶっちゃけこの2つのキーワードを覚えて、 
あとはbashのマニュアル読めばOK。
プロセス置換 
cmd <(list) 
listの標準出力への出力が、 
cmdが読み込むファイルの内容になる 
grep -f, diff, comm, paste 
while read s; do ... ; done < <(list)
当然逆向きもある 
cmd >(list) 
cmdがファイルに出力する内容を 
listの標準入力につなげる 
tee・・・くらいしか思い浮かばなかったけど 
exec 1> >(tee file), exec 2> >(tee file >&2) すごい 
bash プロセス置換 双六 でぐぐる 
http://sechiro.hatenablog.com/entry/2013/08/15/bash%E3%81%AE%E3%83%97%E3%83%AD 
%E3%82%BB%E3%82%B9%E7%BD%AE%E6%8F%9B%E6%A9%9F%E8%83%BD 
%E3%82%92%E6%B4%BB 
%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E4%BD 
%9C%E6%A5%AD%E3%82%84%E3%82%B9
しくみ 
/dev/fd/xx という名前付きパイプで 
いい感じにつないでくれる。 
$ echo <(:) <(:) 
/dev/fd/63 /dev/fd/62 
「いい感じ」という表現が便利すぎる
チルダ展開・・・の前に 
ディレクトリスタックのお話 
pushd, popd, dirs
ディレクトリスタック以前 
cd - の限界。2地点の往復だけ。 
Tabキー叩きまくりもツライ。 
ディレクトリ移動で長いパス名を入力するのは 
めんどくさい。ダルい。マジで。
そこで 
ディレクトリスタック 
pushd /path/to/some/where 
ディレクトリスタックに積む 
pushd +n 
ディレクトリスタックn番目のディレクトリに移動 
popd +n 
ディレクトリスタックからn番目を削除
そこで 
ディレクトリスタック 
dirs -v 
ディレクトリスタック内のディレクトリを 
番号付きで表示する 
dirs -c 
ディレクトリスタックを空にする 
dirs -l 
ディレクトリスタック内のディレクトリを 
フルパスで表示する
ディレクトリスタック、 
でも・・・ 
pushd +n 
実行する度にスタック内の順番が変わる 
n番はあそこ、x番はここ・・・が崩れる 
変更を脳内シミュレートなんてしてられない 
毎回 dirs -v するのも面倒くさい
そこで チルダ(~)展開 
~ ってホームディレクトリでしょ。
ホームだけじゃない 
cd ~+n 
ディレクトリスタックのn番目に移動 
cd ~-n 
ディレクトリスタックの最後からn番目に移動 
(カウントは0始まりです、念のため) 
何度やってもディレクトリスタック内の順番は 
入れ替わらない!
移動だけじゃない 
$ ls ~+n 
$ touch ~+n/file 
...etc 
要は、普通にコマンドラインで使えますよ。 
ちなみに展開されるとフルパスになります。
ヒストリはこんな風に 
$ history | grep "~+[0-9]" 
111 cd ~+3 
114 echo ~+2 
115 ls ~+2 
116 touch ~+2/file 
コマンドが実行された時点のディレクトリスタック 
の内容が分からないと・・・・。
まとめ 
プロセス置換(Process Substitution) 
チルダ展開(Tilde Expansion) 
ぶっちゃけこの2つのキーワードを覚えて、 
あとはbashのマニュアル読めばOK。
おしまい。 
ご静聴ありがとうございました。

#ssmjp 2014/09 bashのちょっとした便利機能の紹介