免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7981 | 回复: 12
打印 上一主题 下一主题

怎样用命令使的删除文件先进入回收站 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-12 09:45 |只看该作者 |倒序浏览
我今天实验了一下:
用rm 命令删除文件,文件不回进入回收站,除了在界面上手工移到回收站,用命令怎样才能让文件进回收站?

论坛徽章:
0
2 [报告]
发表于 2010-05-12 09:58 |只看该作者
这个问题被讨论了多次了。
基本的思路是使用alias将rm命令转换成其他的shell。
这个讨论,在shell版有具体的实现。楼主感兴趣可以去看看。

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
3 [报告]
发表于 2010-05-12 10:01 |只看该作者
系统当前的rm是没这个功能的
可以自己写个shell,给你个例子
以下shell,删除文件,其实是把它移动到/trash/$user/下,不同的用户有不同的存放目录
  1. #!/bin/bash
  2. #move the file(s) to the /trash/~ instead of deleting.
  3. USER=`whoami`
  4. TRASH=/trash/$USER
  5. RECORD=/trash/$USER/.record #record file
  6. ORIG=`pwd`
  7. DATE=`date +%T---%Y/%m/%d`

  8. Usage ()
  9. {
  10.         echo "Usage: `basename $0` file(s)"
  11. }

  12. if [ "$1" = "-h" -o "$1" = "--help" ];then
  13.         Usage
  14.         exit 0
  15. fi
  16. if [ $# -le 0 ];then
  17.         Usage
  18.         exit 1
  19. fi

  20. if [ ! -d $TRASH ];then
  21.         mkdir -p $TRASH
  22. fi

  23. for i in "$@"
  24.         do
  25.         if [ -w "$i" ];then
  26.                 mv "$i" $TRASH
  27.                 if [ $? -ne 0 ];then
  28.                 echo "Something wrong occurred while delete file $i"
  29.                 #but now i won't exit,because there may be other files to be deleted!
  30.                 else
  31.                 #now write the record file
  32.                 #the lines below were modified!
  33.                 CURRENTDIR=$PWD #*
  34.                 cd `basename "$i"`
  35.                 echo -e "$PWD/`basename "$i"`\t\t$DATE ">>$RECORD
  36.                 cd $CURRENTDIR #* return to original working directory
  37.                  #The lines marked * can be omitted! For safety,they remain there.
  38.                #---------------------------------------------------------------

  39.                 fi
  40.                 else
  41.                         echo "You have not enough permission to delete $i!"
  42.         fi
  43.         done
  44. exit 0
复制代码

论坛徽章:
0
4 [报告]
发表于 2010-05-12 10:33 |只看该作者
谢谢楼上的,看看先

论坛徽章:
0
5 [报告]
发表于 2010-05-12 10:34 |只看该作者
楼上的回收站在 /trash/$USER/ 这里呀,我的回收站在 ~/.local/share/Trash/files 这里,回收站的地方有点不同,但思维都是一样的,删除文件到回收站,其实就是把文件移到回收站目录里,暂时放着,要的时候可以恢复,也可以彻底删除,所以把文件删除到回收站其实是mv命令的工作:

$ mv file ~/.local/share/Trash/files


只要知道原理的东东,就可以写脚本,设置alias等等都可以,想怎么发挥都行

{:3_200:}

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
6 [报告]
发表于 2010-05-12 11:10 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2010-05-12 11:10 |只看该作者
多谢诸位,知道不少

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
8 [报告]
发表于 2010-05-12 13:40 |只看该作者
改用 mv ……

论坛徽章:
0
9 [报告]
发表于 2010-05-13 09:50 |只看该作者
学习,强大的shell。。

论坛徽章:
0
10 [报告]
发表于 2010-05-13 09:59 |只看该作者
在.bashrc文件中加一段

  1. alias rm=trash
  2. trash()
  3. {
  4.   mv $@ ~/.Trash/
  5. }
复制代码
然后source /roo/.bashrc
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP