为相对目录路径添加书签/导航的好方法吗?

为相对目录路径添加书签/导航的好方法吗?

我在装有 bash 4.x 的 Linux 系统上工作,经常发现自己需要浏览非常深(且很大)的文件目录结构的不同副本。但实际上,我只需要访问少数几个目录来完成日常工作。

我希望有一种方法可以导航到正确的路径,而无需完全记住或输入目的地。有没有一种工具可以让我注册相对书签?

例如,路径前缀中的某处是模式

*/id_number/foo/

其中 foo 是唯一的指示符,表示我位于 id_number 指定的几个可能的工作目录之一内。我想将与 foo 相关的目录加入书签,然后输入

命令栏

其中 bar 会自动扩展为与模式匹配的书签列表,并且可能还会提供选择使用哪个书签的工具。我相信其他用户界面也足够了。

如果有必要获得必要的工作流程,我会考虑将我的 shell 切换到 zsh 或某些替代版本。

谢谢,

设置跳转

答案1

shell 选项“cdable_vars”可能正是您所需要的。将下面的代码放入您的 .bashrc 文件中(或您的 shell 恰好提供的任何选项文件)。当然,更新书签。

# Allow cd to use variables as arguments
shopt -s cdable_vars
BOOKMARK1="./relative/path"
BOOKMARK2="/absolute/path"

当在父目录时,使用方式如下:

cd BOOKMARK1

如果书签是绝对路径,那么它可以在任何地方使用。

答案2

我已经构建了一组 shell 函数,可以满足我的需要。

https://github.com/google/cwd_jmp

来自 README

jmp.sh is a bash 4.x library that enables relative bookmarking of file system
directories including tab completion.

答案3

anc 也被设计用来做这样的事情。

https://github.com/tobimensch/anc

以下是 README 的摘录:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

全面披露:我是 anc 的作者。

相关内容