En reiteradas ocasiones nos encontramos trabajando en un terminal utilizando rutas de directorios largas de forma recurrente. En la mayoría de los casos el comando cd y la tecla tabular son nuestros mejores aliados. Sin embargo existe otra alternativa que tal vez nos pueda servir de utilidad y permite que nos movamos entre directorios (carpetas) con más flexibilidad mediante los comandos pushd y popd.
Como trabajan pushd y popd
Básicamente trabajan con la pila de directorios. En sí, pushd guarda la información en memoria para ser utilizada en cualquier momento —funcionaría algo así como un portapapeles pero en la shell—.
Ejemplos de su utilización
Añadir rutas a la pila de directorios
Vamos a suponer que deseo añadir a la pila de directorios las siguientes rutas:
/usr/share/ /etc/apt/sources.list.d/ /usr/lib/systemd/ /var/cache/apt/
Al ejecutar el comando pushd este cambiará al directorio (carpeta) especificado y lo almacenará en memoria. El mecanismo sería el siguiente:
pushd /usr/share/ pushd /etc/apt/sources.list.d/ pushd /usr/lib/systemd/ pushd /var/cache/apt/
En la terminal obtendríamos el siguiente resultado:
Observar que a medida que vamos ingresando las rutas a la pila de directorios, este nos muestra el orden en que van quedando. Sin embargo, no siempre estaremos usando pushd, por lo que tendremos que hacer uso de otro comando para recordar las rutas añadidas.
Como movernos entre los directorios agregados a la pila
Cada vez que usamos el comando pushd para añadir una ruta este le asigna un número de orden comenzando por el 0 (cero). Para ver todas las rutas almacenadas utilizamos el comando dirs de esta manera:
dirs -v
el resultado:
0 /var/cache/apt 1 /usr/lib/systemd 2 /etc/apt/sources.list.d 3 /usr/share 4 ~
Tal cual se presenta el listado anterior el orden 0 (cero) es la ubicación actual en nuestra shell.
Para cambiar a otro directorio usamos la sintaxis: pushd | pushd +N, dónde N es el número de la lista. P. ej. para movernos a /etc/apt/sources.list.d/ de acuerdo al listado anterior será:
pushd +2
Ahora el orden 0 (cero) pasa a /etc/apt/sources.list.d/ —la ubicación actual— y /var/cache/apt/ toma el orden 3. Es decir, que a medida que ejecutamos pushd +N se va reasignando el orden en la lista, por lo que no siempre una ruta mantiene siempre el mismo valor numérico —funciona como una ruleta—:
Si ejecutamos pushd sin opciones este regresará al directorio anterior y viceversa. Para bajar un nivel en la lista de directorios ejecutamos pushd -1.
Eliminar una ruta de la pila de directorios
En este caso utilizaremos popd | popd +N, dónde N es el número de la lista.
Por ejemplo si estamos en la ubicación /etc/apt/sources.list.d/ —como en el ejemplo— y ejecutamos popd sin opciones, este eliminará la ruta actual. Si deseamos eliminar otra ruta de la lista desde el directorio actual basta ejecutar:
popd +2 ## Eliminará la ruta /var/cache/apt
Para verificar que ruta tiene asignado algún número de la lista ejecutamos:
dirs +N ## Dónde N es un número de la lista.
Ejemplo:
dirs +2
De acuerdo con la figura anterior nos daría como resultado:
/usr/lib/systemd
Para eliminar completamente la lista almacenada en la pila:
dirs -c
Otras opciones:
Mostrar el orden sin enumerar —menos intuitivo cuando son muchas direcciones—
dirs -l o dirs -p
Tengo que confesarte que cuando veo un articulo pendiente de tu autoria ni lo reviso, directamente lo publico. Otra maravilla de articulo. Gracias, por cierto, creo que vale la pena subirle un nivel al rol de tu usuario para que asi tus articulos se publiquen sin esperar por nosotros, no se que dirá el resto del staff. Me voy a tomar el atrevimiento de hace el upgrade de tu rol, Pablo se que debe estar complicadisimo con lo del evento de Abril. Saludos y gracias por el post y sorry por el oftopic, pero era necesario…
Gracias Maikel por tu comentario. Igualmente yo que vos le daría una mirada rápida, algo se me puede pasar y cuatro ojos ven mejor que dos 😀
En cuanto a los permisos te doy las gracias por tu confianza, sin embargo si no están de acuerdo los revocan. Ya sabes que de mi parte no va a ver ningún tipo de quejas, lo que ustedes decidan para mi está bien.
Saludos.
pushd y popd son muy latosos de usar, prueben autojump, va creando una bd con las rutas que usamos y luego cuando «aprende» es un placer usarlo.
apt-cache show autojump
Este no lo conocía, gracias por el dato. Parece ser más ágil y dinámico, es una muy buena alternativa a Pushd.
Saludos.