如何通过 CD 转到已删除目录的父目录?(bash:cd:..:没有这样的文件或目录)

如何通过 CD 转到已删除目录的父目录?(bash:cd:..:没有这样的文件或目录)

我在 bash 中运行一些简单的命令,其中一个命令删除了我当前的工作目录(没有任何破坏性,我只是使用 git 签出了一个不存在该目录的分支)。

现在我被困在一个已删除的目录中并且 cd 似乎不想让我出去:

$ cd ..
bash: cd: ..: No such file or directory

退出该目录并返回其父目录的最简单方法是什么?

请注意,我所在的目录存储在 NTFS 分区上,这也许可以解释为什么cd ..会出现错误,而当在 Linux 中从已删除的目录执行 cd 时这种行为似乎不是常态。

(假设重新输入绝对目录路径并将其提供给 cd 在这里可以工作,但是父目录的路径真的很长,而且我很懒。有没有比重新输入其冗长的绝对路径更好的方法来到达父目录?)

答案1

cd 到绝对路径,而不是相对于已删除目录的路径。

例如cd /home/username/

答案2

由于 bash 似乎无法识别相对路径(如..本例),因此您必须使用绝对路径。例如:

cd ~/path/to/dir

要简单地返回父目录,您可以使用以下命令,这比重新输入所在目录的绝对路径要快得多:

cd "$(dirname "$(pwd)")"

这是一个简单的函数,您可以将其添加到.bashrc文件中,通过单个命令即可获得此功能(还支持一个参数,您可以使用它来指定向上移动的级别数):

# Allow easily going up multiple directories, even when the current directory
# is a deleted folder on an NTFS share.
function up() {
  local dir=`pwd`
  local n=${1:-1};
  for ((; n>0; n--)) {
    dir=`dirname "$dir"`
  }
  cd "$dir"
}

答案3

制表符

我建议你了解一下 SSH,大多数 shell 允许使用 tab 来简化输入命令。

如果你输入

光盘/小时

然后按 TAB,它将显示可以使用 Tab 键选中的目录列表,或者如果 / 中只有一个以字母 h 开头的目录(例如 home),它将自动填充为

cd /主页

一旦掌握了它,它可以节省你很多时间。

这解决了你的懒惰!

绝对路径

如您所知,您必须 CD 到绝对路径。

一个快速的方法是简单地运行

光盘

在大多数系统中,这将带您进入用户默认目录,通常是 /home/$user

答案4

我不确定你为什么会被卡住

[alexus@wcmisdlin02 ~]$ mkdir 1
[alexus@wcmisdlin02 ~]$ cd 1
[alexus@wcmisdlin02 1]$ rm -rf ../1
[alexus@wcmisdlin02 1]$ cd ..
[alexus@wcmisdlin02 ~]$ 

...但你总是可以跑cdcd ~

相关内容