如果我这样做:touch file; mv file /dev/null
作为根,/dev/null
消失。 ls -lad /dev/null
导致没有这样的文件或目录。这样会破坏/dev/null
像SSH 这样依赖的应用程序,并且可以通过这样做来解决mknod /dev/null c 1 3; chmod 666 /dev/null
。为什么将常规文件移动到该特殊文件会导致消失/dev/null
?
澄清一下,这是出于测试目的,我了解该mv
命令的工作原理。我很好奇的是为什么ls -la /dev/null
在用常规文件替换之前会显示预期的输出,但是之后却显示/dev/null
不存在,即使据称是通过原始mv
命令创建的,并且file命令显示了ASCII文本。我认为这必须是ls
命令行为与devfs
非特殊文件替换字符/特殊文件时的组合。这是在Mac OS X上,其行为可能在其他OS上有所不同。
rm
命令。
devfs
对普通文件很有趣。奇怪的是,您没有收到错误消息mv
。怎么样这样:touch testfile; mv testfile /dev
?
mv
只能在同一文件系统上是原子的。
/dev/null
。