绝对路径与相对路径是个很简单的概念,但是如果使用不当,有时候会带来灾难性的后果,这里举两个例子:
有一次使用find . -name "xxx" -exec rm -rf {} /;来删除查找到的文件,凌晨做事情有点晕,不小心点了cd后跑到了home目录去执行了,过了几秒钟反应过来,删了一堆重要的东西,从此find命令永远不用相对路径,再长的路径也用全路径。
本来以为用全路径好,而且crontab中执行的shell脚本加了全路径不容易出错,结果有一次,用tar命令定时打包时源文件指定了全路径,后来想解开恢复一个配置文件,tar 解开后,哗啦啦,直接解回到原来的目录,要恢复的文件是恢复了,问题是不想恢复的文件也恢复了。从此tar的源文件再也不敢用绝对路径。
从此记牢了,find应该用绝对路径,tar的源路径应该用相对路径。这不是纯粹的技术问题,而是一种经验积累,这种经验积累,应该是基于实践的证据、来自历史项目或亲自试验的经验,这些方案无一不是这种“循证方法”(evidence-base)的产物(Rod Johnson语),路过的不要重蹈覆辙哦。
有一次使用find . -name "xxx" -exec rm -rf {} /;来删除查找到的文件,凌晨做事情有点晕,不小心点了cd后跑到了home目录去执行了,过了几秒钟反应过来,删了一堆重要的东西,从此find命令永远不用相对路径,再长的路径也用全路径。
本来以为用全路径好,而且crontab中执行的shell脚本加了全路径不容易出错,结果有一次,用tar命令定时打包时源文件指定了全路径,后来想解开恢复一个配置文件,tar 解开后,哗啦啦,直接解回到原来的目录,要恢复的文件是恢复了,问题是不想恢复的文件也恢复了。从此tar的源文件再也不敢用绝对路径。
从此记牢了,find应该用绝对路径,tar的源路径应该用相对路径。这不是纯粹的技术问题,而是一种经验积累,这种经验积累,应该是基于实践的证据、来自历史项目或亲自试验的经验,这些方案无一不是这种“循证方法”(evidence-base)的产物(Rod Johnson语),路过的不要重蹈覆辙哦。