我有几个子目录很深,我输入cd ..
并收到此错误:
cd: ..: No such file or directory
我很困惑——当然有一个父目录,我在里面!稍微挖掘一下,我的同事从我下面重命名了一个祖父目录,当我尝试移动到我的父目录时,出现了上述错误。我试图像这样重现这个:
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> pwd
/n01/data/adf/temp/TEMPTEST/SUB1/SUB2
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> mv /n01/data/adf/temp/TEMPTEST /n01/data/adf/temp/NEWTEMPTEST
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> pwd
/n01/data/adf/temp/NEWTEMPTEST/SUB1/SUB2
Run Code Online (Sandbox Code Playgroud)
现在我迷路了,漂泊不定,更改到父目录会给我带来与以前相同的错误。
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> cd ..
server|/n01/data/adf/temp/NEWTEMPTEST/SUB1>
Run Code Online (Sandbox Code Playgroud)
没有错误。我成功更改了目录。发生了什么?为什么这个错误不像第一次?
小智 5
重命名父目录不会导致这样的错误。但是,删除将例如:
# mkdir -p some/deep/path
# cd some/deep/path
# rm -r some/deep/path
# cd ..
error: No such file or directory
Run Code Online (Sandbox Code Playgroud)
Linux 中本身没有“重命名”命令。你可以“移动”东西。在同一文件系统内移动时,这等同于重命名。但是,在文件系统之间移动时,这实际上是一个复制/删除操作,这可能会导致与上图类似的情况,例如:
# mkdir -p /fs1/a/b
# cd /fs1/a/b
# mv /fs1/a /fs2/a
# cd ..
error: No such file or directory
Run Code Online (Sandbox Code Playgroud)
when/fs1
和/fs2
是不同的文件系统(在这种情况下是挂载点)。