Если у вас открыто 10 xterms, скажем, можно ли в любом случае найти все истории bash?Можно ли искать все истории bash
я могу сделать
history|grep something
на каждом из них в отдельности, но я иногда хотел бы избежать этого.
Если у вас открыто 10 xterms, скажем, можно ли в любом случае найти все истории bash?Можно ли искать все истории bash
я могу сделать
history|grep something
на каждом из них в отдельности, но я иногда хотел бы избежать этого.
Я собираюсь предположить, что эти окна xterm все для одного и того же пользователя и все находятся на одном хосте. Если они не все одинаковые пользователи, то вы должны изменить их папку с файлами истории, чтобы использовать тот же файл истории. Если вам нужно это сделать, см. Эту тему: https://superuser.com/questions/760830/how-do-i-change-the-bash-history-file-location
Но основная проблема, с которой вы столкнетесь, состоит в том, что bash записывает свою историю только в .bash_history
, когда оболочка закрыта. Тем не менее, вы можете редактировать .bashrc
написать самую последнюю команду .bash_history
immeditately, например, так:
# When the shell exits, append to the history file instead of overwriting i
shopt -s histappend
# After each command, append to the history file and reread it
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
Смотрите эту ссылку для получения дополнительной информации: https://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
Bash имеет в памяти историю и файл истории ($HISTFILE
, ~/.bash_history
по умолчанию). По умолчанию все ваши сеансы bash совместно используют один файл истории, который получает в истории памяти последней из выходящей оболочки bash всякий раз, когда вызывается оболочка bash.
Вы можете изменить поведение перезапись на добавление с:
shopt -s histappend
И вы можете вручную вызвать этот сброс с
history -a #-a stands for append
Что я делаю, у меня есть history -a
как часть моей PROMPT_COMMAND
так что каждая новая строка приглашения добавляет новую запись в глобальный файл истории.
Тогда, когда мне нужна история от других сеансов, я просто загрузить глобальный файл истории в историю в памяти с:
history -r
-r прочитать файл истории и добавить содержимое в история
руководство команды history
может быть прочитан с help history
и получения более подробной информации относительно истории в man 1 bash
.
Помимо установки shopt -s histappend
и добавления history -a
к вашему PROMPT_COMMAND
, это также полезно установить размеры (HISTFILESIZE, HISTSIZE) в некоторых больших и HISTCONTROL
, например, до "ignoreboth:erasedups"
для устранения дубликатов.
Кроме того, я нашел Ctrl-R
более удобным способом поиска по истории.
Зачем экспортировать? Новоиспеченные оболочки снова будут перечитывать конфигурационные файлы bash, а процессы, которые вы создаете из bash, не должны знать, каковы ваши настройки bash. – PSkocik
Спасибо.Да, все окна xterm для одного и того же пользователя, и все находятся на одном хосте. – eleanora
@PSkocik. Еще раз прочитайте комментарий над командой export. Это не о файлах конфигурации bash, о том, как получить самую последнюю историю. – R4F6