如何在终端/shell 中获取最近的地点?

如何在终端/shell 中获取最近的地点?

有什么方法可以获取在终端(osx)中导航的最近“位置”(目录)的列表?我的意思是,我想打开我的终端,输入一些命令,获取我最近去过的 2 或 3 个地方,然后去那里。

就像箭头对最近的命令所做的那样。

是否可以?

答案1

如果您的 shell 是zsh(据我所知是较新版本的 macos 中的默认设置),您可以设置选项autopushdset -o autopushd在您的 中~/.zshrc),这将导致zsh记住您去过的所有位置(当前工作目录,用cd//pushd更改)。popd

然后,您可以看到该堆栈:

dirs

或者dirs -v,查看堆栈上每个目录的索引,您可以在 或 中使用该索引cd +5,或者ls -ld ~+5用于第 5 个条目(传递的顶行是dirs输出中的当前目录)。

或者:

print -rC1 $dirstack

$dirstack在数组中公开该堆栈,没有当前工作目录)。

或者,如果您启用了带有说明的高级完成(请参阅compinstall),并且完成列表位于:

cd +<Tab>

或者

cd -<Tab>

或者对于~-or之后的任何命令~+

any cmd ~+<Tab>

例如,与

set -o autopushd
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' menu select=2
autoload -Uz compinit
compinit -i

在 中~/.zshrc,在访问了几个目录后,按Tab两次,我会得到一个菜单,例如:

% cd +1
Completing directory stack
[1 -- ~/Videos]
 2 -- ~/Downloads
 3 -- ~/
 4 -- /usr
 5 -- /tmp

我可以使用箭头键进行导航。

目录堆栈功能本身并不是 zsh 特定的。它和pushd//操作它的命令于 1980 年引入popd,后来被(1989 年的 1.02)和(1990 年的 1.0)复制。 ,也来自(1991 年在 2.0 中添加到 zsh)。/来自(1989),后来被(1991) 复制,而来自(1996),后来被(1997) 复制。 Only (也可以使用该堆栈,如 Silent )是特定的,并且其完成框架远远领先于和 现在(但正在被 赶上)。dirscshbashzshcd +5cd -5csh~+~-bashzsh~+5zshbashautopushdcdpushdzshbashtcshfish

相关内容