有没有办法在 bash 中多次 cd 返回?

有没有办法在 bash 中多次 cd 返回?

我经常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 中,您可以cdpushd.

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 个目录。

相关内容