关于mv命令,系统是如何区分是移动还是重命名
1.关于mv命令,系统是如何区分是移动还是重命名
2.Linux_Centos_yum报错总结引入:
精简回答版:重命名的本质仍是移动覆盖 ,所以不存在应该如何区分的问题
最近学习到linux基础命令中的mv命令,了解到mv命令的作用是对文件的移动和重命名,但自己一直想不明白系统是如何分辨该文件是移动or重命名,所以做了如下测试:
mv命令格式:mv 源文件 目标文件
根据猜想测试:
猜想1:目标文件若不存在,就创建目标文件,然后将源文件覆盖新目标文件达到重命名的目的
test1:源文件和目标文件在同一目录下,测试重命名,利用inode信息判断是否是同一个文件
在/root/test1目录下新建文件testmv_1.txt
记录testmv_1.txt的inode & 使用mv命令将testmv_1.txt重命名 & 查看重命名后文件的inode
结果:目标文件inode信息和源文件inode信息相同,所以重命名的本质依旧是移动覆盖
猜想2:有猜想1的结果发散:若目标文件存在且和源文件有不同的内容,移动文件之后目标文件inode也变更为源文件inode
test2:在不同目录下分别创建源文件和目标文件
源文件为/root/test1/testmv_2.txt
目标文件为/root/test2/testmv_3.txt
使用mv命令 & 查看目标文件的inode
结果:目标文件的inode更改为源文件的inode(17168517在上文中提到过,是testmv_2.txt的inode)
结论:
mv命令可以看作为剪切,将源文件的全部信息覆盖给目标文件,不仅仅是文件的内容。
重命名的本质也是移动覆盖,因为目标文件不存在便创建,之后用源文件覆盖全部信息。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤