mv命令系统如何判断命令是改名字还是移动

收藏
Linux
10
Feb 1, 2018

mv命令怎么知道是想改名字还是想移动呢

比如 mv 123 456

456 既可以是一个名字也可以是一个路径

回答

Bravian回答

mv source target

这里 source 表示源文件或者源目录,target 表示目标文件或者目标目录

其判断逻辑是这样的:

1. 首先判断 target 是不是一个已经存在的目录

   1. 如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
   2. 如果目标文件不是目录文件,则源文件名(只能有一个源文件)会修改为目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,此时mv的作用就是和改文件名等效。
2. 另外,当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。所以,上面案例中先判断 test1 是不是已经存在的目录,经过检测发现是目录,那么就把源文件移动到 test1 下面。

(0)

提交成功