mktemp命令

mktemp命令用于安全地创建一个临时文件或目录,并输出其名称,TEMPLATE在最后一个组件中必须至少包含3个连续的X,如果未指定TEMPLATE,则使用tmp.XXXXXXXXXX作为名称在当前目录下创建相应的临时文件,X为生成的随机数,尾部的X将替换为当前进程号和随机字母的组合,文件的名称取决于模板中X的数量以及与现有文件冲突的数量,mktemp可以返回的唯一文件名的数量取决于所提供的X的数量,十个X将导致mktemp测试大约26**10个组合,mktemp命令创建的临时文件不会使用默认的umask管理权限值,其会将文件的读写权限分配给文件属主,一旦创建了文件,在shell脚本中就拥有了完整的读写权限,除root外其他人不可访问,即在创建文件时即有u+rw权限,创建文件夹时有u+rwx权限。

语法

mktemp [OPTION] [TEMPLATE]

参数

  • -d, --directory: 创建目录,而不是文件。
  • -u, --dry-run: 在mktemp退出之前,临时文件将被取消链接,相当于不创建任何文件或文件夹,仅输出名称,不建议使用该选项。
  • -q, --quiet: 执行时若发生错误,不会输出任何信息。
  • --suffix=SUFF: 将STUFF附加到TEMPLATESUFF不能包含斜线,如果TEMPLATE不以X结尾,则默认此选项。
  • -p <DIR>, --tmpdir <DIR>: 生成临时文件时使用指定的目录作为目标。
  • -t: 将目标文件存储在临时目录,该目录首先会选择用户的TMPDIR环境变量,其次是用户指定的-p参数选择的目录,最后的选择即/tmp目录,创建后会输出临时文件的全路径。
  • --help: 输出帮助选项。
  • --version: 输出版本信息。

示例

在当前目录创建临时文件。

mktemp tmp.XXX
# tmp.g6k

创建指定文件类型的临时文件。

mktemp tmp.XXX --suffix=.txt
# tmp.gSI.txt

在指定目录创建临时文件。

mktemp --tmpdir=/home tmp.XXX
# /home/tmp.HxB

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.jianshu.com/p/31660ac1650f https://www.cnblogs.com/xingmuxin/p/8440689.html https://www.runoob.com/linux/linux-comm-mktemp.html