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