Как сообщить Zsh о записи текущей истории оболочки в файл истории?
Я работаю в месте, где есть инструменты для инструментов, которые требуют тонны опций, поэтому я очень полагаюсь на свою историю оболочки. Я даже поддерживаю это время от времени, чтобы удостовериться, что не теряю полезных и длительных команд.
Я только что набрал одну из этих команд, и я хочу убедиться, что она покраснела в файл истории, но у меня есть длинная работа в фоновом режиме, и я не могу набрать exec zsh
. Есть ли что-то еще, что я могу сделать в этой ситуации?
(Конечно, я мог бы скопировать и вставить его в файл, но было бы логичнее, если бы существовала команда flush-history
.)
Ответы
Ответ 1
Чтобы записать историю оболочки в файл истории, сделайте
fc -W
fc
имеет несколько полезных флагов, см. их все в man zshbuiltins
.
Вы также можете полностью автоматизировать чтение и запись файла истории после каждой команды (таким образом, совместно используя свой файл истории с каждым запущенным zsh), произнесите setopt -o sharehistory
. Подробнее о связанных с журналом возможностях в man zshoptions
.
Ответ 2
Я также просто нашел:
setopt INC_APPEND_HISTORY
От man zshoptions
:
INC_APPEND_HISTORY
This options works like APPEND_HISTORY except that new history
lines are added to the $HISTFILE incrementally (as soon as they
are entered), rather than waiting until the shell exits. The
file will still be periodically re-written to trim it when the
number of lines grows 20% beyond the value specified by $SAVE-
HIST (see also the HIST_SAVE_BY_COPY option).
Ответ 3
И используйте
fc -R
для чтения в истории (после его написания) в существующей оболочке zsh.
Ответ 4
appen ниже строки до ~/.zshrc, он сохранит 1000 записей, которые мы увеличим, изменив значение HISTSIZE и SAVEHIST
HISTSIZE=1000
if (( ! EUID )); then
HISTFILE=~/.zsh_history_root
else
HISTFILE=~/.zsh_history
fi
SAVEHIST=1000