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.

Dirname
software
Esempio di comando dirname
Esempio di comando dirname
Esempio di comando dirname
GenereUtility
SviluppatoreDavid MacKenzie, Jim Meyering
Sistema operativoUnix-like
Multipiattaforma
Licenzacoreutils: GPLv3+
(licenza libera)

Storia modifica

La versione di dirname presente in GNU coreutils è stata scritta da David MacKenzie e Jim Meyering.[1][2]

Il comando dirname è stato anche portato sul sistema operativo IBM i.[3]

Sintassi modifica

La Single UNIX Specification per dirname è:

dirname string
string
Un percorso

Esempi modifica

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 modifica

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 modifica

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?]

Note modifica

  1. ^ (EN) dirname(1) – Linux User Commands Manual, su linux.die.net. URL consultato il 26 gennaio 2022.
  2. ^ (EN) dirname – Commands & Utilities Reference, The Single UNIX Specification, Issue 7, su opengroup.org, The Open Group. URL consultato il 26 gennaio 2022.
  3. ^ (EN) IBM, System i 7.2, Programming Qshell, su ibm.com, p. 90. URL consultato il 5 settembre 2020.

Voci correlate modifica

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica