かべぎわブログ

ブログです

mktempをつかってシェルスクリプトでユニークなtempファイルをつくる

概要

シェルスクリプトでtempファイルを作成するときに以下のようにすることが多いかと思います。

echo 'wawawa' > ./hoge.txt

ただこれだとカレントディレクトリにすでにhoge.txtが存在した場合に上書きしてしまって、人の大事なtempファイルを消してしまったりということが発生してしまいます。

なので今回はmktempコマンドを利用してユニークな一時ファイルを作成しようと思います。

コマンド例

ただ実行するだけ

単純にmktempコマンドを実行すると以下のようにユニークな空ファイルを作成することができます。

デフォルトで/tmpに作成されるのでサーバの再起動時に削除されます。

$ mktemp
/tmp/tmp.k33WbSu6vg

$ ls -l /tmp/tmp.k33WbSu6vg
-rw------- 1 ec2-user ec2-user 0  6月 28 14:00 /tmp/tmp.k33WbSu6vg

シェルスクリプトに組み込む

こんなかんじのシェルスクリプトを用意するとする。

#!/bin/bash
temp_name=$(mktemp)
echo ${temp_name}

trap 'rm ${temp_name}' 0

実行するとこんなかんじ

$ ./temp_trap.sh 
/tmp/tmp.Y2VVg7HdUA

シェルスクリプト実行後はtempファイルが削除されていることがわかる。

$ ls -l /tmp/tmp.Y2VVg7HdUA
ls: /tmp/tmp.Y2VVg7HdUA にアクセスできません: No such file or directory

おわりに

人の大事なtempファイルは消してはいけない。

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識