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 cdindietro alla directory di lavoro originale)
Con una shell che conosce le espansioni di parentesi graffe (questa è essenzialmente la stessa della cdprecedente versione senza nome poiché la shell espande l'espansione di parentesi prima di chiamare mkdir):
mkdir /path/to/dir/{a,b,c}
L' mkdirutilità 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/dcon mkdir a/b/c/dchiamerà semplicemente mkdir("a/b/c/d").
Quindi, su Linux, mkdir -pin effetti "farà" internamente un cdpercorso intermedio durante la creazione delle directory (mentre mkdirsenza no -pnon lo fa).
Il -pflag mkdirall'utilità fa sì che crei qualsiasi directory intermedia mancante, e ovviamente gli sviluppatori BSD e Linux lo fanno in modo leggermente diverso.