BASH: Trucos de la consola. Part I

Cuando trabajamos en la terminal muchas veces repetimos cientos de pasos que si supiésemos como automatizarlos o bien, realizarlos en un atajo, nos ahorraría gran cantidad de tiempo. ¿Quien no se ha equivocado y ha escrito todo una linea en mayúscula? pues creo que mucho de nosotros, y la solución más rápida que acabamos ejecutando es borrar todo y volverlo a escribir, esto en realidad puede no parecer algo arduo, hasta que descubres la combinación de teclas: CTRL+A y ESC+L y te das cuenta que lo has estado haciendo mal, desde hace mucho tiempo.

A continuación os voy a dejar con una serie de atajos que podemos ejecutar en nuestro terminal BASH y después pasare a comentar un par de ellos, ya que envuelven algo más de lo que parece:

Ctrl+A Desplaza el cursor al inicio de la línea
Ctrl+C Detiene el programa.
Ctrl+D Interrumpe una introducción de datos en un prompt
Ctrl+E Desplaza el cursor al final de la línea
Ctrl+G Termina la búsqueda recursiva
Ctrl+K Borra desde el cursor hasta el final de la línea
Ctrl+N Duplica la búsqueda hacia abajo
Ctrl+P Duplica la búsqueda hacia arriba
Ctrl+R Inicia una búsqueda recursiva hacia atrás
Ctrl+S Inicia una búsqueda recursiva hacia delante
Ctrl+T Se intercambia el caracter que haya delante del cursor por el que haya detrás
Ctrl+X Retroceso borra desde el cursor hasta el principio de la línea
Ctrl+Z Interrumpe el programa.
Esc+L Convierte el texto en minúscula. Desde el cursor hasta el final de la palabra
Esc+T Se intercambian la palabra que haya detrás del cursor por la que haya delante
Esc+U Convierte el texto en mayúscula. Desde el cursor hasta el final de la palabra
Ctrl+X+Ctrl+E Abre el editor por defecto con la línea a editar (Utiliza las variables $FCEDIT y $EDITOR)

Por defecto, el atajo de la ultima línea nos abrirá el editor NANO (En Debian); podremos cambiarlo temporalmente por VIM, por ejemplo, ejecutando en nuestro terminal:

export EDITOR=vim

Si queremos cambiar el valor permanentemente tendríamos que escribir la línea anterior en nuestro fichero .bahsrc, localizado en nuestro home.

Los atajos de teclado anteriores son posibles gracias a que por defecto utilizamos emacs, para escribir los comandos en la terminal. Espera ¿emacs?. Sí, emacs, si abrimos un fichero con emacs y ejecutamos los mismos atajos arriba descritos veremos que funcionan de igual forma. Si queremos cambiar el editor con el cual ejecutamos los comandos desde el terminal entonces debemos ejecutar:

root@debian:~#  set -o  vi

En el ejemplo superior pongo el editor vi, como editor del terminal, en el preciso momento de ejecución de dicho comando, los atajos anteriores quedan totalmente inutilizables, a partir de allí nuestra destreza con el terminal dependerá de nuestros conocimientos de vi. ¿Os atraveís a probar?

Después de este pequeño inciso, voy a comentar un poco más a cerca del atajo: CTRL+Z que como comento arriba, interrumpe el proceso, pero ¿como funciona exactamente?, bien pues imaginemos una situación de trabajo común: trabajamos con nuestro editor de linea de texto favorito, y queremos dejar de lado el trabajo para finalizar algún proceso por ‘X’ o ‘Y’ razón, sin tener que guardar ni ‘salir’ del editor como tal, presionaríamos CTRL+Z y el terminal nos avisaría de que el proceso queda detenido, (además nos daría un numero entre corchetes, ese numero sería el numero de tarea. Comentaremos como trabajar con él enseguida) ahora acabaríamos el dichoso proceso, o haríamos lo que tuviésemos que hacer y cuando quisiéramos volver a nuestro editor simplemente escribiríamos en nuestro terminal fg. 

Pero, ¿qué ocurre si interrumpimos dos tareas seguidas con CTRL+Z ? Pues es ahí donde entra en juego el numero de la tarea. Si ejecutamos el comando jobs podremos observar las tareas detenidas o corriendo en segundo plano y observar su numero de tarea. Para volver a primer plano, o bien volver a activar un tarea interrumpida ejecutamos: fg %1 donde el 1 es el numero de tarea.

root@debian:~# jobs
[1] Detenido nano
[2]- Detenido vim
[3]+ Detenido nano fichero1.txt
root@debian:~# fg %1

Para finalizar una tarea nos bastaría con ejecutar

root@debian:~# kill -9 %3
[3]+ Detenido nano fichero1.txt

Como veremos, la salida estándar del comando nos muestra un mensaje que podría parecer que el proceso sigue detenido y no ‘Killed’, pero si ejecutamos rápidamente el comando jobs veremos que la información que nos muestra acerca de la tarea es: (Killed). Esta información se mantiene sobre un lapso de tiempo limitado después de finalizar una tarea.

root@debian:~# jobs
[2]+ Terminado (killed) vim

Otro comando aparte de fg es bg, el modo de funcionamiento es parecido al de fg, a diferencia de que este último activa la tarea pero la deja en segundo plano, este por ejemplo podríamos utilizarlo para algún tipo de script o programa que tarda más de lo esperado.

Si antes de ejecutar un comando o script, queremos que se ejecute en segundo plano solo nos bastaría con colocar el símbolo ‘ampersand&, al final del comando:

root@debian:~# miscript1.sh &
[1] 2674

La salida del comando nos muestra el numero de tarea [1] y el numero de proceso 2674.

Alias, unalias y como evitarlos

En numerables ocasiones tendemos a ejecutar comandos con los mismos argumentos una y otra vez, yo por ejemplo, no ejecuto un ls sin un -l, para evitar tener que poner este argumento constantemente podría crearme un alias que fuese:

root@debian:~#  alias ll=»ls -l»

A modo de ejemplo, es sencillo, pero los alias nos pueden dar mucho juego a la hora de trabajar con el terminal. Recuerdo una noche que leyendo un blog de seguridad, vi como con un alias, bastante largo por cierto, robaban la contraseña del usuario root y la enviaban a en texto plano a un servidor externo, así que imaginad. El limite esta en la imaginación.

Para deshacer el alias solo basta con ejecutar:

root@debian:~#  unalias ll

Si no queremos deshacer el alias, pero simplemente no queremos que se ejecute en un momento determinado debemos hacerlo de la siguiente manera:

root@debian:~#  \ls

Por defecto, los ls nos vienen con varias alias que podremos detallar en nuestro .bashrc, un alias de ellos es ls=»ls –color=auto«, es por ello que cuando ejecutamos un ls, podremos diferenciar visualmente por colores distintos tipos de ficheros, o carpetas. Con el comando anterior evitaremos todos los alias asociados al comando ls

Deja un comentario