Tutorial

Tutorial

¿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 $HISTFILEotra 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+Rel mensaje. reverse-i-searchAhora 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

  1. Abra .bash_profile en el editor de texto de su elección

  2. Agrega esto:

    HISTFILESIZE=1000000000 HISTSIZE=1000000

  3. Guardar y Salir

Si no tienes un .bash_profile

  1. Terminal de inicio

  2. Navegue a la carpeta Inicio ingresando:

    cd ~/

  3. Cree .bash_profile ingresando:

    touch .bash_profile

  4. 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

  5. Por último, agregue esto al archivo .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000

  6. 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 $HISTFILEvariable en otra cosa.

Las formas más fáciles de acceder a su historial son

  1. El historycomando. Sin opciones, simplemente imprimirá el contenido de su archivo $HISTFILE. Sin embargo, tiene bastantes opciones para manipular la lista del historial. Puedes verlos todos con help 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_profileen OSX y ~/.bashrcpara 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 $HISTFILEy $HISTFILEluego se lee desde el disco.

  2. 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 HISTCONTROLvariable:

    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 HISTIGNOREvariable:

    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_profilepara OSX ~/.bashrcpara 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;'

información relacionada