事情起因
事情的起因是这样的:为了替换掉代码中某个常量的值,我使用了sed命令,本来以前用得好好的,这次讨巧尝试了一种新的方法,结果因为对sed不够了解,又没有经过试验,想当然地对代码文件进行了处理,结果就悲剧了——所有被处理过的文件内容都被清空了。
峰回路转
怎么郁闷,怎么想各种办法,我就不多说了。决定放弃之前,我抱着死马当活马医的想法,用命令# find / -type f | xargs grep TSCFG | tee /result.txt对根目录进行了搜索,结果就有了新的发现。
我发现经过编译调试的代码完整地保存在/home/cheshi/workspace/.metadata/.plugins/org.eclipse.core.resources/.history路径下,这应该是Eclipse的缓存机制吧。大喜,马上将整个路径备份了下来。
恢复过程
这下面的文件很多,可以说历次调试的版本都有,于是找到的版本越新,自己的损失就越小。
这里可以借助文件的修改时间进行排序:
[cheshi@cheshi-laptop-1 .history]$ grep -R "test suite 02" * | cut -d: -f1 | xargs ls -latr
-rwxr-xr-x. 1 cheshi cheshi 7716 Jun 6 18:54 2b/f089a6e6a64a00171f61d55dca7b3cc2
-rwxr-xr-x. 1 cheshi cheshi 7716 Jun 6 18:57 4b/303e4ff4a64a00171f61d55dca7b3cc2
-rwxr-xr-x. 1 cheshi cheshi 7711 Jun 6 18:57 5e/d04b5e37a74a00171f61d55dca7b3cc2
-rwxr-xr-x. 1 cheshi cheshi 7785 Jun 6 18:59 44/10a8f995a74a00171f61d55dca7b3cc2
-rwxr-xr-x. 1 cheshi cheshi 7780 Jun 6 19:02 3d/a0031eb9234b0017185cd9c382df1e5c
-rwxr-xr-x. 1 cheshi cheshi 7781 Jun 7 09:50 bd/f08a55ea244b0017185cd9c382df1e5c
-rwxr-xr-x. 1 cheshi cheshi 7850 Jun 7 09:59 d5/d09530e8294b0017185cd9c382df1e5c
-rwxr-xr-x. 1 cheshi cheshi 7850 Jun 7 12:51 4e/303a47143d4b0017185cd9c382df1e5c
-rwxr-xr-x. 1 cheshi cheshi 7845 Jun 7 12:52 ad/00ab90393d4b0017185cd9c382df1e5c
-rwxr-xr-x. 1 cheshi cheshi 7779 Jun 7 12:53 f5/b01849403d4b0017185cd9c382df1e5c
[cheshi@cheshi-laptop-1 .history]$
经验总结
这是一次惊险的经历,当然也是一次收获,总结如下:
1.命令sed -i有一定的危险性,使用的时候要小心;
2.对于陌生的命令和用法,最好先经过试验,不要想当然;
3.文件要及时备份,不论是通过git还是tar,这点非常重要!
4.最后,不要轻言放弃。
寄语
不多说了,只希望能够帮到更多的人,哪怕只是一个思路而已。