2.10 临时文件命名与随机数

编写shell脚本时,我们经常需要存储临时数据。最适合存储临时数据的位置是 /tmp(该目录中的内容在系统重启后会被清空)。有两种方法可以为临时数据生成标准的文件名。

2.10.1 实战演练

执行下列步骤来创建临时文件并进行不同的命名操作。

  1. 创建临时文件:

    $ filename=`mktemp`
    $ echo $filename
    /tmp/tmp.8xvhkjF5fH
    

    上面的代码创建了一个临时文件,并打印出存储在$filename中的文件名。

  2. 创建临时目录:

    $ dirname=`mktemp -d`
    $ echo $dirname
    tmp.NI8xzW7VRX
    

    上面的代码创建了一个临时目录,并打印出存储在$dirname中的目录名。

  3. 如果仅仅是想生成文件名,又不希望创建实际的文件或目录,方法如下:

    $ tmpfile=`mktemp -u`
    $ echo $tmpfile
    /tmp/tmp.RsGmilRpcT
    

    文件名被存储在$tmpfile中,但并没有创建对应的文件。

  4. 根据模板创建临时文件名:

    $mktemp test.XXX
    test.2tc
    

2.10.2 工作原理

mktemp命令的用法非常简单。它生成一个临时文件并返回其文件名(如果创建的是目录,则返回目录名)。

如果提供了定制模板,X会被随机的字符(字母或数字)替换。注意,mktemp正常工作的前提是保证模板中只少要有3个X