如何获取终端回滚历史?含CAT命令查看过的已删除文件内容
嘿,咱们来一步步解决你的两个终端相关问题吧,它们涉及不同场景,解法也不一样:
1. 如何获取终端的回滚历史?
不同终端模拟器的操作方式略有不同,这里列举几个常见的:
- GNOME Terminal(Linux):用
Shift+Page Up/Shift+Page Down手动滚动。要保存完整回滚历史,点击顶部菜单栏的「编辑 > 保存内容」,选择存储文件即可。另外可以在「配置文件首选项 > 滚动」里开启无限回滚,避免会话间丢失历史。 - Konsole(KDE桌面):用
Ctrl+Shift+Up/Ctrl+Shift+Down滚动。保存历史的话,点击「文件 > 另存输出为...」。调整回滚长度可进入「设置 > 配置Konsole > 配置文件 > 滚动」。 - iTerm2(macOS):用
Cmd+Shift+Up/Cmd+Shift+Down滚动。保存完整历史的话,点击「文件 > 另存文本为...」。在「偏好设置 > 配置文件 > 终端 > 回滚行数」里设置无限回滚。 - 纯字符终端(无GUI):用
Shift+Page Up/Shift+Page Down滚动。部分系统可以通过cat /dev/vcs1(把1换成你当前的tty编号,比如tty2对应/dev/vcs2)来保存缓冲区内容。
2. 如何找回曾用
cat查看过但已删除的文件内容? 首先得明确:终端的回滚历史只保存屏幕上显示过的内容——如果文件长度超过了终端窗口或回滚缓冲区的大小,你就拿不到完整内容;另外shell历史(比如~/.bash_history或~/.zsh_history)只会记录cat这个命令本身,不会记录文件内容。下面是几种可行的方法:
- 先检查终端回滚:如果还没关闭终端窗口,尽量往上滚动。如果文件内容曾完整显示在屏幕上且没超出回滚缓冲区,你可以直接选中复制,或者按照第一个问题里的方法保存回滚历史。
- 检查系统日志(可能性低):如果系统开启了审计功能,可能会有记录终端输出的日志。比如Linux上的
auditd,日志通常在/var/log/audit/audit.log,但这种情况一般只有为了安全审计才会开启,大概率不会包含文件内容。 - 文件恢复工具(最靠谱):既然文件已经被删除,最好的办法是用数据恢复工具,而且一定要停止向磁盘写入新内容——任何新的写入(存文件、装软件、甚至浏览网页)都可能覆盖删除文件占用的磁盘空间,导致无法恢复。
- ext4文件系统(Linux):可以用
testdisk或photorec(都属于testdisk工具包)。photorec即使在文件系统损坏的情况下也能恢复文件,实用性很强。 - macOS:先用
diskutil list找到你的磁盘,然后用testdisk或者第三方工具比如Data Rescue(不过免费工具如果数据没被覆盖的话通常足够)。 - WSL(Windows子系统Linux):因为WSL的文件存在虚拟磁盘里,需要用Windows的恢复工具来处理底层的NTFS磁盘。
- ext4文件系统(Linux):可以用
- 检查交换分区(成功率低):如果文件最近被读取到内存,可能有部分内容留在交换分区里。可以用
strings /dev/sda3(把/dev/sda3换成你的交换分区路径),再用grep搜索文件里的关键词,但这种方法很繁琐,而且不一定能拿到完整内容。
内容的提问来源于stack exchange,提问作者Doraemon
相关产品推荐
相关产品推荐

