有没有办法cd
退出刚刚删除的目录(上一级进入仍然存在的上层文件夹?
我经常遇到这样的情况:我为一个文件夹打开了一个控制台,然后我删除了包含临时测试数据的文件夹并创建了另一个文件夹。
但是,当我尝试保留已删除的文件夹时,两者cd ..
都只cd $(pwd)/..
会让我进入垃圾箱,而不是上层目录。
那么,目前的情况是:
$ mkdir -p /home/me/test/p1
$ cd /home/me/test/p1
现在我删除文件夹 p1
$ cd ..
me:~/.local/share/Trash/files$ ...
我现在正在寻找一种进入/home/me/test/
而不是进入垃圾箱的方法。有这样的命令吗?
答案1
PWD 变量保存当前路径定义。
升一级
cd $(dirname $PWD)
将扩展到
cd $(dirname /home/me/foo/bar/baz/deleteddirectory)
谁扩展到
cd /home/me/foo/bar/baz/
这假设您只删除一层目录。
答案2
shell 将当前工作目录的路径存储在变量 中PWD
。除非另有配置,否则这就是为 shell 指定的路径,即使目录已移动或涉及符号链接也是如此。因此,您可以使用它来更改目录的明显父目录,即使目录的实际位置不同。例如,即使是符号链接,也cd /foo/bar
设置PWD
为(使 shell 解析符号链接)并保持设置,即使目录随后被移动或删除。/foo/bar
bar
cd -P
PWD
PWD
因此,您可以通过获取并剥离最后一个斜杠后面的部分来更改为明显的父目录:
cd ${PWD%/*}
如果目录路径中有空格或通配符,则需要引号:
cd "${PWD%/*}"
在 zsh 中,这可以缩写为
cd $PWD:h
您也可以使用更长但也许更容易记住的
cd "$(dirname "$PWD")"
(如果目录名称中没有空格或通配符,则不需要双引号)。