1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ユニークな名前の一時ファイル/ディレクトリを作成するmktempコマンド

Posted at

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オプションより優先される
  • ランダムな文字列を含まないディレクトリ/ファイルを作成可能
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?