mktemp コマンドは、一時的に使うファイルやディレクトリを安全に作成 するためのコマンドです。
スクリプトで一意なファイル名を生成して競合を避けたいときや、作業用の一時ディレクトリを用意する場合に利用されます。
構文(Syntax)
mktemp [オプション] [テンプレート]
- テンプレート : 任意の文字列の末尾に
"XXXXXX"を含める必要がある。
例:mytemp.XXXXXX→mytemp.ABC123のように展開される。 - テンプレートを省略すると、デフォルトで
/tmp/tmp.XXXXXXXXXXの形式で作成されます。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 一時ファイルを作成 | mktemp |
-d | 一時ディレクトリを作成 | mktemp -d |
-p DIR | 指定したディレクトリに作成 | mktemp -p /var/tmp |
-u | ファイル名だけ生成し、作成はしない(非推奨:競合リスクあり) | mktemp -u tmpfile.XXXXXX |
--suffix=SUF | 指定した拡張子を付与 | mktemp --suffix=.txt |
--tmpdir[=DIR] | $TMPDIR または指定ディレクトリに作成 | mktemp --tmpdir=/home/user |
実行例
一時ファイルを作成
mktemp
出力例:
/tmp/tmp.CrP9az
プレフィックスを付けて作成
mktemp mytemp.XXXXXX
出力例:
mytemp.AB12cd
一時ディレクトリを作成
mktemp -d
出力例:
/tmp/tmp.ZxYw12
指定ディレクトリに作成
mktemp -p /var/tmp myapp.XXXXXX
出力例:
/var/tmp/myapp.k8R5fs
拡張子付きで作成
mktemp --suffix=.log log.XXXXXX
出力例:
log.A12b3C.log
エラー例(テンプレートに “X” を含めない)
mktemp mytemp
出力例:
mktemp: too few X's in template ‘mytemp’
関連コマンド
touch: 空のファイルを作成mkdir: ディレクトリを作成rm: 一時ファイルを削除
備考
- セキュリティのために、
mktempはファイルを即座に作成して排他を確保します。 -uオプションは競合やレースコンディションを招く可能性があるため推奨されません。- スクリプト内で一時ファイルを扱う場合は
trapと組み合わせて削除処理を書くと安全です。
例:
tmpfile=$(mktemp)
trap "rm -f $tmpfile" EXIT
参考
- manページ: man7.org mktemp(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント