Ввод строк в историю bash

По умолчанию bash загружает строки из ~/.bash_history в историю. Можно ли также добавить пользовательский файл для загрузки? Я хочу добавить файл, содержащий команды, которые я часто использую, и получать к ним доступ через встроенный поиск.

  • возможно ли заблокировать пользователя в дереве каталогов данных в bash?
  • какой аргумент hash -t требует?
  • Убить все фоновые задания
  • Как использовать переменную плюс glob ($ var *) в bash
  • Назначение '&& bash' в команде (не часть '&&', часть 'bash')
  • Какое время выдает «раз»?
  • $ PATH самостоятельно vs echo $ PATH
  • Прокрутка по выделенному файлу в сценарии bash
  • 3 Solutions collect form web for “Ввод строк в историю bash”

    Я сохраняю его простым с alias h='history|grep' загруженным в мой профиль Bash.

    Таким образом, мой рабочий процесс – h command , например: h hpssa

     # h hpssa 202 05-28-2015 11:54:33 hpssacli 217 05-28-2015 11:54:33 hpssa -start 225 05-28-2015 11:54:33 hpssacli -stop 226 05-28-2015 11:54:33 hpssa -stop 228 05-28-2015 11:54:33 hpssa -start 

    Если я хочу запустить « hpssa -stop », я бы просто напечатал !226


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

    Раньше я очень полагался на Ctrl-R (команда Readline в reverse-search-history ), которая ищет назад по истории для извлечения ранее введенных длинных команд, но теперь я предпочитаю использовать псевдонимы и скрипты / функции оболочки. Во всяком случае, встроенная команда history Bash может использоваться для загрузки списка пользовательских команд в вашу текущую историю.

     history -r [filename] 

    На странице справки bash:

    Прочтите содержимое файла истории и добавьте его в текущий список истории.

    Автоматизация запуска

    Я просто попытался запустить эту команду автоматически, добавив ее в качестве последней строки в моем .bashrc . Тем не менее, команды из моего пользовательского файла истории недоступны, когда я начал новую оболочку. Кажется, что история оболочки загружается только из файла .bash_history по умолчанию: после того, как файлы запуска были обработаны и как раз перед тем, как приглашение будет представлено для интерактивной оболочки. К сожалению, кажется, что нет простого способа автоматизировать это.

    Как заметил @AnthonyGeoghegan, история загружается после обработки файлов запуска. Это предлагает другой способ предварительной загрузки нужной истории в файл запуска:

     mv .bash_history .bash_history.tmp cat .extra_hist .bash_history.tmp > .bash_history # or swap them, to put the extra stuff at the end of the history, for # quicker ^R access. 

    Обратите внимание: этот подход может привести к тому, что со временем ваши специальные команды будут добавлены в вашу .bash_history. Вы можете привязать свои специальные команды к строкам комментариев, чтобы их можно было легко найти и удалить (через, например, sed), как часть заполнения файла .bash_history. Что-то вроде:

     cp .extra_hist .bash_history sed '/: remove from here/,/:remove to here/d' .bash_history >> .bash_history 
    Linux и Unix - лучшая ОС в мире.