Закладки каталогов в консоли с Apparix

При первоначальной настройке любого *nix сервера приходится часто перемещаться по каталогам, для правки конфигурационных файлов, проверки результата и так далее. За локальной консолью это не проблема, можно открыть несколько окон терминала и переключаться по мере необходимости, при удаленной настройке так уже не получится. Приходится довольствоваться одной консолью. BASH предоставляет лишь одну помощь — команда cd без аргументов вернет в домашний каталог. Некоторые выкручиваются при помощи псевдонимов (aliases) прописываемых в ~/.bashrc. Например,

alias cdetc=`cd /etc`


Теперь в консоли достаточно набрать cdetc, чтобы перейти в нужный каталог. Конечно это самый простой пример, но принцип понятен. Но у него есть недостаток. Тяжело держать актуальным такой список, ведь сегодня настраиваешь одно, завтра другое. И главное использование псевдонимов на лету не возможно. Ведь его нужно вручную прописать его в ~/.bashrc, затем снова зарегистрироваться в системе. Вот здесь на помощь приходит Apparix, который поможет на лету создавать закладки каталогов и быстро переходить и управлять ими.
Нужный пакет доступен в репозитарии Debian/Ubuntu/Linux Mint поэтому выполняем:

$ sudo apt-get install apparix


но этого мало Apparix реализован в виде расширения (функций) к оболочке CSH или BASH и чтобы все работало необходимо самому все настроить. Все необходимые данные можно получить введя в консоли:

$ aparix --shell-examples >> ~/.profile 


Вывод будет содержать немного лишнего, поэтому открываем и чистим.
image
Для BASH оставляем из добавленного только:

$ nano ~/.profile

function to () {
if test "$2"; then
cd "$(apparix "$1" "$2" || echo .)";
else
cd "$(apparix "$1" || echo .)";
fi
pwd
}
function bm () {
if test "$2"; then
apparix --add-mark "$1" "$2";
elif test "$1"; then
apparix --add-mark "$1";
else
apparix --add-mark;
fi
}
function portal () {
if test "$1"; then
apparix --add-portal "$1";
else
apparix --add-portal;
fi
}
# function to generate list of completions from .apparixrc
function _apparix_aliases ()
{ cur=$2
dir=$3
COMPREPLY=()
if [ "$1" == "$3" ]
then
COMPREPLY=( $( cat $HOME/.apparix{rc,expand} | \
grep "j,.*$cur.*," | cut -f2 -d, ) )
else
dir=`apparix -favour rOl $dir 2>/dev/null` || return 0
eval_compreply="COMPREPLY=( $(
cd "$dir"
\ls -d *$cur* | while read r
do
[[ -d "$r" ]] &&
[[ $r == *$cur* ]] &&
echo \"${r// /\\ }\"
done
) )"
eval $eval_compreply
fi
return 0
}
complete -F _apparix_aliases to


Сохраняем результат и повторно регистрируемся в системе.
После этого нам становится доступным несколько новых команд, разберем их на примерах.
Переходим в каталог:

$ cd /srv/www
$ pwd
/srv/www


Чтобы создать закладку используем команду bm (от bookmark):

$ pwd 
$ bm www
added: www -> /srv/www


Закладка создана. Для перехода к закладке используем команду to с указанием названия. Проверяем:

$ cd; pwd
/home/user
$ to www
$ pwd 
/srv/www


Кроме этого поддерживается переход к вложенным подкаталогам. Например чтобы перейти в /var/www/site1 используем команду:

$ to www site1


Причем работает автодополнение по клавише, поэтому название вложенных каталогов запоминать нет необходимости.
Если использовать команду bm без аргументов будет автоматически создана закладка foo, вызвать которую также можно без аргументов (для быстрого перехода). Получить список закладок:

$ apparix
--- portals
e /usr
--- expansions
j bin /usr/bin
j games /usr/games
j include /usr/include
j lib /usr/lib
j lib32 /usr/lib32
j local /usr/local
j sbin /usr/sbin
j share /usr/share
j src /usr/src
--- bookmarks
j usr /usr
j log /var/log


Изменить текущее значение закладки очень просто, переходим в новое место и создаем закладку с таким же именем.
Все установки сохраняются в файле ~/.apparixrc, который при необходимости можно отредактировать вручную.
Кроме этого следует обратить внимание на команду portal которая автоматически генерирует список подкаталогов как закладки.
В примерах были использованы каталоги небольшой вложенности, но когда требуется перемещаться по каталогам запрятаным глубоко в недрах файловой системы Apparix сильно выручает.

Ссылки: Сайт проекта Apparix — www.micans.org/apparix/


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.