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 la última 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. Si repetimos de nuevo CTRL+r buscará con el mismo criterio la anterior orden a la última que ha encontrado.
Para borrar todo el historial que llevamos hasta el momento:
$ history -c
Licencia: licencia de software libre GPL