In perl, usando uno dei miei moduli preferiti:Path::Tiny.
path("/opt/test/test.txt")->touchpath;
Dal documento:
Combina mkpath e tocco. Crea la directory padre se non esiste, prima di toccare il file.
Mi piace scrivere molto poco, quindi ho inserito questo comando in un nome fn nel mio .profile, ma ho usato questa formulazione per anni prima di farlo:
mkdir -p dirname/sub/dir && touch $_/filename.ext
La variabile $_
memorizza l'ultimo argomento del comando precedente. Abbastanza utile da sapere in generale.
mkdir B && touch B/myfile.txt
In alternativa, crea una funzione:
mkfile() {
mkdir -p $( dirname "$1") && touch "$1"
}
Eseguilo con 1 argomento:filepath. Dicendo:
mkfile B/C/D/myfile.txt
creerebbe il file myfile.txt nella directory B/C/D.
In uno script di shell, puoi semplicemente fare:
mkdir -p /opt/test && touch /opt/test/test.txt
mkdir -p
non fallirà (e non farà nulla) se la directory esiste già.
In perl, usa make_path
dal File::Path
module, quindi crea il file come preferisci. make_path
inoltre non fa nulla se la directory esiste già, quindi non c'è bisogno di controllare tu stesso.