当我输入rm -rf
到终端时,我想提示确认问题,如果回答“是”,则将执行操作。我发现直接rm
命令如下:
rm() {
read -p "Type password? " pass
if [ "$pass" = "1234" ]; then
command rm "$@"
else
#Termination and echo a message wrong pass.
fi
}
添加到. bashrc并将其转换为:
rm(){
if [ $1 -eq "-" ] && [ $2 -eq "r" ] && [ $2 -eq "r" ]; then
read -p "Do you really want to delete?" ans
if [ ans -eq "yes" ]; then
rm -rf $@;
else
fi
else
fi
}
但是我知道它不会起作用。那么我如何检测rm -rf
命令并提示我的自定义确认问题呢?
编辑:我现在有这个,但仍然没有运气:
rm(){
if [ $1 = "-rf" ]; then
read -p "Do you really want to delete?" ans;
if [ $ans = "yes" ]; then
rm -rf "$@";
fi
fi
}
2条答案
按热度按时间xlpyo6sf1#
如果你不介意
rm -fr
,rm -r -f
等不被捕获,这将工作得很好:gxwragnw2#
让我们来看看。覆盖所有情况(
-rf
,-fr
,-r -f
,--recursive --force
,-R --force
;或其它组合,例如-vrvfv
-getopts
可能会有帮助)。这里有一个函数让你开始。
您并没有真正指定如何处理
rm -r dir
或rm -f file
(因此只能使用递归或强制,但不能组合使用)。