È possibile utilizzare un modo leggermente più portatile per gestire i file temporanei mktemp
. Creerà file temporanei e restituirà i loro percorsi per te. Per esempio:
$ mktemp
/tmp/tmp.zVNygt4o7P
$ ls /tmp/tmp.zVNygt4o7P
/tmp/tmp.zVNygt4o7P
Potresti usarlo in uno script abbastanza facilmente:
tmpfile=$(mktemp)
echo "Some temp. data..." > $tmpfile
rm $tmpfile
Leggendo la pagina man, dovresti essere in grado di impostare le opzioni in base alle tue esigenze. Per esempio:
-d
crea una directory anziché un file.
-u
genera un nome, ma non crea nulla.
Usando -u
potresti recuperare abbastanza facilmente la directory temporanea con ...
$ tmpdir=$(dirname $(mktemp -u))
Maggiori informazioni mktemp
sono disponibili qui .
Modifica per quanto riguarda Mac OS X: non ho mai usato un sistema Mac OSX, ma secondo un commento di Tyilo di seguito, sembra che Mac OSX mktemp
richieda di fornire un modello (che è un argomento opzionale su Linux). citando:
Il modello può essere qualsiasi nome di file con un numero di "X" ad esso aggiunto, ad esempio /tmp/temp.XXXX
. Le "X" finali vengono sostituite con l'attuale numero di processo e / o una combinazione di lettere univoca. Il numero di nomi file univoci che mktemp può restituire dipende dal numero di "X" fornite; sei "X" comporteranno la selezione di 1 di 56800235584 (62 ** 6) nomi di file possibili da mktemp.
La pagina man dice anche che questa implementazione è ispirata alla pagina man di OpenBSD per mktemp
. Una divergenza simile potrebbe quindi essere osservata anche dagli utenti OpenBSD e FreeBSD (vedere la sezione Cronologia ).
Ora, come probabilmente avrai notato, questo richiede di specificare un percorso file completo, inclusa la directory temporanea che stai cercando nella tua domanda. Questo piccolo problema può essere gestito usando l' -t
interruttore. Mentre questa opzione sembra richiedere un argomento ( prefix
), sembrerebbe che mktemp
si basi su $TMPDIR
quando necessario.
Tutto sommato, dovresti essere in grado di ottenere lo stesso risultato sopra usando ...
$ tmpdir=$(dirname $(mktemp tmp.XXXXXXXXXX -ut))
Qualsiasi feedback da parte degli utenti di Mac OS X sarebbe molto apprezzato, poiché non sono in grado di testare questa soluzione da solo.
${TMPDIR-/tmp}
su Unix-like.TMPDIR
c'è (dal sistema o dall'amministratore o dall'utente) per dirti quando non utilizzare/tmp
per i file temporanei.