如何通过“创建适当的 shell 参数”来修改指定目录哈希表?

如何通过“创建适当的 shell 参数”来修改指定目录哈希表?

我习惯于zsh使用 .s 向命名目录哈希表添加条目hash -d <name>=<value>。最近,我阅读了zshbuiltins(1)手册页,在那里我发现了以下内容(hash内置的描述):

通常,人们可以通过修改 PATH(对于命令哈希表)或通过创建适当的 shell 参数(对于命名目录哈希表)来修改这些表。

我不明白这个by creating appropriate shell parameters机制是如何运作的。有人能给我举个例子吗?

答案1

命名目录(除了用户的主目录之外)是存储在变量中的目录,然后您可以使用~varname它们来访问它们,然后将条目添加到哈希表中。

例子:

$ var=/usr/local
$ hash -d
$ echo ~var
/usr/local
$ hash -d
var=/usr/local
$ : ~root
$ hash -d
root=/root
var=/usr/local

(我自己从来没有真正理解这个功能的意义)

详情请参阅info zsh 'static named directories'(我不会使用man这种尺寸的手册)。

答案2

此功能的要点在于,如果您正在处理多个路径并不断从目录树中的一个分支更改到另一个分支,那么它会非常方便。例如,如果您有两个相同的目录树,一个为根目录~/home/src/project/devel,另一个为根目录树,~/home/src/project/production则可以执行以下操作:

typeset -e dev=~/home/src/project/devel ; typeset -e prod=~/home/src/project/production ;

您可以方便地使用~devor ,就像在任何采用路径作为参数 v.gr 的命令中使用or~prod一样:~~user

`cp -Rav ~dev/module ~/prod 将模块从开发复制到生产。让您在您可能经常使用的常用目录上进行大量输入。它们不需要植根于同一目录,这只是一个简单的用例。

我发现命名我经常访问的深层嵌套目录以供参考非常方便,例如/use/local/lib/zsh/site-functions~zfunc适用于任何采用路径的命令,这使其成为非常强大的快捷方式。

相关内容