テンポラリディレクトリを作って、その中で作業して、テンポラリディレクトリを消す…というスクリプトを年間に百回ぐらい書いている気がしたので、うまくラッピングしてくれるtempwork
というコマンドを書きました。
Usage: tempwork command...
tempwork
に続いてコマンドを並べると、テンポラリディレクトリを自動的に作成し、そこに移動してからコマンドを実行して、終わったらテンポラリディレクトリを削除します。
$ tempwork bash -c 'pwd; date > tmp.txt; ls ; cat tmp.txt' # ↓作成されたテンポラリディレクトリ /private/var/folders/xc/phct0zx57cgc4z07mkt7pp8w0000gp/T/tempwork859985632 tmp.txt # ←テンポラリディレクトリに作成したファイル Sat Sep 3 18:38:24 JST 2016 # ←ファイルの中身 $ ls /private/var/folders/xc/phct0zx57cgc4z07mkt7pp8w0000gp/T/tempwork859985632 # ↓コマンドが終了したら、テンポラリディレクトリは削除される ls: /private/var/folders/xc/phct0zx57cgc4z07mkt7pp8w0000gp/T/tempwork859985632: No such file or directory
いままでシェルスクリプトの中でmktemp -d
を実行して変数に保存してcd
して、コマンドが終了したら削除して…とかやっていたんですが、tempworkを使うとtempwork ./script.sh
でその辺をいい感じにしてくれます。
$ echo -e '#!/bin/sh\npwd\necho hello' > tmp.sh $ chmod +x tmp.sh $ tempwork ./tmp.sh /private/var/folders/xc/phct0zx57cgc4z07mkt7pp8w0000gp/T/tempwork037699548 hello
追記
shebangで使えるようにした。
$ cat ./tmp.sh #!/usr/bin/tempwork /bin/bash echo hello pwd $ ./tmp.sh hello /private/var/folders/xc/phct0zx57cgc4z07mkt7pp8w0000gp/T/tempwork708816166