Linux mktemp 命令 | 创建临时文件和目录
• 最后修改:2025-07-06 • 阅读量:70
Linux mktemp ( make temporary ) 命令用于安全的创建临时文件和目录。
mktemp 命令的定义解释
mktemp ( make temporary ) 命令用于安全的创建临时文件和目录,并输出其名称,这些文件和目录使用预定义的或可选的用户提供的“模板”命名。创建的临时文件用户具有读写权限;创建的临时目录用户具有读写执行权限,并且去除 umask 限制。
默认情况下,该命令安装在所有主要的 Linux 发行版上,通常作为 coretils 包的一部分,因此即使在最小的安装中也包含它。
本教程将基于 mktemp 命令的具体使用示例进行详细讲解,并给出 mktemp 命令的选项的详细解释说明。
mktemp 命令语法
mktemp 命令的基本语法形式如下:
mktemp [OPTION]... [TEMPLATE]
[OPTION]
:用于设置临时文件或目录的选项,可选[TEMPLATE]
:创建临时文件或目录使用的模板,当提供时,最后一个组件(以斜杠/
分割的每一部分为一个组件)必须包含至少3个连续的X
。如果没有指定 TEMPLATE,则使用tmp.XXXXXXXXXX
和隐含的--tmpdir
指定的模板目录。
mktemp
命令生成文件名的规则时: 把 TEMPLATE
中的每一个 X
替换为一个随机字符,其他字符保持不变。
mktemp 命令使用示例
使用默认设置创建临时文件
不使用任何选项,运行 mktemp 命令会在 /temp
下创建一个临时文件:对比比较文件 file1.txt
和 file2.txt
是否存在差异:
mktemp
# 输出内容:
/tmp/tmp.JbIoLjROyx
在 /temp
目录下创建了一个临时文件
自定义文件名的模板 TEMPLATE
文件名的模板至少要包含 3 个 X
字符,X
字符是用来替换为随机字符的,其他字符保持不变。
1、定义的文件名称模板包含两个 X
字符:
mktemp mytemp-XX
# 输出内容:
mktemp: 模板 "mytemp-XX" 中的 X 太少
无法创建临时文件
2、定义的文件名称模板包含5个 X
字符:
mktemp mytemp-XXXXX
# 输出内容:
mytemp-5WERu
创建临时文件成功,文件为:mytemp-5WERu
指定根目录
存放创建的临时文件和目录的根目录默认为 /temp
,可以使用 -p DIR (--tmpdir[=DIR])
指定为其他目录,也可以使用环境变量 TMPDIR
指定根目录。
使用 -p 选项指定根目录
文件名的模板至少要包含 3 个 X
字符,X
字符是用来替换为随机字符的,其他字符保持不变。
1、模板 TEMPLATE 中只包含文件名:
mktemp -p /home/u1sz mytemp-XXXXX
# 输出内容:
/home/u1sz/mytemp-jIELe
2、模板 TEMPLATE 中可包含使用 /
分割的目录层次,最后一部分为文件名:
mktemp -p /home/u1sz subtemp/mytemp-XXXXX
# 输出内容:
/home/u1sz/subtemp/mytemp-i8JIES
使用 TMPDIR 环境变量指定根目录
在命令运行 export 命令设置 环境变量:
export TMPDIRddd="/home/u1sz/workspace"
重新加载 shell 的非登录用户配置文件 .bashrc
使添加环境变量生效:
source .bashrc
创建临时文件
mktemp mytemp-XXXXX
# 输出内容:
/home/u1sz/workspace/mytemp-9eFJI
mktemp 命令选项解释
如下给出了 Linux 和 FreeBSD 系统中 mktemp 命令的所有选项的解释说明:
选项 | 解释说明 |
---|---|
-d, --directory | 创建一个临时目录,而不是临时文件 |
-u, --dry-run | 不创建任何东西;仅输出名称(不安全) |
-q, --quiet | 关闭 文件 / 目录 创建失败诊断 |
--suffix=SUFF | 将 SUFF 附加到 TEMPLATE;SUFF 不能包含斜杠。如果 TEMPLATE 不以 X 结尾,则隐含此选项 |
-p DIR, --tmpdir[=DIR] | 将模板解释为基于 DIR ;如果没有指定 DIR ,则使用 $TMPDIR 环境变量,否则使用 /tmp 。使用此选项时,TEMPLATE 不能是绝对名称;与 -t 不同,指定 -p 选项时,TEMPLATE 可以包含斜杠,TEMPLATE 为一个目录层次,但 mktemp 只创建最后的组件(最后一个斜杠 / 后面的内容,即:目录层次中的文件名) |
-t | 将 TEMPLATE 解释为只有一个文件名组件(而不是以斜杠 / 分割的多个组件的目录结构),相对于目录:$TMPDIR,如果设置;否则通过 -p 指定的目录;再否则 /tmp [已弃用] |
--help | 显示帮助信息后退出 |
-v, --version | 显示版本信息后退出 |
结语
在本教程中我们介绍了如何使用 mktemp ( mktemp ) 命令用于安全的创建临时文件和目录,并输出其名称,这些文件和目录使用预定义的或可选的用户提供的“模板”命名。创建的临时文件用户具有读写权限;创建的临时目录用户具有读写执行权限,并且去除 umask 限制。
该 mktemp 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。