Arquivos e Diretórios Temporários Com o Comando mktemp

Introdução

Pessoalmente eu não conhecia esse comando e só fui saber que ele existia quando estava fuçando um shell script encontrado aleatoriamente em um blog desconhecido da Internet ;s.

Em geral o que esse comando faz é criar um arquivo temporário e único no diretório indicado (geralmente o /tmp). Se antes você criava seus arquivos temporários na mão, agora você pode usar o comando mktemp.

O comando mktemp

A man page é curta e grossa em relação a esse comando:

$ man mktemp
mktemp - create a temporary file or directory

e é basicamente isso que ele faz. Vamos, primeiramente, executá-lo sem opção alguma para verificarmos o que acontece:

$ mktemp
/tmp/tmp.JNtMWREriA

Podemos ver que realmente esse arquivo foi criado:

$ ls -la /tmp/tmp.JNtMWREriA
-rw-------. 1 daemonio daemonio 0 Nov 22 22:52 /tmp/tmp.JNtMWREriA

Mudando o template do nome do arquivo

O nome do arquivo é passado no último parâmetro de mktemp e ele deve conter obrigatoriamente pelo menos três caracteres X. São esses X’s no nome do arquivo que são substituídos pela cadeia aleatória gerada pelo mktemp.

$ mktemp daemoniolabs_XXXX
daemoniolabs_em3y
$ ls -la daemoniolabs_em3y
-rw-------. 1 daemonio daemonio 0 Nov 22 23:01 daemoniolabs_em3y

Agora vamos colocar muitos X’s:

$ mktemp daemoniolabs_XXXXXXXXXXXXXXXXXX
$ ls -la daemoniolabs_YwMY3Jt5IBXgz9BECH
-rw-------. 1 daemonio daemonio 0 Nov 22 23:02 daemoniolabs_YwMY3Jt5IBXgz9BECH

Veja que também podemos passar o diretório onde o arquivo será criado:

$ mktemp /tmp/daemoniolabs_XXXXX
/tmp/daemoniolabs_aMvuy

Ah, não se esqueça de deletar o arquivo/diretório depois de usado.

Criando um diretório

Para criar um diretório temporário, passe a opção -d para o comando:

$ mktemp -d /tmp/daemoniolabs_XXXXX
/tmp/daemoniolabs_4af6m
$ ls -la /tmp/daemoniolabs_4af6m
drwx------. 2 daemonio daemonio 4096 Nov 22 23:07 /tmp/daemoniolabs_4af6m/

Mais opções

Confira as outras opções do comando em sua manpage:

$ man mktemp

Creio que o que você aprendeu nesse post já é o suficiente, pois as outras opções como –suffix e –tmpdir podem ser “emuladas” somente manipulando o nome do arquivo.

Referências

[1] man page
$ man mktemp

Deixe um comentário