在greping历史记录无法正常工作之后,使用!bang执行历史命令

时间:2015-02-05 09:11:40

标签: bash

我对bash历史有疑问。

假设我用history | grep forever称呼历史记录。 然后,所有以前包含永久命令的命令都会显示相应的数字。

如果我现在执行其中一个命令及其相应的编号(例如!2121),则会调用与历史记录不同的命令,而不是与该编号关联的命令。我做错了什么?

如果我在没有按照预期的方式执行bang-execution的情况下调用历史记录。

THX

可怕的例子:

 ...
 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"
 [~]$

编辑:

我记得我在.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"

这些条目是否有些错误?

1 个答案:

答案 0 :(得分:0)

你可能有一些空白行或其他愚蠢的东西.bash_history。 尝试找类似的东西:

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