history -c não redefine $ HISTCMD para 1

2

TL; DR: se seu histórico começar a ser truncado (por exemplo, seu HISTSIZE for 400, mas seu número de histórico for 500), redefinir seu histórico com history -c limpará HISTSIZE ou menos linhas do seu histórico e subtraia muitos do seu número de histórico, mas não o redefinirá para 0 (no exemplo, ele redefiniria para 100). Como posso redefinir completamente o número do histórico de volta para 0?

Bash 4.2 (e também em 4.4). Quero que meus números de histórico tenham menos de 4 dígitos. secções bashrc relevantes:

HISTSIZE=99
HISTFILESIZE=100
#ignores back-to-back duplicate commands, not those that start with a space
HISTCONTROL=ignoredups
#ignore commands fewer than 5 characters long because we can type those
HISTIGNORE="?:??:???:????:?????:history"

o número do histórico visto com history ou \! no PS1 obviamente irá além desses valores. Eu quero poder redefinir o número do histórico para ~ 100 quando ele ultrapassar 1.000.

history -c limpa o histórico do terminal, mas isso reduz o número do histórico apenas pela quantidade de comandos que ele apagou, por exemplo:

j:~$ history | wc -l
99
j:~$ echo $HISTFILESIZE
100
j:~$ echo $HISTCMD 
1203
j:~$ history -c
j:~$ echo $HISTCMD
1106

Então ... como faço para diminuir o número do histórico para um número menor, como $HIST(FILE)SIZE . Isso está em uma sessão do tmux, mas não acho que isso deva importar.

Além de: existe um método para obter o número do histórico atual como uma variável que requer menos pipes do que aquele que estou usando atualmente? EDIT: como Jeff mencionou, $HISTCMD armazena esse valor.

Nenhuma das soluções fornecidas funciona. Veja o que eles fazem com set -x :

    
por jeremysprofile 16.08.2018 / 18:47

0 respostas