清除终端关键输出

清除终端关键输出

我的 win10 上安装了 Ubuntu 18.04,我通常用这行代码创建密码:

echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20 

但是今天我不小心按了Enter echo 命令之后。

Ubuntu 是否将其终端输出保存在文件中?仅使用clear命令是否安全?

你们能推荐一个更好的解决方案吗,这样我的密码就彼此不同,并且很难根据我的其他密码计算出一个新密码?

谢谢。

答案1

输出命令通常是不是存储在任何地方并关闭窗口就足够了。但命令本身被存储在:在 shell 的历史记录中。

要从那里删除它,最好先关闭全部终端窗口。通常,历史记录会在 shell 结束时写入文件~/.bash_history,直接操作文件不会有帮助,因为它会在 shell 退出时被覆盖。有history多种配置方法,但最简单的方法是关闭所有终端窗口。

现已开放新的终端窗口并输入

history

或者

history | grep echo

示例输出:

...
2007  echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20 
2008  echo -n "secret" | sha256sum |cut -c-20 
2009  echo -n "secret"
2010  history

这里你可以看到,不仅存储了“恶意”命令,还存储了“正确”命令。你可以使用以下命令删除它:

history -d 2009

其中2009是第一列的数字。适当更改。现在:

history
...
2007  echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20 
2008  echo -n "secret" | sha256sum |cut -c-20 
2009  history
2010  history -d 2009
2011  history

将来你可能想在你的前面加上echo … | sha256sum …一个空格,即

_echo -n "secret" | sha256sum |cut -c-20   # The '_' indicates a leading space

这样,完整的命令就不会被记录在历史记录中。该行为由 HISTCONTROL 变量控制(man bash):

组织控制

以冒号分隔的值列表,控制如何将命令保存在历史列表中。如果值列表包括ignorespace,则以空格字符开头的行将不会保存在历史列表中。ignoredups会导致与上一个历史记录条目匹配的行不被保存。 值ignorebothignorespace 和的简写ignoredups

您可能希望添加export HISTCONTROL='ignoreboth'您的内容~/.bashrc来实现这一点。

相关内容