我在 Visual Studio Code 中的 Git Bash 终端中工作。出于某种原因,当终端的行为发生变化时,如果我执行ls
,结果将是
ls: cannot open directory '.': No such file or directory
重新启动新终端可以解决问题,所以我不需要帮助来修复它,但我想知道为什么这甚至可能。当前目录怎么可能.
不存在?
答案1
当当前工作目录被删除或者移离你当前工作目录时,就会发生这种情况。
使用两个终端/会话的示例(我将在每个命令前面放置一个无操作: 1;
和来指示您应该使用哪个会话;您甚至可以安全地复制和粘贴这些提示):: 2;
: 1; mkdir -p /tmp/dir/sub
: 1; touch /tmp/dir/sub/{1..4}.txt
: 1; ls /tmp/dir/sub
此时,您可以在第一个会话中看到我们有四个(空)文件,1.txt
到4.txt
。现在切换到第二个会话:
: 2; cd /tmp/dir/sub
: 2; ls
正如您所期望的,您也可以在这里看到这四个文件。现在我们将目录从会话 2 下移出:
: 1; mv /tmp/dir/sub /tmp/dir/other
: 1; ls /tmp/dir/other
您仍然可以看到这些文件,但我们已将目录从 重命名sub
为other
。让我们在第 2 节中回顾一下:
: 2; ls
ls: cannot open directory '.': No such file or directory
哎哟!让我们检查一下我们认为应该在哪里,然后尝试改回当前目录:
: 2; pwd
/tmp/dir/sub
: 2; cd "$(pwd)"
-bash: cd: /tmp/dir/sub: No such file or directory
好吧。此会话现已丢失。最好的办法是从(新的)正确目录重新开始:
: 2; cd /tmp/dir/other
: 2; ls
1.txt 2.txt 3.txt 4.txt