我正在运行最新的Ubuntu Linux。
今天早上我运行了一个做了很多事情的脚本。在做这些事情的时候,由于我还没有完成调查的原因,脚本回来了一个目录太多并做了一个 rm -rf * 在目录中 〜/ 显然不好;我花了3个小时恢复并重新配置所有内容。
问题:.bashrc中的一个函数看起来总是用户提示,即使是从没有用户输入的脚本,只要看到它 rm -rf~ / * 要么 rm -rf *在目录〜/
中答案 0 :(得分:3)
您可以在rm
中添加自定义PATH
,并将/bin/rm
调用-i
强制进入其参数数组作为最后一个选项,类似于(仅考虑POSIX标志):
#!/bin/sh -eu
if [ "$PWD" != "$HOME" ]; then
exec /bin/rm "$@"
exit 127
fi
opts=
while getopts 'fiRr' opt; do
case $opt in [fiRr]) opts=$opts$opt;; *) exit 1;; esac
done;
shift $((OPTIND-1))
/bin/rm -${opts}i "$@" < /dev/tty
答案 1 :(得分:1)
提示是防止这种情况发生的弱方法。无论何时想要删除某些内容而不考虑太多,都很容易习惯于同时响应相同的响应。
实现可以从中恢复文件的各种垃圾桶要好得多。
您可以使用mv命令将rm别名为'trash-can',您可以在其中安排cron作业以定期清理此垃圾桶。
也许别名rm的内容如下:
#!/usr/bin/env sh
mvargs=()
i=0
for arg in "$@"
do
case "$arg" in
-r|-R)
shift;;
-rf|-Rf |-R|-fr|-fR)
mvargs[$i]="-f"
((++i))
shift;;
*)
mvargs[$i]="$arg"
((++i))
shift;;
esac
done
mv "${mvargs[@]}" "/tmp/trashcan"
/ tmp / trashcan可能是垃圾桶