问题描述
几周前,我创建了一台 Ubuntu 虚拟机,从那时起我就一直在其中断断续续地开发项目。
现在我想找到一周前我在终端中输入的一些命令的语法,但我已经多次打开和关闭终端窗口并重新启动机器。
如何让 history
命令返回到创建机器后输入的第一个命令?\n或者 Ubuntu 中是否有其他位置存储所有命令?
最佳思路
可能会也可能不会获得所有命令。这取决于您执行的命令数量以及历史记录限制的设置方式。
不过,您可以看到存储在这里的历史列表:
/home/$USER/.bash_history
其中 $USER
是您的用户名。
这是一个相关问题(用于处理多个 shell 历史记录):Is it possible to make writing to .bash_history immediate?
次佳思路
默认情况下,没有地方记录并无限期地保存所有命令,尽管 ~/.bash_history
包含过去的几个命令(如果您使用 bash
,这是 Ubuntu 中的默认 shell)。
如果你想永远记录在bash
中输入的每条命令,你必须自己设置。例如,您可以将以下内容放入 ~/.bashrc
文件中,以将 bash
shell 中键入的所有命令记录到文件 ~/.command_log
中:
# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
\$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi
上面在 DEBUG
上设置了一个陷阱,该陷阱在执行普通命令之前执行。 caller
内置 用于测试命令是在交互式 shell 中键入还是通过 ~/.bashrc
之类的命令运行。值${BASH_COMMAND}
包含当前正在执行的命令。
第三种思路
您可能还感兴趣的是如何搜索以前的命令历史记录。您可以通过按 Ctrl+r
,然后输入您想要匹配的字母,在命令行上反向搜索您的历史记录。如果您有多个匹配命令,请再次按 Ctrl+r
。要退出反向搜索,请按 Ctrl+g
。
http://www.ice2o.com/bash_quick_ref.html
第四种思路
您只能返回已设置的历史限制;一旦达到这一点,历史将开始被重写。然而,未来可能会有更大的历史规模。将其放入您的 .bashrc 并指定一个值(我的设置为 1000):
export HISTSIZE=1000