Быстрый переход пути

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

Пример:

~/code$ j sciproj
~/projects/sciproj2011/$

Это выглядело довольно гладким, таким образом, я начал задаваться вопросом:

Действительно ли это - стандартная утилита, и если так, каково имя?

У меня есть две теории относительно того, как это работает:

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

  2. Это ищет корневой каталог папку, соответствующую имени и переходам к нему.

Вторая опция кажется немного медленной, однако, таким образом, первое было бы предпочтено.

6
задан 11 February 2011 в 14:26

3 ответа

Как дополнение к комментарию sagarchalise:

Это в natty: http://packages.ubuntu.com/natty/autojump

Должно работать в старых версиях а также.

0
ответ дан 11 February 2011 в 14:26

Как насчет этого?

function j() { for dir in ~/projects/$@*; do if [ -d $dir ]; then cd "$dir"; fi; done ;}

Он находит ближайшее возможное совпадение. Итак, скажем, у меня есть каталог dir, подобный следующему:

~/projects/
~/projects/apples/
~/projects/apples-and-pears/
~/projects/cabbage/

j a будет соответствовать обоим apples* каталогам, но поскольку apples-and-pears более поздний, он перейдет в этот последний, и вот где в конечном итоге (недостаток в этой функции). j c поместит вас в ~/projects/cabbage/.

Вставьте это в терминал, чтобы проверить его, и когда вы счастливы, просто положите его в конце ~/.bashrc.

Редактировать: я также играл над созданием варианта find, но он не так хорош (медленнее и менее точен). Не стесняйтесь взломать с ним все же.

function j() { cd $(find ~/projects -maxdepth 1 -type d -name "$@*"); }
0
ответ дан 11 February 2011 в 14:26

Обычно вы можете использовать popd, pushd и dirs для перехода между некоторыми папками. Но в вашем случае это некоторый пользовательский псевдоним, который вы можете определить в файле ~ / .bash_profile.

Например:

# Change dir via find
# Usage: cdf (dir)
cdf() {
  pushd $(find . -name $1)
}

А затем cdf some_dir перейдет в папку, игнорируя подкаталоги.

Пример реального поиска точных имен папок (игнорировать подсказку):

~/$ cdf() { pushd $(find . -name $1); }
~/$ mkdir -p ab/cd/ef/gh/ij/kl
~/$ cdf kl
    ~/ab/cd/ef/gh/ij/kl ~/
~/$ pwd
     ~/ab/cd/ef/gh/ij/kl
kl$ popd # We're going back to our previous folder.
~/$ pwd
    ~/

Аналогичным псевдонимам для папок, содержащих частичный текст:

cdf() { pushd $(find . -name \*$1\*); }

Пример .bash_profile файл.

0
ответ дан 11 February 2011 в 14:26

Другие вопросы по тегам:

Похожие вопросы: