Comando dirname de Linux
Manual completo de comandos de Linux
¿Qué es el comando dirname?
dirnameEs una herramienta de línea de comandos simple pero práctica en los sistemas Linux/Unix, que se utiliza para extraer la parte del directorio de una ruta de archivo. Te ayuda a obtener rápidamente el directorio padre de una ruta sin necesidad de analizar cadenas manualmente.
Funciones básicas
- Entrada: una cadena de ruta de archivo
- Salida: la parte del directorio de esa ruta (es decir, el contenido después de eliminar la última barra diagonal)
Sintaxis del comando
dirname [选项] 文件名...
Descripción de parámetros
- nombre de archivo: puede ser una o más rutas de archivo (admite rutas absolutas y relativas)
- **...**: indica que se pueden procesar múltiples rutas de archivo al mismo tiempo
Opciones
Aunque en la mayoría de los casosdirnameno se necesitan opciones, la versión GNU admite las siguientes opciones estándar:
| Opción | Descripción |
|---|---|
-z |
Usa el carácter NUL (\0) para separar la salida en lugar de saltos de línea |
--help |
Muestra información de ayuda |
--version |
Muestra información de versión |
Cómo funciona
dirnameEl comando procesa la ruta mediante los siguientes pasos:
- Elimina todas las barras diagonales (/) al final de la ruta
- Elimina la última barra diagonal y todos los caracteres posteriores
- Si el resultado está vacío, muestra "." (directorio actual)
Diagrama de flujo de procesamiento

Ejemplos de uso
Uso básico
Ejemplo
/home/user/docs
$ dirname relative/path/to/file
relative/path/to
Procesar múltiples archivos
Ejemplo
/a/b
/x/y
Manejo de rutas especiales
Ejemplo
/usr
$ dirname file.txt # Solo nombre de archivo
.
$ dirname / # Directorio raíz
/
Uso en scripts
Ejemplo
# Obtener el directorio del script
SCRIPT_DIR=$(dirname "$0")
echo "Directorio del script:$SCRIPT_DIR"
# Obtener el directorio de la ruta del archivo de configuración
CONFIG_PATH="/etc/app/config.cfg"
CONFIG_DIR=$(dirname "$CONFIG_PATH")
echo "Directorio de configuración:$CONFIG_DIR"
Escenarios de uso comunes
1. Obtener el directorio del script
Ejemplo
# Obtener la ruta absoluta del script
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
echo "Directorio del script:$SCRIPT_DIR"
2. Construir rutas relativas
Ejemplo
BASE_DIR="/var/log"
FULL_PATH="$BASE_DIR/app/error.log"
# Obtener el directorio de registros (logs)
LOG_DIR=$(dirname "$FULL_PATH")
3. Usarlo junto con basename
Ejemplo
FULL_PATH="/home/user/docs/report.pdf"
DIR=$(dirname "$FULL_PATH")
FILE=$(basename "$FULL_PATH")
echo "Directorio:$DIR"
echo "Nombre de archivo:$FILE"
Notas importantes
Enlaces simbólicos:dirnameno resuelve enlaces simbólicos; si necesitas resolverlos, se puede combinar conreadlinkusar
Ejemplo
Manejo de espacios: cuando la ruta contiene espacios, asegúrate de usar comillas
Ejemplo
Rutas relativas: la salida mantendrá el formato de ruta relativa
Ejemplo
../parent
Entrada vacía: si no se proporciona ningún argumento, la versión GNU muestra ".", pero este no es el comportamiento estándar de POSIX
Comparación con comandos similares
| Comando | Función | Entrada de ejemplo | Salida de ejemplo |
|---|---|---|---|
dirname |
Extrae la parte del directorio | /a/b/c.txt | /a/b |
basename |
Extrae la parte del nombre de archivo | /a/b/c.txt | c.txt |
realpath |
Obtiene la ruta absoluta (resuelve enlaces simbólicos) | ../file | /full/path/to/file |
Ejercicios prácticos
Crear un archivo de prueba y obtener su ruta de directorio
Ejemplo
dirname /tmp/testfile
Escribir un script que muestre el directorio donde se encuentra
Ejemplo
echo "Este script está en:$(dirname "$0")"
Intentar procesar rutas que contengan espacios y caracteres especiales
Ejemplo
touch "/tmp/my dir/special file.txt"
dirname "/tmp/my dir/special file.txt"
Otras extensiones