创建临时文件

Linux系统有特殊的目录,专供临时文件使用。Linux使用/tmp目录来存放不需要永久保留的 文件。大多数Linux发行版配置了系统在启动时自动删除/tmp目录的所有文件。

系统上的任何用户账户都有权限在读写/tmp目录中的文件。这个特性为你提供了一种创建临 时文件的简单方法,而且还不用操心清理工作。

有个特殊命令可以用来创建临时文件。mktemp命令可以在/tmp目录中创建一个唯一的临时 文件。shell会创建这个文件,但不用默认的umask值。它会将文件的读和写权限分 配给文件的属主,并将你设成文件的属主。一旦创建了文件,你就在脚本中有了完整的读写权限, 但其他人没法访问它(当然,root用户除外)。

创建本地临时文件

默认情况下,mktemp会在本地目录中创建一个文件。要用mktemp命令在本地目录中创建一 个临时文件,你只要指定一个文件名模板就行了。模板可以包含任意文本文件名,在文件名末尾 加上6个X就行了。

$ mktemp testing.XXXXXX

mktemp命令会用6个字符码替换这6个X,从而保证文件名在目录中是唯一的。你可以创建多 个临时文件,它可以保证每个文件都是唯一的。

在脚本中使用mktemp命令 时,可能要将文件名保存到变量中,这样就能在后面的脚本中引用了。

tempfile=$(mktemp test19.XXXXXX)

在/tmp目录创建临时文件

-t选项会强制mktemp命令来在系统的临时目录来创建该文件。在用这个特性时,mktemp命 令会返回用来创建临时文件的全路径,而不是只有文件名。

由于mktemp命令返回了全路径名,你可以在Linux系统上的任何目录下引用该临时文件,不 管临时目录在哪里。

在mktemp创建临时文件时,它会将全路径名返回给变量。这样你就能在任何命令中使用该 值来引用临时文件了。

tempfile=$(mktemp -t tmp.XXXXXX)

创建临时目录

-d选项告诉mktemp命令来创建一个临时目录而不是临时文件。这样你就能用该目录进行任何需要的操作了,比如创建其他的临时文件。

tempdir=$(mktemp -d dir.XXXXXX)