2015-02-05 2 views
3

У меня проблема с историей bash.Выполнение команды истории с! Bang после неудачной истории greping

Предположим, я звоню в историю с history | grep forever. Затем все прежние команды, которые содержат вечно, отображаются с соответствующими номерами.

Если я выполняю одну из этих команд с их соответствующим номером (например, !2121), вызывается другая команда из истории, а не та, которая связана с этим номером. Что я делаю неправильно?

Если я называю историю без использования greping, то выполнение исполнения работает так, как ожидалось.

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

Edit:

Я помню, что я изменил свои свойства истории в .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" 

эти записи, может быть как-то неисправна ?

+0

Вы уверены, что номер соответствует команде в вашем '.bash_history' файле? – styvane

+0

Да, смотрите мой пример выше. – Subimago

+0

Хорошо, извините. Вы были правы Micheal9. Вывод команды history имеет разные значения, чем .bash_history (cat -n .bash_history). Как это может быть? – Subimago

ответ

0

У вас, вероятно, есть пустые строки или другие глупые вещи в вас .bash_history. попробовать что-то нравится, чтобы найти ошибку:

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

Результат команды history имеет разные значения, чем .bash_history (cat -n .bash_history). Как это может быть? Я думал, что файл .bash_history является основой команды history. – Subimago

+0

Он должен быть идентичным, но при чтении в hist игнорирует пустые строки (и, возможно, другие вещи). Поэтому взгляните на то, что цифры начинают различаться. – Nudin

Смежные вопросы