Липкие записи в истории оболочки

Есть ли способ сделать некоторые команды «липкими» в истории оболочки?

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

  • тема oh-my-zsh, похоже, не обновляется, если я не запустил zsh
  • Есть ли плагин или инструмент для нескольких «профилей» в ZSH?
  • `ls -l` файла и всех каталогов, ведущих к нему?
  • Какие функции находятся в zsh и отсутствуют в bash, или наоборот?
  • zsh: Что делает команда «время + номер» в zsh
  • Возможно ли возобновить источник .bashrc и .zshrc И удалить функции один раз внутри них без перезапуска?
  • Переключение на `zsh`: все ли скрипты bash совместимы с` zsh`?
  • Как экспортировать переменную среды из .sh-файла в zsh?
  • 4 Solutions collect form web for “Липкие записи в истории оболочки”

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

    удар

    В ~/.bashrc :

     history -r ~/.bash_history.sticky 

    Также убедитесь, что HISTSIZE по крайней мере HISTFILESIZE плюс количество строк в ~/.bash_history.sticky плюс количество команд, которые вы выполняете в длинном сеансе, например

     HISTFILESIZE=1000 HISTSIZE=10000 

    Если вы хотите, чтобы записи липкой истории оставались в памяти без большого HISTSIZE , вы можете сделать это, вручную обрезав историю в PROMPT_COMMAND с помощью history -d , но трудно получить право, если вы erasedups в HISTCONTROL .

    ЗШ

    В ~/.zshrc :

     fc -RI ~/.zsh_history.sticky 

    Также убедитесь, что HISTSIZE по крайней мере SAVEHIST плюс количество строк в ~/.zsh_history.sticky плюс количество команд, которые вы выполняете в длинном сеансе, например

     SAVEHIST=1000 HISTSIZE=10000 

    Если вы хотите, чтобы записи липкой истории остались в памяти без большого HISTSIZE , вы можете сделать это, вручную обрезав историю в precmd , но это громоздко (zsh на самом деле не поддерживает переписывание истории, вам нужно fc -W во временный файл и прочитать отредактированную версию), и вам сложно получить право, если у вас установлена hist_ignore_dups или hist_ignore_all_dups .

    Мое решение – задание cron и большое количество строк. * Файл sh_history

    в конце дня этот вход cron запускается (шахта установлена ​​на 11 вечера)

     0 23 * * * cat /home/username/.bash_history >> /home/username/BIGHISTORY 

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

    В bash (не знаю о zsh ), вы можете установить

     export HISTFILESIZE=-1 export HISTSIZE=-1 

    в вашем .bashrc чтобы сделать вашу историю навсегда. Я точно знаю, что вы ищете. Однако для ваших любимых команд я предлагаю создавать псевдонимы или функции.

    В Zsh я сохраняю историю в течение длительного времени. HISTSIZE20000 . (В этом есть различные настройки, поэтому я не буду перечислять их здесь.) Это покупает меня на 10 месяцев. Мой файл истории ( ~/.zhistory ) весит 1,1 мегабайта и не делает запуск значительно медленнее.

    Я обычно затягиваю рабочую историю с других терминалов с помощью fc -R (когда кратные открыты – всегда).

    Но чтобы ответить на ваш вопрос, я «штампую» команды, которые я действительно забочусь о сохранении с # GOOD комментарием в конце. Они часто бывают длительными и трудно выигравшими после много экспериментов. Некоторые из них в конечном итоге становятся малоиспользуемыми сценариями, но штамп – это самый быстрый способ его сохранения. С длинной историей я могу просто сделать поиск в истории # GOOD , и обычно придумываю то, что я ищу довольно быстро.

    Linux и Unix - лучшая ОС в мире.