Cómo usar pushd y popd en Linux

Mucha gente de Linux nunca ha oído hablar de pushd y popd, pero han existido desde siempre. También pueden acelerar drásticamente el proceso de navegación de directorios en la línea de comandos. Le mostraremos cómo usarlos.

¿Qué son pushd y popd?

Una de las innovaciones Bill Joy incorporado en su 1978 C Shell era el concepto de una pila de directorios y los medios para manipularlo: pushd y popd. Siendo la imitación la forma más sincera de adulación, la pila de directorios, pushd y popd pronto se incorporaron a otros shells (como Bash) e incluso a otros sistemas operativos.

El concepto de pila es simple. Los elementos se colocan en la pila uno a la vez, y el elemento agregado más recientemente siempre ocupa la posición superior. Cuando los elementos se recuperan de la pila, se eliminan, en orden, de arriba hacia abajo. Las pilas de esta naturaleza a menudo se denominan Último en entrar primero en salir (LIFO) colas.

En realidad, pushd y popd son un poco más flexibles que esto, pero este es un buen modelo a tener en cuenta por ahora.

Como nos referimos a una pila de directorios, probablemente no sorprenda que la «d» en pushd y popd signifique «directorio». Estos comandos le permiten insertar directorios o sacarlos de la pila de directorios.

Pero, ¿en qué nos beneficia eso?

Cómo pushd llena la pila

Cuando usa pushd, suceden las siguientes tres cosas:

Cambia el directorio de la misma manera que si hubiera usado cd.
El nombre y la ruta del directorio se agregan a la pila.
La pila se muestra como una lista de directorios separados por espacios.

En los siguientes ejemplos, observe cómo crece la pila de directorios con cada nuevo comando pushd. También tenga en cuenta que la parte superior de la pila está a la izquierda; aquí es donde aparecen las nuevas entradas.

  Cómo instalar Lightworks en Linux

Después del primer comando pushd, hay dos entradas en la pila: el directorio que dejó y el que se mudó.

Para nuestro ejemplo, escribimos lo siguiente:

pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~

los

El último comando pushd nos llevó de regreso a nuestro directorio de inicio, por lo que la primera y la última entrada en la pila son la tilde (~), que representa nuestro directorio de inicio. Esto muestra que, aunque un directorio ya está en la pila, se agregará nuevamente para otros comandos pushd.

Tenga en cuenta también que la entrada más a la izquierda en la pila, que es la entrada agregada más recientemente, es su directorio actual.

El comando dirs

Puede usar el comando dirs, como se muestra a continuación, para mostrar la pila de directorios:

dirs

los

No afecta la pila, solo la muestra. Algunas de las opciones que puede usar con pushd se refieren a la posición de los directorios en la pila.

Si desea ver la posición numérica de cada directorio, puede usar la opción -v (vertical) como se muestra a continuación:

dirs -v

los

Si prefiere ver la ruta de acceso deletreada a su directorio de inicio en lugar de la tilde (~), agregue la opción -l (formato largo), así:

dirs -v -l

los

Agregar un directorio a la pila

Como hemos visto, cuando usa el comando pushd, hace tres cosas: cambia su directorio, agrega el nuevo directorio a la pila y muestra la pila por usted. Puede usar la opción -n (sin rotación) para agregar un directorio a la pila sin cambiar el directorio actual.

Aquí está nuestra pila de directorios:

dirs -v -l

los

Ahora, usaremos el comando pushd con la opción -n y pas en el directorio / home / dave como parámetro. Luego, revisaremos la pila de directorios nuevamente.

Escribimos lo siguiente:

pushd -n /home/dave
dirs -v -l

los

El directorio / home / dave se agregó a la pila en la ranura 1, que es el segundo lugar de la pila. No puede ocupar la primera posición porque la ranura cero es siempre el directorio actual.

  Cómo instalar software desde el repositorio de usuarios de Arch Linux

No dejamos el directorio actual, ~ / Videos, por lo que no se rotó a otra posición en la pila.

Cambio de directorio girando la pila

Puede usar parámetros numéricos con pushd para moverse a cualquier directorio en una pila, y la pila rota cuando lo hace. El directorio que ha elegido mover se convierte en la primera entrada de la pila.

Usted hace referencia a los directorios en la pila por su número de posición. Puede contar desde la parte superior o inferior de la pila. Para números positivos, como +3, cuente desde arriba; para números negativos, como -2, cuente desde abajo.

El directorio / home / dave / Documents está en la posición tres. Podemos usar el siguiente comando para mover ese directorio:

pushd +3

los

Los directorios de la pila sobre el directorio que hemos elegido se mueven al final de la pila. Nuestro directorio elegido ahora ocupa la primera posición y nos trasladamos a ese directorio.

Si queremos cambiar al directorio en la parte inferior de la pila, podemos usar el siguiente comando:

pushd -0

los

El último directorio se mueve a la primera ranura y todos los demás se mueven hacia abajo en la pila. Nos cambiamos al directorio ~ / Pictures.

El comando popd

Puede utilizar el comando popd para eliminar directorios de la pila.

Si miramos la pila de directorios, podemos ver que el directorio en la posición 1 es / home / dave. Para eliminar esto de la pila, escribimos lo siguiente para pasar el número a popd:

dirs -v -l
popd +1

los

Se eliminó el directorio / home / dave, y los que estaban debajo de él en la pila han subido un lugar.

Al igual que podemos con pushd, podemos contar desde la parte inferior de la pila con popd. Para eliminar el último directorio de la pila, escribimos:

popd -0

los

El directorio ~ / Music se elimina de la última posición de la pila.

  Cómo jugar juegos de Android en Linux con Anbox

Para cambiar el directorio, haga algo y luego vuelva al directorio anterior, puede usar pushd y popd juntos.

Usaremos pushd para movernos a un directorio diferente. Usaremos popd para descartar el directorio superior de la pila y movernos al directorio en la segunda posición. Este es el directorio del que acaba de mudarse, por lo que se lo devuelve al directorio en el que estaba originalmente.

Escribimos lo siguiente:

pushd ~
popd

los

Comenzamos en el directorio ~ / Projects, lo empujamos al directorio de inicio y luego volvimos al directorio ~ / Projects.

Girar a través de toda la pila

Vamos a ilustrar cómo rotar a través de una pila con algunos directorios anidados, pero puede usar cualquier directorio en cualquier parte del sistema de archivos.

Nuestro nivel más profundo de anidación es:

/home/dave/Projects/htg/articles

Desde el directorio de inicio, descenderemos progresivamente por cada directorio hasta llegar al directorio de artículos. Luego, veremos la pila de directorios.

Escribimos lo siguiente:

pushd ~/Projects
pushd htg
pushd articles
dirs -v -l

los

Cuando emite repetidamente comandos pushd +1, puede recorrer la pila de directorios. Si hace esto con frecuencia, pushd +1 sería un buen candidato para un alias.

Escriba lo siguiente:

pushd +1

los

Estampado sobre la pila

Es fácil volver a los viejos hábitos y usar cd para cambiar de directorio. Si lo hace, sellará el primer directorio de la pila. Esto es inevitable, ya que el primer espacio está reservado para el directorio de trabajo actual; ninguno de los otros cambia de posición.

Para hacer esto, escriba lo siguiente:

dirs -v -l
cd ~/Music
dirs -v -l

los

Una vez que se acostumbre a los comandos pushd y popd (y, quizás, los use para crear algunos alias), tendrá una forma súper rápida de saltar entre directorios.

Por eso nos quedamos en la línea de comandos. Rocas de eficiencia, ¿verdad?