-1

可悲的是,我使用以下命令编译了一个 .c 文件:

$ gcc a.c -o a.c

所以 ac 变成了覆盖我旧 c 文件的可执行文件...我想问一下我可以拿回真正的 ac 文件吗?

4

4 回答 4

0

当您覆盖文件时,操作系统不会将数据完全放在同一位置,它只是将旧数据标记为可用,并将新数据写入磁盘。它可能会覆盖您的文件,也可能不会。午夜指挥官有一个工具可以尝试取回你的文件。

目前 Midnight Commander 与一些虚拟文件系统 (VFS) 打包在一起: ...undelfs,用于恢复 ext2 文件系统(Linux 系统的默认文件系统)上已删除的文件

午夜指挥官指南

同时,您可能不应该在计算机上保存任何其他文件,尤其是在您删除的文件所在的目录中。

编辑:顺便说一句,这是一篇旧文章,linux 已经有一段时间没有使用 ext2 了。但我认为它应该仍然有效。

于 2013-04-01T03:05:26.460 回答
0

不幸的是,这几乎是不可能的,除非你擅长逆向工程二进制代码,AFAIK。

于 2013-03-31T15:36:56.467 回答
0

您可以从备份中恢复它,也可以从源代码控制系统中恢复它。

如果你没有这两个,你应该开始使用两者(现在你知道为什么了!)。

您还可以使用您正在使用的操作系统的文件恢复工具来恢复文件,或者如果失败,您可以反编译目标文件。这是一个反编译器:

http://boomerang.sourceforge.net/cando.php?hidemenu

这是在用“c decompiler”搜索谷歌后列表中的第一个。

这是关于反编译器的stackoverflow问题。

什么是好的 C 反编译器?

于 2013-03-31T18:12:28.913 回答
0

grep是恢复丢失的 C 文件的好工具。

grep -a -B 25 -A 100 '文件中有一些字符串' /dev/sda1 > recover.txt

上述命令恢复 C 文件中“文件中的某些字符串”行之前 25 行和之后 100 行丢失的文本,并在文件中输出恢复的文本recover.txt。因此,您可以根据需要更改 25 和 100 的值。上面的命令还假设分区名称是/dev/sda1. 您可以使用该mount命令来查找您的分区名称。

于 2019-09-04T06:35:00.023 回答