几周前,我创建了一个 Ubuntu VirtualBox 机器,从那时起我就一直在其中断断续续地开展项目。
现在我想找到一周前在终端中输入的一些命令的语法,但我已经多次打开和关闭终端窗口并重新启动机器。
如何让history
命令返回到我创建机器后输入的第一个命令?
或者 Ubuntu 中是否有其他地方存储所有命令?
答案1
可能或不可能获取所有命令。这取决于您执行了多少命令以及如何设置历史记录限制。
不过,您可以看到存储在这里的历史列表:
/home/$USER/.bash_history
你的用户名在哪里$USER
?
这是一个相关问题(用于处理多个 shell 历史记录):是否可以立即写入 .bash_history ?
答案2
默认情况下,没有地方记录并无限期地保存所有命令,尽管~/.bash_history
包含过去的几个命令(如果您使用bash
,这是 Ubuntu 中的默认 shell)。
如果你想每一个bash
录制中输入的命令永远,您必须自行设置。例如,您可以将以下内容放入文件中~/.bashrc
,以将在 shell 中输入的所有命令记录bash
到文件中~/.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}
包含当前正在执行的命令。
答案3
您可能还想知道如何搜索以前的命令历史记录。您可以通过按下Ctrl+r
,然后输入要匹配的字母,在命令行上反向搜索历史记录。如果有多个匹配的命令,请Ctrl+r
再次按下 。要退出反向搜索,请按下Ctrl+g
。
答案4
您只能回溯到您设置的历史限制;一旦达到该点,历史记录将开始被覆盖。但是,将来可以拥有更大的历史记录大小。将其放入您的 .bashrc 并指定一个值(我的设置为 1000):
export HISTSIZE=1000