在终端下路径切换的工具除了cd
外,还有以下更高级的工具可以使用。
工具名称 | 创建年份 | 主要作者 |
---|---|---|
autojump | 2008 | Joel Schaerer & William Ting |
z.sh | 2009 | Rupa |
fasd | 2011 | Wei Dai |
z.lua | 2018 | Lin Wei |
核心思想:
-
数据文件
记录用户进入过的目录,频率。 - 使用这些工具的前提是
数据文件
中存在相关记录。 - 每次进入一个目录工具会更新
数据文件
。
z.lua 号称是最快的,能在极端环境下使用。
下面数据来自z.lua官方。
$ time autojump --add /tmp
real 0m0.352s
user 0m0.077s
sys 0m0.185s
$ time fasd -A /tmp
real 0m0.618s
user 0m0.076s
sys 0m0.242s
$ time _z --add /tmp
real 0m0.194s
user 0m0.046s
sys 0m0.154s
$ time _zlua --add /tmp
real 0m0.052s
user 0m0.015s
sys 0m0.030s
使用
z foo # 跳转到包含 foo 并且权重(Frecent)最高的路径
z foo bar # 跳转到同时包含 foo 和 bar 并且权重最高的路径
z -r foo # 跳转到包含 foo 并且访问次数最高的路径
z -t foo # 跳转到包含 foo 并且最近访问过的路径
z -l foo # 不跳转,只是列出所有匹配 foo 的路径
z -c foo # 跳转到包含 foo 并且是当前路径的子路径的权重最高的路径
z -e foo # 不跳转,只是打印出匹配 foo 并且权重最高的路径
z -i foo # 进入交互式选择模式,让你自己挑选去哪里(多个结果的话)
z -I foo # 进入交互式选择模式,但是使用 fzf 来选择
z -b foo # 跳转到父目录中名称以 foo 开头的那一级
在工作中,我常用用z -i
和 z -b
。以前用autojump,习惯用j,并且字母j就在右手食指默认位置,方便。故添加下面的别名。
alias j='z -i'
alias jb='z -i'
-
j
我喜欢列出来自己选择,相对直观。 -
jb
类似Android 编译环境中的croot。
(没有参数):cd 到项目根目录,即跳转到最近的包含 (.git/.svn/.hg) 的父目录。
(单个参数):cd 到离当前目录最近的以关键字开头的父目录,如果找不到就尝试跳到包含关键字的父目录。
(两个参数):将当前路径中的第一个关键词替换为第二个关键词。
网友评论