Как я уже ответил на соответствующий вопрос в UnixSE, для этого я использую скрипт z [github].
Он запоминает каталоги, к которым вы подключились, оценивает их по частоте (частота + регент) и позволяет вам перейти на один из запоминаемых путей, используя некоторую часть его имени.
После того, как cd'ed в каталог, по крайней мере, один раз вы можете сделать, а не:
$ cd ~user/very/long/path/with/many/subfolders/
Просто выполните:
$ z sub
, который будет работать с использованием частичного совпадения имени (если у вас нет другого каталога, содержащего на своем пути термин sub и который имеет более высокую частоту).
Я также определил такую функцию, которая сначала пробует нормальный cd, и если это не работает, используется z:
function cd() {
builtin cd "$1" 2> /dev/null || z "$1" || (echo "cd: File or Directory not found: $1" >&2 && exit 1)
}
. Это дает вам лучшее из того и другого. Если папка находится в текущем каталоге или задан действительный полный путь, она будет просто cd, но если нет, она попытается найти совпадение в базе данных и cd. Это отнимает (небольшую) боль, иногда вынуждая использовать cd (для обучения базы данных, перехода в папку, в которой вы никогда не были), и иногда вспоминая использовать z, когда это применимо.