Zsh:以相反的顺序目录

Ame*_*ina 1 shell zsh cd-command

我对如何dirs工作感到有些困惑。文档说:

目录

不带参数,打印目录堆栈的内容。使用pushd命令将目录添加到此堆栈,并使用cdpopd命令删除。

一季度。我从来没有使用popd也没有pushd,但我注意到,dirs跟踪在那里我一直目录(这对我来说意味着,这cd 增加了,而不是移除了,目录栈)

Q.2使用 长时间会话后cd,通常dirs会打印一长串目录,但此列表首先打印最近的目录,并以最后一个目录结束,因此如果我有一个长列表,屏幕会滚动,然后我无法轻易看到最新的目录集(通常是我最感兴趣的目录)。

如何以相反的顺序打印目录列表?

我试过了dirs | sort -r,但这不能正确地对条目进行排序,例如我得到

20 /foo20/bar
2  /foo2/bar
19 ...
18
...
16
11
10
1
0
Run Code Online (Sandbox Code Playgroud)

未分类的原件看起来像

1 /foo/bar
2 /foo2/bar
3  ...
..  
9
10
11
..
20
21
..
30
Run Code Online (Sandbox Code Playgroud)

qqx*_*qqx 5

sort默认情况下根据 ASCII 值进行排序,这将无法正确排序具有不同位数的数字。您可以使用该-n选项告诉它根据前导数值进行排序。

dirs -v | sort -nr
Run Code Online (Sandbox Code Playgroud)

或者,由于 come 的输出dirs已经排序,但您只想将其转换为相反的顺序,您可以使用该tac命令(cat相反):

dirs -p | tac
Run Code Online (Sandbox Code Playgroud)