Linux下rm命令详解及C/C++代码实现
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++代码实现相关推荐
- Linux下dirname命令详解及C/C++代码实现
dirname命令的基本用法非常简单--只需写下命令名,后跟文件的绝对名称即可. 在输出中,将获得完整的目录树,但文件名除外. linux dirname 命令 以下是 dirname 命令的通用语法 ...
- Linux下uniq命令详解及C/C++代码实现
Linux uniq 命令用于从文件中删除所有重复的行. 此外,它还可用于显示任何单词的计数.仅重复行.忽略字符以及比较特定字段. 它是 Linux 系统中最常用的命令之一. uniq 命令使用 Un ...
- Linux下zcat命令详解及C/C++代码实现
如果一个压缩文件非常大,而您只想查看文件的内容是什么. 由于在这种情况下,文件的解压将花费大量时间,因此为了节省时间并在不解压文件的情况下查看文件,可以使用zcat命令. zcat 命令 通常 zca ...
- Linux下chmod命令详解及C/C++代码实现
Linux 中对文件的访问由文件权限.属性和所有权控制. 因此,只有授权的用户和进程才能访问文件和文件夹.本篇使用 chmod 命令更改文件和目录的访问权限. Linux 文件权限 在这之前,让我们先 ...
- Linux下touch命令详解及C/C++代码实现
touch 命令是创建新的空文件的最简单方法.它还用于更改现有文件和目录的时间戳(即最近访问和修改的日期和时间),是 UNIX/Linux 操作系统中使用的标准命令. touch 命令 touch的语 ...
- Linux下date命令详解及C/C++代码实现
Linux date 命令用于显示系统日期和时间. date 命令可以用于设置系统的日期和时间. 默认情况下,date 命令显示配置 unix/linux 操作系统的时区中的日期.如果你是超级用户 ( ...
- linux下dd命令详解
linux下dd命令详解 名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...
- linux 命令xargs,Linux下xargs命令详解
Linux下xargs命令详解 1. 简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: find /sbin -pe ...
- linux下scp命令详解
http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792179.html linux下scp命令详解 http://www.9usb.net/20 ...
最新文章
- 计算机在生物科学领域的应用论文,大学生物科学教学中计算机的应用
- 【jQuery 区别】attr()和prop()的区别
- 消息中间件:为什么我们选择 RocketMQ
- Android开发工具之Android Studio--如何打包sdk通过arr包的方式
- 《女仆咖啡帕露菲》香浓背后,激励的力量
- java.util.concurrent.locks.Lock 接口 源码
- c mysql 查不到数据_怎么检测不到MYSQL数据库的存在
- Mysql索引优化实例讲解
- java maven junit_【JUnit】JUnit 与 maven 集成
- vue父组件变量传递子组件_Vue.js 父组件向子组件传递数据通过 props
- java中菜单不显示_菜单不显示
- android+1m的大小,android raw读取超过1M文件的方法
- 数据库一键自动生成 Java 实体类和数据库文档
- 【数据预测】基于matlab斑点鬣狗算法优化BP神经网络数据预测【含Matlab 219期】
- 微型计算机ROW,微型计算机原理与汇编语言程序设计 第3章 80x86微处理器及其体系结构zrow0c_d.ppt...
- 微信小程序轮播中的current_五分钟掌握微信小程序轮播图
- wps重复上一步快捷键_word回到上一步快捷键是什么
- USB对拷线Linux,绿联USB对拷线升级软件方法说明
- vb常用内部函数(四):随机数函数
- 千岛湖2日团建旅行!游览天下第一秀水,感受湖岛遍布的磅礴气势!_团建拓展_嗨牛团建_杭州站...
热门文章
- iOS中图片@1x @2x @3x的意思
- CTFHub_2021-第四届红帽杯网络安全大赛-Web-WebsiteManger
- flv性能优化前端修改
- dota2 服务器尚未更新到最新版本,DOTA2更新不了怎么办 如何解决这些疑难杂症
- 【Go】Go语言视频零基础入门到精通项目实战web-基础篇
- 【数字化】面对数字化颠覆,成功企业应当坚守的10个原则
- TFS文档管理,上传文件失败报错【TF30042】The database is full. 数据库已满,解决办法及步骤
- Spring2.5+Struts2+Hibernate3整合之五
- buildroot 添加 loongarch 2k1000la uboot kernel 编译问题
- 计算机病毒:计算机病毒定义