我在 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 ~]$
...但你总是可以跑cd
或cd ~