web-dev-qa-db-ja.com

mktempで作成したファイルを上書きしても大丈夫ですか?

ファイルを一時的な場所にコピーしたいのですが。

重要なものを上書きしていないことと、スクリプトの実行中にファイルの場所がわかっていることを確認したいと思います。

#!/bin/bash

myfile="$(mktemp)"
cp "source" "$myfile"

# work with $myfile

rm "$myfile"

これは大丈夫ですか?足りないものはありますか? (許可など?)
そのファイルを上書きするのは気が引ける。

1
user

マニュアルページから

安全に一時ファイルまたはディレクトリを作成し、その名前を出力します。

mktempが成功したかどうかのチェックを追加できます。

myfile="$(mktemp)"
if test $? != 0; then
  exit 1
fi

mktempが成功した場合、以前は存在しなかったファイルが作成されています。そのファイルは安全に上書きできます。これがmktempを使用する目的です。マニュアルに記載されているように、権限はu+rwに設定されています。

4
RalfFriedl