Science and technology

Make a short lived file on Linux with Bash

When programming within the Bash scripting language, you generally have to create a short lived file. For occasion, you would possibly have to have an middleman file you possibly can decide to disk so you possibly can course of it with one other command. It’s straightforward to create a file akin to temp or something ending in .tmp. However, these names are simply as prone to be generated by another course of, so you can by chance overwrite an current non permanent file. And in addition to that, you should not need to expend psychological effort arising with names that appear distinctive. The mktemp command on Fedora-based methods and tempfile on Debian-based methods are specifically designed to alleviate that burden by making it straightforward to create, use, and take away distinctive recordsdata.

Create a short lived file

Both mktemp and tempfile create a short lived file as their default motion and print the title and site of the file as output:

$ tempfile
/tmp/fileR5dt6r

$ mktemp
/tmp/tmp.ojEfvMaJEp

Unless you specify a distinct path, the system locations non permanent recordsdata within the /tmp listing. For mktemp, use the -p choice to specify a path:

$ mktemp -p ~/Demo
/house/tux/Demo/tmp.i8NuhzbEJN

For tempfile, use the --directory or -d choice:

$ tempfile --directory ~/Demo/
/house/sek/Demo/fileIhg9aX

Find your non permanent file

The downside with utilizing an auto-generated non permanent file is that you haven’t any method of figuring out what its title goes to be. That’s why each instructions return the generated file title as output. You can use an interactive shell akin to Konsole, GNOME Terminal, or rxvt to make use of the filename displayed in your terminal to work together with the file.

However, for those who’re writing a script, there isn’t any method so that you can intervene by studying the title of the file and utilizing it within the following instructions.

The authors of mktemp and tempfile considered that downside, and there is a simple repair. The terminal sends output to a stream known as stdout. You can seize stdout by setting a variable to the outcomes of a command launched in a subshell:

$ TMPFILE=$(mktemp -p ~/Demo)

$ echo $TMPFILE
/house/tux/Demo/tmp.PjP3g6lCq1

Use $TMPFILE when referring to the file, and it is the identical as interacting instantly with the file itself.

Create a short lived listing with mktemp

You may use the mktemp command to create a listing as a substitute of a file:

$ mktemp --directory -p ~/Demo/
/house/tux/Demo/tmp.68ukbuluqI

$ file /house/tux/Demo/tmp.68ukbuluqI
/house/tux/Demo/tmp.68ukbuluqI: listing

Customize non permanent names

Sometimes you may want a component of predictability in even your pseudo-randomly generated filenames. You can customise the names of your non permanent recordsdata with each instructions.

With mktemp, you possibly can add a suffix to your filename:

$ mktemp -p ~/Demo/ --suffix .mine
/house/tux/Demo/tmp.dufLYfwJLO.mine

With tempfile, you possibly can set a prefix and a suffix:

$ tempfile --directory ~/Demo/
--prefix tt_ --suffix .mine
/house/tux/Demo/tt_0dfu5q.mine

Tempfile as contact

You may set a customized title with tempfile:

$ tempfile --name not_random
not_random

When you employ the --name choice, it is absolute, ignoring all different types of customization. In reality, it even ignores the --directory choice:

$ tempfile --directory ~/Demo
--prefix this_is_ --suffix .all
--name not_random_at
not_random_at

In a method, tempfile is usually a substitute for contact and take a look at as a result of it refuses to create a file that already exists:

$ tempfile --name instance.txt
open: file exists

The tempfile command is not put in on all Linux distributions by default, so you will need to be sure that it exists earlier than you employ it as a hack round take a look at in a script.

Install mktemp and tempfile

GNU Core Utils contains the mktemp command. Major distributions embrace Core Utils by default (it is the identical bundle that comprises chmod, lower, du, and different important instructions).

The Debian Utils bundle contains the tempfile command and is put in by default on most Debian-based distributions and Slackware Linux.

Wrap up

Temporary recordsdata are handy as a result of there isn’t any confusion about whether or not they’re secure to delete. They’re non permanent, meant for use as wanted and discarded with no second thought. Use them whenever you want them, and clear them out whenever you’re accomplished.

Most Popular

To Top