1

Я работаю в системе Linux с Bash 4.x, где я часто нахожусь в навигации по различным копиям очень глубоких (и больших) структур файловых каталогов. Тем не менее, на самом деле мне нужно только получить доступ к нескольким каталогам для моей повседневной работы.

Я хотел бы иметь способ перейти на правильный путь без запоминания или ввода целиком полностью. Есть ли инструмент, который позволил бы мне регистрировать относительные закладки?

Например, где-то в префиксе пути есть шаблон

*/ ID_NUMBER / Foo /

где foo - это уникальный индикатор того, что я нахожусь в одном из нескольких возможных рабочих каталогов, указанных в id_number. Я хотел бы добавить в закладки каталоги относительно foo, а затем набрать

CMD бар

где панель будет автоматически расширяться в список закладок, соответствующих шаблону, и, возможно, инструмент для выбора, какой из них использовать. Я уверен, что другие пользовательские интерфейсы также подойдут.

Я хотел бы рассмотреть вопрос о переключении моей оболочки на Zsh или какой-либо другой вариант, если это необходимо для получения необходимого рабочего процесса.

Спасибо,

SetJmp

3 ответа3

1

Опция оболочки 'cdable_vars', вероятно, то, что вам нужно. Поместите приведенный ниже код в ваш файл .bashrc (или любой другой файл опций, полученный вашей оболочкой). Обновите закладки, конечно.

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

Когда вы находитесь в родительском каталоге, используйте его следующим образом:

cd BOOKMARK1

Если закладка является абсолютным путем, ее можно использовать где угодно.

0

anc также предназначен для подобных вещей.

https://github.com/tobimensch/anc

Вот выдержка из ЧТЕНИЯ:

# 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.

0

Я построил набор функций оболочки, которые делают именно то, что мне нужно.

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .