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

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

  • Как выполнить полный вывод двух произвольных команд одновременно
  • использование строк вывода в виде массива в bash
  • Является ли оболочка созданной `bash -i -c <command>` интерактивной?
  • Файлы tar для Linux менее 3 месяцев назад, используя дату в filename
  • что не так с моим простым сценарием меню выбора?
  • Хотите извлечь часть имени файла до 5-го _?
  • замена backtick на $ () не работает
  • «Безопасный режим» в Linux?
  • 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 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.