dirname
es un programa informático estándar en sistemas operativos Unix y similares . Cuando se le proporciona una ruta de acceso , eliminará cualquier sufijo que comience con el último carácter de barra ( ) y devolverá el resultado. se describe en la Especificación Única de UNIX y se utiliza principalmente en scripts de shell .dirname
'/'
dirname
La versión dirname
incluida en GNU coreutils fue escrita por David MacKenzie y Jim Meyering. [1] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes de GNU similares a Unix. [2] El comando dirname también ha sido portado al sistema operativo IBM i . [3]
La especificación única de UNIX es dirname
:
cadena de nombre de directorio
string
$ nombre_directorio /home/martin/docs/base.wiki /home/martin/docs
$ nombre_directorio /home/martin/docs/. /home/martin/docs $ nombre_directorio /home/martin/docs/ /home/martin $ nombre_directorio base.wiki . $ nombre_directorio / /
Dado que dirname
solo acepta un operando, su uso dentro del bucle interno de los scripts de shell puede ser perjudicial para el rendimiento.
mientras lee archivo ; hacer dirname " $file " hecho < alguna-entrada
El extracto anterior provocaría una invocación de proceso independiente para cada línea de entrada. Por este motivo, normalmente se utiliza la sustitución de shell en su lugar.
echo " ${ archivo %/* } " ;
o si también es necesario gestionar rutas relativas
si [ -n " ${ archivo ##*/* } " ] ; entonces echo "." de lo contrario echo " ${ archivo %/* } " ; fi
Tenga en cuenta que estos manejan las barras diagonales finales de manera diferente a dirname.
Podríamos pensar que las rutas que terminan en una barra diagonal final son un directorio, pero en realidad la barra diagonal final representa todos los archivos dentro del directorio.
/inicio/martin/docs/.
La forma correcta de representar una ruta como directorio es con una barra diagonal final y un punto. [ ¿según quién? ] [ cita requerida ]