我经常cd -
回到原来的地方。如何在 bash 中多次执行此操作?或者 zsh 或其他工具会支持这个吗?
答案1
在 zsh 中,有一个auto_pushd
选项。此选项使cd
行为类似于pushd
.然后您可以使用popd
返回到以前的目录。
~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $
在 Bash 中,您可以cd
为pushd
.
alias cd=pushd
这样做的一个缺点是您将失去cd
的三个标志。从cd
帮助条目:
-L 强制遵循符号链接
-P 使用物理目录结构而不遵循符号链接
-e 如果提供了 -P 选项,并且无法成功确定当前工作目录,则以非零状态退出
如果您必须使用实际的cd
内置函数而不是别名,您可以使用以下之一:
'cd'
- 引用该命令使 shell 不解析别名并使用普通 cd。\cd
- 反斜杠引用字符。如果您引用单词的一个字符,shell 会将整个单词视为被引用。builtin cd
- 这直接告诉 shell 使用内置函数而不是别名。
答案2
这是一种快速但肮脏的方法,可以方便地为目录添加书签并跳回它们:
$ a() { alias $1="cd $PWD"; }
去某个地方并输入:
$ a 1
您现在有一个名为的命令1
,它可以执行cd
当前的目录。稍后只需输入:
$ 1
很快,回到那个目录。我发现这非常有用。
答案3
巴什
我找到了一个可用的脚本这里,这为我解决了这个问题。通过此命令,您可以键入内容cd --
来查看您最近使用过的 10 个目录。它看起来像这样:
0 ~/Documents/onedir
1 ~/Music/anotherdir
2 ~/Music/thirddir
3 ~/etc/etc
转到~/Music/thirddir
只需键入cd -2
桀骜
oh-my-zsh 为此提供了一些非常好的功能(至少我认为是 oh-my-zsh 设置了这个)。
基本上,d
别名为dirs -v | head -10
dirs
是 zsh 内置命令,显示您最近访问过的目录。
此外,所有数字的1
别名为cd -1
等等9
。
实际上,它的工作原理如下:
$ pwd
/home/me/Documents/gems/java_regex/lib
$ d
0 ~/Documents/gems/java_regex/lib
1 ~/Documents/gems/java_regex
2 ~/Documents/gems
3 ~/Documents
4 ~
$ 2
~/Documents/gems
$ pwd
/home/me/Documents/gems
答案4
是的。我们可以让您的cd
命令更加强大。 Bash 配置文件允许我们按照我们想要的方式自定义它。
我们可以cd
使用别名
例如 :
alias ..5="cd ../../../../.."
这将使您向上移动 5 个目录。