#!/usr/bin/env bash set -u set -o pipefail export LC_ALL=C # Own a new directory; verify physical paths before cleanup. parent=$(cd -- "${TMPDIR:-/tmp}" && pwd -P) || exit 1 work=$(mktemp -d "$parent/bhylu-bash.XXXXXX") || exit 1 work=$(cd -- "$work" && pwd -P) || exit 1 case "$work" in "$parent"/bhylu-bash.??????) ;; *) exit 1 ;; esac cleanup() { cd -- "$parent" || return 1 [[ -d $work && ! -L $work ]] || return 1 [[ $(cd -- "$work" && pwd -P) == "$work" ]] || return 1 case "$work" in "$parent"/bhylu-bash.??????) rm -r -- "$work" ;; *) return 1 ;; esac } trap cleanup EXIT cd -- "$work" || exit 1 touch -- north.txt south.txt .desk-note ls -1 -- north.txt south.txt [[ -f .desk-note ]] || exit 1