https://www.bilibili.com/video/BV1qN411K7W3?p=45&vd_source=af344e7a835699396aa0d6ed5b249a45
出现在 5 分 52 秒,mv webapps.dict webapps ,因为两个都是目录,所以 webapps.dict 重新命名为 webapps ,为何 ls -l webapps 里面没东西?
mv 功能分为重命名和移动,两种到底如何区分?
1
busier 264 天前 via iPhone
重命名和移动本质就是同一件事!
|
2
jiaoyidongxi 264 天前
他多按了个补全 /,变成移动命令了,webapps.dict 整个文件夹移动到 webapps 里去了,他对着 webapps 里打 ls -l, 显示的是 webapps.dict 这整个文件夹。
|
3
jiaoyidongxi 264 天前
不对,不对,混乱了…… 刚在 powershell 试了下, 跟多个 / 完全无关……
|
4
jiaoyidongxi 264 天前
mv 的重命名文件夹的逻辑是当前没有相同名的文件夹才会生效,不然就会变移动命令。
|
5
Dffcc OP @jiaoyidongxi 我觉得像 1 楼讲的,纯粹只移动而己
|
6
dhb233 264 天前
https://man7.org/linux/man-pages/man1/mv.1p.html
看起来执行重命名的条件是,只有 2 个参数,并且第二个参数不是目录,或者指向目录的符号链接的情况下,才执行重命名操作。 |
7
dorothyREN 264 天前
目标是已存在的目录的话就是移动
|
8
Dffcc OP 怎么越来越复杂?
|
9
cosette 264 天前
mv 命令的第二个参数如果是已经存在的目录,则执行的是移动。
移动的情况比较简单,前面的参数(目录、文件……)移动到最后一个参数(已经存在的目录)下面。mv 不会帮你自动创建不存在目录。 mv webapps.dict webapps 是把 webapss.dict 整个文件夹移动到 webapps 下面,而 mv webapps.dict/* webapps 是把 webapps.dict 文件下面的内容移动到 webapps 下面。 |
10
Dffcc OP 他这样写蛮奇怪的,因为前面的父目录没写,会误会为取代
|
11
vituralfuture 264 天前 via Android 1
不管是移动还是重命名,都是对目录文件中的目录项(dirent)进行操作,目录项一般有两项内容:文件名,inode 号,例如重命名就是目录项记录的文件名,移动就是将一个目录项从一个目录文件中移除然后插入到另一个目录文件中
这也解释了为什么删除、移动文件不需要拥有文件的读写权限,因为这些操作只读写了文件所在的目录文件,文件并没有被碰过 |
12
SenLief 264 天前
mv 重命名和移动,我觉得最简单的理解就是,如果在同一个目录下操作就是重命名,如果不在同一目录操作就是移动,我自己用就是遵循这个逻辑。
有一种情况比较特殊,例如 mv test.txt ../a.txt 这种情况,我个人理解是先移动再重命名。 |
13
coolloves 264 天前
man mv 就有答案了
-------- DESCRIPTION Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. |
14
Dffcc OP 为什么 Totol=0 ,下面却有出现目录呢?
|