'\" te .\" Copyright (c) 2008, 2012, Oracle and/or its affiliates.All rights reserved. .TH mktemp 1 "2012 年 7 月 23 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 mktemp \- 一時ファイル名の作成 .SH 形式 .LP .nf \fBmktemp\fR [\fB-dtqu\fR] [\fB--directory\fR] [\fB--quiet\fR] [\fB--dry-run\fR] [\fB-p\fR \fIdirectory\fR] [\fB--suffix\fR=\fIsuff\fR] [\fB--tmpdir\fR[=\fIdir\fR]] [\fItemplate\fR] .fi .SH 機能説明 .sp .LP \fBmktemp\fR ユーティリティーは一時ファイル名を作成します。この操作を行うために、\fBmktemp\fR は指定されたファイル名テンプレートを使用して、その一部を上書きし、一意のファイル名を作成します。「オペランド」の項を参照してください。\fB\fR .sp .LP テンプレートは、\fBmktemp\fR(3C)、\fBmkdtemp\fR(3C)、\fBmkstemp\fR(3C)、および \fBmkstemps\fR(3C) ライブラリ関数を使用するパス名に変換されます。 .sp .LP \fBmktemp\fR が固有のファイル名を正しく生成できる場合、ファイル (またはディレクトリ) は、ファイルの所有者によってのみ読み取りおよび書き込みできるファイルのアクセス権で作成され (\fB-u\fR フラグが指定される場合を除く)、ファイル名は標準出力に出力されます。 .sp .LP \fBmktemp\fR では、一時ファイルを安全に使用するシェルスクリプトを使用できます。従来、多くのシェルスクリプトでは、\fBPID\fR を接尾辞としてプログラムの名前を使用し、これが一時ファイル名として使用されています。この種の名付けスキームは予測可能で、発生する競合状態は、攻撃者に簡単に利用されます。同じ命名スキームを使用して一時ディレクトリを作成するアプローチの方が安全ですが、やはり十分とは言えません。このアプローチでは、一時ファイルが破壊されないことが保証されますが、単純なサービス拒否攻撃を受ける可能性があります。代わりに \fBmktemp\fR を使用してください。 .SH オプション .sp .LP サポートしているオプションは、次のとおりです。 .sp .ne 2 .mk .na \fB\fB-d\fR, \fB-–directory\fR\fR .ad .sp .6 .RS 4n ファイルではなくディレクトリを作成します。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIdirectory\fR\fR .ad .sp .6 .RS 4n 一時ファイル名を生成するときに、指定されたディレクトリを接頭辞として使用します。ユーザーの \fBTMPDIR\fR 環境変数が設定されている場合、ディレクトリはこの環境変数によってオーバーライドされます。このオプションを指定すると、\fB-t\fR フラグも暗黙的に指定されます。 .RE .sp .ne 2 .mk .na \fB\fB-q\fR, \fB-–quiet\fR\fR .ad .sp .6 .RS 4n エラーが発生した場合に失敗メッセージが表示されません。これは、スクリプトでエラー出力を標準エラーに出力しない場合に便利です。 .RE .sp .ne 2 .mk .na \fB\fB-–suffix\fR=\fIsuff\fR\fR .ad .sp .6 .RS 4n \fIsuff\fR をテンプレートに追加します。\fIsuff\fR にはスラッシュ (\fB/\fR) を含めることができません。このオプションは、置換可能な X 文字以外の文字でテンプレートが終了する場合に暗黙的に仮定され、このような X 文字を含める要件は除外されません。 .RE .sp .ne 2 .mk .na \fB\fB-–tmpdir\fR[=\fIdir\fR]\fR .ad .sp .6 .RS 4n 「テンプレート」は \fIdir\fR を基準として相対的に指定されます。\fIdir\fR が指定されない場合、ユーザーの環境変数 \fBTMPDIR\fR が設定されているときはこれが使用され、設定されていなければ \fB/tmp\fR が使用されます。このオプションは、絶対名を持つテンプレートをサポートせず、\fB-t\fR を使用する場合とは異なり、テンプレートにスラッシュが含まれている場合があります。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR\fR .ad .sp .6 .RS 4n 一時ディレクトリをルートとするパスを生成します。このディレクトリは次のように選択されます。ユーザーの \fBTMPDIR\fR 環境変数が設定されている場合、そこに含まれているディレクトリが使用されます。それ以外の場合、\fB-p\fR フラグが指定されていたときは、指定されたディレクトリが使用されます。上記のいずれも当てはまらない場合、\fB/tmp\fR が使用されます。このモードでは、テンプレート (指定されている場合) は (フルパスとは対照的に) ディレクトリのコンポーネントである必要があるため、任意のスラッシュを含めることはできません。 .RE .sp .ne 2 .mk .na \fB\fB-u\fR, \fB-–dry-run\fR\fR .ad .sp .6 .RS 4n 安全でないモードで動作します。\fBmktemp\fR が終了する前に一時ファイルのリンクが解除されます。これは \fBmktemp\fR(3C) より若干良好ですが、やはり競合状態が発生します。このオプションを使用するのは望ましくありません。 .RE .SH オペランド .sp .LP 次のオペランドがサポートされています。 .sp .ne 2 .mk .na \fB\fItemplate\fR\fR .ad .RS 12n .rt \fItemplate\fR は、たとえば \fB/tmp/tfile.XXXXXX\fR のような、3 つから 6 つの \fBX\fR が含まれた任意のファイル名にできます。 .sp \fItemplate\fR が指定されない場合は、デフォルトの \fBtmp.XXXXXX\fR が使用され、\fB-t\fR フラグが暗黙的に使用されます。 .sp 連続する X が \fItemplate\fR に複数ある場合、\fB--suffix\fR で別途指定される場合を除き、最後の連続文字が置換テキストとして使用されます。 .sp \fItemplate\fR の最後の X のセットの後に文字がある場合、明示的に指定しないかぎり、\fB--suffix\fR オプションはすべてその文字になることが暗黙的に指定されます。 .RE .SH 使用例 .LP \fB例 1 \fR\fBmktemp\fR の使用 .sp .LP 次の例は、\fBsh\fR(1) スクリプトでの \fBmktemp\fR の簡単な使用例を示しています。この例では、スクリプトは安全な一時ファイルを取得できない場合、終了します。 .sp .in +2 .nf TMPFILE=`mktemp /tmp/example.XXXXXX` if [ -z "$TMPFILE" ]; then exit 1; fi echo "program output" >> $TMPFILE .fi .in -2 .sp .LP \fB例 2 \fR\fBTMPDIR\fR をサポートするための \fBmktemp\fR の使用 .sp .LP 次の例は \fBmktemp\fR を使用して、ユーザーの \fBTMPDIR\fR 環境変数をサポートします。 .sp .in +2 .nf TMPFILE=`mktemp -t example.XXXXXX` if [ -z "$TMPFILE" ]; then exit 1; fi echo "program output" >> $TMPFILE .fi .in -2 .sp .LP \fB例 3 \fR一時ファイルの名前を指定しない \fBmktemp\fR の使用 .sp .LP 次の例は、一時ファイルの名前を指定せずに \fBmktemp\fR を使用します。この場合、\fB-t\fR フラグが暗黙的に使用されます。 .sp .in +2 .nf TMPFILE=`mktemp` if [ -z "$TMPFILE" ]; then exit 1; fi echo "program output" >> $TMPFILE .fi .in -2 .sp .LP \fB例 4 \fR\fB/tmp\fR 以外のデフォルト一時ディレクトリを指定した \fBmktemp\fR の使用 .sp .LP 次の例では、ユーザーの \fBTMPDIR\fR 環境変数で別の指定を行なっていないかぎり、\fB/extra/tmp\fR に一時ファイルが作成されます。 .sp .in +2 .nf TMPFILE=`mktemp -p /extra/tmp example.XXXXX` if [ -z "$TMPFILE" ]; then exit 1; fi echo "program output" >> $TMPFILE .fi .in -2 .sp .LP \fB例 5 \fRファイルを削除するための \fBmktemp\fR の使用 .sp .LP 次の例では 2 つの一時ファイルを作成しようとしています。2 番目の一時ファイルの作成に失敗した場合は、\fBmktemp\fR は終了する前に最初のファイルを削除します。 .sp .in +2 .nf TMP1=`mktemp -t example.1.XXXXXX` if [ -z "$TMP1" ]; then exit 1; fi TMP2=`mktemp -t example.2.XXXXXX` if [ -z "$TMP2" ]; then rm -f $TMP1 exit 1 fi .fi .in -2 .sp .LP \fB例 6 \fR\fBmktemp\fR の使用 .sp .LP 次の例は、\fBmktemp\fR がファイルを作成できない場合、終了しません。スクリプトのその部分は保護されています。 .sp .in +2 .nf TMPFILE=`mktemp -q -t example.XXXXXX` if [ ! -z "$TMPFILE" ] then # Safe to use $TMPFILE in this block echo data > $TMPFILE ... rm -f $TMPFILE fi .fi .in -2 .sp .LP \fB例 7 \fRsuffix オプションを指定した \fBmktemp\fR の使用 .sp .LP 次のコマンドは、suffix オプションの使用法を示しています。このコマンドの効果は、一時ファイル \fBex.q5N.SUFF\fR を作成することです。 .sp .in +2 .nf # \fBmktemp --suffix=.SUFF ex.XXXXXX\fR ex.q5Ngid.SUFF .fi .in -2 .sp .LP \fB例 8 \fRSuffix オプションと Tmpdir オプションの使用 .sp .LP 次のコマンドは、suffix オプションと tmpdir オプションの使用法を示しています。 .sp .in +2 .nf # \fBmktemp --tmpdir=$HOME --suffix=.bar foo.XXXXXX\fR /root/foo.7ZaO_N.bar .fi .in -2 .sp .LP \fB例 9 \fRDirectory オプションと Suffix オプションの使用 .sp .LP 次のコマンドでは、directory オプションと suffix オプションの両方が使用されています。 .sp .in +2 .nf # \fBmktemp --directory --suffix=.bar foo.XXXXXX\fR foo.GSaO3d.bar # \fBls -l\fR drwx------ 2 root staff 512 Mar 19 2012 foo.GSaO.bar .fi .in -2 .sp .LP \fB例 10 \fRX 以外の末尾文字を持つテンプレートのサポート .sp .LP 次のコマンドは、X 以外の末尾文字を使用したディレクトリオプションの使用例を示します。このコマンドでは、\fB-–suffix\fR=\fIsuff\fR オプションが暗黙的に使用され、接尾辞として \fBbar\fR が使用されます。 .sp .in +2 .nf # \fBmktemp XXfooXXXXXXbar\fR XXfooaFY0N6bar .fi .in -2 .sp .LP \fB例 11 \fRQuiet オプションと Tmpdir オプションの使用 .sp .LP 次のコマンドは、quiet オプションと tmpdir オプションの使用法を示しています。 .sp .in +2 .nf # \fBmktemp --quiet --tmpdir=/tmp foo\fR [\fBNo diagnostic message is returned\fR] .fi .in -2 .sp .LP \fB例 12 \fR複数のオプションを持つ \fBmktemp\fR の使用 .sp .LP 次のコマンドは、dry-run オプション、tmpdir オプション、および suffix オプションの使用を組み合わせたものです。 .sp .in +2 .nf # \fBmktemp --dry-run --tmpdir=$HOME --suffix=SUFF\fR /root/tmp.qdaGcOSUFF # \fBls -l /root/tmp.qdaGcOSUFF\fR /root/tmp.qdaGcOSUFF: No such file or directory .fi .in -2 .sp .SH 環境 .sp .LP \fB-t\fR オプションを使用した \fBmktemp\fR の実行に影響を与える次の環境変数についての詳細は、\fBenviron\fR(5) を参照してください。\fBTMPDIR\fR。 .sp .ne 2 .mk .na \fB\fBTMPDIR\fR\fR .ad .RS 10n .rt 一時ファイルを作成するために使用されるディレクトリを指定して、システムのデフォルトをオーバーライドします。\fBmktemp\fR によって使用されます。 .RE .SH 終了ステータス .sp .LP 次の終了ステータスが返されます。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 5n .rt 正常終了。 .RE .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .RS 5n .rt エラーが発生した。 .RE .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os _ インタフェースの安定性確実 .TE .SH 関連項目 .sp .LP \fBsh\fR(1), \fBmkdtemp\fR(3C), \fBmkstemp\fR(3C), \fBmkstemps\fR(3C), \fBmktemp\fR(3C), \fBattributes\fR(5), \fBenviron\fR(5) .SH 注意事項 .sp .LP \fBmktemp\fR ユーティリティーは OpenBSD 2.1 から使用されています。Solaris 実装では、\fBmktemp\fR(3C)、\fBmkstemp\fR(3C)、および \fBmkstemps\fR(3C) について意味がある数の「X」のみが使用されます。