有没有办法在生产服务器中rm使用单个阻止*?这将有助于防止以下事故:
rm test *
Run Code Online (Sandbox Code Playgroud)
代替
rm test*
Run Code Online (Sandbox Code Playgroud)
这是一个可以从 .bashrc 获取的 bash 函数,当您使用带有 2 个以上参数的 rm 时添加警告:
unalias rm 2>/dev/null
real_rm=/bin/rm
rm_opts=""
function confirm {
echo -n "Do you want to continue (Y/N)? "
read v
v=$(echo $v|tr '[a-z]' '[A-Z]')
if [[ "$v" == "Y" ]]; then
return 0
elif [[ "$v" == "N" ]]; then
return 1
else
confirm
fi
}
function rm {
if [ $# -gt 2 ]; then
echo "WARNING: You have passed a list of files and directories that is $# entries long! Is this what you intended?"
echo "Here is the list of files:"
echo "$@"
confirm
if [ $? -eq 0 ]; then
$real_rm $rm_opts $@
fi
else
$real_rm $rm_opts $@
fi
}
Run Code Online (Sandbox Code Playgroud)
不是没有更换外壳。rm甚至没有看到,*因为 shell 在将它们传递给rm.
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |