Saltar la navegación

Edición de la línea de comando

La línea de comandos ofrece muchas posibilidades para que pueda manipularse rápidamente. Vamos a ver a continuación cómo hacerlo.

En primer lugar, a veces, escribimos un comando con muchas opciones y ficheros, y en estos casos quizás nos interese introducir dicho comando en varias líneas. Como solo podemos pulsar ENTER al final del comando para que se ejecute, la forma establecida para cortarlo y continuar en la siguiente línea es colocando una barra invertida (\) en el punto en el que queramos cortar y pulsamos ENTER, entonces podemos continuar con la escritura del comando en una nueva línea.

La siguiente orden:

$ ls --all --reverse --format=long /etc/passwd /etc/group
-rw-r--r-- 1 root root 1510 jul 11 20:52 /etc/passwd
-rw-r--r-- 1 root root  829 jul 13 14:48 /etc/group

podríamos haberla escrito en varías líneas:

$ ls --all \
> --reverse \
> --format=long \
> /etc/passwd /etc/group
-rw-r--r-- 1 root root 1510 jul 11 20:52 /etc/passwd
-rw-r--r-- 1 root root  829 jul 13 14:48 /etc/group

Como vemos, cada vez que se corta la línea de comandos, el shell nos muestra un prompt distinto (>) para que sepamos que seguimos editando la orden.

La forma del prompt principal viene dada por el valor de la variable del sistema PS1 y el prompt secundario por la variable PS2.

$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
$ echo $PS2
>

Podemos movernos a lo largo de la línea de órdenes y editarla con las siguientes teclas:

Teclas Acción
Cursor Izq. Un carácter a la izquierda.
Cursor Der. Un carácter a la derecha.
INICIO Inicio de la línea.
FIN Fin de la línea.
CTRL+Cursor Izq.   Un palabra a la izquierda.
CTRL+Cursor Der. Una palabra a la derecha.
DEL Elimina el carácter de la derecha del cursor.
BACKSPACE Elimina el carácter de la izquierda del cursor.
CTRL+k Elimina desde el cursor hasta el final de la línea.
CTRL+x+BACKSPACE   Elimina desde el cursor hasta el inicio de la línea.
ESC+d Elimina desde el cursor hasta el final de la palabra.
ESC+BACKSPACE Elimina desde el cursor hasta el inicio de la palabra. 

En determinados manuales podemos encontrarnos que para referirse a la tecla ESCAPE, por ejemplo ESC+d, nos aparece M+d o META+d. También, la tecla BACKSPACE aparece a veces en la documentación con el nombre de Rubout.

Los navegadores Web nos permiten ver qué páginas visitamos anteriormente gracias a que utilizan un mecanismo de historial que es donde se guardan las direcciones de las últimas páginas por las que navegamos. El shell de GNU/Linux guarda también un historial de las últimas 500 órdenes ejecutadas (la cantidad la indica la variable HISTSIZE, por defecto 500).

$ echo $HISTSIZE
1000

El uso del historial es muy útil para comandos largos o para asegurarnos de que la sintaxis es correcta, pues la orden ya fue ejecutada.

Tenemos varias formas de utilizar el historial de ordenes según nuestras necesidades. Por ejemplo, podemos ver todo el historial numerado, ejecutando la orden interna history:

$ history
    1  who
    2  w
    3  date
    4  history

O solo los último n comandos:

$ history 3
3 date
    4  history
    5  history 3

Con el cursor arriba, podemos recuperar la última orden ejecutada o la anterior a la que hayamos recuperado, y con el cursor abajo, recuperamos el siguiente comando en el orden del historial.

Es posible ejecutar una orden por su número, precediéndolo del signo de admiración (!):

$ !1
who
usuario  tty7         2013-08-26 09:44 (:0)
usuario  pts/0        2013-08-26 09:44 (:0)

Podemos ejecutar la última orden del historial que comience por un determinado texto:

$ !wh
who
usuario  tty7         2013-08-26 09:44 (:0)
usuario  pts/0        2013-08-26 09:44 (:0)

O que contuviese el texto:

$ cal -3
                            2013
       Julio                 Agosto              Septiembre       
do lu ma mi ju vi sá  do lu ma mi ju vi sá  do lu ma mi ju vi sá  
    1  2  3  4  5  6               1  2  3   1  2  3  4  5  6  7  
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   8  9 10 11 12 13 14  
14 15 16 17 18 19 20  11 12 13 14 15 16 17  15 16 17 18 19 20 21  
21 22 23 24 25 26 27  18 19 20 21 22 23 24  22 23 24 25 26 27 28  
28 29 30 31           25 26 27 28 29 30 31  29 30                 
                                                                  
$ !?3
cal -3
                            2013
       Julio                 Agosto              Septiembre       
do lu ma mi ju vi sá  do lu ma mi ju vi sá  do lu ma mi ju vi sá  
    1  2  3  4  5  6               1  2  3   1  2  3  4  5  6  7  
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   8  9 10 11 12 13 14  
14 15 16 17 18 19 20  11 12 13 14 15 16 17  15 16 17 18 19 20 21  
21 22 23 24 25 26 27  18 19 20 21 22 23 24  22 23 24 25 26 27 28  
28 29 30 31           25 26 27 28 29 30 31  29 30

Si estamos usando el historial de comandos con el signo ! y queremos ver la orden antes de ejecutarla, es decir, antes de teclear ENTER, podemos expandirla pulsando cualquiera de las dos combinaciones de teclas siguientes:

  • CTRL+ALT+e
  • CTRL+ESC+e

La combinación de teclas CTRL+r nos permite buscar una orden que contenga el texto que escribamos, y una vez encontrada, pulsamos ENTER y se ejecutará, o bien pulsamos los cursores arriba y abajo y nos movemos por el historial a partir de ese punto. También podemos pulsar la tecla ESC y el comando se depositará en la línea de comandos para que sea editado.

Para borrar todo el historial que llevamos hasta el momento:

$ history -c

 

Licencia: licencia de software libre GPL