GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible tener un historial de bash consciente del directorio?

En primer lugar, podría ser más sencillo mapear su Arriba y Abajo botones a history-search-backward y history-search-forward respectivamente. Desde man bash :

   history-search-forward
          Search  forward through the history for the string of characters
          between the start of the current line and the point.  This is  a
          non-incremental search.
   history-search-backward
          Search backward through the history for the string of characters
          between the start of the current line and the point.  This is  a
          non-incremental search.

Con esto habilitado, comience a escribir el nombre de su comando y luego presione Arriba , solo se mostrarán los comandos de su historial que comiencen con lo que haya escrito. De esa manera, puede encontrar muy rápidamente el comando que le interesa y no necesita jugar con archivos de historial específicos del directorio. Solo escribe s , luego Arriba y solo comandos que comienzan con s será encontrado. Utilice fooba y solo los que comienzan con fooba se mostrará.

Para habilitar esto, agregue las siguientes líneas a su ~/.inputrc archivo en el servidor (dependiendo de su emulador de terminal, es posible que necesite un formato ligeramente diferente. Eche un vistazo a mi respuesta aquí si esta no funciona):

"\e[A": history-search-backward
"\e[B": history-search-forward

Dicho esto, sí, es posible establecer un archivo de historial por directorio. Agregue esta función a su ~/.profile (no a tu ~/.bashrc ya que este archivo no se lee por defecto cuando se usa ssh para iniciar sesión en una máquina remota):

 setHistFile(){
    targetDirs=("/home/terdon/foo" "/home/terdon/bar")
    for dir in "${targetDirs[@]}"; do
        if [[ "$dir" = "$PWD" ]]; then
            ## Set the history file name
            export HISTFILE="./.bash_history"
            ## clear current history
            history -c
            ## read history from the $HISTFILE
            history -r
            ## Exit the function
            return
        fi
    done
    ## This will be run if the PWD is not in
    ## the targetDirs array
    export HISTFILE="$HOME/.bash_history"
    ## Read the history (in case we are leaving
    ## one of the targetDirs)
    history -r
}

Y luego configura tu PROMPT_COMMAND variable (este es un comando que se ejecuta cada vez que se muestra un indicador de shell) a él:

export PROMPT_COMMAND='setHistFile'

Cambia el targetDirs array a la lista de directorios que desea que tengan su propio archivo de historial.


Linux
  1. Analizando el historial de Bash en Linux

  2. ¿Conservar el historial de Bash en varias ventanas de terminal?

  3. ¿Ejecutar scripts de Bash al ingresar a un directorio?

  4. ¿Es posible emular versiones anteriores de Bash?

  5. Restablecer la posición de búsqueda del historial de bash

Comando de historial en Linux (Bash History)

¿Limpieza automática del historial de bash?

Agregue un script bash a la ruta

Volver al directorio anterior en shell

Cómo:¿Historial ilimitado de Bash/shell?

¿Es posible ocultar los objetos perdidos y encontrados?