默认情况下,bash 加载~/.bash_history
历史记录中的行。是否可以添加要加载的自定义文件?我想注入包含我经常使用的命令的文件,并通过内置搜索访问它们。
答案1
我将其简单地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
这只是我的方法,但也许您可以修改回忆历史项目的方式。我认为将数据实际注入历史文件是没有意义的。
答案2
我曾经非常依赖Ctrl-R
(reverse-search-history
Readline 命令),它通过历史记录向后搜索以检索以前输入的长命令,但我现在更喜欢使用别名和 shell 脚本/函数。无论如何,Bashhistory
内置命令可用于将自定义命令列表加载到当前历史记录中。
history -r [filename]
从 bash 手册页:
读取历史文件的内容并将其追加到当前历史列表中。
启动自动化
我只是尝试通过将其添加为我的.bashrc
.但是,当我启动新 shell 时,自定义历史记录文件中的命令不可用。看来 shell 历史记录仅从默认.bash_history
文件加载:后启动文件已经处理完毕,只是前提示符出现在交互式 shell 中。不幸的是,似乎没有简单的方法可以自动完成此操作。
答案3
正如@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 中。您可以用注释行包装您的特殊命令,这样您就可以在填充 .bash_history 文件时轻松找到并删除它们(例如通过 sed)。就像是:
cp .extra_hist .bash_history
sed '/: remove from here/,/:remove to here/d' .bash_history >> .bash_history