Возникли проблемы с поиском в Google, потому что я не уверен, что такое поисковый запрос. Сценарии оболочки или функция терминала. Каков наилучший способ упростить доступ к часто используемым каталогам. Обычно, когда я запускаю терминал, по умолчанию это мой домашний каталог, но иногда мне хочется открыть несколько окон терминала, проблема в том, что я набираю cd /.../directory в каждом из них несколько раз, и мне нужен способ не иметь сделать это. Каков наилучший способ или просто предоставить условия поиска, которые я мог бы использовать, чтобы прочитать об этом в Интернете. Спасибо
9 ответов
Создайте символическую ссылку в вашем домашнем каталоге:
$ ln -s path/to/a/really/deeply/nested/director/my-project ~/my-project
$ cd ~/my-project
Добавьте переменную в ваш .bashrc:
MYPROJECT=path/to/a/really/deeply/nested/director/my-project
использовать:
$ cd $MYPROJECT
Установите переменную CDPATH: она содержит дополнительные каталоги для поиска при запуске cd
.
Вы также можете воспользоваться переменной CDPATH .
И вы могли бы определить function
Баш в вашем $HOME/.bashrc
нравится
# in file ~/.bashrc
function work() {
cd $HOME/path/to/a/really/deeply/nested/director/my-project
}
А недавний bash или даже лучше zsh может позволить вам такие вещи, как
cd **/my-project
Предполагая, что у вас есть только один глубоко вложенный каталог my-project/
во всей иерархии дерева. **
делает эквивалент find
поэтому может быть медленным.
Вы также можете попробовать автопрыжки.
Это как команда cd
но с возможностью учиться. Он поддерживает базу данных каталогов, которые вы посещаете, и присваивает вес каждой записи.
Позже вы можете использовать j foo
для перехода в каталог, который содержит foo
в своем имени. Если у foo более нескольких каталогов, он покажет вам список совпадений, из которого вы можете выбрать желаемый каталог.
Вы можете использовать закладки для оболочки, например, bookmarks.sh.
Автор CDPATH рекомендует экспортировать CDPATH в окружающую среду. Пожалуйста, имейте в виду, что есть большая вероятность того, что это слегка сломает сценарии оболочки, которые ожидают, что каталоги будут в одном определенном месте. Чтобы исправить это, поместите CDPATH в ~/.bashrc, а не экспортируйте его. Ваш ~/.bashrc будет выглядеть так:
CDPATH=/var/:/etc/
Обратите внимание, что в этом случае исходные тексты сценариев все еще будут использовать CDPATH. AutoJump , безусловно, является гораздо более безопасной альтернативой и более удобной в использовании, чем CDPATH.
Добавьте псевдоним в ваш .bashrc
alias myproject="cd path/to/a/really/deeply/nested/director/my-project"
использовать:
$ myproject
anc разработан именно для этого случая использования.
https://github.com/tobimensch/anc
Вот выдержка из README.md:
# 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.