bash 历史记录
运行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
变量控制存储什么历史记录。 您可以通过将Bash放在.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
条目,可以在命令之前放置一个space
,只要您在HISTCONTROL
环境变量中具有ignorespace
:
$
history
|
tail
535
echo
"foo"
536
echo
"bar"
$
history
-d
536
$
history
|
tail
535
echo
"foo"
您可以使用-c
选项清除整个会话历史记录:
$
history
-c
$
history
$
历史课
根据需要使用历史记录会话,并明智地行使对历史的控制权。 快乐的历史黑客!
翻译自: https://opensource.com/article/20/6/bash-history-control
bash 历史记录