ITEEDU

   $ tree
.
|-- a
| `-- file1
`-- b
`-- a
`-- file2
执行mv命令:
  $ mv a b
mv: cannot move `a' to a subdirectory of itself, `b/a'

结果并不像在Windows下剪切+粘贴一样,把a/file1移动到b/a/下面,和file2放在一起,而是出错,不能执行该命令。
还要注意,mv作“改名”功能使用时(target是文件名或者不存在的目录名),其语义也和Windows下的改文件名操作或DOS下的ren命令有区别。命令:

 $ mv a b  

总结起来有以下几种情况 :
a是文件名,b不存在
a改名为b
a是文件名,b是文件名
a改名为b,原b被覆盖
a是文件名,b是目录名,b下没有名为a的文件或目录
a移动到b目录下
a是文件名,b是目录名,b下已有名为a的文件
a移动到b目录下,覆盖原b/a
a是文件名,b是目录名,b下已有名为a的目录

 cannot overwrite directory `b/a' with non-directory

a是目录名,b不存在
a改名为b
a是目录名,b是文件名

 cannot overwrite non-directory `b' with directory `a'

a是目录名,b是目录名,b下没有名为a的文件或非空目录
a移动到b目录下成为子目录
a是目录名,b是目录名,b下已有名为a的文件

 cannot overwrite non-directory `b/a' with directory `a'

a是目录名,b是目录名,b下已有名为a的非空目录

 cannot move `a' to a subdirectory of itself, `b/a'

mv命令的这些特性,只要把握住“硬链接”这个概念就可以很自然地理解了。