“rm -rf *“和 “rm -rf /*“的区别

"rm -rf "和 "rm -rf /"的区别

一旦你执行了上述"rm -rf /" 或者"rm -rf /*"命令,会删除Linux根目录下的所有文件,直接导致服务器瘫痪

1、rm 命令是remove 的缩写,Linux中 rm

命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

2、rm是一个危险的命令,使用的时候要特别当心,在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西。

"rm -rf "

命令会删除当前目录下的所有文件和子目录,但不会删除根目录或其它任何目录。因此,这个命令比较安全,因为它不会影响到整个系统的运行和稳定性。但是请注意,在某些情况下,这个命令可能会误删一些重要的文件,特别是如果你正在使用通配符()来删除一些不需要的文件时。

"rm -rf /*"

命令会删除根目录下的所有文件和子目录,这包括系统中所有的文件和目录。因此,这个命令会导致系统崩溃,因为它会删除一些系统必需的文件和目录,这可能会导致无法启动系统或者系统功能受到极大的破坏。这个命令是非常危险的,除非你知道自己在做什么,否则不要使用。

总之,"rm -rf " 命令只会删除当前目录下的文件和目录,**而"rm -rf /" 命令会删除整个系统中的所有文件和目录。**所以,请务必小心使用这些命令,确保你知道自己在做什么,并且非常小心。

常用范例

例一:删除文件系统会先询问是否删除

命令:rm 文件名

输入rm test.txt命令后,系统会询问是否删除,输入y后就会删除文件,不想删除则输入n。

java 复制代码
[root@localhost games]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月  13 11:19 test.txt

[root@localhost games]# rm test.txt 
rm:是否删除普通空文件 'test.txt'?y

[root@localhost games]# ll
总用量 0

例二:强行删除文件系统不再提示

命令:rm -f 文件名

java 复制代码
[root@localhost games]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月  13 11:23 test1.txt

[root@localhost games]# rm -f test1.txt 

[root@localhost games]# ll
总用量 0

例三:删除多个文件并在删除前逐一询问确认

命令: rm -i *.txt

java 复制代码
[root@localhost games]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月  13 11:25 test1.txt
-rw-r--r--. 1 root root 0 5月  13 11:25 test2.txt

[root@localhost games]# rm -i *.txt
rm:是否删除普通空文件 'test1.txt'?y
rm:是否删除普通空文件 'test2.txt'?y

[root@localhost games]# ll
总用量 0

例四:将 test1子目录及子目录中所有文件都删除

命令: rm -r test1

执行 rm -r命令如果该目录里面有文件,会首先进入该目录,把文件删除后再删除该目录。(先删除目录中的文件或子目录再删除该目录)

执行rm -rf 命令时则不会一一确认是否删除。

java 复制代码
[root@localhost test]# ll
总用量 0
drwxr-xr-x. 2 root root 23 5月  13 14:06 test1
drwxr-xr-x. 2 root root  6 5月  13 14:06 test2

[root@localhost test]# rm -r test1
rm:是否进入目录'test1'? y
rm:是否删除普通空文件 'test1/test1.txt'?y
rm:是否删除目录 'test1'?y

[root@localhost test]# ll
总用量 0
drwxr-xr-x. 2 root root 6 5月  13 14:06 test2

例五:删除以 t 开头的文件(不能删除目录)

命令: rm -- t

java 复制代码
[root@localhost test]# ll t*
总用量 0 
-rw-r--r--. 1 root root 0 5月  13 14:15 t
-rw-r--r--. 1 root root 0 5月  13 14:16 t1
drwxr-xr-x. 2 root root  6 5月  13 14:06 test2


[root@localhost test]# rm -- t* 
rm:是否删除普通空文件 't'?y 
rm:是否删除普通空文件 't1'?y 
rm: 无法删除'test2': 是一个目录

命令:rm ./t

java 复制代码
[root@localhost test]# ll t*
总用量 0
-rw-r--r--. 1 root root 0 5月  13 14:20 t2
-rw-r--r--. 1 root root 0 5月  13 14:20 t3
drwxr-xr-x. 2 root root  6 5月  13 14:06 test2

[root@localhost test]# rm ./t* 
rm:是否删除普通空文件 './t2'?y 
rm:是否删除普通空文件 './t3'?y 
rm: 无法删除'./test2': 是一个目录 

[root@localhost test]# ll t* 总用量 0
drwxr-xr-x. 2 root root  6 5月  13 14:06 test2

例六:删除当前目录下除隐含文件外的所有文件和子目录(提醒是否删除,二次确定)

java 复制代码
rm -r *

例七:删除某一指定目录下除隐含文件外的所有文件和子目录(强制删除不提醒)

java 复制代码
rm -rf 目录/*



但是程序员应该养成好的习惯,慎用rm命令,用mv命令代替

推荐mv实现步骤:

1、打开一个终端,输入命令:vim ~/.bashrc

2、在打开的文件最后加入如下代码:

java 复制代码
mkdir -p ~/.trash   #在家目录下创建一个.trash文件夹(隐藏文件,ls -a 查看)
alias rm=del        #使用别名del代替rm   
del()               #函数del,作用:将rm命令修改为mv命令
{  
  mv $@ ~/.trash/  
}  
cleardel()          #函数cleardel,作用:清空回收站.trash文件夹,y或Y表示确认,n表示取消
{  
    read -p "clear sure?[Input 'y' or 'Y' to confirm. && Input 'n' to cancel.]" confirm   
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf ~/.trash/*   
}  

3、保存修改并退出

4、使设置生效:在终端下输入source ~/.bashrc。

5、如果没有生效,请关闭终端重新打开也可以,本步骤同4步骤(source - ~/.bashrc)作用相同。至此,已经设置完成,可以在终端下进行测试了。

测试结果(命令总结)

1、删除文件

del [文件名]

rm [文件名]

del *

rm *

2、清空回收站(即:清空.trash文件夹)

cleardel

注:该命令会有一个是否删除确认,y或Y表示确认删除,n表示取消删除。

注:rm命令已经删除,所以要彻底删除文件的话,可以先del删除文件到垃圾箱,然后进入~/.trash文件夹使用cleardel命令来彻底清除垃圾箱里的所有文件。

相关推荐
DN金猿33 分钟前
git命令恢复/还原某个文件、删除远程仓库中的文件
git
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
日记跟新中1 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
码农君莫笑2 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
明 庭2 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
BUG 4042 小时前
Linux——Shell
linux·运维·服务器
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
yang_shengy2 小时前
【JavaEE】网络(6)
服务器·网络·http·https