Questo è davvero qualcosa che spetta a te decidere. Ciò che potrebbe influenzare quella decisione potrebbe essere qualcosa di simile al fatto che abbia un bell'aspetto o sia leggibile. In termini di velocità di esecuzione, non farebbe molta differenza.
Possibilità di creare tre sottodirectory nella directory preesistente /path/to/dir
:
mkdir /path/to/dir/a \
/path/to/dir/b \
/path/to/dir/b
( cd /path/to/dir && mkdir a b c )
(la subshell consente di saltare cd
indietro alla directory di lavoro originale)
Con una shell che conosce le espansioni di parentesi graffe (questa è essenzialmente la stessa della cd
precedente versione senza nome poiché la shell espande l'espansione di parentesi prima di chiamare mkdir
):
mkdir /path/to/dir/{a,b,c}
L' mkdir
utilità probabilmente utilizzerà la mkdir()
funzione di libreria C. Questa funzione non cambia le directory di lavoro prima di creare la directory che è impostata per creare 1 .
È diverso quando si eseguono script che si preoccupano di essere eseguiti in una particolare directory di lavoro. Se lo script prevede di trovare file utilizzando percorsi relativi fuori dalla sua directory di lavoro corrente, ovviamente dovrai assicurarti che la directory di lavoro sia corretta prima di eseguire il comando, possibilmente con
( cd directory && thescript )
... a meno che la sceneggiatura non faccia questo da sola.
1 Correzione Lieve: Su Linux, il comando mkdir -p a/b/c
sarà chiamata mkdir("a")
, chdir("a")
, mkdir("b")
, chdir("b")
, mkdir("c")
, mentre su OpenBSD sarà solo chiamare mkdir("a")
, mkdir("a/b")
, mkdir("a/b/c")
. Su Linux, la creazione di un'unica directory aggiuntiva a/b/c/d
con mkdir a/b/c/d
chiamerà semplicemente mkdir("a/b/c/d")
.
Quindi, su Linux, mkdir -p
in effetti "farà" internamente un cd
percorso intermedio durante la creazione delle directory (mentre mkdir
senza no -p
non lo fa).
Il -p
flag mkdir
all'utilità fa sì che crei qualsiasi directory intermedia mancante, e ovviamente gli sviluppatori BSD e Linux lo fanno in modo leggermente diverso.