index
RECURSOS GRATUITOS, CIBERACTIVISMO
  Navegación-> Inicio | Hellguest | Shell bash (I) - Edición en línea

Shell bash (I) - Edición en línea

Introducción

Seguramente más de una vez habréis visto a alguien escribir comandos a una velocidad de vertigo delante de una terminal de GNU/Linux. Este artículo pretende iniciar una serie en la que se irán desvelando los secretos de la shell bash, la más extendida en el mundo GNU/Linux, para acceder a ella sólo teneis que ejecutar cualquier terminal, ya sea xterm, o en caso de usar Gnome gnome-terminal, los que usen KDE disponen de konsole, y aquellos que no usen modo gráfico, después de hacer login, casi con toda certeza se encontrarán bajo una shell bash.

Consideraciones previas

A lo largo de todo el artículo aparecerán numerosas combinaciones de teclas del estilo C-x, que significa pulsar la tecla Ctrl y mientras se mantiene pulsada, pulsar también la tecla x, después, soltar ambas teclas.

Otras veces aparecerá algo como M-f, en este caso M se refiere a la tecla Meta, esta tecla suele coincidir con la tecla Alt en los teclados de los PC, con lo cual para realizar la anterior combinación, habría que pulsar la tecla Atl y mientras se mantiene pulsada, presionar también la tecla f, después soltar ambas. El problema llega cuando aparece una combinación del tipo M-> (Meta y el signo mayor que), si en un teclado español pulsamos la tecla Alt junto con la tecla con el símbolo mayor que, nos encontraremos con que la combinación que realiza es la contraria: M-< (Meta y menor que), alguno habrá pensado en añadir la tecla de Mayúsculas a la combinación, o en activar el bloqueo de mayúsculas, pero eso no funcionará. Entonces... ¿cómo solucionar esto? pues bien, existe una manera de emular a la tecla Meta y es usando la tecla Esc, la emulación se haría primero pulsando la tecla Esc, soltandola, y a continuación poniendo el símbolo > (en teclados españoles pulsar Mayusculas y la tecla de mayor que).

Editando la línea

Para asegurarnos de no nos cargarnos nada que pueda ser importante, crearemos un directorio llamado tmp, en el cual se podrán realizar todos los ejemplos aquí propuestos, así es que, manos a la obra, abrimos una terminal y ponemos:

~ $ mkdir tmp

Ya tenemos creado nuestro directorio, ahora, para entrar en el directorio vamos a emplear una serie de combinaciones de teclas, la primera será C-p, que recuperará del historial el último comando que escribimos, también se puede usar el cursor arriba para retroceder por el historial. Lo que pretendemos es eliminar el comando mkdir, pero el cursor está situado al final de la línea de edición:

~ $ mkdir tmp 

Pulsando C-a lograremos que el cursor se coloque en el inicio de la línea:

~ $ mkdir tmp

Si pulsamos C-d, nos borrará la letra sobre la que está el cursor:

~ $ kdir tmp

En cambio, pulsando M-d se borrará la palabra sobre la que está situado el cursor, osease, eliminamos kdir, quedando tan solo el nombre del directorio que creamos anteriormente:

~ $  tmp

Finalmente, escribiendo cd y pulsando intro entraremos en el directorio:

~ $ cd tmp
~/tmp $  

Una vez dentro de nuestro directorio, vamos a seguir viendo que más combinaciones nos ofrece bash, para ello, prueba a escribir el mensaje tengo un coche rojo, pero no pulses intro:

~/tmp $ tengo un coche rojo 

¿Qué clase de comando es tengo?, si intentasemos ejecutar esa línea, el shell nos daría un error, vamos a poner el comando echo delante. Para ello, presionamos C-a, tecleamos echo, ponemos un espacio y obtenemos:

~/tmp $ echo tengo un coche rojo

Ahora que tenemos el cursor sobre la t de la palabra tengo, nos apetece que la t sea mayúscula, así que pulsamos M-c para conseguir esto:

~/tmp $ echo Tengo un coche rojo

Si ahora pulsamos tres veces la combinación C-f el cursor avanzará tres carácteres:

~/tmp $ echo Tengo un coche rojo

En cambio, si pulsamos dos veces M-f, el cursor avanzará dos palabras:

~/tmp $ echo Tengo un coche rojo 

Por el contrario, si pulsamos C-b dos veces, el cursor retrocederá dos carácteres:

~/tmp $ echo Tengo un coche rojo

No obstante, si empleamos la combinación M-b, el cursor retrocederá hasta el inicio de la palabra, y si pulsamos la misma combinación otras tres veces más, ira retrocediendo palabra a palabra hasta llegar al inicio del mensaje:

~/tmp $ echo Tengo un coche rojo

Ahora intentaremos poner el mensaje entre comillas dobles, para ello, pulsamos la tecla de comillas (") y luego la combinación C-e para dirigir el cursor al final de la línea:

~/tmp $ echo "Tengo un coche rojo 

Antes de cerrar las comillas, vamos a cambiar la palabra rojo por la palabra azul, para ello, si pulsamos la tecla borrar una vez, veremos como se elimina el carácter que hay detras del cursor:

~/tmp $ echo "Tengo un coche roj 

Pero si en cambio, usamos M-borrar, lo que se borrará será la palabra que hay detras del cursor:

~/tmp $ echo "Tengo un coche  

Ahora simplemente tecleamos azul y ponemos las comillas dobles finales:

~/tmp $ echo "Tengo un coche azul" 

Hemos terminado de editar la línea, es el momento de pulsar intro y dejar que la shell ejecute el comando:

~/tmp $ echo "Tengo un coche azul"
Tengo un coche azul

Llegados a este punto, muchos lectores se habrán percatado de que hay muchas combinaciones donde si se emplea la tecla Control se actua sobre carácteres (C-b, C-f, C-d, ...), mientras que si se emplea la tecla Meta se actua sobre palabras (M-b, M-f, M-d, ...). Otra convinación de teclas que sigue este esquema es C-t y M-t, la primera intercambia el carácter sobre el cursor con el carácter anterior y avanza el cursor un carácter, de forma que podemos seguir arrastrando ese carácter hasta el final de la línea. La segunda combinación (M-t), hace exactamente lo mismo, solo que en lugar de carácteres con palabras, veamos su funcionamiento con un ejemplo, para ello, escribimos lo siguiente:

~/tmp $ mkrdi uno dos tres 

Se aprecia perfectamente que el comando mkdir está mal escrito, para corregirlo hay que mover el carácter r hasta el final de la palabra, así es que antes de nada, pulsamos C-a para ir al principio de la línea, y después pulsamos C-f tres veces para situar el cursor sobre el carácter d:

~/tmp $ mkrdi uno dos tres

Si ahora pulsamos C-t, los carácteres r y d se intercambiarán y el cursor avanzará hasta la i:

~/tmp $ mkdri uno dos tres

Pulsando de nuevo C-t, se intercambiarán la r y la i y el cursor avanzará hasta el espacio, quedando corregido el comando:

~/tmp $ mkdir uno dos tres

Ahora pulsemos M-f para que el cursor avance una palabra, situandose entre las palabras uno y dos:

~/tmp $ mkdir uno dos tres

Si pulsamos M-t podremos comprobar como se intercambian las palabras uno y dos y el cursor se coloca justo delante de la palabra tres:

~/tmp $ mkdir dos uno tres

Autocompletar

Una característica realmente importante de bash es su habilidad para autocomplear lo que se está escribiendo mediante el uso de la tecla Tabulador, para demostrar como funciona, vamos a crear tres archivos llamados archivo1.txt, archivo2.txt y archivo3.txt mediante el siguiente comando:

~/tmp $ touch archivo1.txt archivo2.txt archivo3.txt

A continuación escribiremos cat a y pulsaremos la tecla Tabulador, tras esto, se oirá un pitido y aparecerá lo siguiente en la pantalla:

~/tmp $ cat archivo 

Esto significa que bash ha encontrado varios archivos que comienzan por la palabra archivo, pero que a partir de ahí existe una diferencia en sus nombres, si pulsamos dos veces la tecla Tabulador, bash nos mostrará una lista con todos los archivos que comiencen por la palabra archivo:

~/tmp $ cat archivo
archivo1.txt archivo2.txt archivo3.txt
~/tmp $ cat archivo 

Ahora tenemos que indicarle a bash cual de esos tres archivos es el que queremos, pulsamos la tecla 2 seguida de Tabulador y la shell autocompletará el resto del nombre:

~/tmp $ cat archivo2.txt  

En este caso, bash no pita y además, ha añadido un espacio al final de la línea, indicando que ha logrado autocompletar el nombre del archivo y permitiendonos la posibilidad de seguir añadiendo parámetros al comando sin tener que pulsar la tecla Espacio.

Por HellGuest
Combinaciones para el movimiento
C-a Ir al principio de la línea.
C-e Ir al final de la línea.
C-f Avanzar un carácter.
C-b Retroceder un carácter.
M-f Avanzar una palabra.
M-b Retroceder una palabra.
Combinaciones para cambiar el texto.
C-d Borrar el carácter bajo el cursor.
C-v Añadir el siguiente carácter tecleado tal cual. Sirve para poder añadir carácteres como C-q.
C-t Intercambiar el carácter sobre el cursor con el carácter anterior y avanzar el cursor.
M-t Intercambiar la palabra tras el cursor con la actual y avanzar al final de la palabra.
M-u Poner en mayúsculas desde donde está el cursor hasta el final de la palabra.
M-l Poner en minúsculas desde donde está el cursor hasta el final de la palabra.
M-c Poner en mayúscula el carácter sobre el cursor y avanzar hasta el final de la palabra.
Combinaciones varias
C-g Cancelar la orden de edicion en curso y tocar la campana de la terminal.
C-x C-u Deshacer de forma incremental.
M-r Deshacer todos los cambios realizados a está línea.

Reformasspain.com, tu empresa de reformas, trabajos verticales