mktemp 是 Linux/Unix 系统中用于创建临时文件或目录的命令行工具。它能够在系统的临时目录(通常是 /tmp)中生成具有唯一名称的文件,确保在多用户环境或脚本执行时不会产生命名冲突。
基本语法
bash
mktemp [选项] [模板]
常用选项
-
-d:创建临时目录而非文件bashmktemp -d示例输出:
/tmp/tmp.Xc4F3p8J9e -
-u:仅生成临时名称而不实际创建(dry-run 模式)bashmktemp -u -
-p DIR:指定临时文件/目录的创建路径bashmktemp -p /var/tmp -
--suffix=SUFF:为临时文件添加指定后缀bashmktemp --suffix=.log
模板参数
默认模板是 tmp.XXXXXXXXXX(10个随机X字符):
bash
mktemp /tmp/myapp.XXXXXX
示例输出:/tmp/myapp.qR7s9m
使用场景
-
脚本编程:
bashTEMP_FILE=$(mktemp) echo "临时文件已创建:$TEMP_FILE" # 使用完毕后记得删除 rm "$TEMP_FILE" -
安全考虑:
- 总是检查命令返回值
- 使用
trap确保临时文件被清理
bashtrap 'rm -f "$TMPFILE"' EXIT TMPFILE=$(mktemp) || exit 1 -
自定义临时文件:
bashLOGFILE=$(mktemp --suffix=.log /tmp/script_log.XXXXXX)
注意事项
- 默认权限为 600(仅所有者可读写)
- 在 macOS 上行为可能略有不同
- 系统重启后
/tmp下的临时文件通常会被清除
替代方案
对于需要更复杂临时文件管理的情况,可以考虑:
tempfile命令(某些发行版专有)- 编程语言内置的临时文件库(如 Python 的
tempfile模块)