Подтвердить что ты не робот

Как сообщить Zsh о записи текущей истории оболочки в файл истории?

Я работаю в месте, где есть инструменты для инструментов, которые требуют тонны опций, поэтому я очень полагаюсь на свою историю оболочки. Я даже поддерживаю это время от времени, чтобы удостовериться, что не теряю полезных и длительных команд.

Я только что набрал одну из этих команд, и я хочу убедиться, что она покраснела в файл истории, но у меня есть длинная работа в фоновом режиме, и я не могу набрать exec zsh. Есть ли что-то еще, что я могу сделать в этой ситуации?

(Конечно, я мог бы скопировать и вставить его в файл, но было бы логичнее, если бы существовала команда flush-history.)

4b9b3361

Ответ 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