はじめに
こんにちは!今回はmktempコマンドについて解説します。
mktempは、一時ファイルやディレクトリを安全に作成するコマンドです。ファイル名の衝突を避けたり、セキュリティリスクを回避したりできます。
シェルスクリプトで一時ファイルを使う時には、ほぼ必須のコマンドですよ。
mktempコマンドとは
mktempは、予測不可能な名前の一時ファイルまたはディレクトリを作成する外部コマンドです。
主な特徴:
- ユニークな名前生成 - 衝突しない名前を自動生成
- セキュリティ - 予測不可能な名前により、セキュリティ脆弱性を回避
- ファイル/ディレクトリ対応 - 両方作成可能
- テンプレート指定 - 名前パターンをカスタマイズ可能
- 自動削除オプション - スクリプト終了時に自動削除可能
/tmp下に安全な一時ファイルを作成できます。
基本構文
|
|
テンプレートにXXXXXXを含めると、そこにランダム文字が入ります。
主なオプション
| オプション | 説明 |
|---|---|
-d |
ファイルではなくディレクトリを作成 |
-p ディレクトリ |
指定したディレクトリに作成 |
-t |
テンプレートの最後にXXXXXXを自動追加 |
-u |
ファイルを作成しない(名前だけ返す) |
--suffix=末尾 |
ファイル名の末尾に文字列を追加 |
--dry-run |
実際には作成せず、名前を表示 |
--tmpdir=ディレクトリ |
作成先ディレクトリ指定 |
使用例
例1: 一時ファイルを作成
|
|
実行結果:
|
|
ランダムな名前の一時ファイルを作成します。
例2: 一時ディレクトリを作成
|
|
実行結果:
|
|
ディレクトリを作成。作業用フォルダとして使えます。
例3: テンプレートを指定
|
|
実行結果:
|
|
名前のパターンをカスタマイズ。
例4: 拡張子を指定
|
|
実行結果:
|
|
ファイル名の末尾に.logを追加。
例5: 指定ディレクトリに作成
|
|
実行結果:
|
|
特定のディレクトリに作成。
例6: 複数の一時ファイルを作成
|
|
実行結果:
|
|
複数の一時ファイルを安全に作成。
例7: スクリプト内での利用
|
|
実行結果:
|
|
trapで終了時に自動削除。
例8: 名前だけ生成(作成しない)
|
|
実行結果:
|
|
ファイルは作成せず、名前だけ返します。
例9: テンプレートの-tオプション
|
|
実行結果:
|
|
テンプレートに自動でXXXXXXを追加。
例10: エラー処理付き
|
|
実行結果:
|
|
失敗時のエラー処理。
Tips・注意点
trapで自動クリーンアップ
|
|
終了時に必ず削除するようにします。
複数ファイルの管理
|
|
複数ファイルはディレクトリごと管理。
/tmpがない場合の対応
|
|
環境変数TMPDIRを参照。ない場合はカレントディレクトリ。
実践的な使い方
スクリプトでの処理結果一時保存
|
|
複数の一時ファイルで処理フロー管理。
ログファイル作成
|
|
ログを一時ファイルに記録。
バックアップファイル作成
|
|
元ファイルを保護するバックアップ作成。
パイプライン処理の中間結果
|
|
複数ステップの処理を一時ファイル経由で実行。
まとめ
mktempコマンドのポイント:
- 一時ファイル/ディレクトリを安全に作成するコマンド
- デフォルト:
/tmpに一時ファイルを作成 - -d: ディレクトリを作成
- -p ディレクトリ: 指定したディレクトリに作成
- –suffix=末尾: ファイル名に末尾を追加
- -u: 名前だけ生成(ファイルは作成しない)
- 必須パターン:
temp=$(mktemp); trap "rm -f $temp" EXIT
シェルスクリプトで安全に一時ファイルを扱いたい時に最高のコマンドですよ!