我尝试删除“。” 目录。我以为我可以删除我的工作目录而不必进入父目录。
我的问题的重点是寻找有关 linux 系统如何工作以删除文件的一些见解。
我添加了一个符号链接到当前目录ln -s . aa。如果我执行cd aa,然后我执行pwd,响应是/home/sim/aa。
但是如果我执行/bin/pwd它会打印/home/sim(当前目录没有改变)。
这种差异从何而来?
我正在使用GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu).
我创建了一个虚拟目录hello并搬到了那里。进入后/tmp/hello,我删除了目录本身。
$ pwd
/tmp/hello
$ rmdir $PWD
Run Code Online (Sandbox Code Playgroud)
我检查了一下,我还在那个目录中。
$ pwd
/tmp/hello
Run Code Online (Sandbox Code Playgroud)
然后我尝试移动到目录本身,当然这是不可能的(即使我已经在那里):
$ cd $PWD
bash: cd: /tmp/hello: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是后来我尝试了cd .,因为它应该与cd $PWD. 这工作......不知何故:
$ cd .
cd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,现在我处于一个新的“东西”中:
$ pwd
/tmp/hello/.
Run Code Online (Sandbox Code Playgroud)
如果我尝试转到上一个目录,它当然会失败:
$ cd -
bash: cd: /tmp/hello: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有趣的是,man在那里甚至一个页面都不起作用:
$ …Run Code Online (Sandbox Code Playgroud) 假设我正在编辑一些文件。我有(说)一个终端打开和一个 gui 文件管理器。我目前在/my/very/long/and/winding/directory/path终端。在我的 gui 中,我/my/very/long/and/winding/directory
在终端中删除
Back,我尝试cd ..并收到错误消息,因为该目录不再存在。没什么大不了。我可以打字cd /my/very/long/and/winding回到我想去的地方。但是,如果我懒得输入,是否有返回到最近仍然存在的目录的好方法?
编辑:cd ../../在这种特殊情况下是一种解决方案。但我想知道是否有更一般的答案,我不知道我需要退多少步。