我想制作一个清除历史记录的 bash 脚本,其工作原理与命令类似
history -c
因此我从以下代码开始:-
#!/bin/bash
history #displaying history
history -c #clearing history
这些都不起作用。经过一番搜索,我发现 bash 默认在非交互式 shell 中禁用历史记录,但我们可以将其打开。因此,在编辑后,我尝试了以下代码:-
#!/bin/bash
HISTFILE=~/.bash_history # Or wherever you bash history file lives
set -o history # enable history
history
history -c
它显示输出:-
[root@localhost lib]# bash a.sh
1 history
[root@localhost lib]#
此外,hisory -c 命令不起作用。因为当我输入 history 时,我仍然会获取命令的历史记录。这意味着历史和历史-c在 Bash 脚本中不起作用。
那么我们该如何使用它?
编辑1- 我想删除当前会话的历史记录,它必须存储在某个地方。我尝试使用以下命令,但没有效果:-
cat /dev/null > ~/.bash_history && history -c && exit
cat /dev/null > ~/.bash_history
PS-这不是一个重复的问题。请在将其标记为重复之前尝试理解差异。我想通过脚本清除当前会话的历史记录。我不在乎它是否被写回或其他什么。另一个问题是关于永久删除历史记录。它与脚本或其他终端无关。
答案1
您不能像这样删除历史记录,因为它会删除当前会话的历史记录。
如果你想使用脚本清除历史记录,请在脚本中使用以下命令
> ~/.bash_history
清除所有 bash 历史记录就足够了。
答案2
我觉得
history -c
只会清除与脚本关联的seesion里面的历史记录此示例:
#!/bin/bash
HISTFILE=~/.bash_history # Or wherever you bash history file lives
set -o history # enable history
uname -a > /dev/null
history
history -c
history
显示输出:
....
500 history
501 uname -a > /dev/null
502 history
4 history
这正是我们所期望的。
如果你想删除历史记录,请尝试
> $HISTFILE