如何在终端中清除、删除或隐藏部分历史记录?

如何在终端中清除、删除或隐藏部分历史记录?

clear不会起作用,因为这样会清除屏幕。我想要做的只是隐藏、删除或模糊会话中显示屏上的部分历史记录,即我输入的、不想让用户看到的命令。

以此为例;我想隐藏红色圈出的内容,但保留其上方和下方的所有内容。

答案1

好的,首先我认为这是你需要的:tput 命令。基本上,它允许用户在不关闭会话的情况下重新绘制屏幕。看看我的终端窗口的屏幕截图:

在此处输入图片描述

基本上,我执行命令ls *.c只是为了用一些东西填满屏幕。然后我执行命令tput cup 4 0; echo "THIS LINE WILL BE COVERED WITH THIS ALL CAPS TEXT :)",这基本上将您的提示放在第 4 行第 0 列,并执行 echo 以覆盖第 5 行第 0 行。即使您向后滚动,它也会保留在那里。

现在,假设您刚刚执行了不想让用户看到的命令。例如,我执行了iwconfig,但不想让用户看到我的 WI-FI 名称。我执行命令并计算它位于哪一行。在我的示例中,wlan0 ESSID 位于第 7 行,因此我执行tput cup 6 4; echo "I DO NOT WANT USER TO SEE THIS PART"

在此处输入图片描述

现在请注意,因为这只会重新绘制屏幕!实际命令仍保留在文件中.bash_history。完成会话后,您可以重新打开终端并手动删除您不想要的行。如果我执行ls命令并向后滚动,屏幕的那部分仍然被混淆。

我发现,除了其他功能外,tput reset还可以完全清除屏幕,如果您只想隐藏输出,请将输出导入 /dev/null。例如echo "This will never show on screen" > /dev/null

旧答案:在下拉菜单中转到编辑->配置文件首选项->滚动选项卡。

将回滚行数更改为您想要的任何值。终端不会回滚超出您在终端中输入的行数。

例如,我的终端窗口大约有 41 行长,但由于我将其设置为仅向后滚动 10 行,因此终端根本不会向后滚动。

在此处输入图片描述

答案2

首先确保关闭所有终端窗口和 shell 会话。

然后在 gedit (或另一个 GUI 编辑器)中打开文件~/.bash_history并删除您不需要的行。

相关内容