mktempというコマンドがあります。システム内でユニークな名前のファイルやディレクトリを作るときに便利です。
とりあえず実行してみます。
# ls -l /tmp/tmp*
ls: cannot access /tmp/tmp*: そのようなファイルやディレクトリはありません
# mktemp
/tmp/tmp.gXRUvoOt3V
# ls -l /tmp/tmp*
-rw------- 1 root root 0 11月 15 21:12 2013 /tmp/tmp.gXRUvoOt3V
# mktemp
/tmp/tmp.OH7gBe6osv
# ls -l /tmp/tmp*
-rw------- 1 root root 0 11月 15 21:12 2013 /tmp/tmp.OH7gBe6osv
-rw------- 1 root root 0 11月 15 21:12 2013 /tmp/tmp.gXRUvoOt3V
空のファイルが出来ていることがわかります。
ユニークな名前でディレクトリを作ることもできます。その場合は-dオプションをつけます。
# mktemp -d
/tmp/tmp.xAVTGUSBuj
# ls -l /tmp/tmp*
-rw------- 1 root root 0 11月 15 21:12 2013 /tmp/tmp.OH7gBe6osv
-rw------- 1 root root 0 11月 15 21:12 2013 /tmp/tmp.gXRUvoOt3V
/tmp/tmp.xAVTGUSBuj: <= 空のディレクトリが出来てます。
合計 0
以下のようにファイル名を取っておけばシステム内でユニークであることが保障された一時ファイルを手軽に作ってシェルの中で使えます。
# TEMP_FILE_NAME=`mktemp`
# echo $TEMP_FILE_NAME
/tmp/tmp.bKOKwZWOhB
出力先のディレクトリを変えることもできます。
# mktemp --tmpdir=/var
/var/tmp.0k2FXxeybf
ファイルの後ろに識別用の文字列を入れることもできます。
# mktemp --suffix=-test
/tmp/tmp.2mU7VJMTsB-test