mktemp – 一時ファイルやディレクトリを安全に作成するコマンド

一時ファイル

mktemp コマンドは、一時的に使うファイルやディレクトリを安全に作成 するためのコマンドです。
スクリプトで一意なファイル名を生成して競合を避けたいときや、作業用の一時ディレクトリを用意する場合に利用されます。

構文(Syntax)

mktemp [オプション] [テンプレート]
  • テンプレート : 任意の文字列の末尾に "XXXXXX" を含める必要がある。
    例: mytemp.XXXXXXmytemp.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

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント