このエントリーをはてなブックマークに追加

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



記事一覧へ