20年以上前から存在するmktempコマンドですが、周りではあまり使われていなかったのでまとめました
概要
- mktempはLinuxやUnix系OSにおいて、一時ファイルや一時ディレクトリを作成するためのコマンドです
- 作成するファイル名/ディレクトリ名は任意の名前、接尾語(拡張子)をつけることができます
ただし、少なくとも3文字のランダムな英数字が付与されます
指定しない場合は「tmp.」に続いて10文字のランダムな英数字が付与されます - ファイル/ディレクトリは任意のディレクトリ配下に作成できます
指定しない場合は環境変数TMPDIRが設定されているディレクトリに作成されます
環境変数TMPDIRが設定されていない場合は/tmpに作成されます - 作成されるファイル/ディレクトリは実行したユーザーが所有者で、パーミッション600で作成されます
- 従来採用されることの多かったのPIDを接尾辞とする方法に比べて予測困難な名称となり安全です
利用方法
mktemp [オプション] [ファイル/ディレクトリ名]
ファイル/ディレクトリ名は少なくとも3文字以上連続した「X」を含める必要があります
Xはランダムな英数字に置換されます
オプション
オプション | 説明 |
---|---|
-d | ファイルではなくディレクトリを作成する |
-p ディレクトリ | 指定したディレクトリに作成する |
-u | 実際にはファイル/ディレクトリを作成せずに画面出力のみ実施 |
--suffix=接尾語 | 任意の接尾語をつける |
コマンドと作成されるファイル/ディレクトリの例
名前や場所は指定せずに一時ファイル/ディレクトリが作りたい場合
※環境変数TMPDIRが設定されている場合は、下記の/tmpはTMPDIRの設定値になります
mktemp
→ /tmp/tmp.Xu8s2zjMcO
mktemp -d
→ /tmp/tmp.l2s3WkSInx/
カレントディレクトリに指定した名称で作りたい場合
mktemp anyname.XXX
→ anyname.GYM
指定したディレクトリに指定した名称で作りたい場合
mktemp -p /work anyname.XXXXX
→ /work/anyname.zW4LX
指定したディレクトリに指定した名称、拡張子で作りたい場合
mktemp -p /work --suffix=.txt anyname.XXXXXXX
→ /work/anyname.uTDjDkX.txt
古いバージョンのmktempの動作(version 1.5で確認)
- 環境変数TMPDIRが設定されている場合、-pオプションより優先される
- ランダムな文字列を含まないディレクトリ/ファイルを作成可能