命令行 - 为什么将目录移动到/dev/null 危险?

分享于 

2分钟阅读

ubuntu

  繁體

问题

我尝试将test_dir目录移动到/dev/null时,收到消息


mv: cannot overwrite non-directory '/dev/null' with directory 'test_dir/'



sudo mv ~ /dev/null


答案1

你不能把东西移动到/dev/null - 这是一个特殊的文件,只是重定向(变成虚无),如果尝试将目录移到该目录,文件系统将提示你,如果尝试将文件移至该目录,则可能最终将其替换。

存在风险。


$ echo"this is my file" > test


$ cat test


this is my file



$ sudo mv test /dev/null


$ cat /dev/null


this is my file



# Fix this!


$ sudo rm /dev/null


$ sudo mknod -m 0666 /dev/null c 1 3




答案2

/dev/null只是一个文件,它是一个"特殊"文件,但它不是文件。也就是说,你永远不能运行这个命令:


$ mv ~ /dev/null



mv命令不允许这样做,因为你正在将目录移动到一个文件,这并不合理,mv知道这一点。


$ mkdir dir


$ touch afile


$ mv dir afile


mv: cannot overwrite non-directory 'afile' with directory 'dir'



如果你试图复制一个常规文件/dev/null,会提示不能复制,因为这是一个字符文件。


$ cp ~/bzip2_1.0.6-4_amd64.deb /dev/null


$ ls -l |grep null


crw-rw-rw- 1 root root 1, 3 Mar 16 14:25 null



对于这个文件,你唯一能做的就是,mv到另一个文件,或删除它。


$ mv /path/to/afile /dev/null




`... < /dev/null` 




COM  COMM  DIR  Comma  命令行  MOV  
相关文章