Sadlly,我使用以下命令编译了一个.c文件:
$ gcc a.c -o a.c
所以a.c成了覆盖我原来的c文件的可执行文件...我想问一下我可以回复真正的a.c文件吗?
答案 0 :(得分:0)
不幸的是,这几乎是不可能的,除非你擅长逆向工程二进制代码,AFAIK。
答案 1 :(得分:0)
您可以从备份中恢复它,也可以从源代码控制系统恢复它。
如果你没有这些,你应该开始使用它们(现在你知道为什么!)。
您也可以使用正在使用的操作系统的文件恢复工具恢复文件,如果失败,您可以反编译目标文件。这是一个反编译器:
http://boomerang.sourceforge.net/cando.php?hidemenu
在使用“c反编译器”搜索Google后,这是列表中的第一个。
这是关于反编译器的stackoverflow问题。
答案 2 :(得分:0)
当您覆盖文件时,操作系统不会将数据物理地放在同一位置,它只是将旧数据标记为可用,并将新数据写入磁盘。它可能会覆盖您的文件,但可能不会。 Midnight commander有一个可以尝试恢复文件的工具。
目前Midnight Commander与一些虚拟文件系统(VFS)打包在一起:... undelfs,用于恢复ext2文件系统上的已删除文件(Linux系统的默认文件系统)
同时,您可能不应该在计算机上保存任何其他文件,尤其是在已删除文件所在的目录中。
编辑:顺便说一句,这是一篇旧文章,linux有一段时间没有使用过ext2。但我认为它应该仍然有效。答案 3 :(得分:0)
grep
是恢复丢失的C文件的好工具。
grep -a -B 25 -A 100'文件中的某些字符串'/ dev / sda1> restore.txt
上面的命令恢复C文件中“文件中的某些字符串”行之前25行和之后100行的丢失的文本,并将恢复的文本输出到recover.txt
文件中。
因此,您可以根据需要更改25和100的值。
上面的命令还假定分区名称为/dev/sda1
。您可以使用mount
命令查找分区名称。