El mismo comando aparece en mi historial una y otra vez. ¿Cómo puedo evitar esto? Sé que es posible a través de, HISTCONTROLpero no he encontrado el camino correcto.
Creé una pregunta relacionada: askubuntu.com/questions/205520/… . Dups en el historial es útil para ver el contexto de un comando. Lo que desea omitir dups a veces cuando imprime el historial.
justingordon
Respuestas:
123
Desde la bashpágina del manual:
HISTCONTROL
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 ignorespace, las líneas que comienzan con un carácter de espacio no se guardan en la lista del historial. Un valor de ignoredupshace que las líneas que coinciden con la entrada del historial anterior no se guarden. Un valor de ignorebothes taquigrafía para ignorespace y
ignoredups. Un valor deerasedupshace 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.
¿Desea que agregue HISTCONTROL = ignoreboth en la parte inferior de ~ / .bashrc?
karthick87
1
@karthick No importa dónde lo coloques, la parte inferior está bien.
Isaías
En mi instalación de Ubuntu 12.04 tuve que hacer esta modificación en la ~/.bash_loginmayoría de las veces funcionaría si se modifica .bashrc, pero ese no es el caso todo el tiempo.
ck-
3
No olvide ejecutar estos después de actualizar sus archivos bash profile / rc -source ~/.bashrc && source ~/.bash_profile
Eric Kigathi
23
Pegue esto en su ~/.bashrc:
export HISTCONTROL=ignoredups
En su lugar, podría usar ignoreboth. Esto es una abreviatura para ambos ignorespaces(comandos que comienzan con espacios) y ignoredups(duplicados).
Prefiero ignoredupspor sí solo, ya que encuentro el comportamiento predeterminado de ignorar comandos con espacios en el frente bastante molesto cuando copio un comando de un sitio web y no se guarda porque accidentalmente copié en un espacio también ... Pero para cada uno lo suyo
Todavía existen duplicados ... ¿Cuál puede ser el problema? imgur.com/fXeLQ.png
karthick87
55
@ karthick87 citado de otra respuesta: Un valor de ignoredupscausa que las líneas que coinciden con la entrada del historial anterior no se guarden . Solo elimina líneas consecutivas idénticas.
AL
10
Al poner esto, ~/.bashrcse aplicará la solución de @ alvin en diferentes sesiones como wlell
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
¿Por qué su uso export HISTCONTROLy el tuyo no? ¿Cual es la diferencia? Está funcionando para mí sin exportación, solo tengo curiosidad
felwithe
1
¡Buena pregunta! También me gustaría saber la respuesta. En general, exportla variable está disponible para subprocesos. stackoverflow.com/q/1158091/552621 En el caso de HISTCONTROL, PROMPT_COMMANDetc., estas variables son utilizadas por el propio shell, por lo que tal vez no sea necesario exportarlas (a procesos secundarios).
Respuestas:
Desde la
bash
página del manual:Así que ponga la siguiente línea en su
~/.bashrc
:export HISTCONTROL=ignoreboth:erasedups
fuente
~/.bash_login
mayoría de las veces funcionaría si se modifica .bashrc, pero ese no es el caso todo el tiempo.source ~/.bashrc && source ~/.bash_profile
Pegue esto en su
~/.bashrc
:En su lugar, podría usar
ignoreboth
. Esto es una abreviatura para ambosignorespaces
(comandos que comienzan con espacios) yignoredups
(duplicados).Prefiero
ignoredups
por sí solo, ya que encuentro el comportamiento predeterminado de ignorar comandos con espacios en el frente bastante molesto cuando copio un comando de un sitio web y no se guarda porque accidentalmente copié en un espacio también ... Pero para cada uno lo suyofuente
ignoredups
causa que las líneas que coinciden con la entrada del historial anterior no se guarden . Solo elimina líneas consecutivas idénticas.Al poner esto,
~/.bashrc
se aplicará la solución de @ alvin en diferentes sesiones como wlellFuente: Linux: Historial de Bash: "ignorar errores" y "borrados" que crean conflictos con el historial común en las sesiones
fuente
export HISTCONTROL
y el tuyo no? ¿Cual es la diferencia? Está funcionando para mí sin exportación, solo tengo curiosidadexport
la variable está disponible para subprocesos. stackoverflow.com/q/1158091/552621 En el caso deHISTCONTROL
,PROMPT_COMMAND
etc., estas variables son utilizadas por el propio shell, por lo que tal vez no sea necesario exportarlas (a procesos secundarios).fuente
Agregue lo siguiente a su
~/.bashrc
:Para hacer esto, puede usar este comando:
fuente
Grabar unívocamente cada nuevo comando es complicado. Primero necesita agregar
~/.profile
o similar:Entonces necesitas agregar a
~/.bash_logout
:fuente