Dirname
Dirname software | |
---|---|
Esempio di comando dirname | |
Genere | Utility |
Sviluppatore | David MacKenzie, Jim Meyering |
Sistema operativo | Unix-like Multipiattaforma |
Licenza | coreutils: GPLv3+ (licenza libera) |
Modifica dati su Wikidata · Manuale |
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.[1][2]
Il comando dirname
è stato anche portato sul sistema operativo IBM i.[3]
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/.
Il modo corretto per rappresentare un percorso come una directory è quello di farlo terminare con una barra e un punto.[secondo cosa?]
Note
- ^ (EN) dirname(1) – Linux User Commands Manual, su linux.die.net. URL consultato il 26 gennaio 2022.
- ^ (EN) dirname – Commands & Utilities Reference, The Single UNIX Specification, Issue 7, su opengroup.org, The Open Group. URL consultato il 26 gennaio 2022.
- ^ (EN) IBM, System i 7.2, Programming Qshell, su ibm.com, p. 90. URL consultato il 5 settembre 2020.
Voci correlate
Collegamenti esterni
- dirname(1) – OpenBSD General Commands Manual
V · D · M | ||
---|---|---|
File system | chcon · chmod · chown · chgrp · cksum · cp · dd · df · dir · dircolors · install · ln · ls · mkdir · mkfifo · mknod · mktemp · mv · realpath · rm · rmdir · shred · sync · touch · truncate · vdir | |
Utilità testuali | b2sum · base32 · base64 · cat · cksum · comm · csplit · cut · expand · fmt · fold · head · join · md5sum · nl · numfmt · od · paste · ptx · pr · sha1sum · shuf · sort · split · sum · tac · tail · tr · tsort · unexpand · uniq · wc | |
Utilità della shell | arch · basename · chroot · date · dirname · du · echo · env · expr · factor · false · groups · hostid · id · link · logname · nice · nohup · nproc · pathchk · pinky · printenv · printf · pwd · readlink · runcon · seq · sleep · stat · stdbuf · stty · tee · test · timeout · true · tty · uname · unlink · uptime · users · who · whoami · yes |
V · D · M | ||
---|---|---|
File system | cat · cd · chattr · chmod · chown · chgrp · cksum · cmp · cp · du · df · fdisk · file · fsck · fuser · gzip · ln · ls · lsattr · lsof · mkdir · mknod · mount · mv · pwd · rm · rmdir · split · tar · touch · umount · umask | |
Processi | at · chroot · crontab · exit · kill · killall · nice · nohup · pgrep · pidof · pkill · ps · pstree · sleep · time · top · wait | |
Ambiente utente | alias · env · export · finger · id · logname · mesg · newgrp · passwd · su · sudo · uname · uptime · w · wall · who · whoami · write | |
Elaborazione testo | awk · comm · cut · diff · ed · ex · fmt · head · iconv · join · less · more · paste · sed · sort · tail · tr · uniq · vi · wc · xargs | |
Script di shell | basename · dirname · echo · expr · false · printf · test · true · unset | |
Rete | dig · nslookup · ifconfig · netstat · ping · rcp · rlogin · route · netcat · traceroute | |
Ricerche | find · grep · strings | |
Amministrazione | dmesg · groupadd · groupdel · groupmod · mdadm · shutdown · useradd · userdel · usermod | |
Altri | banner · bc · cal · clear · date · dd · lp · man · size · tee · tput · yes |