1. Introducción a los entornos de trabajo UNIX

1.7. El terminal como herramienta de trabajo

1.7.5. Recuperación de comandos mediante el historial de comandos

Puede ser conveniente poder repetir un comando que ejecutasteis anteriormente en una sesión de shell. Recordar una línea de comandos larga y compleja que escribisteis de manera incorrecta os puede ahorrar problemas. Afortunadamente, algunas características del shell os permiten recordar líneas de comandos anteriores, editar esas líneas o completar una línea de comando parcialmente escrita.

El historial del shell es una lista de los comandos que habéis ingresado antes. Usando el comando history en un shell bash, podéis ver tus comandos anteriores. Luego, utilizando varias características del shell, podéis recuperar líneas de comando individuales de esa lista y cambiarlas como deseéis.

Para probar un poco de edición de línea de comandos, escribid lo siguiente:

$ ls /usr/bin | sort -f | less

Este comando muestra el contenido del directorio /usr/bin, ordena el contenido en orden alfabético (sin importar mayúsculas o minúsculas) y pasa la salida a less. El comando less muestra la primera página de salida, después de lo cual podéis navegar por el resto de la salida de una línea (presiona enter) o a páginas (presiona la barra espaciadora) a la vez. Simplemente, presionad la tecla q cuando hayáis terminado. Ahora, supongamos que queréis cambiar vuestra línea de comandos en el terminal de /usr/bin a /bin y no queréis escribir demasiado. Si os colocáis en la línea de comandos, y seguís los siguientes pasos, podréis cambiar parte de la línea de comandos:

  • Presionad la flecha hacia arriba (↑). Esto muestra el comando más reciente de tu historial de shell. Prueba para presionar más de una vez.
  • Presionad Ctrl+A. Esto mueve el cursor al principio de la línea de comandos.
  • Presionad Ctrl+E. Esto mueve el cursor al final de la línea de comandos.
  • Presionad Ctrl+F o la flecha derecha (→). Repetid este comando varias veces para colocar el cursor debajo de la primera barra (/).
  • Presionad Ctrl+D. Escribid este comando cuatro veces para eliminar /usr de la línea.
  • Presionad Enter. Ejecuta la línea de comandos una vez que hagáis decido qué ejecutar.

Mientras se edita una línea de comandos, en cualquier momento podéis escribir caracteres normales para añadirlos a la línea de comandos. Los caracteres aparecen en la posición del cursor de texto. Podéis utilizar la flecha derecha →, izquierda ← para mover el cursor de un extremo a otro de la línea de comandos. También podéis pulsar las teclas de flecha arriba ↑ y abajo ↓ para recorrer los anteriores comandos en la lista del historial para seleccionar una línea de comandos para editar.

Después de escribir una línea de comando, toda la línea se guarda en la lista de historial de vuestro shell. La lista se almacena en el shell actual hasta que salís del terminal. Además, cada orden que se escribe en la línea de comandos y se ejecuta, tenga sentido o no, se escribe en un archivo de historial, donde cualquier comando puede ser recordado para ser ejecutado nuevamente en otra sesión. Una vez que se recupera un comando, se puede modificar la línea de comando, como se ha descrito anteriormente.

Para ver vuestra lista de historial, utilizad el comando history. Escribid el comando sin opciones o seguido de un número para listar esa cantidad de los comandos más recientes. Por ejemplo,

$ history 9
2012  date
2013  date +'%d/%m/%y'
2014  date +'%A, %B %d, %Y'
2015  ls
2016  ls Scripts/
2017  ls
2018  echo $PATH
2019  ls /usr/bin | sort -f | less
2020  history 9

En lugar de simplemente ejecutar una línea de comando del historial de inmediato, se puede recuperar una línea en particular y editarla. Se muestran varios ejemplos.