清除CMD和PowerShell的输入记录
1 CMD
微软关于doskey
命令的官方文档中写的很详细, 比如可以使用doskey /history
查看当前CMD会话窗口的命令历史记录, 至于怎么清除历史记录?
话说关闭当前CMD会话窗口, 再打开一个会话窗口, 就调不出来历史记录了。
不知道是不是我Windows版本的原因, 这些方法都没效果:
- 改注册表
在注册表中的
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
下清除默认
之外的所有字符串值。 然而我电脑这里只有一个默认
的字符串值。 - 使用
doskey / listsize=0
让当前CMD会话窗口的命令历史记录条数为0, 间接实现doskey /history
查不出历史记录的效果。
2 PowerShell
微软这个清除PowerShell的输入历史记录的文档, 根本没用啊。🙄
在Stack Overflow上也有这个问题: PowerShell’s Clear-History doesn’t clear history, 参考高赞答案得知:
所以,
只使用
Clear-History
命令虽然使用
Get-History
命令会发现只有一条历史记录, 就是刚刚输入的Clear-History
。但是 , 按几下
↑
键, 就会发现以前的输入记录都还在。只按
Alt + F7
虽然按几下
↑
键, 发现以前的输入记录都没有了。但是 , 这时候使用
Get-History
命令会发现PowerShell把以前的历史记录清楚地列了出来。
然而, 就算合起来使用这两种方法, 比如先按Alt + F7
, 再使用Clear-History
命令, 似乎这时候输入历史记录中就只有Clear-History
这一条刚刚输入的命令了。
但是 , 输入的命令历史记录跨会话保存在文件中, 即所谓的PowerShell自己的历史机制是独立于主机的
。主机上存储的命令历史记录文件没有得到清除。
2.1 解决方法
使用PowerShell执行以下命令:
|
|
会得到PowerShell的输入历史记录存放路径: C:\Users\username\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
打开一看, 历史记录全在这, 删除后, 关闭当前PowerShell, 再重新打开, 就调不出历史纪录了。