
¿Hay alguna manera de poder ver toda la actividad/registros anteriores para la línea de comando, como una función de "historial" en un navegador?
Un poco de historia. Estoy usando la terminal OSX para interactuar con la línea de comando.
Respuesta1
A menos que el administrador del sistema o usted mismo haya configurado $HISTFILE
otra cosa, su historial se almacena en
~/.bash_history
Tutorial
búsqueda-i-inversa de terminal
Con la ventana de Terminal activa, presione y aparecerá Control+R
el mensaje. reverse-i-search
Ahora simplemente comience a escribir los primeros caracteres de un comando utilizado anteriormente y se mostrará el comando completo. Esto es invaluable para aquellos de nosotros que tenemos poca memoria y órdenes largas.
aumentar el tamaño del historial del terminal
Si le gusta la idea de que Terminal le recuerde los comandos anteriores, es posible que desee aumentar el tamaño de su archivo de historial de Terminal para obtener aún más almacenamiento de historial.
Si tienes un .bash_profile
Abra .bash_profile en el editor de texto de su elección
Agrega esto:
HISTFILESIZE=1000000000 HISTSIZE=1000000
Guardar y Salir
Si no tienes un .bash_profile
Terminal de inicio
Navegue a la carpeta Inicio ingresando:
cd ~/
Cree .bash_profile ingresando:
touch .bash_profile
Ahora, edite .bash_profile en su editor de texto favorito o escriba esto en la ventana Terminal para abrir automáticamente el archivo en el TextEdit predeterminado:
open -e .bash_profile
Por último, agregue esto al archivo .bash_profile:
HISTFILESIZE=1000000000 HISTSIZE=1000000
Guardar y Salir
Los créditos de este gran tutorial pertenecen amactoides.
Respuesta2
En muchos shells, puedes ver tu historial de comandos simplemente escribiendo history
.
Respuesta3
Bash tiene bastantes opciones para lidiar con su historial. En primer lugar, su historial se guarda en un archivo de texto. Esto es normal ~/.bash_history
, pero se puede cambiar estableciendo la $HISTFILE
variable en otra cosa.
Las formas más fáciles de acceder a su historial son
El
history
comando. Sin opciones, simplemente imprimirá el contenido de su archivo$HISTFILE
. Sin embargo, tiene bastantes opciones para manipular la lista del historial. Puedes verlos todos conhelp history
. Los que encuentro particularmente útiles son-a append history lines from this session to the history file -r read the history file and append the contents to the history list
Tengo esta línea en mi archivo de inicialización de bash (esto está
~/bash_profile
en OSX y~/.bashrc
para la mayoría de las otras versiones de *nix):export PROMPT_COMMAND='history -a;history -r;'
Estos dos comandos se ejecutan cada vez que recibo un nuevo mensaje (cada vez que la terminal muestra
$
, cuando se abre por primera vez y después de cada ejecución de comando). El resultado es que mi historial se comparte en todas las ventanas de la terminal, ya que después de ejecutar cada comando, ese comando se escribe$HISTFILE
y$HISTFILE
luego se lee desde el disco.Los botones Upy Down. Al presionar Upuna vez se mostrará el comando anterior que ejecutó, al presionarlo nuevamente se mostrará el anterior y así sucesivamente. El Downbotón te moverá hacia el otro lado.
Esto está habilitado de forma predeterminada en la mayoría de los sistemas modernos (como OSX), pero si no es así, puede habilitar este comportamiento agregando estas líneas a un archivo llamado
~/.inputrc
:"\e[A": history-search-backward "\e[B": history-search-forward
Bash también ofrece bastantes opciones y variables que controlan el comportamiento del historial (muchas de las cuales se mencionan en la muy buena respuesta de @Chris, mencionaré algunas que él no menciona):
histappend
If set, the history list is appended to the file named by the value of the HISTFILE variable when the shell exits, rather than overwriting the file.
Nuevamente, esto debería estar configurado de forma predeterminada. Si nota que el historial no persiste entre las sesiones de terminal, agregue esta línea a su
~/.bash_profile
:shopt -s histappend
La
HISTCONTROL
variable:Una lista de valores separados por dos puntos que controlan cómo se guardan los comandos en la lista del historial. Si la lista de valores incluye ignorar espacio, las líneas que comienzan con un carácter de espacio no se guardan en la lista del historial. Un valor de ignoreups hace que las líneas que coinciden con la entrada del historial anterior no se guarden. Un valor de ignoreboth es una abreviatura de ignorespace e ignoreups. Un valor de erasedups hace que todas las líneas anteriores que coincidan con la línea actual se eliminen de la lista del historial antes de guardar esa línea. Cualquier valor que no esté en la lista anterior se ignora. Si HISTCONTROL no está configurado o no incluye un valor válido, todas las líneas leídas por el analizador de shell se guardan en la lista del historial, sujetas al valor de HISTIGNORE. La segunda línea y las siguientes de un comando compuesto de varias líneas no se prueban y se agregan al historial independientemente del valor de HISTCONTROL.
La
HISTIGNORE
variable:Una lista de patrones separados por dos puntos que se utiliza para decidir qué líneas de comando deben guardarse en la lista del historial. Cada patrón está anclado al principio de la línea y debe coincidir con la línea completa (ningún
*' is appended). Each pattern is tested against the line after the checks specified by HISTCONTROL are applied. In addition to the normal shell pattern match‐ ing characters,
&' implícito coincide con la línea del historial anterior. `&' puede escaparse usando una barra invertida; la barra invertida se elimina antes de intentar una coincidencia. El segundo y las líneas posteriores de un comando compuesto de varias líneas no se prueban y se agregan al historial independientemente del valor de HISTIGNORE.
Juntando todo esto, tengo las siguientes líneas en mi archivo de inicialización de shell ( ~/.bash_profile
para OSX ~/.bashrc
para la mayoría de los demás):
export HISTCONTROL=ignoredups
export HISTSIZE=10000
export HISTIGNORE="pwd:df:du:ls"
## Make Bash append rather than overwrite the history on disk:
shopt -s histappend
## history -a causes the last command to be written to the
## history file automatically and history -r imports the history
export PROMPT_COMMAND='history -a;history -r;'