一時ファイルしたい(mktemp

$ mktemp
/var/folders/tv/9pv2t92113g5hw2kp4g351_00000gn/T/tmp.AfnWksCOe2

$ mktemp --tmpdir=.
tmp.EBOCpr7uXX

mktempで一時ファイルを作成できます。 ファイルは$TMPDIRに作成されます。 --tmpdirオプションでファイルの生成先を変更できます。

ファイル名がランダムに生成されるので、他のスクリプトとの競合を避けることができます。 単体で使うより、シェルスクリプトに組み込むことで力を発揮します。

ファイル名したい

$ mktemp -t example
/var/folders/tv/9pv2t92113g5hw2kp4g351_00000gn/T/example.QaYKwbG8BA


$ mktemp example-XXXXXX
example-uJrVLB

-tオプションで、ファイル名のprefixを変更できます。 デフォルトはtmpになっています。

また、引数にファイル名のテンプレートを指定できます。 XXXXXの部分がXの数だけランダムな文字に置換されます。

注釈

x(小文字)ではダメでした。 また、Xのあとに文字列があってもダメでした。 なので、example-XXX.txtのように拡張子をつけることはできません。

ディレクトリしたい(-d / --directory

$ mktemp --directory
/var/folders/tv/9pv2t92113g5hw2kp4g351_00000gn/T/tmp.t6ZigUBJUV

$ mktemp --directory --tmpdir=.
./tmp.yuE8DXF3Hx

--directoryオプションで一時的なディレクトリを作成できます。 --tmpdirオプションと組み合わせて、任意のディレクトリの中に作成できます。

スクリプトしたい

1#!/usr/bin/env bash
2
3# 一時ファイル作成し、ファイル名を取得
4temp_file = $(mktemp)
5# 終了時に削除
6trap 'rm -v "${temp_file}"' EXIT