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

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

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

  • Что нужно / не следует входить .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?
  • Выбор случайного файла из каждой подпапки
  • Как читать из именованного канала после завершения процесса записи?
  • Как я * надежно * и * просто * получить текущее имя интерпретатора оболочки?
  • Как написать сценарий оболочки для запуска нескольких команд в разных сеансах экрана?
  • tcsh vs zsh. Символы Escape / Control
  • SSH на два адреса, используйте тот, который подключается первым
  • Почему некоторые ZLE-последовательности перенаправляются на «self-insert»?
  • Искать предыдущую команду с тем же префиксом, когда я нажимаю Up в командной строке
  • Скопировать файлы в новый каталог, только если имя файла находится в массиве
  • Проблема с пониманием привязок ключей
  • Элегантный способ предотвратить замену команд от удаления конечной строки новой строки
  • Interesting Posts

    Как работает следующий сценарий оболочки для поиска всех файлов размером более 20 МБ?

    Как переключить tty со сценарием / cronjob

    Письмо Q перестало работать на клавиатуре

    Скрипт для проверки файловой системы только для чтения

    Bash: запустить команду2, если команда1 не выполнена

    Получение неправильного ответа с даты через awk

    Как катавать файл с параметрами «или»

    Могу ли я остановить Linux от прослушивания USB-устройства ввода в качестве клавиатуры, но все-таки захватить события программой?

    Перестроить все порты после обновления FreeBSD

    Сжатие потока «на лету», которое не перетекает в аппаратные ресурсы?

    Что означает: 0 означает в конфигурации vnc?

    Ошибка: файл содержит ошибки синтаксического анализа: файл: /////etc/yum.repos.d/dag.repo

    Невозможно использовать python IPWhois: экземпляр IPWhois не имеет атрибута 'lookup_rws'

    Добавить аргументы для последнего вызова `find … -exec $ COMMAND {} +`

    Python 3 не видит пакеты, установленные root под другим пользователем

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