`
tuoxie007
  • 浏览: 162825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

bash实现的回收站程序

阅读更多

好久没写博了

哈哈,最近在学习Linux

这是偶写的第一个shell脚本,是一个实现类似windows里的回收站的程序,可以避免误删文件,希望能够对大家有所帮助,当然自己练手是最重要的,呵呵

#!/bin/bash

alias rm=trash
alias urm=untrash
alias vtr=viewtrash
alias ctr=cleartrash

common_error_msg="failed, check the ~/.trash directory manul"

trash()
{
	pwd=`pwd`

	#get all command line params into array $params 
	#and all files into array $files
	i=0
	j=0
	unset params
	unset files
	params={}
	files={}

	while [ $# -gt 0 ]
	do
		p="$1"
		if [ "${p:0:1}" == "-" ]
		then
			params[$i]=$p
			let i=i+1
		else
			files[$j]=$p
			let j=j+1
		fi
		shift
	done

	#
	file_params=${files[*]}
	file_param_str=${file_params[0]}
	rmdate=`date "+%Y-%m-%d_%H-%M-%S"`


	mkdir ~/.trash/$rmdate
	mv $file_param_str ~/.trash/$rmdate/
}

untrash()
{
	mv ~/.trash/$rmdate/* $pwd/
	if [ $? == 0 ]
	then
		rmdir ~/.trash/$rmdate
		if [ $? != 0 ]
		then
			echo "trashed but remove old directory $common_error_msg"
		fi
	else
		echo "untrash $common_error_msg"
	fi
}

cleartrash()
{
	unalias rm
	`rm -rf ~/.trash/*`
	if test $? != 0
	then
		echo "clear trash $common_error_msg"
	fi
	alias rm=trash
}

viewtrash()
{
	ls ~/.trash/*
	if test $? != 0
	then
		echo "trash empty"
	fi
	unset ret
}
 



使用的方法是

在$HOME里新建一个.trash目录
先在这个文件放在$HOME里,文件名是.rm
在~/.bashrc最好添加以后代码

. ~/.rm
 

 

分享到:
评论

相关推荐

    Python实现处理机和进程调度算法及内存分配回收机制源码+项目说明+代码注释(附Vue前端源码).zip

    本程序模拟实现处理机调度和内存分配及回收机制,并通过可视化界面观察进程的运行流程与情况。为了实现算法与界面的解耦合,以及绘制更加优美的界面,本实验设计了前后端分离的架构,在后端使用Python的Flask框架...

    Go-一个用go实现的实验性的Unixshell

    这个项目很可能是开发者为了学习、探索或者测试新的shell概念而创建的,也可能用于比较Go语言与传统Unix shell实现(如Bash)的性能和功能差异。实验性意味着这个shell可能包含一些新颖的特性或优化,但同时也可能...

    csapp大作业程序人生

    对于本篇报告所述的`hello.c`程序,其目标也是类似的——通过实现一个简单的“Hello World”程序,深入理解计算机系统的工作原理,尤其是从源代码到可执行文件的整个过程。 **1.2 环境与工具** 本项目是在UBUNTU...

    Trash_n_Bash

    此外,Bash脚本允许我们将一系列命令组合起来,实现自动化任务,如文件备份、日志分析等。 在C#中,我们可以使用`System.Diagnostics.Process`类来调用外部命令,如Bash命令。通过`Process.StartInfo`属性设置...

    如何用python开发运维友好的程序

    对于文件,考虑将其移动到特定的回收站文件夹而非直接删除。 - **定期备份**:通过网络将数据库备份数据传输到不同的服务器或数据中心,实现数据的异地备份。 7. **倾听运维反馈**:积极听取运维人员的意见和建议...

    jvm垃圾回收调整.pdf

    Java虚拟机(JVM)的垃圾回收(Garbage Collection, GC)是Java程序性能优化的重要环节。本篇文章将深入解析JVM的垃圾回收机制,并针对Sun HotSpot 1.4.1版本的JVM,讨论如何调整堆内存的大小以优化GC性能。 首先,...

    深入解析Go内核实现

    通过学习《深入解析Go》,不仅可以掌握Go语言的核心概念,还能深入了解其底层实现机制,这对于提高Go语言的编程技能和优化应用程序性能都大有裨益。本书适合已经具备一定Go语言基础并对其实现细节感兴趣的开发者阅读...

    linux系统分析与高级编程技术.rar

    2. **内存管理**:Linux如何分配和回收内存,了解虚拟内存、页表、交换机制等,有助于编写内存高效的程序。 3. **文件系统**:研究Linux下的EXT4或其他文件系统的工作原理,以及文件I/O操作的底层实现。 4. **设备...

    (源码)基于C语言的东北大学操作系统实验.zip

    2. 内存管理包括内存分配、回收和虚拟内存的管理。 3. 文件系统实现了文件的创建、读写、删除和目录管理。 4. 设备管理支持设备的初始化、中断处理和IO操作。 5. 系统调用提供了用户程序与操作系统内核交互的接口。 ...

    C程序设计语言(K&R)清晰中文版

    程序执行从`main`函数开始,通过函数调用实现复杂功能。例如,`main`函数可以调用其他函数进行特定任务的处理。 #### 4. 标准库函数 C语言提供了丰富的标准库函数,如`printf`、`scanf`等,用于简化常见任务的实现...

    shell程序编写.doc

    用户退出Shell时,控制权会返回给`init`,内核回收资源。 3. **命令执行流程** 用户输入的命令通过Shell解析,找到对应的可执行文件,由内核创建子进程执行。例如,执行`ls`命令时,Shell找到`/bin/ls`,内核创建...

    哈工大计算机系统大作业(程序人生)

    链接是将独立的目标文件组合成可执行文件的关键步骤,对于程序的最终实现至关重要。 #### 第六章至第八章:进程管理、存储管理和I/O设备管理 这三个章节分别介绍了进程管理、存储管理和I/O设备管理的基本原理和...

    Python库 | gctree-3.2.0-py3-none-any.whl

    Python库是开发者在进行Python编程时经常会用到的工具,它们提供了一系列预定义的功能和模块,可以帮助程序员快速、高效地实现特定任务。`gctree`是一个这样的库,它的版本为3.2.0,专为Python 3设计,可以在任何...

    linux操作系统安装MONO执行C#程序的详解步骤

    在Linux操作系统上运行C#程序,通常需要借助于开源的.NET框架实现——MONO。本文将详细介绍在Ubuntu和Fedora系统下安装MONO并执行C#程序的步骤。 首先,我们来了解一下MONO。MONO是一个开源的.NET框架实现,它使得...

    举例说明如何实现内存泄露检测

    内存泄露是程序运行时的一种常见问题,它发生在程序分配了内存但未能正确释放,导致这部分内存持续占用,随着时间推移,可能会耗尽系统的可用内存,从而影响程序甚至整个系统的性能。在本文中,我们将通过一个简单的...

    深度解析Go

    1. **基本数据结构**:了解Go中如slice、map等基本数据结构的实现原理,可以帮助开发者更好地利用这些结构来提高程序性能。 2. **函数调用协议**:Go中的函数调用机制与其他语言有所不同,了解其内部工作原理对于...

    Node.js-empty-trash-清除垃圾的工具

    使用Node.js的`empty-trash`模块,开发者可以轻松地集成到命令行应用程序或者自动化脚本中,实现定期或者按需清理垃圾文件的功能。例如,开发者可以创建一个定时任务,每天自动清空垃圾,以避免无用文件占用过多的...

    一个操作系统的实现

    2. **Shell**:Linux提供了命令行界面的shell,如Bash(Bourne-Again SHell),用户可以通过命令行输入指令与操作系统交互。Shell脚本允许用户编写自动化任务,提高了效率。 3. **文件系统**:Linux采用的是基于...

Global site tag (gtag.js) - Google Analytics