首页 技术 正文
技术 2022年11月16日
0 收藏 812 点赞 2,866 浏览 2860 个字

rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

1、命令格式:

  rm [选项] 文件

2、命令功能:

  删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

3、命令参数:

  -f, --force    忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 输出版本信息并退出

4、常用实例:

(1)、删除文件file,有时系统会先询问是否删除。

命令:

  rm 文件名

输出:

felix@felix-computer:~/test$ ls
aaa.txt
felix@felix-computer:~/test$ rm aaa.txt
felix@felix-computer:~/test$ ls
felix@felix-computer:~/test$

说明:

有时候,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。

(2)、强行删除file,系统不提示。

命令:

  rm -f 文件名

输出:

felix@felix-computer:~/test$ ls
aaa.txt
felix@felix-computer:~/test$ rm -f aaa.txt
felix@felix-computer:~/test$ ls
felix@felix-computer:~/test$

(3)、删除任何.txt文件;删除前逐一询问确认

命令:

  rm -i *.txt

输出:

felix@felix-computer:~/test$ ls
a.txt b.txt
felix@felix-computer:~/test$ rm -i *.txt
rm:是否删除普通空文件 'a.txt'? y
rm:是否删除普通空文件 'b.txt'? y
felix@felix-computer:~/test$ ls
felix@felix-computer:~/test$

(4)、将test1目录以及子目录中的所有文件删除

命令:

  rm -r test1    如果要显示提示: rm -ri test1

输出:

felix@felix-computer:~/test$ ls
test1
felix@felix-computer:~/test$ find ./ -type f
./test1/t.txt
felix@felix-computer:~/test$ rm -ri test1/
rm:是否进入目录'test1/'? y
rm:是否进入目录'test1/test2'? y
rm:是否删除目录 'test1/test2/test3'? y
rm:是否删除目录 'test1/test2'? y
rm:是否删除普通空文件 'test1/t.txt'? y
rm:是否删除目录 'test1/'? y
felix@felix-computer:~/test$

(5)、删除test2子目录中的所有文件,并且不一一确认。

命令:

  rm -rf test2

输出:

felix@felix-computer:~/test$ mkdir -p test2/test3/test4
felix@felix-computer:~/test$ touch test2/aaa.txt test2/test3/bbb.txt test2/test3/test4/ccc.txt
felix@felix-computer:~/test$ find ./ -type f
./test2/test3/test4/ccc.txt
./test2/test3/bbb.txt
./test2/aaa.txt
felix@felix-computer:~/test$ rm -rf test2/
felix@felix-computer:~/test$

(6)、自定义回收站功能

命令:

先执行:
myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
再执行:
alias rm='myrm'

输出:

felix@felix-computer:~/test$ myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
felix@felix-computer:~/test$ alias rm='myrm'
felix@felix-computer:~/test$ mkdir -p test1/test2/test3 && touch {1,2,3,4}.txt
felix@felix-computer:~/test$ ls
1.txt 2.txt 3.txt 4.txt test1
felix@felix-computer:~/test$ rm *
moved to /tmp/回收站/2018_11_04_12_37_25 ok
felix@felix-computer:~/test$ ls /tmp/回收站/2018_11_04_12_37_25
1.txt 2.txt 3.txt test1
felix@felix-computer:~/test$ ls
felix@felix-computer:~/test$

说明:

a、
myrm()
{
D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S);
#在/tmp文件夹中创建名为“当前日期”的文件;
#其中“date+%Y_%m_%d_%H_%M_%S”是规定了日期的输出格式;
mkdir -p $D;
#以变量D中的路径创建文件夹。
mv "$@" $D && echo "moved to $D ok";
#将所要删除的文件移入变量D中的文件夹内,移入成功后,输出移动成功。
}
b、
alias rm='myrm'
#命令别名定义方式,此定义成功后,无论输入rm或myrm系统都会做出相同操作。
c、
移入的是linux中的/tmp/目录下,该目录会自动定时清理,如果要恢复删除的文件,需要在清理之前恢复。比如Ubuntu系统是每次重启自动清理。
d、
如果想恢复rm为原来的rm操作,执行:alias rm=/bin/rm
e、
自定义回收站的本质是mv操作,所以加的参数都是mv的参数

注意:如果需要每次使用rm命令都执行上述回收站功能,需要修改.bashrc 文件

在.bashrc 文件下面添加以下两行

myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
alias rm='myrm'

添加完后执行:source .bashrc

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,020
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,772
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,850