在 bash 历史记录中永久存储命令

在 bash 历史记录中永久存储命令

有什么方法可以将命令永久存储在 bash 历史记录中吗?实际场景是这样的:-

我有一个 C 项目,为了配置我的项目,我必须运行一个非常长的命令,这很难记住。配置和构建后,我在大约一个月左右的时间内不需要该命令。由于会自动从 bash 历史记录中删除旧命令,下次当我需要该命令时,它不会出现在历史记录中。

注意:不要发布诸如将命令存储在脚本文件中并在需要时执行脚本之类的解决方案。

答案1

您只需使用别名即可达到此目的。要使您的别名永久存在,您可以将其添加到您的~/.bashrc文件中。例如,如果添加行,每次在 shell 中alias list='ls -la'输入命令时,命令都会被实际执行。请注意,如果您只是从命令行创建别名而不将其放入文件中,则每次重新进入 shell 时该别名都会丢失。listls -labashrc

答案2

对于您的主要问题,我建议您有一个文本文件,其中列出了所有毛茸茸的命令 - 例如便笺簿或其他东西。需要时复制粘贴(如巴伦按照建议)。

如果您绝对想对这些命令进行历史搜索,您可以尝试在 bash 退出时添加重要命令的列表。以下内容(其粗略,我用它来说明):

将您不希望历史文件忘记的命令放入另一个文件中(例如~/fixed_hist)。将以下内容添加到您的~/.bashrc.

function prepend_fixed_history
{
        fixed_hist_c=$(wc -l ~/fixed_hist | awk '{print $1 }')
        head -${fixed_hist_c} ~/.bash_history | \
             diff - ~/fixed_hist >/dev/null 2>&1 
        if [ "$?" -ne "0" ]; then
           cat ~/fixed_hist ~/.bash_history > ~/.bash_history_new
           cp ~/.bash_history_new ~/.bash_history
        fi
}

trap prepend_fixed_history EXIT

相关内容