Ubuntu 8.04下一个替换rm的脚本

Ubuntu 8.04版总是带给我许多麻烦,这次的LSV也不例外,每隔俩月scim-launcher就会在开机时不停的load,直至写满全部内存和swap挂掉为止。这次已经严重到快来不及run gnome-system-monitor了(gnome-terminal更不用提,更慢,来不及)。上次我就新建一用户yuanmm,login,把yuangg备份好,再把配置文件复制一份,登录进去调半天字体啥的。为防万一,我还把调好的配置文件tar -vczf p2.tar.gz /home/yuanmm/.[a-zA-Z]*了一把。果然用上了。

不过在反复的chown/mv/cp/rm中,不小心把一个花费不少时间收集的.*文件夹给删掉了。这已经是第二次了。上次是删*~时少打了~,谁说CL不容易出错来着?!关键是很难恢复……痛定思痛,我决定写一个脚本来替换rm。

以前觉得shell编程挺弱的,很难读,学高操的时候就没用心,都忘光了。结果昨晚熬夜,早晨迟到,才把以前学的shell编程大概扫了遍。也写出来和大家交流一下。dos下好像有del命令,所以我的脚本就以del为名,放在~/sbin下,再

chmod a+x ~/sbin/del,ln -s ~/sbin/* /usr/local/sbin就好了。

#!/bin/sh
if [ ! -d $HOME/.trash ]
then mkdir $HOME/.trash
fi
if [ $LOGNAME = "root" ]
# then delBy="$LOGNAME@$USERNAME"
# else delBy="$USERNAME"
then delBy=":$USERNAME"
fi

for toDel
do
backup=$HOME/.trash/`basename $toDel`$delBy
nsec=`date +%N`
#msec=${nsec:0:3}
if [ ! -f $backup -a ! -d $backup ]
then mv $toDel $backup
# else mv $toDel $backup:$msec
else
mv $toDel $backup:$nsec
touch -a $backup:$nsec
fi
done

不知道为何${nsec:0:3}不能正常运行,在命令行都可以的,这里`echo ${nsec:0:3}`也不行。于是只好放弃msec的时间戳。我希望最终版本能保留删除位置的信息(譬如移动tmp为~/.trash/tmp@home.yuangg:root@yuangg:616),将来再写个udel恢复删除的文件。不过子串要用到awk或sed,那就超出高操的范围了,等很闲的时候吧。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wysggy.html