aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/mktemp.1
blob: ee48db22fc125964a75256e305d5e1cbef48c69a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
.\" %FreeBSD: src/usr.bin/mktemp/mktemp.1,v 1.7.2.1 2000/10/15 11:37:43 alex Exp %
.\" From: %OpenBSD: mktemp.1,v 1.8 1998/03/19 06:13:37 millert Exp %
.\"
.\" Copyright (c) 1989, 1991, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/usr.bin/mktemp/mktemp.1,v 1.7.2.1 2000/10/15 11:37:43 alex Exp %
.\"
.Dd November, 20, 1996
.Dt MKTEMP 1
.Os
.Sh 名称
.Nm mktemp
.Nd (ユニークな) 一時ファイル名を作成する
.Sh 書式
.Nm mktemp
.Op Fl d
.Op Fl q
.Op Fl t Ar prefix
.Op Fl u
.Ar template ...
.Nm mktemp
.Op Fl d
.Op Fl q
.Op Fl u
.Fl t Ar prefix
.Sh 解説
.Nm
ユーティリティは、引数のファイル名テンプレートの一つ一つに対して、
その一部を上書きすることにより、ファイル名を生成します。
このファイル名はユニークであり、アプリケーションが使用するのに適しています。
テンプレートは、いくつかの
.Ql X
が後続する任意のファイル名であり、例えば
.Pa /tmp/temp.XXXX
です。
後続する
.Ql X
は、現在のプロセス番号やユニークな文字の組み合わせと置き換えられます。
.Nm
が返すことが可能なユニークなファイル名の数は、指定した
.Ql X
の数に依存します;
.Ql X
を 6 つ指定した場合には、およそ 26 ** 6 の組み合わせを
.Nm
が扱えることとなります。
.Pp
.Nm
がユニークなファイル名を生成することに成功した場合、
ファイルがモード 0600 (
.Fl u
フラグ未指定時) で作成され、ファイル名が標準出力に出力されます。
.Pp
.Fl t Ar prefix
オプション指定時には、
.Nm
はテンプレート文字列を
.Ar prefix
と、
.Ev TMPDIR
環境変数が設定されていればそれも用いて生成します。
.Ev TMPDIR
が設定されていない場合の、デフォルトの場所は
.Pa /tmp
です。ユーザが指定したかもしれない環境変数の使用が適切であると保証
できるかどうかに注意を払ってください。
.Pp
1 回の起動でいくつでも一時ファイルを作ってかまいません。これには、
.Fl t
フラグの結果の内部テンプレートをもとにするものひとつも含まれます。
.Pp
.Nm
は、シェルスクリプトが安全に一時ファイルを使用するために提供されています。
伝統的に多くのシェルスクリプトが、
プログラム名に pid を付けた名前を一時ファイル名として使用しています。
この種の命名法は予測されうるので、
レース状態となった場合に容易に攻撃者が勝ってしまいます。
より安全、しかしながらまだ劣ったアプローチとして、
同じ命名法でディレクトリを作るというものがあります。
この方法では一時ファイルが壊されないことを保証できますが、
単純なサービス停止攻撃を許してしまいます。
上記のような理由により、
.Nm
の使用をお勧めします。
.Sh オプション
使用可能なオプションを以下に示します:
.Bl -tag -width indent
.It Fl d
ファイルではなくディレクトリを作成します。
.It Fl q
エラーが発生した場合、黙って失敗します。
エラー出力が標準エラーに出力されることが望ましくないスクリプトで有用です。
.It Fl t Ar prefix
ファイル名テンプレートを生成するために必要なテンプレートを生成します
(与えられた
.Ar prefix
と、設定されている場合には
.Ev TMPDIR
を使用します)。
.It Fl u
.Dq 安全ではない
モードで操作します。一時ファイルは
.Nm
が終了する前にアンリンクされます。これは
.Xr mktemp 3
よりは少しましですが、依然レース状態を引き起こします。
このオプションの使用はお勧めしません。
.El
.Sh 戻り値
.Nm
ユーティリティは、成功時には値 0 で終了します。
いかなる失敗時にも値 1 で終了します。
.Sh 使用例
以下の
.Xr sh 1
スクリプトの一部で、
.Nm
の簡単な使用方法を説明します。
このスクリプトは、安全な一時ファイルを取得できない場合には終了します。
.Bd -literal -offset indent
TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
echo "program output" >> $TMPFILE
.Ed
.Pp
$TMPDIR を使用する場合には次のようにします:
.Bd -literal -offset indent
TMPFILE=`mktemp -t $0` || exit 1
echo "program output" >> $TMPFILE
.Ed
.Pp
次の場合、スクリプト自身でエラーをつかまえます。
.Bd -literal -offset indent
TMPFILE=`mktemp -q /tmp/$0.XXXXXX`
if [ $? -ne 0 ]; then
	echo "$0: Can't create temp file, exiting..."
	exit 1
fi
.Ed
.Sh 関連項目
.Xr mkdtemp 3 ,
.Xr mkstemp 3 ,
.Xr mktemp 3 ,
.Xr environ 7
.Sh 歴史
.Nm
ユーティリティは
.Ox 2.1
に登場しました。この実装はマニュアルページとは独立に記述されました。
このマニュアルページは
.Ox
由来です。