---
name: "tempfile"
section: "1"
platform: "linux"
package: "debianutils"
version: "5.23.2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/tempfile"
---

# tempfile(1)

create a temporary file in a safe manner

## NAME

tempfile - create a temporary file in a safe manner

## SYNOPSIS

**tempfile** \[-d DIR\] \[-p STRING\] \[-s STRING\] \[-m MODE\] \[-n FILE\] \[--directory=DIR\] \[--prefix=STRING\] \[--suffix=STRING\] \[--mode=MODE\] \[--name=FILE\] \[--help\] \[--version\]

## DESCRIPTION

**tempfile** creates a temporary file in a safe manner.  It uses [**mkstemps**(3)](/mkstemps/3.md) to choose the name and opens it with O\_RDWR \| O\_CREAT \| O\_EXCL.  The filename is printed on standard output.

The directory in which to create the file might be searched for in this order:

- a)

  In case the environment variable **TMPDIR** exists and contains the name of an appropriate directory, that is used.

- b)

  Otherwise, if the *--directory* argument is specified and appropriate, it is used.

- c)

  Otherwise, *P\_tmpdir* (as defined in *\<stdio.h\>*) is used when appropriate.

- d)

  Finally an implementation-defined directory (*/tmp*) may be used.

## OPTIONS

- **-d, --directory** *DIR*

  Place the file in DIR.

- **-m, --mode** *MODE*

  Open the file with MODE instead of 0600.

- **-n, --name** *FILE*

  Use FILE for the name instead of [**tempnam**(3)](/tempnam/3.md)**.** The options -d, -p, and -s are ignored if this option is given.

- **-p, --prefix** *STRING*

  Use up to five letters of STRING to generate the name.

- **-s, --suffix** *STRING*

  Generate the file with STRING as the suffix.

- **--help**

  Print a usage message on standard output and exit successfully.

- **--version**

  Print version information on standard output and exit successfully.

## RETURN VALUES

An exit status of 0 means the temporary file was created successfully. Any other exit status indicates an error.

## BUGS

Exclusive creation is not guaranteed when creating files on NFS partitions.  tempfile cannot make temporary directories. tempfile is deprecated; you should use [**mktemp**(1)](/mktemp/1.md) instead.

## EXAMPLE

```
#!/bin/sh
#[...]
t=$(tempfile) || exit
trap "rm -f -- '$t'" EXIT
#[...]
rm -f -- "$t"
trap - EXIT
exit
```

## SEE ALSO

[**tempnam**(3)](/tempnam/3.md), [**mktemp**(1)](/mktemp/1.md)
