我使用bash,有时我必须为某些任务键入一些非常长的命令。这些长命令不经常使用,并且在我再次使用它们时通常会在.bash_history文件中被覆盖。如何永久地将某些命令添加到.bash_history?
感谢。
答案 0 :(得分:4)
正如其他人所提到的,通常的做法是将长命令存储为别名或bash函数。组织它们的一种好方法是将它们全部放在一个文件中(比如$HOME/.custom_funcs
),然后从.bashrc
中获取它。
如果确实希望能够将命令加载到bash历史记录中,则可以使用-r
命令的history
选项。
来自man page:
-r Read the current history file and append its contents to the history list.
只需将所有条目存储在一个文件中,只要您需要加载自定义历史记录,只需运行history -r <your_file>
即可。
这是一个演示:
[me@home]$ history | tail # see current history
1006 history | tail
1007 rm x
1008 vi .custom_history
1009 ls
1010 history | tail
1011 cd /var/log
1012 tail -f messages
1013 cd
1014 ls -al
1015 history | tail # see current history
[me@home]$ cat $HOME/.custom_history # content of custom history file
echo "hello world"
ls -al /home/stack/overflow
(cd /var/log/messages; wc -l *; cd -)
[me@home]$ history -r $HOME/.custom_history # load custom history
[me@home]$ history | tail # see updated history
1012 tail -f messages
1013 cd
1014 ls -al
1015 history | tail # see current history
1016 cat .custom_history
1017 history -r $HOME/.custom_history
1018 echo "hello world"
1019 ls -al /home/stack/overflow
1020 (cd /var/log/messages; wc -l *; cd -)
1021 history | tail # see updated history
请注意条目1018-1020
实际上是如何运行的,而是从文件中加载的。
此时您可以像通常使用history
或!
命令或 Ctrl + r 快捷方式一样访问它们喜欢。
答案 1 :(得分:1)
如何使用shell变量扩展bash历史文件的大小
<强> HISTFILESIZE 强>
而不是默认的500使它像2000
答案 2 :(得分:0)
规范的答案是创建包含这些命令的脚本。
修改假设您有以下历史记录条目;
find /var/www -name '*.html' -exec fgrep '<title>' {} /dev/null \;
find ~/public_html -name '*.php' -exec fgrep include {} /dev/null \;
...您可以尝试将参数隔离成类似这样的函数;
r () {
find "$1" -name "*.$2" -exec fgrep "$3" {} /dev/null \;
}
...你可以这样使用,重复上面的历史条目:
r /var/www html '<title>'
r ~/public_html php include
显然,使用默认值,参数验证等创建正确的脚本的步骤不是很长。(提示:您可以默认使用路径的当前目录,并且没有文件名的扩展名,并添加像--path
和--ext
这样的选项可以在需要时覆盖默认值;然后脚本只有一个必需参数。)
通常,您会将脚本存储在$HOME/bin
中,并确保此目录已从PATH
或类似内容添加到.profile
。对于函数,这些函数通常在.profile
中定义,或者是从此文件中source
d的单独文件。
将它放在一个中心位置也有助于进一步发展它;例如,对于精度和可能稍微增加的效率,您可能希望将-type f
添加到find
命令;现在只有一个地方需要记住编辑,你将把它修好。
答案 3 :(得分:-1)
您可以为命令创建alias。
alias myalas ='...这里有一个很长的命令......'