Ir al contenido principal

Cómo desplazarse por la consola como un experto





cd como un experto


Empecemos por lo más sencillo y veamos que cd es un poco más complejo de lo que parece. Mucha gente sabe del autocompletado de bash, gracias al cual basta con escribir parte del nombre del directorio y pulsar Tab para que la consola complete el directorio (si no hay varias posibilidades, en caso contrario tendríamos que pulsar dos veces Tab para verlas). También es muy común el uso de rutas relativas: si estamos en /home/zootropo y queremos desplazarnos a /home/zootropo/videos no es necesario escribir la segunda ruta en su totalidad, sino que podemos escribir simplemente cd videos. Incluso es normal ver a novatos usando atajos como cd .. para desplazarse al directorio superior y cd ~ o cd para desplazarse al directorio de usuario.

Lo que es menos común, y muy útil para el tema que nos ocupa es el uso de cd -. Este flag tan útil no hace otra cosa que movernos al último directorio en el que estuvimos.

zootropo@genua:~$ cd /etc/X11/
zootropo@genua:/etc/X11$ cd
zootropo@genua:~$ cd -
/etc/X11
zootropo@genua:/etc/X11$ pwd
/etc/X11


De esta forma podemos movernos entre dos directorios rápidamente.

Por otro lado, si lo que necesitamos es desplazarnos a un directorio tan solo un momento para ejecutar un comando y luego seguir trabajando en el directorio actual, también podríamos usar &&, que ejecuta dos comandos, uno detrás de otro, de forma condicional (and con cortocircuito):

cd /etc/X11/ && cat xorg.conf

y rodearlo con paréntesis, que hace que los comandos se ejecuten en una subshell

(cd /etc/X11/ && cat xorg.conf)

de esta forma se ejecutará el comando en una subshell distinta, por lo que el cd no nos afectará, y será como si nunca nos hubiéramos desplazado.

Pero, ¿qué ocurre si queremos movernos entre varios directorios? ¿qué podemos hacer si queremos desplazarnos, por ejemplo, al penúltimo directorio que visitamos? la combinación pushd, popd y dirs, nos proporciona una alternativa válida.

pushd, popd y dirs


pushd funciona como un cd normal, moviéndonos al directorio especificado, pero además, como su nombre indica, introduce dicho directorio en una pila.

pushd /etc/X11/

popd también funciona como un cd, pero el directorio al que nos mueve es el que extrae de la pila, y dado que la pila es una estructura LIFO (Last In, First Out o lo que es lo mismo, el último en introducirse es el primero en extraerse) al escribir este comando nos moveremos al último directorio añadido a la pila.

popd

También es posible indicar qué elemento de la pila queremos utilizar mediante un índice. Por ejemplo:

popd +2

extraería el tercer elemento (el índice del primer elemento es 0). También podemos utilizar índices negativos, como -2, contando al revés.

Por último dirs nos sirve para imprimir el contenido de la pila:

zootropo@genua:/etc/X11$ dirs
/etc/X11 ~


Al comando dirs también se le puede pasar un índice para imprimir tan solo el directorio seleccionado por el índice.

La desventaja del uso de pushd y popd es que cada vez que hacemos un popd el directorio se borra de la pila, y si quisiéramos volver a utilizarlo tendríamos que volver a guardarlo en la pila, lo cual va en contra de la rapidez que buscamos y que nos impulsó a usarlos en primer lugar.

Existe una alternativa que consiste en aprovecharnos de la característica de la indexación de dirs. El comando

dirs +0

mostraría el primer elemento de la pila.

Basta con usar este directorio como argumento para cd para poder movernos a los directorios almacenados sin que se borren de la pila:

cd `dirs +0`

Sin embargo, por alguna extraña razón, cuando el directorio que seleccionamos con dirs es el directorio home, que se almacena como ~, este pequeño truco no funciona, sino que tendríamos que usar el flag -l para que dirs muestre la ruta completa del directorio home en lugar de ~.

cd `dirs -l +0`

Podríamos ahorrarnos tener que escribir el flag -l con un alias, e incluso crear alias como

alias cd="pushd"
alias cd1="cd `dirs -l +1`"


de forma que al escribir cd1 nos desplazáramos al penúltimo directorio introducido con nuestro cd-pushd.

Sin embargo, hay alternativas más sencillas, como CDargs.

CDargs


CDargs se encuentra en los repositorios de Ubuntu, así que instalarlo en esta distro es tan sencillo como escribir:

sudo aptitude install cdargs

También es conveniente añadir las funciones para bash ya creadas que vienen con la aplicación editando el .bashrc:

gedit ~/.bashrc

y añadiendo la siguiente línea, que hace un source del archivo correspondiente (asegúrate de que el archivo se instaló en esa ruta y modifica la línea adecuadamente si no es así)

source /usr/share/doc/cdargs/examples/cdargs-bash.sh

Reinicia la consola y podemos empezar a jugar.

Si escribimos el comando

cv

en la consola, se lanzará la interfaz gráfica en ncurses de CDargs, un pequeño explorador de archivos en modo consola.



Primero seleccionamos el directorio que nos interesa con las flechas de arriba y abajo, con Avance página y Retroceso de página, con Inicio y Fin o pulsando el número asociado. Si solo queremos hacer un cd a ese directorio, pulsamos enter. Si queremos hacer un cd a un directorio que está contenido dentro del directorio seleccionado, pulsamos la flecha derecha para que CDargs muestre su contenido, y por último, si queremos movernos a un directorio superior, pulsamos la flecha izquierda. Para salir de la interfaz sin hacer nada, pulsamos la tecla 'q'. Si queremos ver archivos ocultos, pulsamos la tecla '.'.

CDargs también incluye un sistema de marcadores. Para utilizarlo nos desplazaremos al directorio que queramos añadir a nuestros favoritos y escribimos

ca etiqueta

Por ejemplo:

cd /home/zootropo/videos
ca vid


Después basta escribir

cv etiqueta

para desplazarnos al directorio que guardamos en marcadores con dicha etiqueta.

Podemos ver los marcadores que hemos creado desde la interfaz gráfica de CDargs, pulsando la tecla Tab para cambiar entre el modo de marcadores y el modo explorador.

Por último, quizás os interese echar un vistazo a los gestores de archivo de modo consola, como GNU Midnight Commander

sudo aptitude install mc

Entradas populares de este blog

Fallo al obtener la lista de compartición del servidor

 - Ubuntu Karmic Koala El problema. El detalle es que a veces tengo que revisar archivos que están en otras computadoras que utilizan windows. Al momento de darle en el menú Lugares - Red - Red de Windows y al elegir el grupo de trabajo en el que están mis equipos me aparece el siguiente error. No se puede montar el lugar. Fallo al obtener la lista de compartición del servidor. La solución . La encontré en este articulo de los Foros de Ubuntu, lo voy a copiar tal cual, espero que no le moleste al autor y solo a manera de respaldo. # — Aquí inicia el articulo de los foros de Ubuntu – 1- En principio es necesario que estén instalados: samba samba-common smbclient winbind   2- Luego editar el archivo /etc/samba/smb.conf sudo gedit /etc/samba/smb.conf   A los cambios necesarios para adaptar el sistema, según los tutoriales de samba es necesario tener presente que: a- Donde dice workgroup = WORKGROUP, reemplazar WORKGROUP por el nombre de grupo de ...

Rootear en Ubuntu un teléfono Android

Tengo un teléfono con Android, concretamente un Motorola Defy, y resulta que en Android, basado en Linux, eres un simple usuario y solo puedes realizar algunas tareas. Otras te están vetadas. Conseguir los permisos de superusuario, se llama entre los entendidos rootear el móvil. En principio es una operación que no entraña riesgos, pero en esta vida todo puede fallar. Así que debe quedar claro que si decides rootear el teléfono, lo haces bajo tu propia responsabilidad. También debes entender, que si rooteas el teléfono, los SAT aprovechan para lavarse las manos de cualquier problema y anular la garantía. Y por último, debes saber que es posible que ya no recibas las actualizaciones automáticas de Android. Para rootear teléfonos se utiliza una aplicación llamada Superoneclick . En mi caso, esta parece ser la única solución. Pero este es un programa para Windows, por lo que.... Afortunadamente, esta escrito en .NET, por lo que vamos a poder ejecutarlo con MONO en nuestro ...

Descargar Packet Tracer 5.2 [Windows y Linux]

Packet Tracer 5.2 [Windows y Linux] Packet Tracer es la herramienta de aprendizaje y simulación de redes interactiva para los instructores y alumnos de Cisco CCNA. Esta herramienta les permite a los usuarios crear topologías de red, configurar dispositivos, insertar paquetes y simular una red con múltiples representaciones visuales. Packet Tracer se enfoca en apoyar mejor los protocolos de redes que se enseñan en el currículum de CCNA. Este producto tiene el propósito de ser usado como un producto educativo que brinda exposición a la interfaz comando – línea de los dispositivos de Cisco para practicar y aprender por descubrimiento. Packet Tracer 5.2 es la última versión del simulador de redes de Cisco Systems, herramienta fundamental si el alumno está cursando el CCNA o se dedica al networking. En este programa se crea la topología física de la red simplemente arrastrando los dispositivos a la pantalla. Luego clickando en ellos se puede ingresar ...