Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  MKTEMP (1)


mktemp - make temporary file name (unique)


Exit Status
See Also


mktemp [-d] [-q] [-t prefix] [-u] template ... mktemp [-d] [-q] [-u] -t prefix


The mktemp utility takes each of the given file name templates 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 some number of X s’ appended to it, for example /tmp/temp.XXXX. The trailing X 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 s’ provided; six X s’ will result in mktemp selecting 1 of 56800235584 (62 ** 6) possible file names.

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.

If the -t prefix option is given, mktemp will generate a template string based on the prefix and the TMPDIR environment variable if set. The default location if TMPDIR is not set is /tmp. Care should be taken to ensure that it is appropriate to use an environment variable potentially supplied by the user.

If no arguments are passed or if only the -d flag is passed mktemp behaves as if -t tmp was supplied.

Any number of temporary files may be created in a single invocation, including one based on the internal template resulting from the -t flag.

The mktemp utility is provided to allow shell scripts to safely use temporary files. Traditionally, many shell scripts take the name of the program with the pid as a suffix and use that as a temporary file name. This kind of naming scheme is predictable and the race condition it creates is easy for an attacker to win. A safer, though still inferior, approach is to make a temporary directory using the same naming scheme. While this does allow one to guarantee that a temporary file will not be subverted, it still allows a simple denial of service attack. For these reasons it is suggested that mktemp be used instead.


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.
-t prefix
  Generate a template (using the supplied prefix and TMPDIR if set) to create a filename template.
-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.


.Ex -std


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

To allow the use of $TMPDIR:

tempfoo=‘basename $0‘
TMPFILE=‘mktemp -t ${tempfoo}‘ || exit 1
echo "program output" >> $TMPFILE

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

tempfoo=‘basename $0‘
TMPFILE=‘mktemp -q /tmp/${tempfoo}.XXXXXX‘
if [ $? -ne 0 ]; then
        echo "$0: Can’t create temp file, exiting..."
        exit 1


mkdtemp(3), mkstemp(3), mktemp(3), environ(7)


A mktemp utility appeared in
.Ox 2.1 . This implementation was written independently based on the
.Ox man page, and first appeared in
.Fx 2.2.7 . This man page is taken from
.Ox .
Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.