我经常cd -
回到我原来的地方。如何在 bash 中多次执行此操作?或者 zsh 或其他一些工具会支持这个吗?
小智 55
在 zsh 中,有一个auto_pushd
选项。此选项使cd
行为类似于pushd
. 然后您可以使用popd
返回到以前的目录。
~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $
Run Code Online (Sandbox Code Playgroud)
在 Bash 中,您可以别名cd
为pushd
.
alias cd=pushd
Run Code Online (Sandbox Code Playgroud)
这样做的一个缺点是您将丢失cd
的三个标志。从cd
帮助条目:
-L 强制跟随符号链接
-P 使用物理目录结构而不跟随符号链接
-e 如果提供了 -P 选项,并且无法成功确定当前工作目录,则以非零状态退出
如果您不得不使用实际的cd
内置函数而不是别名,您可以使用以下其中一种:
'cd'
- 引用该命令会使 shell 不解析别名并使用普通的 cd。\cd
- 反斜杠引号字符。如果引用单词的一个字符,shell 会将整个单词视为引用。builtin cd
- 这直接告诉 shell 使用内置而不是别名。小智 24
这是一种方便快捷地为目录添加书签并跳回它们的快速而肮脏的方法:
$ a() { alias $1="cd $PWD"; }
Run Code Online (Sandbox Code Playgroud)
去某个地方并输入:
$ a 1
Run Code Online (Sandbox Code Playgroud)
您现在有一个名为的命令1
,它执行cd
当前的目录。稍后只需键入:
$ 1
Run Code Online (Sandbox Code Playgroud)
然后,回到那个目录。我觉得这非常有用。
小智 19
我找到了一个脚本,可以在这里找到,它为我解决了这个问题。有了这个,您可以键入cd --
以查看您使用的最后 10 个目录。它看起来像这样:
0 ~/Documents/onedir
1 ~/Music/anotherdir
2 ~/Music/thirddir
3 ~/etc/etc
Run Code Online (Sandbox Code Playgroud)
去~/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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20297 次 |
最近记录: |