GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo deshabilitar la edición de mi historial en bash

De alguna manera me las arreglo para afectar el comando original, es decir, mi edición reemplaza el comando original en el historial.

Derecha. Si regresa a su historial y edita la línea sin presionando regresar para ejecutar el comando pero en lugar de pasar a otra entrada del historial, acaba de editar la entrada del historial. Si luego enumera su historial, verá un * en la línea que indica que lo editó. Encuentro esta "característica" inmensamente frustrante. Otros han proporcionado buenos ejemplos de cómo reproducir esto.

Mi objetivo es evitar esto, por lo que cualquier edición de un comando anterior siempre se agrega al historial y nunca reemplaza el original.

Yo también quería desactivarlo. Encontré la solución a través de esta respuesta en unix.stackexchange.

Para resumir, debe habilitar el revert-all-at-newline configuración readline que está desactivada de forma predeterminada. Si la configuración está activada, bash revertirá cualquier cambio que haya realizado en su historial cuando ejecute el siguiente comando.

Para habilitar esta configuración en su shell, debe agregar lo siguiente a su ~/.inputrc archivo y luego reinicie su shell:

$include /etc/inputrc
set revert-all-at-newline on

La primera línea es necesaria porque supongo que si proporciona su propio .inputrc presentar el /etc/inputrc predeterminado el archivo no está incluido, lo que probablemente no sea lo que desea.


Si regresa a algún comando anterior y lo edita, pero luego NO lo ejecuta (en su lugar, usa los comandos del historial para ir a algún otro comando y ejecutarlo), entonces las ediciones permanecerán allí en su lista de historial.

Presionando Ctrl + C , después de editar, contrarresta este comportamiento. Deja intacto el comando original, es decir, cancela el recuerdo de las ediciones del original.


Aquí está mi propia respuesta, corrija o proporcione más detalles si puede.

Cuando la opción "vi" está configurada en bash ("establecer -o vi" -- "Usar una interfaz de edición de línea de comando de estilo vi"), hay dos modos de editar un comando del historial.

El primer modo (llamémoslo "básico") es cuando comienzas a editar inmediatamente usando las teclas Retroceso, Supr y de caracteres.

El otro modo es el "modo vi", al que se ingresa al presionar Esc.

Si desea mantener su historial intacto, NO use ambos modos en la misma edición. No sé cómo funciona bash exactamente, pero puedes pensarlo de esta manera:

  1. Al ingresar al "modo vi" se aplican todos los cambios realizados en el "modo básico" al comando original y se crea una copia del comando que puede editar más usando los comandos de estilo vi.
  2. Los cambios se aplican cuando presiona Enter (ejecutar), Arriba, Abajo o j,k (mover a otro comando en el historial).
  3. Los cambios no se aplican si presiona Ctrl-C.
  4. Usar la edición básica o de estilo vi SOLAMENTE no afecta el comando original en el historial.

Linux
  1. Cómo usar los comandos del historial de Bash

  2. Cómo usar el comando de historial en Linux

  3. Cómo administrar su historial de comandos de Linux

  4. ¿Cómo aplicar la escritura anticipada a la búsqueda del historial de Bash (ctrl-r)?

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

Cómo deshabilitar SElinux en CentOS 7

Cómo habilitar la marca de tiempo en la salida del comando de historial de Linux

Comando de historial en Linux (Bash History)

Cómo mostrar el historial de Bash sin números de línea

Cómo habilitar la marca de tiempo en el historial de Bash en Linux

Cómo quitar un comando del historial en Linux