打造Linux命令行下的“回收站”

Linux下也有回收站功能,但只在Gnome等桌面环境下面。在终端下面是用rm命令来删除文件,就是直接从硬盘上删除了。要是你一不小心删错了文件, 只能采用一些极其复杂的数据恢复工具来补救,而且还不一定有效。我就有过这样的经历,一不小心删错了文件,以致几天的工作成果立马灰飞烟灭。这样的事情发 生一次都太多了。我们得在错误中学会成长,为了避免悲剧再次发生,我写了一个具有回收站功能的删除脚本用来代替rm命令:

#!/bin/bash

if [ $# -eq 0 ]; then
  echo 'Usage: del file ...'
  exit
fi

if [ $1 = '.' -o $1 = '..' ]; then
  echo "Can't delete $1"
  exit
fi

for src_file in $@; do
  dst_dir="$HOME/.trashbin"
  src_filename=$(basename $src_file)
  dst_file="$dst_dir/$src_filename"
  log_file="$dst_dir/.log"

  #检查源文件是否存在
  if [ ! -e $src_file ]; then
    echo "/"$src_file/" dosen't exit"
    exit
  fi

  #创建目标文件夹
  if [ ! -e $dst_dir ]; then
    mkdir $dst_dir
  fi

  #选择合适的目标文件名
  new_file=$dst_file
  i=0
  while true; do
    if [ ! -e $new_file ]; then
      break
    fi
    new_file="$dst_file.$((++i))"
  done
  dst_file=$new_file

  #执行删除操作
  mv $src_file $dst_file

  #输出信息并写入日志文件
  echo "$src_file -> $dst_file"
  echo "[$(date +'%m-%d %H:%M')] $src_file -> $dst_file" >> $log_file
done

把以上内容保存一个可执行的脚本文件里面,如”delete”,并确保脚本所在目录被添加到PATH环境变量里面。当你要删除文件的时候,就用这个 delete命令。该命令的用法和rm基本一致,支持一次删除多个文件,也支持”*”等通配符。删除的文件被保存到~/.trashbin目录里面,如果 目录中已经存在相同名称的文件,就自动在新删除的文件后面加上”.1″、”.2″等以示区别。每删除一个文件,都会在~/.trashbin/.log写 入一条日志信息,记录下时间和操作内容。在你要恢复被删除文件的时候,这些日志会提供很有价值的信息。

值得说明的是,这个脚本主要用于学习用途。我不保证这个脚本是完美无误的,如果有什么错误导致数据丢失,本人概不负责。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值