Safer rm command
Prevent accidental deletion caused by rm with wildcards. This replaces your rm command so that it prevents certain deletions.
safer_rm(){
# Prohibited: rm *
# Prohibited: rm * foo.txt
# Prohibited: rm foo.txt *
# Allowed: rm foo.txt
# Allowed: rm foo*.txt
dangerous_wildcard_detected=false
for arg in "${@}"; do
if [[ "${arg}" == "*" ]]; then
dangerous_wildcard_detected=true
break
fi
done
if $dangerous_wildcard_detected; then
echo "cowardly refusing to run \`rm' with a dangerous wildcard"
return 1
fi
# Turn on filename expansion (globbing).
set +f
args=()
for arg in "${@}"; do
if [[ "${arg}" =~ " " ]]; then
args+=("${arg}")
else
args+=(${arg})
fi
done
command rm "${args[@]}"
}
alias rm="set -f && safer_rm"
Sources:
https://github.com/dot-star/dot-star/blob/master/bash/.safer_rm.sh
https://github.com/dot-star/dot-star/blob/master/bash/.safer_rm_test.sh
Comments
Leave a Reply