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?
command-line
gnome-terminal
Projjol
fuente
fuente
history
comando sino cómo funciona todo este sistema de recordar comandos antiguos.Respuestas:
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/^HISTORY
y 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/inputrc
a~/.inputrc
y elimine el comentario de las líneas conhistory-search-forward
yhistory-search-backward
en 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).fuente
unset HISTFILE
en tu ~ / .bashrc. Entonces solo mantendrá el historial en la memoria, borrándolo para cada nueva invocación de shell.El historial de comandos generalmente se almacena por usuario en el
.bash_history
archivo 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_history
archivo común .fuente