MKTEMP(1)

NAME
mktemp - make temporary file name (unique)

SYNOPSIS
mktemp [-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 is any file name with six ‘Xs’ appended to it, for example /tmp/temp.XXXXXX. The ‘Xs’ are replaced with the current process number and/or a unique letter combination. Roughly 26 ** 6 combinations are tried.

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.

Debian packages using mktemp in maintainer scripts must depend on debianutils >= 1.7.

OPTIONS
The available options are as follows:

-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 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.

    p=`basename $0`
    TMPFILE=`mktemp /tmp/$p.XXXXXX` || exit 1
    echo "program output" >> $TMPFILE

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

    p=`basename $0`
    TMPFILE=`mktemp -q /tmp/$p.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 on in the script (since $? would get clobbered by the next shell command).

BUGS
The BSD -d option, which uses mkdtemp(2), is not supported under Linux.

SEE ALSO
mkstemp(3), mktemp(3), tempfile(1)

HISTORY
The mktemp utility appeared in OpenBSD.