运行 Bash 的 Linux 终端有一个内置的历史记录功能,你可以用它来跟踪你最近的操作。要查看你的 Bash 会话历史记录,请使用内置命令 history
$ echo "foo"
foo
$ echo "bar"
bar
$ history
1 echo "foo"
2 echo "bar"
3 history
与大多数命令不同,history
命令不是文件系统上的可执行文件,而是 Bash 的一个函数。你可以使用 type
命令来验证这一点
$ type history
history is a shell builtin
历史记录控制
shell 历史记录中的行数上限由 HISTSIZE
变量定义。你可以在你的 .bashrc
文件中设置这个变量。以下设置将你的历史记录设置为 3,000 行,超过这个行数后,最旧的行将被删除,为最新的命令腾出空间,最新的命令位于列表的底部
export HISTSIZE=3000
还有其他与历史记录相关的变量。HISTCONTROL
变量控制存储哪些历史记录。你可以通过在你的 .bashrc
文件中放置以下内容,强制 Bash 排除以空格开头的命令
export HISTCONTROL=$HISTCONTROL:ignorespace
现在,如果你输入一个以空格开头的命令,该命令将不会被记录在历史记录中
$ echo "hello"
$ mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
1 echo "hello"
2 echo "world"
3 history
你也可以避免重复的条目
export HISTCONTROL=$HISTCONTROL:ignoredups
现在,如果你连续输入两个相同的命令,历史记录中只会显示一个
$ ls
$ ls
$ ls
$ history
1 ls
2 history
如果你喜欢这两个忽略选项,你可以直接使用 ignoreboth
export HISTCONTROL=$HISTCONTROL:ignoreboth
从历史记录中删除命令
有时你可能会犯错,在 shell 中输入一些敏感信息,或者你只是想清理你的历史记录,使其更准确地代表你为使某些东西正常工作而采取的步骤。如果你想在 Bash 中删除历史记录中的命令,请使用 -d
选项,并指定要删除项的行号
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
535 echo "foo"
536 echo "bar"
537 history | tail
$ history -d 536
$ history | tail
535 echo "foo"
536 history | tail
537 history -d 536
538 history | tail
要停止添加 history
条目,你可以在命令前放置一个 空格
,前提是你的 HISTCONTROL
环境变量中有 ignorespace
$ history | tail
535 echo "foo"
536 echo "bar"
$ history -d 536
$ history | tail
535 echo "foo"
你可以使用 -c
选项清除你的整个会话历史记录
$ history -c
$ history
$
历史教训
操作历史记录通常没有听起来那么危险,特别是当你有目的地管理它时。例如,如果你正在记录一个复杂的问题,通常最好使用你的会话历史记录来记录你的命令,因为通过将它们放入你的历史记录中,你正在运行它们,从而测试该过程。很多时候,只记录而不实际操作会导致忽略小步骤或写错细节。
根据需要使用你的历史会话,并明智地行使你对历史记录的权力。祝你历史记录破解愉快!
2 条评论