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