离空格远点离rm更远点离rm -rf越远越好 星号“*”是罪魁祸首

     前几天,也即春节假期接近尾声(送年接财神)的时候,被GitLab的误删数据的事件震动了整个“数据库圈”
无论如何,我们多多少少都应该要从中吸取教训。从其他角度来看,还是要看使用命令的习惯。作为数据库或者
操作系统工作者,多多少少,或者说肯定会用到rm与rm -rf 命令的。至于rm与rm -rf 两个命令如何跟目录或文件名和空格“ ”或者
星号“*”搭配使用,这就是看操作者使用命令的习惯了。有人贪图方便,什么都用上rm或rm -rf跟星号“*”搭配,这个方便。
有时候,删除的东西特别多,不能一一地进行删除,这个时候,可以考虑用星号“*”代替多个文件或者目录名。我个人不常用星号“*”,
从平时的操作安全角度来考虑,我觉得这是个可靠的习惯。但是从速度的角度来考虑,这是个“太慢”的习惯。
    总而言之,我看到案例的文章的时候,我也是一时想不起来,这rm与rm -rf 跟空格有什么关系,尽管之前做过这两个命令搭配空格的
测试。看案例的时候,我是坐在回去工作的巴士上,我想想还是自己再次亲手测试一遍吧,于是打开电脑,在自己的测试环境坐在车上测试了一番:
以下就是当时车上的测试过程的命令):

    其实,经过以下测试之后,我还是认为:操作习惯最重要。还有就是:能够使用rm与rm -rf 误删除数据的最终的罪魁祸首还是你的操作习惯
以及星号“*”。你不用星号,就算你使用rm与rm -rf 命令的时候,没有星号的情况下,你怎么搭配空格“ ,都不会导致误删除数据。可以测试一番。

[oracle@susu research]$

[oracle@susu research]$ cd ..

[oracle@susu ~]$ cd mydoc

[oracle@susu mydoc]$ ls

susu1.txt  myawrrpt.lst  mysong.tet  prodawrrpt.lst

 

--创建测试目录:

[oracle@susu mydoc]$ cd ..

[oracle@susu ~]$

[oracle@susu ~]$

[oracle@susu ~]$ mkdir testdir

[oracle@susu ~]$

[oracle@susu ~]$ ls

afiedt.buf  backup  dirhome  homedir  logmnr  mydoc  mytest.doc  oradata  research  suxingkai.csv  testdir  users01.dbf

[oracle@susu ~]$

[oracle@susu ~]$ cd mydoc

[oracle@susu mydoc]$ ls

susu1.txt  myawrrpt.lst  mysong.tet  prodawrrpt.lst

[oracle@susu mydoc]$ pwd

/home/oracle/mydoc

--复制文件到测试目录:

[oracle@susu mydoc]$ cp * /home/oracle/testdir

--进入测试目录查看新复制的文件

[oracle@susu mydoc]$ cd ..

[oracle@susu ~]$

[oracle@susu ~]$ cd testdir/

[oracle@susu testdir]$ ls

susu1.txt  myawrrpt.lst  mysong.tet  prodawrrpt.lst


--创建另外的测试目录:

[oracle@susu testdir]$ cd ..

[oracle@susu ~]$ mkdir textdir

[oracle@susu ~]$

[oracle@susu ~]$ cd mydoc


--尝试复制文件到新的测试目录:

[oracle@susu mydoc]$ ls

susu1.txt  myawrrpt.lst  mysong.tet  prodawrrpt.lst

[oracle@susu mydoc]$

[oracle@susu mydoc]$

[oracle@susu mydoc]$ cp abc * /home/oracle/textdir

cp: cannot stat `abc': No such file or directory

[oracle@susu mydoc]$

[oracle@susu mydoc]$ cd ..

[oracle@susu ~]$

[oracle@susu ~]$

[oracle@susu ~]$ cp abc * /home/oracle/textdir

cp: cannot stat `abc': No such file or directory

cp: omitting directory `dirhome'

cp: omitting directory `homedir'

cp: omitting directory `logmnr'

cp: omitting directory `mydoc'

cp: omitting directory `oradata'

cp: omitting directory `research'

cp: omitting directory `testdir'

cp: omitting directory `textdir'

[oracle@susu ~]$ ls

afiedt.buf  backup  dirhome  homedir  logmnr  mydoc  mytest.doc  oradata  research  suxingkai.csv  testdir  textdir  users01.dbf

[oracle@susu ~]$

[oracle@susu ~]$


--测试目录里创建一个目录:

[oracle@susu ~]$ cd testdir

[oracle@susu testdir]$

[oracle@susu testdir]$ ls

susu1.txt  myawrrpt.lst  mysong.tet  prodawrrpt.lst

[oracle@susu testdir]$ mkdir mydir

[oracle@susu testdir]$ ls

susu1.txt  myawrrpt.lst  mydir  mysong.tet  prodawrrpt.lst


--新创建的目录里创建一个新文件:

[oracle@susu testdir]$ cd mydir

[oracle@susu mydir]$

[oracle@susu mydir]$ touch mydddd

[oracle@susu mydir]$ ls

mydddd

[oracle@susu mydir]$ cd ..

[oracle@susu testdir]$ cd ..

[oracle@susu ~]$

[oracle@susu ~]$ ls

afiedt.buf  backup  dirhome  homedir  logmnr  mydoc  mytest.doc  oradata  research  suxingkai.csv  testdir  textdir  users01.dbf


--查看另外的测试 目录:

[oracle@susu ~]$ cd textdir

[oracle@susu textdir]$ ls

afiedt.buf  backup  susu1.txt  myawrrpt.lst  mysong.tet  mytest.doc  prodawrrpt.lst  suxingkai.csv  users01.dbf

[oracle@susu textdir]$

[oracle@susu textdir]$ cd \

[oracle@susu ~]$

[oracle@susu ~]$ ls

afiedt.buf  backup  dirhome  homedir  logmnr  mydoc  mytest.doc  oradata  research  suxingkai.csv  testdir  textdir  users01.dbf

 

[oracle@susu ~]$

[oracle@susu ~]$ cd textdir/

[oracle@susu textdir]$ ls

afiedt.buf  backup  susu1.txt  myawrrpt.lst  mysong.tet  mytest.doc  prodawrrpt.lst  suxingkai.csv  users01.dbf

[oracle@susu textdir]$ mkdir hhdir

[oracle@susu textdir]$

[oracle@susu textdir]$ cd hhdir

[oracle@susu hhdir]$ touch hhtext

[oracle@susu hhdir]$ touch hh.text

[oracle@susu hhdir]$ ls

hhtext  hh.text

--尝试使用rm abc *删除当前目录的文件:--星号前有一个空格

[oracle@susu hhdir]$ cd ..

[oracle@susu textdir]$ ls

afiedt.buf  backup  susu1.txt  hhdir  myawrrpt.lst  mysong.tet  mytest.doc  prodawrrpt.lst  suxingkai.csv  users01.dbf

[oracle@susu textdir]$

[oracle@susu textdir]$ rm abc *

rm: cannot remove `abc': No such file or directory

rm: cannot remove `hhdir': Is a directory

[oracle@susu textdir]$ ls

hhdir

[oracle@susu textdir]$

#可知还剩下一个目录未被删除。

 

--再次测试:

[oracle@susu textdir]$ touch mysong.text

[oracle@susu textdir]$ ls

hhdir  mysong.text

[oracle@susu textdir]$

[oracle@susu textdir]$ touch yoursongs.text

[oracle@susu textdir]$ ls

hhdir  mysong.text  yoursongs.text

[oracle@susu textdir]$

[oracle@susu textdir]$ rm my *

rm: cannot remove `my': No such file or directory

rm: cannot remove `hhdir': Is a directory

[oracle@susu textdir]$

[oracle@susu textdir]$

[oracle@susu textdir]$ ls

Hhdir

--又再次创建测试文件:

[oracle@susu textdir]$ touch mysong

[oracle@susu textdir]$

[oracle@susu textdir]$

[oracle@susu textdir]$ touch yoursong

[oracle@susu textdir]$ ls

hhdir  mysong  yoursong

[oracle@susu textdir]$

--使用 rm my * -rf进行删除当前目录的所有文件与目录:

[oracle@susu textdir]$

[oracle@susu textdir]$ rm my * -rf

[oracle@susu textdir]$ ls

[oracle@susu textdir]$ ls

[oracle@susu textdir]$

 

--使用 rm my * -rf进行删除当前目录以my开头的文件与目录:

[oracle@susu testdir]$ ls

susu1.txt  myawrrpt.lst  mydir  mysong.tet  prodawrrpt.lst

[oracle@susu testdir]$

[oracle@susu testdir]$ rm -rf my*

[oracle@susu testdir]$ ls

susu1.txt  prodawrrpt.lst

--再次rm my * -rf尝试只删除当前目录以my开头的文件与目录:

[oracle@susu testdir]$ mkdir mydir

[oracle@susu testdir]$ touch mysong.tet

[oracle@susu testdir]$

[oracle@susu testdir]$ ls

susu1.txt  mydir  mysong.tet  prodawrrpt.lst

[oracle@susu testdir]$ touch myawrrpt.lst

[oracle@susu testdir]$ ls

susu1.txt  myawrrpt.lst  mydir  mysong.tet  prodawrrpt.lst

[oracle@susu testdir]$ rm -rf my *

[oracle@susu testdir]$ ls

[oracle@susu testdir]$

#发现当前目录下的文件与目录全部被删除了。

--考虑:rm与rm -rf删除文件或者目录时候带空格而不带星号的时候会是怎么样的结果呢?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2133093/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31392094/viewspace-2133093/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值