dirname è un programma per computer standard su Unix e sistemi operativi Unix-like. Quando a dirname viene passato un percorso (pathname), tale comando cancellerà qualsiasi suffisso che inizia con l'ultimo carattere slash ('/') e restituirà il risultato. Il comando dirname è descritto nella Single UNIX Specification ed è utilizzato principalmente negli shell script.
Storia La versione di dirname presente in GNU coreutils è stata scritta da David MacKenzie e Jim Meyering.
Il comando dirname è stato anche portato sul sistema operativo IBM i.
Sintassi La Single UNIX Specification per dirname è: dirname string string Un percorso
Esempi dirname recupererà il nome del percorso della directory da un nome del percorso ignorando eventuali barre finali: $ dirname /home/marco/documenti/base.wiki /home/marco/documenti
$ dirname /home/marco/documenti/. /home/marco/documenti
$ dirname /home/marco/documenti/ /home/marco
$ dirname base.wiki .
$ dirname / /
Prestazioni 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: while read file; do dirname "$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: if [ -n "${file##*/*}" ]; then echo "." else echo "${file%/*}"; fi 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/.
Note
Voci correlate Shell script Basename Percorso
Collegamenti esterni dirname(1) – OpenBSD General Commands Manual
Categoria:Unix Categoria:Comandi Unix Categoria:Coreutils