Linux管理文件命令(2)rm命令-删除文件或者目录

这篇具有很好参考价值的文章主要介绍了Linux管理文件命令(2)rm命令-删除文件或者目录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、rm命令的介绍

二、命令语法及参数

三、参考实例 

四、删错文件如何恢复


前言

rm是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行“rm -rf /*”命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。

一、rm命令的介绍

rm命令来自于英文单词remove的缩写,作用是用来删除文件或者目录的命令,一次可以删除多个文件,或者递归删除目录及目录下的所有子文件。

二、命令语法及参数

还是一样先通过man查看语法和参数

语法: rm [参数] file

NAME
       rm - 移除文件或者目录

总览
       rm [options"]file...

POSIX(Portable Operating System Interface 可移植的操作系统接口) 选项:
       [-fiRr]

GNU 选项 (最短格式):
       [-dfirvR][--help][--version][--]

GNU选项
       -d,--directory
              用unlink(2)来替代rmdir(2)移除目录,而且不要求目录为空
              移除目录使用的方式是unlink(2),而非rmdir(2),
              且在试图unlink目录之前不要求其为空。
              这仅在你有合适权限时才能生效。
              因为unlink一个目录会导致在删除目录下的文件非关联化,
              因此聪明的方法是在执行此之后fsck(8)文件系统。

       -f,--force
              忽略不存在的文件,并且从不向用户提示。

       -i,--interactive
              提示是否移除每个文件。如果回答是否定的,文件将被跳过。

       -r,-R,--recursive
              递归地移除目录中的内容。

       -v,--verbose
              在移除每个文件之前打印其名称。

可以看到的是参数并不是很多,常用的参数就是这几个了

-f 强制删除(不二次询问)
-i 删除前会询问用户是否操作
-r/R 递归删除
-v 显示指令的详细执行过程

三、参考实例 

1)可以看到的是rm -f 无法删除目录,加上-r代表递归删除,-rf一起就是强制删除目录了

[root@localhost ~]# mkdir -p /data/test
[root@localhost ~]# touch /data/test/{a..f}.txt
[root@localhost ~]# rm -f /data/test/
rm: 无法删除"/data/test/": 是一个目录
[root@localhost ~]# rm -rf /data/test/

[root@localhost ~]# rm -r /data/test/
rm:是否进入目录"/data/test/"? y
rm:是否删除普通空文件 "/data/test/a.txt"?y
rm:是否删除普通空文件 "/data/test/b.txt"?y
rm:是否删除普通空文件 "/data/test/c.txt"?y
rm:是否删除普通空文件 "/data/test/d.txt"?y
rm:是否删除普通空文件 "/data/test/e.txt"?y
rm:是否删除普通空文件 "/data/test/f.txt"?y
rm:是否删除目录 "/data/test/"?y
[root@localhost ~]# 

若只使用-r是可以删除目录的,但会有提问逐一确认是否要删除文件信息,很显然不加-f要显得繁琐很多;生产过程中建议能不使用-f就不使用-f,就算要用也要确认再三。

2)通过命令alias -p 可以看到rm='rm -i',默认敲这个rm命令就等于rm -i,表删除前会询问用户是否操作的提问

[root@localhost ~]# alias -p
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

3)加-v参数则会显示命令执行的过程,若一口气删除的文件比较多,可以直接看到要删除文件的文件名

[root@localhost ~]# rm -rfv /data/test/
已删除"/data/test/1.txt"
已删除"/data/test/2.txt"
已删除"/data/test/3.txt"
已删除"/data/test/4.txt"
已删除"/data/test/5.txt"
已删除"/data/test/6.txt"
已删除目录:"/data/test/"
[root@localhost ~]# 

四、删错文件如何恢复

        由于centos7以上的系统是搭配xfs的文件系统类型,此系统自带有工具,可备份还原,所以这里演示是以centos6的系统来做测试,centos6系统是搭配ext4的文件系统类型,所以可以用这个命令来做为恢复的准备工具。

4.1 准备实验环境、工具

系统版本和IP

cat /etc/redhat-release
CentOS release 6.8(Final)

ifconfig eth0 | awk -F ":" 'NR==2{print $2}'| awk '{print $1}'
192.168.212.206

工具:extundelete

4.2 增加硬盘,做挂载操作

        虚拟机上加硬盘是需要关机操作的,而物理机一般是不需要,大部分都支持热拔插的功能。 

Linux管理文件命令(2)rm命令-删除文件或者目录

fdisk /dev/sdb   #分区
n
p
1
+2G
w


mkfs.ext4 /dev/sdb1  #格式化

mkdir /sdb1  创建挂载点
mount /dev/sdb1 /sdb1  #挂载

 4.3 创建目录和文件

复制了一些参考文件和创建了几个有数据的文件,其中c和kong.txt是无数据的。 

 Linux管理文件命令(2)rm命令-删除文件或者目录

 下面开始删除文件

Linux管理文件命令(2)rm命令-删除文件或者目录

 4.4 使用工具进行恢复

4.4.1解压文件

Linux管理文件命令(2)rm命令-删除文件或者目录

 4.4.2 进入到文件进行编译并安装需要的程序

cd extundelete-0.2.4  #进入目录
yum install gcc-c++ *ext2fs* -y   #下载所需软件包
./configure     #启动服务
make && make install  #开始编译

4.5 开始恢复

4.5.1 查看删除文件的inode值

extundelete /dev/sdb1 --inode 2

Linux管理文件命令(2)rm命令-删除文件或者目录

 4.5.2 恢复inode值为19的文件

extundelete /dev/sdb1 --inode 12

 在RECOVERED_FILES中显示有恢复的文件信息,使用md5sum查看文件和源文件inode是用一样的

Linux管理文件命令(2)rm命令-删除文件或者目录

 4.5.3 以文件名的方式进行恢复

extundelete /dev/sdb1 --restore-file hosts

Linux管理文件命令(2)rm命令-删除文件或者目录

4.5.4 以目录的方式进行恢复

extundelete /dev/sdb1 --restore-directory a

Linux管理文件命令(2)rm命令-删除文件或者目录 

 4.5.5 恢复所有文件

extundelete /dev/sdb1 --restore-all

Linux管理文件命令(2)rm命令-删除文件或者目录

 4.5.6 对比

Linux管理文件命令(2)rm命令-删除文件或者目录Linux管理文件命令(2)rm命令-删除文件或者目录

 最开始创建的文件和目录,和恢复了所有数据的文件和目录,发现有c目录和kong.txt并没有恢复,这个是因为ext文件系统中,extundelete恢复数据,默认情况会认为空目录和空文件没有恢复的必要。

 文章来源地址https://www.toymoban.com/news/detail-469358.html

到了这里,关于Linux管理文件命令(2)rm命令-删除文件或者目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包