限制脚本执行的目录

限制脚本执行的目录

例如我有一个脚本如下:

for i in */*/
do  
 cd $i
 cp POSCAR.ideal OSZICAR ..
 cd ..
 rm -r */
 cd ../;
done

删除一个文件夹的子文件夹,但是稍不小心,比如最后一个../被误写为../../,那么整个电脑就会被抹掉。这是非常糟糕的!那么我想问有没有一种方法可以安全地限制终端的操作范围,以免出现这样的悲剧?

答案1

正如@Joe 在评论中正确提到的那样,最好重写这样一个危险的脚本。但是,如果您确实希望继续使用当前脚本,一个基本方法是将所有rm操作包装在if条件内。

因此,例如:

if pwd | grep <some-pattern>; 
then rm -r */; 
fi;

您可以grep根据需要修改该部分。我的观点是,grep在发出rm命令之前只需进行简单的验证即可。

相关内容