Linux命令:mktemp

mktemp命令用于创建安全的临时文件和临时目录

用法

mktemp --help
Usage: mktemp [OPTION]... [TEMPLATE]
Create a temporary file or directory, safely, and print its name.
TEMPLATE must contain at least 3 consecutive 'X's in last component.
If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
Files are created u+rw, and directories u+rwx, minus umask restrictions.

  -d, --directory     create a directory, not a file
  -u, --dry-run       do not create anything; merely print a name (unsafe)
  -q, --quiet         suppress diagnostics about file/dir-creation failure
      --suffix=SUFF   append SUFF to TEMPLATE.  SUFF must not contain slash.
                        This option is implied if TEMPLATE does not end in X.
      --tmpdir[=DIR]  interpret TEMPLATE relative to DIR.  If DIR is not
                        specified, use $TMPDIR if set, else /tmp.  With
                        this option, TEMPLATE must not be an absolute name.
                        Unlike with -t, TEMPLATE may contain slashes, but
                        mktemp creates only the final component

  -p DIR              use DIR as a prefix; implies -t [deprecated]
  -t                  interpret TEMPLATE as a single file name component,
                        relative to a directory: $TMPDIR, if set; else the
                        directory specified via -p; else /tmp [deprecated]

      --help     display this help and exit
      --version  output version information and exit

Report mktemp bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
For complete documentation, run: info coreutils 'mktemp invocation'

常用用法

在shell中使用

#!/bin/bash
TMPFILE=$(mktemp)
echo "Our temp file is $TMPFILE"

运行

$ ./mktmp.sh 
Our temp file is /tmp/tmp.D2PMaYfXWr
$ ls -alh /tmp/tmp.D2PMaYfXWr 
-rw------- 1 root root 0 Dec 30 09:53 /tmp/tmp.D2PMaYfXWr

mktemp创建的文件权限:创建的文件为u+rw,目录为u+rwx

常用的标识

  • -d   创建临时目录而不是创建文件
  • -p   指定临时文件所在的目录
  • -t   指定临时文件的文件名模板,模板的末尾必须至少包含三个连续的X表示随机字符,建议至少使用六个X

创建临时目录

$ mktemp -d 
/tmp/tmp.nfispEVX5X
$ ls -alh /tmp/tmp.nfispEVX5X/
total 16K
drwx------   2 root root 4.0K Dec 30 10:10 .
drwxrwxrwt 192 root root  12K Dec 30 10:11 ..

使用文件名模板

$ mktemp -t myt_XXXXXX
/tmp/myt_6ISrHt