Poiché dirname accetta un solo operando, il suo utilizzo all'interno del ciclo interno degli shell script può essere dannoso per le prestazioni. Si consideri il seguente codice:
whilereadfile;dodirname"$file"done<dell'input
L'estratto qui sopra causerebbe invocazioni di processo separate per ogni riga di input. Per questo motivo, in genere viene utilizzata invece la shell substitution:
echo"${file%/*}";
oppure nel caso fosse necessario gestire anche i percorsi relativi:
Si noti che questi frammenti di codice gestiscono le barre finali in modo diverso da dirname.
Idee erronee
Si potrebbe pensare che i percorsi che terminano con una barra finale siano una directory. Ma in realtà, la barra finale rappresenta tutti i file all'interno della directory.
/home/marco/documenti/.
Il modo corretto per rappresentare un percorso come una directory è quello di farlo terminare con una barra e un punto.[secondo cosa?]