我昨天安装了 Ubuntu 10.10。然后,在使用终端时,我注意到一旦我退出终端会话,它的历史记录就会消失,尽管终端中的应用程序的历史记录仍然存在,例如 ROOT(CERN)历史记录。
在下达命令时
echo $HISTFILESIZE
它显示 2000。当我退出会话并打开一个新终端时,我将其更改为 10000;它再次显示历史记录为 2000,并且无法通过向上/向下箭头键访问任何命令。
请帮忙。我对在终端中输入太多内容感到沮丧。
答案1
如果无法使用↑或运行任何命令,↓则表明您的历史文件为空或您没有读取权限。请检查。
也许你以另一个用户的身份运行这些命令。如果是这样,请执行以下操作:
su otheruser
history 10
并查看输出。
如果您更改了$HISTFILESIZE
更改,则每次调用其他 shell 时更改都会被覆盖。为了防止这种情况,您应该在 中更改该变量.bashrc
。此外,您还应该将变量设置$HISTSIZE
为更大的值。
使用历史记录的一般有用技巧:
Ctrl+R为您对历史记录进行反向搜索。Alt+.将最后一个命令的最后一个参数粘贴到光标位置的提示中。
另外,bang(!
)操作符会在终端中为你重复命令(如果这只是为了节省你的输入时间。例如:
confus@confusion:~$ echo "bang + letters will repeat the last command starting with these letters."
bang + letters will repeat the last command starting with these letters.
confus@confusion:~$ clear
confus@confusion:~$ !ech
bang + letters will repeat the last command starting with these letters.
所有这些与历史相关的内容都存储在任何用户的主目录中的一个名为的文件中.bash_history
。您可以使用 -命令查找它们history
。这里有一个关于如何使用历史记录。
confus@confus:~$ history 4 #will print last 4 commands
1848 ls
1849 clear
1850 vi /home/confus/.local/share/applications/nautilus-home.desktop
1851 history 4
另一个非常有用的事情是在您的主目录中创建一个.inputrc
包含以下内容的文件:
"\e\e[C": forward-word
"\e\e[D": backward-word
"\e[A": history-search-backward
"\e[B": history-search-forward
这样,您可以使用↑或↓来完成您从历史记录中开始输入的命令。例如,当您输入一个相当长的命令(例如)rsync -a -v --human-readable --prune-empty-dirs -e 'ssh -i .ssh/id_rsa' --include="*/" --exclude="snapshot_*" --exclude="restart.*" /scratch/ x@cluster1:/home/x/runs/
并想再次运行它时,您只需输入rsy
然后↑它将完成到以 rsy 开头的最后一个命令。再次按下向上箭头将完成到倒数第二个命令,依此类推。我不知道为什么这不是默认设置。
答案2
如果您记得输入的命令的一部分,您可以按Control+并搜索 bash 历史记录。R
您的主文件夹中还有一个名为的文件.bash_history
,您可以打开或使用 grep 来查找您之前输入的命令。