有什么方法可以获取在终端(osx)中导航的最近“位置”(目录)的列表?我的意思是,我想打开我的终端,输入一些命令,获取我最近去过的 2 或 3 个地方,然后去那里。
就像箭头对最近的命令所做的那样。
是否可以?
答案1
如果您的 shell 是zsh
(据我所知是较新版本的 macos 中的默认设置),您可以设置选项autopushd
(set -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 )是特定的,并且其完成框架远远领先于和 现在(但正在被 赶上)。dirs
csh
bash
zsh
cd +5
cd -5
csh
~+
~-
bash
zsh
~+5
zsh
bash
autopushd
cd
pushd
zsh
bash
tcsh
fish