Navegando en la terminal

15 Jul 2020
Favio

Muchas de mis tareas diarias en mi actual trabajo incluye la interacción directa con un shell de linux, generalmente bash, y en lo personal me agrada mas trabajar desde la terminal que el utilizar alguna herramienta gráfica para realizar alguna tarea.

Lo que si me resulta de repente tedioso es navegar de carpeta en carpeta, hacer cd a alguna ruta, después otra, y para regresar a alguna que ya visite, tengo que escribirla de nuevo o revisar el historial de comandos.

Por eso quise escribir sobre algunas soluciones que encontré para lidiar con esto.

  • Utilizar cd - para regresar al directorio anterior. Ej.
    $~:> cd /usr/local/app/myconf/
    $/usr/local/app/myconf:> cd - 
    $~:> pwd 
    /home/hmedrano/


  • Declarar alias con los nombres a directorios que visitas frecuentemente.
    alias miconf="cd /usr/local/app/myconf"
    alias ..="cd ../"
    alias ...="cd ../../"


  • Definir la variable de entorno $CDPATH con las rutas que contienen los directorios mas visitados. Haciendo esto cuando escribamos cd directorio el sistema va buscar por directorio en las rutas que estén listadas en la variable $CDPATH
    $~:> export CDPATH=/usr/local/app/:$CDPATH
    $~:> cd myconf
    $/usr/local/app/myconf:> pwd 
    /usr/local/app/myconf


  • Utilizar los comandos pushd y popd. Estos comandos sirven para generar una pila de directorios, y son realmente útiles cuando escribes scripts que necesitan entrar y salir de distintos directorios.
    $~:> cd /etc/apache2
    $/etc/apache2:> pushd /etc/apache2
    $/etc/apache2:> cd /usr/local/app/myconf
    $/usr/local/app/myconf:> pushd $PWD
    $/usr/local/app/myconf:> popd 
    $/etc/apache2:> pwd
    /etc/apache2


  • Encontré buscando en Internet que hay software diseñado para esto, un ejemplo de uno es autojump, fue el que me pareció mas completo y cuenta con bastante funcionalidad para navegar directorios en la terminal. Aunque para mi gusto es innecesario el depender de python y varias librerías para lograr la navegación entre directorios.

Mi solución

Alguna, ó varias de estas alternativas las podemos utilizar para facilitar la navegación en la terminal, aunque en mi caso si necesitaba alguna herramienta similar en funcionalidad a la de autojump, pero sin todo el compromiso de las dependencias de python. Y pues claro que es posible hacerlo usando lo que ya revisamos anteriormente, como es los comandos pushd, popd y declarar aliases para agregar funcionalidad a los comandos que ya utilizamos en el shell.

Escribí entonces una función para cambiar de directorio (que la vuelvo alias de cd), pero que agregue el directorio que visitamos a la pila de directorios usando pushd, y conforme vaya visitando directorios se va haciendo un historial de directorios visitados. Para regresar directorios de ese historial declare una función bk y otra fw para ir hacia adelante, simulando lo que tenemos en los exploradores web.

Aquí les dejo un video de asciinema demostrando las funciones y alias que escribí:

Listado de comandos:

  • dirs : Listar historial de directorios
  • cd [dir] o cd n[dir#] : Cambio de directorio normal, o especificar un numero de directorio del historial.
  • bk : Regresar un directorio del historial
  • fw : Avanzar un directorio del historial.

El código fuente de estos scripts:


Si crees que te puede resultar útil este sistema de navegación, solo copia y pega este script al final de tu archivo .bashrc, y aun mejor, puedes dejar un comentario ó darle un thumbs up al code snippet de gitlab ;)

Favio


Blog Comments powered by Disqus.

Siguiente   Anterior