Как работает команда истории?

Когда я ввожу какую-либо команду в терминал, она не появляется в моем файле ~/.bash_history, пока я не выйду из моего сеанса.

Кроме того, когда я вручную редактирую файл ~/.bash_history (например, Я удаляю последние три команды), когда я набираю history, он по-прежнему показывает команды, которые я удалил из файла ~/.bash_history.

Как мой ~/.bash_history файл и команда history синхронизируются?

5
задан 6 September 2017 в 18:52

3 ответа

Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и строит историю активной оболочки (в ОЗУ), добавляя к ней каждую команду, выполненную в этой оболочке, и только к ней, а не к файлу. [ ! d0]

Только когда вы закрываете терминал bash, его история добавляется к вашему ~/.bash_history файлу.

Опции history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Параметры для ~/.bashrc файла

Если вы хотите изменить это поведение, чтобы временная история сохранялась в ~/.bash_history непосредственно после выполнения команды, добавьте это line:

PROMPT_COMMAND="history -a"

Если вы хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после выполнения каждой команды, добавьте эту строку вместо:

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

Если вы хотите исключить определенные команды (например, все, начиная с sudo и cat), сохранить эту строку:

HISTIGNORE="sudo*:cat*"
8
ответ дан 22 May 2018 в 18:44

Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и строит историю активной оболочки (в ОЗУ), добавляя к ней каждую команду, выполненную в этой оболочке, и только к ней, а не к файлу. [ ! d0]

Только когда вы закрываете терминал bash, его история добавляется к вашему ~/.bash_history файлу.

Опции history:

history -a # save the active shell's history to ~/.bash_history (appending) history -c # clear the active shell's history history -d NNN # delete row NNN of the active shell's history history -r # reload the active shell's history from ~/.bash_history (appending) history -w # save the active shell's history to ~/.bash_history (overwriting)

Параметры для ~/.bashrc файла

Если вы хотите изменить это поведение, чтобы временная история сохранялась в ~/.bash_history непосредственно после выполнения команды, добавьте это line:

PROMPT_COMMAND="history -a"

Если вы хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после выполнения каждой команды, добавьте эту строку вместо:

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

Если вы хотите исключить определенные команды (например, все, начиная с sudo и cat), сохранить эту строку:

HISTIGNORE="sudo*:cat*"
8
ответ дан 18 July 2018 в 07:19

Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и строит историю активной оболочки (в ОЗУ), добавляя к ней каждую команду, выполненную в этой оболочке, и только к ней, а не к файлу. [ ! d0]

Только когда вы закрываете терминал bash, его история добавляется к вашему ~/.bash_history файлу.

Опции history:

history -a # save the active shell's history to ~/.bash_history (appending) history -c # clear the active shell's history history -d NNN # delete row NNN of the active shell's history history -r # reload the active shell's history from ~/.bash_history (appending) history -w # save the active shell's history to ~/.bash_history (overwriting)

Параметры для ~/.bashrc файла

Если вы хотите изменить это поведение, чтобы временная история сохранялась в ~/.bash_history непосредственно после выполнения команды, добавьте это line:

PROMPT_COMMAND="history -a"

Если вы хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после выполнения каждой команды, добавьте эту строку вместо:

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

Если вы хотите исключить определенные команды (например, все, начиная с sudo и cat), сохранить эту строку:

HISTIGNORE="sudo*:cat*"
8
ответ дан 24 July 2018 в 18:46

Другие вопросы по тегам:

Похожие вопросы: