Linux で /tmp ディレクトリ以下に tmp ファイルを作るなら mktemp コマンドを使うと安全にファイル作成できます。
mktemp 以降に、任意のファイル名 +「X」を3つ以上を指定すると、「X」を指定した部分が適当な文字列に置き換わります。
$ mktemp /tmp/XXXXXX
/tmp/DCz1yP
ちなみに mktemp は引数無しで動かしても良いのですが、ディストリビューションや macOS によっては /tmp 以外のディレクトリが TMPDIR になってることがあるので、ディレクトリを指定する方が無難です。
ファイル名を固定にしていると同じコマンドを実行した際に同じファイルに上書きして中身の整合性が取れなくなるので、テンポラリファイルを作ってから mv(後勝ちで良い)か ln(先勝ちになる)するのが割と一般的な処理です。
TMPFILE=`mktemp`
なんか処理 > "$TMPFILE"
mv "$TMPFILE" 要るファイル
TMPFILE=`mktemp`
ln "$TMPFILE" 要るファイル固定
なんか処理 > 要るファイル
mktemp /tmp/XXXXXX.csv って macOS で実行すると XXXXXX.tsv ってファイルが作成されるけど、Amazon Linux で実行すると
[ec2-user@aws ~]$ mktemp /tmp/XXXXXX.csv
/tmp/DCz1yP.csv
みたいにランダムにファイル名が付与されるのか。macOS で試してみて、「なんやこれ」ってなりました。
Unix 系の OS だと suffix はあまり関係ないので mktemp /tmp/XXXXXX とするのは割と普通な感じです。 Mac OS X だと GNU coreutils の gmktemp を使うと Linux と同じ挙動になります。
$ brew install coreutils
$ gmktemp /tmp/XXXXX.csv
/tmp/cdWSV.csv
以上、mktemp コマンドで安全に tmp ファイル作成したい現場からお送りしました。