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

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

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

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 , и обычно придумываю то, что я ищу довольно быстро.

  • Почему некоторые буквы или escape-последовательности не отображаются правильно в urxvt?
  • Не удалось обновить / обновить пакет Oh-My-Zsh с помощью команды `sudo pacman -S Oh-My-Zsh`
  • Удалить все, кроме самого большого файла определенного типа
  • цепочка терминальных команд, каждая из которых выполняется, если файл существует
  • Почему «набор» не работает для меня, а «объявляет»?
  • Настроить tmux для использования zsh
  • Как выполнить обратный поиск истории в vi-режиме ZSH?
  • Как настроить zkbd (привязки клавиатуры zsh) на сервере?
  • Используйте `/ etc / paths` или` / etc / paths.d` для добавления элементов в PATH в macOS Sierra?
  • Переопределяемые функции в Zsh
  • Функции, определенные в .zshrc, не найдены при запуске скрипта
  • Linux и Unix - лучшая ОС в мире.