Тем кто пользовался терминалом в Linux знает, что часто приходится пользоваться командой cd, для перехода в нужный каталог. Для ускорения переходов можно создавать ссылки ln -s. Но есть еще один способ. который не увеличивает число файлов в вашем домашнем каталоге - autojump.

Что позволяет данная утилита?

Она запоминает каталоги которые фигурировали в команде cd (сохраняет их в собственной базе). И потом позволяет в них вернуться командой j имя_каталога или j часть_имени_каталога. Например:

вы перешли в каталог cd /home/user/project/ansible1, поработали в нем, потом перешли в каталог cd /home/user/tmp/trash, потом еще были цепочки переходов. Теперь же что бы вернуться в каталог /home/user/project/ansible1, не нужно доставать его из истории history. Достаточно ввести команду j ans и утилита сама выудит из истории список пройденных каталогов и сделает cd в него.

утилита позволяет уточнить в какой каталог именно нужно перейти, т.е. не обязательно вводить только одно слово. Если есть два каталога /home/user/project/ansible1 и /home/user/tmp/ansible1, то можно уточнить, куда именно перейти командой j pro ans.

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

Повлиять на вес текущей директории можно командой: j -i 10 повысить вес или j -d 10 понизить вес текущей директории. Это может быть полезно, если ранее часто используемый каталог уже не должен так часто использоваться или наоборот.

Список известных утилите каталогов можно получить командой j --stat.

Дополнительную информацию можно получить командой j --help или из репозитория утилиты (https://github.com/bayrepo/autojump)

Хотелось бы описать еще пару дополнительных свойств данной утилиты.

Допустим в списке ранее посещаемых путей есть каталоги с русскими буквами, например /home/user/Рабочий стол и вам часто нужно переходить в такие каталоги, то можно воспользоваться возможностью транслитерации утилиты на указанный язык. Пример, я хочу перейти в какталог "Рабочий стол", но не хочу переключать раскладку клавиатуры при наборе команды, то мне нужно набрать:

j -ru Ra

Ra в данном случае преобразуется в русские "Ра" и будет найден каталог "Рабочий стол".

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

Примеры, как будет транслитерирован результат:

+dir = dir
+dir+kut = dirкут
dir+kut+dir+kut=дирkutдирkut

Словарь для преобразования можно найти по пути: ~/.autojump/share/autojump/translator_ru

Имя словаря translator_xx, где вместо xx - это код языка. Который может быть любой и указывается в команде j -ru, j -en, j -blв данных примерах утилита будет искать такие словари: ~/.autojump/share/autojump/translator_ru, ~/.autojump/share/autojump/translator_en, ~/.autojump/share/autojump/translator_bl

Такой словарь можно составить самостоятельно.

Есть еще одна утилита для удобства в работе с autojump. Она расположена в каталоге nopythontools/autojumpadder.rb. Когда autojump только устанавливается, то его список каталогов пуст. Он может сформироваться на основе истории команд, но история не всегда оказывается полной. Можно список каталогов для autojump создать с помощью данной утилиты (требуется установленный ruby).

С помощью данной утилиты есть возможность обойти все каталоги в указанном каталоге и добавить их в autojump

Usage: [ruby] autojumpadder.rb [options] absolute_path_to_folder_to_add_to_autojump
  Options:
    -h or --help             - this help
    -d or --dry or --dry-run - show only directories without adding to autojump
    -n or --new-only         - add only new directories
    -m                       - max directory scan depth, 0 - unlimited
    -e or --exclude          - exclude dirs: -e dir1,dir2,dir3
    -f or --file-exclude     - file of exludes dir list in format:
                             dir1 - can be one word or absolute path
                             dir2
                             ...
    -v                       - verbose
    -p                       - show progress bar

Примеры вызовов:

  1. Добавление всех подкаталогов домашнего каталога:
ruby autojumpadder.rb /home/alexey
  1. Но в предыдущей команде нужно быть аккуратным, если подкаталогов много, то команда будет выполняться долго и база autojump станет черезчур большой. Есть выход - ограничение глубины просмотра поддиректорий:

    ruby autojumpadder.rb -m 3 /home/alexey

    т.е. просматривать не глубже 3-ей поддиректории

  2. Есть еще дополнительные фильтры - по наличию строки в каталоге, исключить все, что перечисленно в списке

    ruby autojumpadder.rb -m 3 /home/alexey -e go,bin,qt,windows,rpmbuild,radare2,fcdtdebugger,sources,kernelcare,___

команда выше исключит все, что содержит в себе go,bin,qt и т.н. например такой каталог как /home/alexey/go или /home/alexey/helogo

  1. Список исключаемых слов и каталогов можно положить в файл

    ruby autojumpadder.rb /home/alexey -f exclude_dirs.lst
  2. Если ранее уже запускалась утилита по добавлению каталогов, но уже появились новые, то можно запустить добавление только новых каталогов:

    ruby autojumpadder.rb -n /home/alexey

    это параметр -n, он скажет программе вначале получить список того, что есть, а потом вычислить, что есть новое и добавить

  3. Если не доверяете тому списку каталогов, который создаст утилита, то можно ее запустить в режиме dry-run, т.е. список каталогов будет составлен, но программа просто выведет, какими командами и какие каталоги будут добавлены в базу, без самого действия добавления

    ruby autojumpadder.rb -m 3 -d -n /home/alexey -e go,bin,qt,windows,rpmbuild,radare2,fcdtdebugger,sources,kernelcare,___ -v

    Новый параметр -d и вывод:

    [alexey@localhost tests]$ ruby autojumpadder.rb -m 3 -d -n /home/alexey -e go,bin,qt,windows,rpmbuild,radare2,fcdtdebugger,sources,kernelcare,___
    Will be added directory /home/alexey/tmphome/sodovaya with command /home/alexey/.autojump/bin/autojump --stat

Добавить комментарий

Предыдущая запись