几周前,我创建了一个Ubuntu虚拟机机器,此后一直在进行内部项目的开发。
现在,我想查找一周前在终端中键入的某些命令的语法,但是我已经打开和关闭终端窗口,并多次重启了机器。
history
创建机器后,如何获取返回到我键入的第一个命令的命令?
还是还有其他所有命令都存储在Ubuntu中的地方?
几周前,我创建了一个Ubuntu虚拟机机器,此后一直在进行内部项目的开发。
现在,我想查找一周前在终端中键入的某些命令的语法,但是我已经打开和关闭终端窗口,并多次重启了机器。
history
创建机器后,如何获取返回到我键入的第一个命令的命令?
还是还有其他所有命令都存储在Ubuntu中的地方?
Answers:
获取或不可能获取所有命令。这取决于您执行了多少命令以及如何设置历史记录限制。
但是您可以看到历史记录列表存储在此处
/home/<YOUR_USERNAME>/.bash_history
相关问题(用于处理多个shell历史记录):
history
,它将显示当前外壳程序的历史记录,以及最近的所有其他外壳程序(包括先前会话中的外壳程序,包括跨电源循环的外壳程序)的历史记录。所有外壳程序实例将其历史记录保存到.bash_history
退出时。在此之前,没有实例会自动将其保存在那里。
默认情况下,尽管~/.bash_history
包含过去的几个命令(如果使用bash
,这是Ubuntu中的默认shell),但没有地方可以无限期地记录和保留所有命令。
如果要永久记录键入的所有命令,则必须自己进行设置。例如,您可以将以下内容放入文件中,以将在shell中键入的所有命令记录到文件中:bash
~/.bashrc
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
上面在on上设置了一个陷阱DEBUG
,该陷阱正好在执行普通命令之前执行。该caller
内置用于测试是否该命令在交互的shell正在键入或通过类似运行~/.bashrc
。该值${BASH_COMMAND}
包含当前正在执行的命令。
update_terminal_cwd
历史记录文件,这是用户不运行但会自动运行的命令。
您可能还感兴趣的是如何搜索以前的命令历史记录。您可以通过按Ctrl+r
,然后键入要匹配的字母来在命令行上反向搜索历史记录。如果您有多个匹配命令,请Ctrl+r
再次按。要退出反向搜索,请按Ctrl+g
。
只要设置了历史记录限制,您就只能返回。一旦达到该点,历史记录将开始被覆盖。但是,将来可能会有更大的历史记录。将其放在您的.bashrc中并指定一个值(我的值设置为1000):
export HISTSIZE=1000