¡Obtenga el historial de bash para recordar solo los comandos ejecutados con espacio prefijado!
10
Los comandos ejecutados en la terminal con el prefijo de espacios en blanco no se registran en el archivo de historial de comandos. Pero, ¿hay alguna manera de obtener el reverso, es decir, la historia solo debe registrar aquellos que tienen el prefijo de espacio?
Puede revertir la configuración predeterminada de Ubuntu configurando dos variables (HISTIGNORE y HISTCONTROL), use los comandos que se muestran a continuación:
HISTIGNORE='!( *)'
HISTCONTROL=ignoredups
HISTCONTROL=ignoredupscambia el comportamiento del historial para ignorar solo las líneas duplicadas y no ignorar las líneas que comienzan con un espacio. (También puede establecer HISTCONTROL en la cadena vacía (con HISTCONTROL=) si desea mantener duplicados, pero eso generalmente no se desea).
HISTIGNORE='!( *)'hace que la historia ignore todas las líneas que no comienzan con un espacio: ( *)coincidiría con cada línea que comience con un espacio, pero el encabezado !niega la coincidencia, por lo que coincide con todo lo que no comienza con un espacio. Y todo lo que coincida con el patrón HISTIGNORE será ignorado por la historia. (Esta última opción requiere que bash se ejecute con extglobactivado, con shopt -s extglob, pero esa es la configuración predeterminada en Ubuntu).
Si desea hacer esto permanente, no olvide poner los dos comandos anteriores en su ~/.bashrc.
gracias, eso es exactamente lo que quería .. guardan los cambios en .bashrc.. necesitaba que para evitar golpe grabación de cada cds, lsS y otros comandos de todos los días que uso; y para esos pocos comandos que necesito en la historia, ahora puedo usar el prefijo ..
preciso
1
@rusty Si solo desea excluir algunos comandos triviales, podría ser mejor para usted si usa algo como HISTIGNORE='ls*:cd*'eso, que hará que el historial ignore cada línea que comienza con , lso cdpuede extender esa lista con otros comandos, simplemente coloque uno :entre los comandos . Pero no olvide que la función de recuperación de comandos a la que puede acceder con la "tecla de flecha hacia arriba" también usa este historial, por lo que si configura algo para que se ignore, no podrá recuperar esos comandos ignorados con el " flecha hacia arriba ".
cetrero
Quería ignorar cualquier comando SSH, pero no comandos como ssh-copy-ido ssh-keygen. En HISTIGNORE, incluí " ssh\ *" con mis otros comandos ignorados. Escapar del espacio char parece ser obligatorio.
user38537
2
" Los comandos ejecutados en la terminal con el prefijo de espacio (s) en blanco no se registran en el archivo de historial de comandos "
comando prefijado con espacios en blanco. Como `sudo apt-get update`
Avinash Raj
¿Cuál es el valor de su variable HISTCONTROL?
Glenn Jackman
@AvinashRaj: sí, mírame comando "esto no debería ser registrado", puse un espacio (visible tanto en la línea de comando como en el historial). Entonces no funciona de esa manera. Quizás pueda configurarlo (con HISTCONTROL); pero no es el caso por defecto.
.bashrc
.. necesitaba que para evitar golpe grabación de cadacd
s,ls
S y otros comandos de todos los días que uso; y para esos pocos comandos que necesito en la historia, ahora puedo usar el prefijo ..HISTIGNORE='ls*:cd*'
eso, que hará que el historial ignore cada línea que comienza con ,ls
ocd
puede extender esa lista con otros comandos, simplemente coloque uno:
entre los comandos . Pero no olvide que la función de recuperación de comandos a la que puede acceder con la "tecla de flecha hacia arriba" también usa este historial, por lo que si configura algo para que se ignore, no podrá recuperar esos comandos ignorados con el " flecha hacia arriba ".ssh-copy-id
ossh-keygen
. EnHISTIGNORE
, incluí "ssh\ *
" con mis otros comandos ignorados. Escapar del espacio char parece ser obligatorio." Los comandos ejecutados en la terminal con el prefijo de espacio (s) en blanco no se registran en el archivo de historial de comandos "
Sí lo son.
fuente