mktemp(1) FreeBSD 一般コマンドマニュアル

mktemp

前のページ 上に戻る 次のページ

mktemp


     mktemp [-d] [-q] [-u] -t prefix


解説

     mktemp ユーティリティは、引数のファイル名テンプレートの一つ一つに対して、
     その一部を上書きすることにより、ファイル名を生成します。このファイル名は
     ユニークであり、アプリケーションが使用するのに適しています。テンプレート
     は、いくつかの `X' が後続する任意のファイル名であり、例えば
     /tmp/temp.XXXX です。後続する `X' は、現在のプロセス番号やユニークな文字
     の組み合わせと置き換えられます。 mktemp が返すことが可能なユニークなファ
     イル名の数は、指定した `X' の数に依存します; `X' を 6 つ指定した場合に
     は、およそ 26 ** 6 の組み合わせを mktemp が扱えることとなります。

     mktemp がユニークなファイル名を生成することに成功した場合、ファイルがモー
     ド 0600 ( -u フラグ未指定時) で作成され、ファイル名が標準出力に出力されま
     す。

     -t prefix オプション指定時には、 mktemp はテンプレート文字列を prefix
     と、 TMPDIR 環境変数が設定されていればそれも用いて生成します。 TMPDIR が
     設定されていない場合の、デフォルトの場所は /tmp です。ユーザが指定したか
     もしれない環境変数の使用が適切であると保証できるかどうかに注意を払ってく
     ださい。

     1 回の起動でいくつでも一時ファイルを作ってかまいません。これには、 -t フ
     ラグの結果の内部テンプレートをもとにするものひとつも含まれます。

     mktemp は、シェルスクリプトが安全に一時ファイルを使用するために提供されて
     います。伝統的に多くのシェルスクリプトが、プログラム名に pid を付けた名前
     を一時ファイル名として使用しています。この種の命名法は予測されうるので、
     レース状態となった場合に容易に攻撃者が勝ってしまいます。より安全、しかし
     ながらまだ劣ったアプローチとして、同じ命名法でディレクトリを作るというも
     のがあります。この方法では一時ファイルが壊されないことを保証できますが、
     単純なサービス停止攻撃を許してしまいます。上記のような理由により、 mktemp
     の使用をお勧めします。


オプション

     使用可能なオプションを以下に示します:

     -d      ファイルではなくディレクトリを作成します。

     -q      エラーが発生した場合、黙って失敗します。エラー出力が標準エラーに
             出力されることが望ましくないスクリプトで有用です。

     -t prefix
             ファイル名テンプレートを生成するために必要なテンプレートを生成し
             ます (与えられた prefix と、設定されている場合には TMPDIR を使用
             します)。

     -u      ``安全ではない'' モードで操作します。一時ファイルは mktemp が終了
             する前にアンリンクされます。これは mktemp(3) よりは少しましです
             が、依然レース状態を引き起こします。このオプションの使用はお勧め
             しません。

           tempfoo=`basename $0`
           TMPFILE=`mktemp -t ${tempfoo}` || exit 1
           echo "program output" >> $TMPFILE

     次の場合、スクリプト自身でエラーをつかまえます。

           tempfoo=`basename $0`
           TMPFILE=`mktemp -q /tmp/${tempfoo}.XXXXXX`
           if [ $? -ne 0 ]; then
                   echo "$0: Can't create temp file, exiting..."
                   exit 1
           fi


関連項目

     mkdtemp(3), mkstemp(3), mktemp(3), environ(7)


歴史

     mktemp ユーティリティは OpenBSD 2.1 に登場しました。この実装は OpenBSD の
     マニュアルページとは独立に記述され、 FreeBSD 2.2.7 に初めて登場しました。
     このマニュアルページは OpenBSD 由来です。

FreeBSD 4.4                    November 20, 1996                   FreeBSD 4.4

ABELNET VPSサービス