/ / L’exécution de la commande d’historique avec! Bang après l’historique de grep ne fonctionne pas correctement - bash

L’exécution de la commande d’historique avec! Bang après l’échec de l’historique ne fonctionne pas correctement

J'ai un problème avec l'histoire de bash.

Disons que j'appelle l'histoire avec history | grep forever. Ensuite, toutes les commandes précédentes, contenant pour toujours, sont affichées avec leurs numéros correspondants.

Si j’exécute maintenant l’une de ces commandes avec le numéro correspondant (par exemple, !2121) une commande différente de l'historique est appelée et non celle associée à ce numéro. Qu'est-ce que je fais mal?

Si j'appelle l'historique sans craquer, l'exécution du bang fonctionne comme prévu.

THX

Exemple effrayant:

 ...
1742  forever stop 0
1743  forever -o out.log -e err.log start -c nodemon hotnews.js
1784  forever list
1814  forever list
2496  forever -o out.log -e err.log start -c nodemon hotnews.js
2498  forever -o out.log -e err.log start -c nodemon hotnews.js
2957  forever -o out.log -e err.log start -c nodemon hotnews.js
3292  forever -o out.log -e err.log start -c nodemon hotnews.js
3452  forever -o out.log -e err.log start -c nodemon hotnews.js
3603  forever -o out.log -e err.log start -c nodemon hotnews.js
3614  history | grep forever
[~]$ !1784
npm uninstall express-flash
npm WARN uninstall not installed in /home/development/node_modules: "express-flash"
[~]$

Modifier:

Je me souviens que j'ai changé les propriétés de mon historique dans .bashrc:

# don"t put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
export HISTCONTROL=ignoreboth:erasedups

# append to the history file, don"t overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
export HISTSIZE=100000
export HISTFILESIZE=100000

# ignoriert einfache Befehle wie cd
export HISTIGNORE="cd:ls:bg:fg:history"

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Est-ce que ces entrées sont peut-être en quelque sorte défectueuses?

Réponses:

0 pour la réponse № 1

Vous avez probablement des lignes vierges ou d'autres choses stupides en .bash_history. Essayez quelque chose comme trouver le bogue:

history | tr -d "[:blank:]" > foo
cat -n .bash_history | tr -d "[:blank:] > bar
diff foo bar