Latinoamérica
de.novatoanovato@gmail.com

Comando -dirname-

Dedicado al nuevo usuario de software libre

Comando -dirname-

Comando dirname

El comando dirname es un programa CLI para sistemas operativos del tipo Unix tales como GNU/Linux. Este comando simple muestra por la salida estándar, el camino de directorios que preceden a un elemento dado, eliminando el nombre de éste. En palabras mas simples, nos permiten extraer la ruta de un elemento indicado, ya sea de un archivo o un directorio.

Objetivos de éste artículo

El principal objetivo de este articulo es el de aprender a utilizar el comando dirname, su sintaxis, las opciones y/o parámetros que forman parte de ella y que nos permitirán extraer tanto de archivos como de directorios los diferentes tipos de rutas (según indiquemos) que lo apuntan.

Sintaxis

El comando dirname se corresponde con la siguiente sintaxis.

dirname [Ruta] [Directorio] [Archivo]

Contexto de trabajo

Para poder llevar adelante esta entrada, opté por crear una serie de directorio sobre los que trabajaremos. Siendo este el contexto sobre el que desarrollaremos la entrada por completo.

Nombre y ruta del directorio

El directorio creado lleva por nombre dirname y se encuentra alojado en el directorio /home/cristian. Estando dentro del directorio mencionado, ejecutamos el comando pwd. Veamos.

pwd

Contenido del directorio dirname

Veamos a continuación el contenido o estructura de elementos dentro del directorio dirname. Para ello usaremos el comando tree, al que le indicaremos el directorio que hemos creado para esta entrada: /home/cristian/dirname.

tree /home/cristian/dirname

Basados en esta estructura de directorios y archivos, continuemos.

Opciones del comando dirname

Para trabajar con el comando dirname es necesario indicar, como parámetro, rutas o direcciones (ya sean rutas relativas o absolutas) que apunten a elementos. Sin importar si son directorios o archivos los que estamos apuntando, este comando extraerá la ruta hacia el elemento y nos la imprimirá en la salida estándar teniendo en cuenta el tipo de ruta que hallamos pasado: relativa o absoluta. Si indicamos una ruta relativa, nos devolverá una relativa y lo mismo para con las absolutas.

Tenga en cuenta que para todos los ejemplos acudiremos al contexto de trabajo indicado en el comienzo de este articulo, tal cual se muestra a continuación.

De una ruta relativa apuntando a un elemento

Cuando ejecutamos el comando dirname haciendo uso de una ruta relativa sobre un elemento, este puede ser un archivo o un directorio. Veamos a continuación cada caso por separado.

dirname de ruta relativa apuntando un archivo

Ejecutaremos dirname donde pasaremos como parámetro la ruta relativa partiendo desde el home del usuario /home/cristian, para este ejemplo apuntaremos hacia el elemento archivo1.txt. Siendo este un archivo. Pero primero confirmemos la posición de nuestro prompt.

pwd

Confirmando que no encontramos en el directorio /home/cristian y comprendiendo que la ruta relativa hacia el elemento es ./dirname/B/F/archvio1.txt, ejecutamos…

dirname ./dirname/B/F/archvio1.txt

Como podemos observar, nos imprimió la ruta relativa hacia el elemento archivo1.txt: ./dirname/B/F/.

dirname de ruta relativa apuntando un directorio

Del mismo modo, si ejecutamos dirname pasando como parámetro la ruta relativa en dirección al directorio X y comprendiendo que nuestro prompt se encuentra en el home del usuario como vemos a continuación…

pwd

Ejecutamos

dirname ./dirname/A/D/Z/X

Como podemos observar, obtenemos a la salida la ruta hacia el directorio X: ./dirname/A/D/Z. ¿Y si nuestro prompt se encontrase en el directorio /tmp, que ruta relativa pasaríamos para apuntar al mismo elemento?

De una ruta absoluta apuntando un elemento

Cuando ejecutamos el comando dirname haciendo uso rutas absolutas sobre un elemento, se nos devolverá como salida la ruta que apunta al elemento, conservando el tipo de ruta utilizada y donde al igual que en el caso anterior, este elemento puede ser un archivo o un directorio. Analicemos cada caso por separado.

dirname de ruta absoluta apuntando un archivo

Cuando utilizamos rutas absolutas, no es necesario saber cual es nuestra posición con el prompt, ya que esta siempre se indican partiendo desde la raíz del estándar de jerarquías FHS. Por lo que ejecutaremos el comando dirname, donde el parámetro será la ruta que sigue al elemento, en este caso, archivo2.txt.

dirname /home/cristian/dirname/B/F/archvio2.txt

Donde la salida estándar nos devolverá /home/cristian/dirname/B/F.

dirname de ruta absoluta apuntando un directorio

En caso de que el elemento involucrado sea un directorio, nos bastara con ejecutar el comando dirname donde posteriormente indicaremos la ruta absoluta que lo apunta. Para este ejemplo, utilizaremos el directorio H de las estructura del ejemplo.

dirname /home/cristian/dirname/C/H

Donde la salida estándar nos brindará la ruta que apunta al directorio H. Siendo esta: /home/cristian/dirname/C/H.

dirname sobre múltiples rutas

Así como podemos pasar como parámetro un tipo de ruta a la vez, la sintaxis del comando dirname nos permite utilizar varias direcciones de forma simultanea e incluso de diferentes tipos de ruta. Veamos…

Para este ejemplo vamos a extraer la ruta hacia el directorio F utilizando rutas relativas y hacia el archvio3.txt por medio de rutas absolutas, todo en una misma linea de ejecución y desde nuestra posición en el directorio del usuario ubicado en /home/cristian, confirmemos. ¿Porqué en este caso es necesario confirmar la posición de nuestro prompt?

pwd

Una vez que sabemos donde estamos, ejecutemos..

dirname ./B/F /home/cristian/C/G/archivo3.txt

De esta forma nos listara las rutas indicadas: La relativa que apunta al directorio F: ./By la absoluta que apunta al archivo archivo3.txt: /home/cristian/C/G.

La magia detrás de dirname

Para entender lo que realmente hace dirname vamos a poner un ejemplo. Nos vamos a posicionar sobre el directorio raíz de nuestro sistema operativo.

pwd

Una vez confirmado que estamos en el directorio raiz, ejecutemos la siguiente linea de comando:

dirname /este/directorio/no/existe

Como observamos, dirname nos devuelve la ruta /este/directorio/no. Pero, ¿existe esta ruta?. Para comprobarlo listemos el directorio /este utilizando el comando ls.

Como podemos observar la ruta no existe, pero aun así dirname la tomo como un parámetro valido y lo proceso. Entonces, ¿Qué es lo que hace verdaderamente este comando?

Simplemente elimina la ultima / de una ruta dada, exista o no, mostrándonos todo lo que la precede.

Espero sea de utilidad.
Saludos, Cristian.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

3 − 3 =