¿El terminal almacena datos?

9

Esto es algo que he querido saber durante mucho tiempo, pero nunca llegué a plantear una pregunta.

Sé que en el terminal que se proporciona en las distribuciones de Linux, se puede ver todo el historial de comandos usando las teclas de flecha (si hay algún otro método, no lo sé), entonces, ¿cómo sucede esto?

¿Hay algún lugar donde el terminal registre todas las pulsaciones de teclas? ¿Es algún tipo de búfer? Pero, de nuevo, si fuera un búfer, se eliminaría después de un tiempo, ¿no?

¿Cómo funciona este sistema?

Projjol
fuente
la historia de escritura para obtener todos los comandos utilizados anteriormente ..
Sukupa91
El OP no pregunta sobre el historycomando sino cómo funciona todo este sistema de recordar comandos antiguos.
Tarun
lo siento, me equivoqué ..
Sukupa91
2
Tenga en cuenta esta excepción: si el comando comienza con un espacio, el comando no terminará en el historial.
Rinzwind
@Rinzwind, se agrega al historial, si se comienza con un espacio.
GC 13

Respuestas:

10

Este es el historial de comandos y es una característica del shell en lugar del terminal.

En Ubuntu (y muchas, si no la mayoría de las otras distribuciones de Linux), el shell predeterminado para uso interactivo es Bash ( /bin/bash). Bash mantiene su historial, que es una lista de los últimos comandos en ~/.bash_history. Cuando abre un shell (generalmente abriendo un terminal), este archivo se lee y se carga en el historial interno de este shell. Una vez que cierra el shell, los cambios se vuelven a escribir en el archivo. Por defecto, esto se limita a los últimos 500 comandos.

Hay algunas variables y opciones de shell que pueden cambiar el comportamiento de cómo funciona exactamente. Echa un vistazo a la página de manual de bash ( man bash) si quieres saber más. Simplemente busque HISTORIAL (escriba /^HISTORYy confirme con Enter, salte al siguiente hallazgo con n)

También hay muchos más métodos para recorrer la historia que solo Upy Down:

  • Por ejemplo, presione Ctrl+ Ry parte de un comando anterior, bash buscará hacia atrás en el historial un comando coincidente, repita presionando Ctrl+ Rsi la primera coincidencia no es la que está buscando. (Consulte 'Comandos para manipular la historia' en la página de manual de bash)

  • Copiar /etc/inputrca ~/.inputrcy elimine el comentario de las líneas con history-search-forwardy history-search-backwarden ellos. Si escribe las primeras letras de un comando y presiona PgUp, bash mostrará solo los comandos del historial que comienzan con las mismas letras. (Trabaje solo en conchas abiertas después de que se haya realizado este cambio)

  • Escriba en !!lugar de un comando en el shell, esto repetirá el último comando (consulte 'EXPANSIÓN DE HISTORIA' en la página de manual de bash para obtener más información al respecto).

Adaephon
fuente
1
Y si no quieres que mantenga un historial, ponlo unset HISTFILEen tu ~ / .bashrc. Entonces solo mantendrá el historial en la memoria, borrándolo para cada nueva invocación de shell.
un CVn
10

El historial de comandos generalmente se almacena por usuario en el .bash_historyarchivo en su directorio de inicio. Significa que cada usuario tiene su propio conjunto de comandos que ha ejecutado.

Cuando se abren varias sesiones de terminal, pueden mostrarle diferentes comandos al presionar la tecla de flecha, pero cuando cierre todas las ventanas de terminal, el historial de diferentes sesiones de terminal se fusionará en un ~/.bash_historyarchivo común .

Tarun
fuente