好久没写博了
哈哈,最近在学习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的Flask框架...
这个项目很可能是开发者为了学习、探索或者测试新的shell概念而创建的,也可能用于比较Go语言与传统Unix shell实现(如Bash)的性能和功能差异。实验性意味着这个shell可能包含一些新颖的特性或优化,但同时也可能...
对于本篇报告所述的`hello.c`程序,其目标也是类似的——通过实现一个简单的“Hello World”程序,深入理解计算机系统的工作原理,尤其是从源代码到可执行文件的整个过程。 **1.2 环境与工具** 本项目是在UBUNTU...
此外,Bash脚本允许我们将一系列命令组合起来,实现自动化任务,如文件备份、日志分析等。 在C#中,我们可以使用`System.Diagnostics.Process`类来调用外部命令,如Bash命令。通过`Process.StartInfo`属性设置...
对于文件,考虑将其移动到特定的回收站文件夹而非直接删除。 - **定期备份**:通过网络将数据库备份数据传输到不同的服务器或数据中心,实现数据的异地备份。 7. **倾听运维反馈**:积极听取运维人员的意见和建议...
Java虚拟机(JVM)的垃圾回收(Garbage Collection, GC)是Java程序性能优化的重要环节。本篇文章将深入解析JVM的垃圾回收机制,并针对Sun HotSpot 1.4.1版本的JVM,讨论如何调整堆内存的大小以优化GC性能。 首先,...
通过学习《深入解析Go》,不仅可以掌握Go语言的核心概念,还能深入了解其底层实现机制,这对于提高Go语言的编程技能和优化应用程序性能都大有裨益。本书适合已经具备一定Go语言基础并对其实现细节感兴趣的开发者阅读...
2. **内存管理**:Linux如何分配和回收内存,了解虚拟内存、页表、交换机制等,有助于编写内存高效的程序。 3. **文件系统**:研究Linux下的EXT4或其他文件系统的工作原理,以及文件I/O操作的底层实现。 4. **设备...
2. 内存管理包括内存分配、回收和虚拟内存的管理。 3. 文件系统实现了文件的创建、读写、删除和目录管理。 4. 设备管理支持设备的初始化、中断处理和IO操作。 5. 系统调用提供了用户程序与操作系统内核交互的接口。 ...
程序执行从`main`函数开始,通过函数调用实现复杂功能。例如,`main`函数可以调用其他函数进行特定任务的处理。 #### 4. 标准库函数 C语言提供了丰富的标准库函数,如`printf`、`scanf`等,用于简化常见任务的实现...
用户退出Shell时,控制权会返回给`init`,内核回收资源。 3. **命令执行流程** 用户输入的命令通过Shell解析,找到对应的可执行文件,由内核创建子进程执行。例如,执行`ls`命令时,Shell找到`/bin/ls`,内核创建...
链接是将独立的目标文件组合成可执行文件的关键步骤,对于程序的最终实现至关重要。 #### 第六章至第八章:进程管理、存储管理和I/O设备管理 这三个章节分别介绍了进程管理、存储管理和I/O设备管理的基本原理和...
Python库是开发者在进行Python编程时经常会用到的工具,它们提供了一系列预定义的功能和模块,可以帮助程序员快速、高效地实现特定任务。`gctree`是一个这样的库,它的版本为3.2.0,专为Python 3设计,可以在任何...
在Linux操作系统上运行C#程序,通常需要借助于开源的.NET框架实现——MONO。本文将详细介绍在Ubuntu和Fedora系统下安装MONO并执行C#程序的步骤。 首先,我们来了解一下MONO。MONO是一个开源的.NET框架实现,它使得...
内存泄露是程序运行时的一种常见问题,它发生在程序分配了内存但未能正确释放,导致这部分内存持续占用,随着时间推移,可能会耗尽系统的可用内存,从而影响程序甚至整个系统的性能。在本文中,我们将通过一个简单的...
1. **基本数据结构**:了解Go中如slice、map等基本数据结构的实现原理,可以帮助开发者更好地利用这些结构来提高程序性能。 2. **函数调用协议**:Go中的函数调用机制与其他语言有所不同,了解其内部工作原理对于...
使用Node.js的`empty-trash`模块,开发者可以轻松地集成到命令行应用程序或者自动化脚本中,实现定期或者按需清理垃圾文件的功能。例如,开发者可以创建一个定时任务,每天自动清空垃圾,以避免无用文件占用过多的...
2. **Shell**:Linux提供了命令行界面的shell,如Bash(Bourne-Again SHell),用户可以通过命令行输入指令与操作系统交互。Shell脚本允许用户编写自动化任务,提高了效率。 3. **文件系统**:Linux采用的是基于...