rm 命令是 Unix/Linux 操作系统中的基本命令之一。rm(即删除)命令用于删除 Linux 和其他类 Unix 操作系统上的文件和目录。此命令通常以静默方式运行,运行 rm 命令时应非常小心,因为一旦删除文件,就无法恢复文件和目录的内容。

Linux rm 命令

rm 删除命令行中指定的每个文件。 默认情况下,它不会删除目录。当使用 -r 或 -R 选项执行 rm 时,它会递归地删除任何匹配的目录、它们的子目录以及它们包含的所有文件。

rm命令的语法:

rm [选项] [-r 目录] 文件名

方括号中的项目是可选的。当仅与一个或多个文件的名称一起使用时,rm 删除所有这些文件而不需要用户确认。


以下示例将使你更好地了解该工具的工作原理。

如何使用 rm 命令删除文件

你所要做的就是将文件的名称(如果它们不在当前工作目录中,则连同路径一起)作为输入传递给 rm 命令。

以下示例中,rm 将立即删除名为 test1.txt、test2.txt

如果文件不存在或用户没有删除它的适当权限,则会返回错误消息。写保护的文件会在删除前提示用户确认(y 表示是,n 表示否)。文件位于即使这些文件没有写保护,写保护目录中的文件也永远无法删除。

如何强制 rm 忽略不存在的文件

-f(即强制)选项告诉 rm 删除所有指定的文件,无论是否写保护,而不提示用户。如果指定的文件不存在,它不会显示错误消息或返回错误状态。但是,如果尝试删除写保护目录中的文件,此选项将不会显示错误消息。


如何在每次删除之前使 rm 提示

-i(即交互式)选项告诉 rm 在删除每个文件和目录之前提示用户确认。如果同时指定了 -f 和 -i 选项,则指定的最后一个生效。


如何使用 rm 命令删除目录

作为安全措施,rm默认不删除目录,为了删除目录,需要使用-r选项,与-R选项相同,该选项递归删除参数中的目录及其内容列表;

rm -r [dir name]

也就是说,指定目录将首先清空所有子目录(包括其子目录和文件等)和文件,然后删除。通常会提示用户删除目录中的任何写保护文件,除非-使用 f 选项。

rm -rf [dir name]


如何让 rm 只删除空目录

尽管可以使用 rmdir 命令来删除目录,但可以(并且可能更容易)使用 rm -d 命令来代替。

如何强制 rm 发出操作的详细信息

如果你想在删除文件、目录时,提供详细的输出。可以使用 -v 命令行选项来完成。

Linux下rm命令代码实现

int main(int argc, char *argv[])
{while ((ch = getopt(argc, argv, "dfiRrv")) != -1)switch (ch) {case 'd':dflag = 1;break;case 'f':fflag = 1;iflag = 0;break;case 'i':fflag = 0;iflag = 1;break;case 'R':case 'r':         rflag = 1;break;case 'v':vflag = 1;break;case '?':default:usage();}argc -= optind;argv += optind;if (argc < 1) {if (fflag)return 0;usage();}signal(SIGINT, progress);checkdot(argv);if (*argv) {stdin_ok = isatty(STDIN_FILENO);if (rflag)rm_tree(argv);elserm_file(argv);}exit(eval);}

编译运行:

总结

rm 在这里代表删除。 rm 命令用于从 UNIX 等文件系统中删除文件、目录、符号链接等对象。 更准确地说, rm 从文件系统中删除对对象的引用,这些对象可能有多个引用(例如,具有两个不同名称的文件)。 默认情况下,它不会删除目录。

欢迎关注微信公众号【程序猿编码】,需要rm 命令完整源码的添加本人微信号(c17865354792)

Linux下rm命令详解及C/C++代码实现相关推荐

  1. Linux下dirname命令详解及C/C++代码实现

    dirname命令的基本用法非常简单--只需写下命令名,后跟文件的绝对名称即可. 在输出中,将获得完整的目录树,但文件名除外. linux dirname 命令 以下是 dirname 命令的通用语法 ...

  2. Linux下uniq命令详解及C/C++代码实现

    Linux uniq 命令用于从文件中删除所有重复的行. 此外,它还可用于显示任何单词的计数.仅重复行.忽略字符以及比较特定字段. 它是 Linux 系统中最常用的命令之一. uniq 命令使用 Un ...

  3. Linux下zcat命令详解及C/C++代码实现

    如果一个压缩文件非常大,而您只想查看文件的内容是什么. 由于在这种情况下,文件的解压将花费大量时间,因此为了节省时间并在不解压文件的情况下查看文件,可以使用zcat命令. zcat 命令 通常 zca ...

  4. Linux下chmod命令详解及C/C++代码实现

    Linux 中对文件的访问由文件权限.属性和所有权控制. 因此,只有授权的用户和进程才能访问文件和文件夹.本篇使用 chmod 命令更改文件和目录的访问权限. Linux 文件权限 在这之前,让我们先 ...

  5. Linux下touch命令详解及C/C++代码实现

    touch 命令是创建新的空文件的最简单方法.它还用于更改现有文件和目录的时间戳(即最近访问和修改的日期和时间),是 UNIX/Linux 操作系统中使用的标准命令. touch 命令 touch的语 ...

  6. Linux下date命令详解及C/C++代码实现

    Linux date 命令用于显示系统日期和时间. date 命令可以用于设置系统的日期和时间. 默认情况下,date 命令显示配置 unix/linux 操作系统的时区中的日期.如果你是超级用户 ( ...

  7. linux下dd命令详解

    linux下dd命令详解    名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...

  8. linux 命令xargs,Linux下xargs命令详解

    Linux下xargs命令详解 1. 简介   之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: find /sbin -pe ...

  9. linux下scp命令详解

    http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792179.html linux下scp命令详解 http://www.9usb.net/20 ...

最新文章

  1. 计算机在生物科学领域的应用论文,大学生物科学教学中计算机的应用
  2. 【jQuery 区别】attr()和prop()的区别
  3. 消息中间件:为什么我们选择 RocketMQ
  4. Android开发工具之Android Studio--如何打包sdk通过arr包的方式
  5. 《女仆咖啡帕露菲》香浓背后,激励的力量
  6. java.util.concurrent.locks.Lock 接口 源码
  7. c mysql 查不到数据_怎么检测不到MYSQL数据库的存在
  8. Mysql索引优化实例讲解
  9. java maven junit_【JUnit】JUnit 与 maven 集成
  10. vue父组件变量传递子组件_Vue.js 父组件向子组件传递数据通过 props
  11. java中菜单不显示_菜单不显示
  12. android+1m的大小,android raw读取超过1M文件的方法
  13. 数据库一键自动生成 Java 实体类和数据库文档
  14. 【数据预测】基于matlab斑点鬣狗算法优化BP神经网络数据预测【含Matlab 219期】
  15. 微型计算机ROW,微型计算机原理与汇编语言程序设计 第3章 80x86微处理器及其体系结构zrow0c_d.ppt...
  16. 微信小程序轮播中的current_五分钟掌握微信小程序轮播图
  17. wps重复上一步快捷键_word回到上一步快捷键是什么
  18. USB对拷线Linux,绿联USB对拷线升级软件方法说明
  19. vb常用内部函数(四):随机数函数
  20. 千岛湖2日团建旅行!游览天下第一秀水,感受湖岛遍布的磅礴气势!_团建拓展_嗨牛团建_杭州站...

热门文章

  1. iOS中图片@1x @2x @3x的意思
  2. CTFHub_2021-第四届红帽杯网络安全大赛-Web-WebsiteManger
  3. flv性能优化前端修改
  4. dota2 服务器尚未更新到最新版本,DOTA2更新不了怎么办 如何解决这些疑难杂症
  5. 【Go】Go语言视频零基础入门到精通项目实战web-基础篇
  6. 【数字化】面对数字化颠覆,成功企业应当坚守的10个原则
  7. TFS文档管理,上传文件失败报错【TF30042】The database is full. 数据库已满,解决办法及步骤
  8. Spring2.5+Struts2+Hibernate3整合之五
  9. buildroot 添加 loongarch 2k1000la uboot kernel 编译问题
  10. 计算机病毒:计算机病毒定义