Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MKTEMP(1)		  BSD General Commands Manual		     MKTEMP(1)

NAME
     mktemp -- make temporary file name	(unique)

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

DESCRIPTION
     The mktemp	utility	takes each of the given	file name templates and	over-
     writes 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 `Xs' appended to it, for example /tmp/temp.XXXX.
     The trailing `Xs' 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 `Xs' provided; six	`Xs' will result in
     mktemp testing roughly 26 ** 6 combinations.

     If	mktemp can successfully	generate a unique file name, the file is cre-
     ated 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 an template	string
     based on the prefix and the TMPDIR	environment variable if	set.  The de-
     fault location if TMPDIR is not set is /tmp.  Care	should be taken	to en-
     sure that it is appropriate to use	an environment variable	potentially
     supplied by the user.

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

     Mktemp 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 nam-
     ing 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 al-
     low 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.

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.

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

RETURN VALUES
     The mktemp	utility	exits with a value of 0	on success, and	1 on any fail-
     ure.

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

     To	allow the use of $TMPDIR:

	   TMPFILE=`mktemp -t $0` || 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

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

HISTORY
     A mktemp utility appeared in OpenBSD 2.1.	This implementation has	been
     written independently based on the	man page.  This	man page is taken from
     OpenBSD

BSD			      November,	20, 1996			   BSD

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | RETURN VALUES | EXAMPLES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=mktemp&manpath=FreeBSD+4.1-RELEASE>

home | help