自机器创建以来如何查找shell命令的历史记录?

Edw*_*uay 24 command-line bash history

几周前我创建了一个 Ubuntu 虚拟机,从那时起就一直在做项目。

现在我想找到我一周前在终端中输入的一些命令的语法,但我已经打开和关闭了终端窗口并多次重新启动了机器。

如何让history命令返回到我创建机器后输入的第一个命令?
或者所有命令都存储在Ubuntu中的另一个地方?

Web*_*b-E 27

获取所有命令可能会也可能不会。这取决于您执行了多少命令以及如何设置历史限制。

但是你可以看到历史列表存储在这里

/home/<YOUR_USERNAME>/.bash_history

相关问题(用于处理多个 shell 历史记录):

是否可以立即写入 .bash_history ?

  • 历史仅从一个终端/外壳保存是不正确的。当您运行 `history` 时,它会显示当前 shell 的历史记录为最新的,以及之前所有其他 shell 的历史记录(包括先前会话中的 shell,包括跨电源循环)。退出时,所有 shell 实例*将它们的历史记录*保存到`.bash_history`。在此之前,没有实例会自动将其保存在那里。 (3认同)

Ric*_*sen 6

默认情况下,没有记录所有命令并无限期保留的地方,尽管~/.bash_history包含过去的几个命令(如果您使用bash,这是 Ubuntu 中的默认 shell)。

如果您希望永远记录输入的每个命令,您必须自己设置。例如,您可以将以下内容放入文件中,以便将在shell 中键入的所有命令记录到文件中:bash~/.bashrcbash~/.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
Run Code Online (Sandbox Code Playgroud)

上面在 上设置了一个陷阱DEBUG,它在执行普通命令之前执行。该caller内置用于测试是否该命令在交互的shell正在键入或通过类似运行~/.bashrc。该值${BASH_COMMAND}包含当前正在执行的命令。


Sep*_*ero 5

您可能还感兴趣的是如何搜索以前的命令历史记录。您可以在命令行上按Ctrl+r,然后键入您想要匹配的字母来反向搜索您的历史记录。如果您有多个匹配的命令,请Ctrl+r再次按下。要退出反向搜索,请按Ctrl+g

http://www.ice2o.com/bash_quick_ref.html