tempfile(1) 安全な一時ファイルの作成

書式

tempfile [-d DIR] [-p STRING] [-s STRING] [-m MODE] [-n FILE] [--directory=DIR] [--prefix=STRING] [--suffix=STRING] [--mode=MODE] [--name=FILE] [--help] [--version]

説明

tempfile は、一時ファイルを安全な方法で作成します。ファイル名の選択に tempnam(3) を使用し、これを O_RDWR | O_CREAT | O_EXCL を用いてオープンします。ファイル名は標準出力に出力されます。ディレクトリの選択に関する実際のステップは、tempnam(3) を参照してください。

ファイルを作成するディレクトリを、以下の順番で探します (しかし確実なことは tempnam(3) を参照してください)。

a)
環境変数 TMPDIR が存在し、適切なディレクトリ名が設定されていれば、これを使用します。
b)
そうでない場合、--directory 引数が指定されていて適切であれば、これを使用します。
c)
そうでない場合、P_tmpdir (<stdio.h> で定義) が適切であれば、これを使用します。
d)
最後に、実装で定義したディレクトリ (/tmp) を使用します。

オプション

-d, --directory DIR
ファイルを DIR に配置します。
-m, --mode MODE
ファイルのモードを 0600 に代えて MODE で開きます。
-n, --name FILE
ファイル名として tempnam(3) に代えて FILE を使用します。このオプションを与えると、-d, -p, -s の各オプションを無視します。
-p, --prefix STRING
STRING の 5 文字までを名前の生成に使用します。
-s, --suffix STRING
STRING を末尾にするファイルを生成します。
--help
使用方法を標準出力に表示し、正常終了します。
--version
バージョン情報を標準出力に表示し、正常終了します。

戻り値

終了ステータスが 0 は一時ファイルが正常に作成できたことを意味します。その他の終了ステータスはエラーです。

バグ

NFS パーティションでファイルを作成する際、排他作成は保証されません。tempfile は一時ディレクトリを作成できません。tempfile は非推奨です。代わりに mktemp(1) を使用してください。

#!/bin/sh
#[...]
t=$(tempfile) || exit
trap "rm -f -- '$t'" EXIT
#[...]
rm -f -- "$t"
trap - EXIT
exit

翻訳

倉澤 望 <[email protected]>, 2012
Debian JP Documentation ML <[email protected]>