1. Computing & Technology
Linux / Unix Command: mktemp
Command Library

NAME

mktemp - make temporary file name (unique)  

SYNOPSIS

mktemp [-d ] [-q ] [-u ] template  

DESCRIPTION

The mktemp utility takes the given file name template and overwrites a portion of it to create a file name. This file name is unique and suitable for use by the application. The template may be any file name with at least 6 of `X' Ns s appended to it, for example /tmp/temp.XXXXXX The trailing `X' Ns s are replaced with the current process number and/or a unique letter combination. The number of unique file names mktemp can return depends on the number of `X' Ns s provided; six `X' Ns s will result in mktemp testing roughly 26 ** 6 combinations.

If mktemp can successfully generate a unique file name, the file is created with mode 0600 (unless the -u flag is given) and the filename is printed to standard output.  

OPTIONS

The available options are as follows:

-d
Make a directory instead of a file.
-q
Fail silently if an error occurs. This is useful if a script does not want error output to go to standard error.
-u
Operate in ``unsafe'' mode. The temp file will be unlinked before mktemp exits. This is slightly better than Fn mktemp 3 but still introduces a race condition. Use of this option is not encouraged.
 

RETURN VALUES

The mktemp utility exits with a value of 0 on success, and 1 on failure.  

EXAMPLES

The following sh(1) fragment illustrates a simple use of mktemp where the script should quit if it cannot get a safe temporary file.
TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
echo "program output" >> $TMPFILE

In this case, we want the script to catch the error itself.

TMPFILE=`mktemp -q /tmp/$0.XXXXXX`
if [ $? -ne 0 ]; then
        echo "$0: Can't create temp file, exiting..."
        exit 1
fi

Note that one can also check to see that $TMPFILE is zero length instead of checking $?. This would allow the check to be done later one in the script (since $? would get clobbered by the next shell command).  

SEE ALSO

mkstemp(3), mktemp(3)  

Important: Use the man command (% man) to see how a command is used on your particular computer.

>> Linux/Unix Command Library

>> Shell Command Library

Discuss in my forum

©2012 About.com. All rights reserved.

A part of The New York Times Company.