mktemp: 安全创建临时文件与目录
mktemp mktemp 用来安全地创建临时文件或临时目录,并把路径打印到标准输出。名字里带随机段,避免多个进程同时写死 /tmp/foo 时互相踩踏或被抢占。 脚本里需要临时落盘时,优先用 mktemp,不要手写固定路径。 基本用法 不传参数时,默认在 $TMPDIR(未设置则为 /tmp)下创建文件,模板类似 tmp.XXXXXXXXXX: tmp=$(mktemp) echo "path=$tmp" echo hello > "$tmp" rm -f "$tmp" 输出示例: /tmp/tmp.aB3kX9pQ2r 自定义模板 模板最后一个路径分量里至少要有 3 个连续的 X,X 会被替换成随机字符: # file under /tmp f=$(mktemp /tmp/myapp.XXXXXX) # with suffix f=$(mktemp --suffix=.log /tmp/myapp.XXXXXX) 创建临时目录 -d / --directory 创建目录而不是文件: workdir=$(mktemp -d) # or workdir=$(mktemp -d /tmp/build.XXXXXX) 权限:文件一般为 u+rw,目录一般为 u+rwx(再受 umask 约束)。 指定父目录 -p DIR / --tmpdir[=DIR]:相对某个目录解释模板。未写 DIR 时用 $TMPDIR,再否则 /tmp: f=$(mktemp -p /var/tmp myapp.XXXXXX) d=$(mktemp -d --tmpdir="$HOME/tmp" work.XXXXXX) 脚本里的常见写法 创建后记得清理。可用 trap 在退出时删除: ...