viernes, 12 de octubre de 2012

La "memoria" del Terminal

A muchos (aún llevando mucho tiempo en Linux) el uso de la consola (Terminal) y por lo tanto el uso de comandos les causar cierto pavor. Sobre todo cuando ésta se tiene que utilizar fuera del entorno gráfico.
Desde el entorno gráfico la cosa se suele llevar relativamente bien para la gran mayoría. El uso de comandos en ella se simplifica enormemente ya que el recurso de copia y pega es muy recurrente. Tanto es así que para muchos, en este sentido el copia y pega se ha convertido en algo imprescindible.

El problema ( si se puede decir así ) viene cuando se tiene que recurrir al Terminal fuera de nuestro cómodo y bonito entorno gráfico.
Si los comandos y los pasos a utilizar son numerosos y largos... pues entonces, ¡ahí Dios! en este caso la cosa se complica bastante ¿no?. Ya te puedes armar de paciencia, ya que habrá que tomar buena nota de lo que se debe hacer, sobre todo para no tener que estar volviendo constantemente al entorno gráfico y ver donde hayas recogido la información,¿ que es lo que se te pasó y que estás poniendo mal?  para poder seguir adelante, en el caso de estar dándote constantes errores.
Tomar nota de los pasos a seguir se pueden hacer de forma rápida y esquemática tal y cómo hacemos habitualmente, ( jeje, que a duras penas entendemos nosotros mismos, cuanto más lo van a entender los demás, jeje ) pero tomar nota de los comandos ya es otra cosa muy diferente, cosa de la que se tiene que hacer lógicamente de manera exacta. Aquí no valen aproximaciones o deducciones algunas, ya que pueden llevarnos a arruinar nuestro sistema.

Para ésto podemos hacer uso de la que yo llamo La "memoria" del Terminal que no es más que un historial del intérprete de comando Bash.


Este archivo se encuentre en nuestra carpeta de usuario: /home/TuUsuario/.bash_history y es oculto. Así que para verlo debemos activar la opciones en el menú Ver de nuestro explorador de archivos Mostrar los archivos ocultos. El archivo en cuestión es llamado .bash_history y podemos editarlo con cualquier editor de texto.



¿Que función tiene esto en el Terminal?
Pues una muy simple, nada mejor que un ejemplo practico para ello.
Abre un terminal cualquiera. Una vez abierto pulsa (de las Flechas del teclado) la que apunta hacía arriba:


Automáticamente será añadido en él, el último comando que se introdujo para ser nuevamente ejecutado. Si sigues pulsando verás que te aparecen otros que tan seguro pusiste tú, tiempo atrás.



A partir de entonces ya puedes utilizar la Flecha inferior para ir alternando entre los comandos de la lista.
Si ejecutas una orden nueva y quieres volver a ejecutarla no necesitas volverla a escribir o copiar simplemente clica en la flecha superior para que se añada automáticamente. Lo mismo si olvidaste un comando utilizado hace varios días o meses, tan solo tienes que ir recorriendo la lista hasta dar con él.
Cualquier comando ejecutado en el Terminal queda registrado y guardado y se puede volver acceder de esta forma tan simple.

Supongo que sobra decir lo practico que es todo esto. Pero en un entorno gráfico donde podemos utilizar la simplicidad del copia y pega, se diluye un poco la su utilidad de este método, sobre todo para los menos experimentados o los que poco hacen o quieren hacer uso del Terminal.
¿Entonces donde esta realmente la ventaja de este procedimiento para aquellos que no les gusta el estupendo Terminal?
Pues si aún no lo has adivinado, está para cuando tenemos la necesidad de trabajar sin entorno gráfico.
Cuando trabajamos con Terminales virtuales cómo son los utilizados al clicar Control + Alt + F1 (hasta F6), no tenemos entorno gráfico donde apoyarnos para introducir correctamente los comandos salvo que los tengamos bien apuntados. Y aún así algunos pueden ser harto complicados de introducir con lo que tenemos que estar rectificando constantemente.
Si tenemos una serie de estos comandos (complicados o no) que debemos introducir estando trabajando de este modo, los podemos prepara muy fácilmente editando el archivo .bash_history y añadir al final los comandos que vallamos a necesitar. Ojo hay que añadir comando por línea, exactamente igual que cómo cuando lo hacemos en el Terminal o cómo puedes ver que está estructurado este archivo. Luego una vez añadidos (previo cierre y apertura del Terminal) ya podemos llamarlos desde el Terminal virtual con las teclas anteriormente expuestas.

Nota:
Normalmente cuando accedemos a los Terminales virtuales lo hacemos para trabajar en modo root. O cuando necesitamos iniciar nuestro sistema en modo terminal también lo hacemos como root. En cualquiera de los casos si lo hacemos cómo root verás que los comandos introducidos en el archivo anteriormente citado no apareceran. Te aparecerán seguramente otros pero no el que por ejemplo tú acabas de añadir. Esto es debido a que el usuario root utiliza su propio archivo .bash_history, archivo que encontrarás en la siguiente ruta: /root/.bash_history


Para poder acceder a esa carpeta tan solo tienes que clicar en ella con el botón derecho del ratón y seleccionar  Abrir como administrador. Luego en el menú Ver activar la opción Mostrar los archivos ocultos. El proceso a seguir es exactamente igual al descrito anteriormente. Introducimos los comandos que vallamos a utilizar en el archivo .bash_history  de nuestra carpeta root...¡y a darle a la Flechita!...para verlos.
...Fácil y cómodo ¿verdad?

Pero bueno cómo sé que hay  usuarios que incluso lo quieren aún más fácil, he creado para éstos un pequeño Script con el cual se puede hacer todo lo anteriormente expuesto con unos cuantos clics de mouse.



Cómo siempre, termino complicándome la vida, y lo que en un principio era un Script para añadir comandos en el historial Bash a  terminado (ya puestos) por ampliarse. Con lo cual, ahora en este momento podremos hacer los siguiente:

    • Añadir comandos al historial Bash a nivel de Usuario o Root
        • Ver historial Bash a nivel de Usuario o Root

          • Corregir historial Bash a nivel de Usuario o Root: Eliminar entradas duplicadas y espacios en blanco.



          • Eliminar historial Bash a nivel de Usuario o Root 
          Cómo siempre, para que este tipo de Script Gui funcione necesitas tener instalada la última versión del paquete: zenity ≥ 3.4.
          Este Script lo podáis copiar donde más os guste y luego crear un lanzador de aplicación para ejecutarlo, que podéis poner también donde más os apetezca: Escritorio, Panel, Docks, etc...


          Podéis descargaros este Script aquí:
          ↓↓↓↓↓↓↓↓↓↓↓↓  
          Ver código fuente: Código 
          En el caso de de utilizar una versión de Zenity inferior a la 3.4 podeis descargaros este otro:   
          ↓↓↓↓↓↓↓↓↓↓↓↓  
          Ver código fuente: Código 

          6 comentarios:

          1. Genial el tuto, resulta muy práctico. Gracias por el aporte.

            ResponderEliminar
          2. Hola Fran, buenas noches !
            He descargado tu script y funciona correctamente.
            No me pierdo un post tuyo. Son geniales !!!
            Un Beso. Romi

            ResponderEliminar
          3. Muchas gracias. Funciona perfecto!!

            ResponderEliminar
          4. ¡Muchas gracias a vosotros! Principalmente por fiaros de mí jeje
            Un abrazo!!

            ResponderEliminar
          5. Muchas gracias.
            Desde que descubrí esto "tan simple" se me abrió el mundo linux.
            Gracias por ayudarnos y dedicarnos vuestro/tu tiempo.

            ResponderEliminar