WHAT A BUG!一个空格引发的血案

下午逛V2EX时撞到这个帖子:这样的 install.sh 实在是让人情何以堪

点击链接进去,看粉色的第三行,哈哈,仔细找亮点,

rm -rf /usr /lib/nvidia-current/xorg/xorg

原来是多打了个空格,直接导致/usr目录被删除,看可怜作者的sorry语”

GIANT BUG... causing /usr to be deleted... so sorry.... issue <a href="https://github.com/MrMEEE/bumblebee/issues/123">#123</a>, issue <a href="https://github.com/MrMEEE/bumblebee/issues/122">#122</a>, issue <a href="https://github.com/MrMEEE/bumblebee/issues/121">#121</a>

到这里看还不算亮点,看各位楼下的同志们的评语和调侃图吧,这才强大

Hezion:Success!!  //站着说话不腰疼的

jschairb:where’s the ‘like’ button? //FB党找like按钮的

flying-sheep:and here is the most commented-on code line on github! //gitbuh史上最多代码评论

manjun:倒霉孩子 //中国人民安慰你

来吧,各种亮图:

注:有bug的软件的名字是bumblebee

恐怖型滴:

有坚决鼓掌的

mm

比较geek的

有点傻

额…欲知更多情况,去原帖围观吧

linux下最好对rm做如下处理,安全性最高

第一种,直接放到shell的配置文件里,zsh为~/.zshrc,bash对应~/.bashrc,比较简单型:

trash() {
mv $@ ~/.local/share/Trash/files }
alias trm="rm"
alias rm=“trash”

第二种:来自这里,http://iregex.org/blog/safer-rm-command.html

#safe remove, mv the files to .Trash with unique name #and log the acction function rm() { trash=”$HOME/.Trash” log=”/var/log/trash.log” stamp=date "+%Y-%m-%d %H:%M:%S" #current time

while [ -f "$1" ]; do

#remove the possible ending / file=echo $1 |sed 's#\/$##' 

pure_filename=`echo $file  |awk -F / '{print $NF}' |sed -e "s#^\.##" `

if [ `echo $pure_filename | grep "\." ` ]; then
new_file=` echo $pure_filename |sed -e "s/\([^.]*$\)/$RANDOM.\1/" `
else
new_file="$pure_filename.$RANDOM"
fi

trash_file="$trash/$new_file"
mv "$file" "$trash_file"

if [ -w $log ]; then
echo -e "[$stamp]\t$file\t=>\t[$trash_file]" |tee -a $log
else
echo -e "[$stamp]\t$file\t=>\t[$trash_file]"
fi

shift   #increment the loop
done }