Comment créer un répertoire temporaire?

J’utilise pour créer un tempfile , le supprimer et le recréer en tant que répertoire:

 tmpnam=`tempfile` rm -f $tmpnam mkdir "$tmpnam" 

Le problème est qu’un autre processus peut avoir le même nom X s’il exécute accidentellement un fichier temporaire après un processus rm -f X et juste avant mkdir X

    Utilisez mktemp -d . Il crée un répertoire temporaire avec un nom aléatoire et vérifie que ce fichier n’existe pas déjà. Vous devez toutefois vous rappeler de supprimer le répertoire après l’avoir utilisé.

    Mon one-liner préféré pour cela est

     cd $(mktemp -d) 

    Pour une solution plus robuste, j’utilise quelque chose comme ce qui suit. De cette façon, le répertoire temporaire sera toujours supprimé après la fermeture du script.

    La fonction de nettoyage est exécutée sur le signal EXIT . Cela garantit que la fonction de nettoyage est toujours appelée, même si le script abandonne quelque part.

     #!/bin/bash # the directory of the script DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # the temp directory used, within $DIR # omit the -p parameter to create a temporal directory in the default location WORK_DIR=`mktemp -d -p "$DIR"` # check if tmp dir was created if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then echo "Could not create temp dir" exit 1 fi # deletes the temp directory function cleanup { rm -rf "$WORK_DIR" echo "Deleted temp working directory $WORK_DIR" } # register the cleanup function to be called on the EXIT signal trap cleanup EXIT # implementation of script starts here ... 

    Répertoire du script bash d’ ici .

    Bash Traps .