3/01/2010

Быстрая смена каталогов в консоли Linux с помощью WCD

Для того, чтобы быстро прыгать по каталогам в Linux, можно использовать разные продвинутые оболочки типа zsh, а можно прикрутить маленький костылёк wcd к старому-доброму bash. О том и пост - самому не забыть и читателя потешить :-)

Итак, что мы имеем после установки wcd? Набираем часть имени каталога, нажимаем Enter и видим варианты - выбираем один из них и тут же перелетаем в нужный нам каталог.




Как установить Wcd?
Установка проста:

aptitude install wcd
Далее создаём ссылку на wcd.exec в домашнем каталоге:
ln -s /usr/lib/wcd/wcd.exec ~/bin
либо (для новых версий)

ln -s /usr/bin/wcd.exec ~/bin

и добавляем следующую функцию в стартовый файл .bashrc оболочки bash:
function wcd
{
$HOME/bin/wcd.exec $*
. $HOME/bin/wcd.go
}
 
После этого следует перезалогиниться или создать новую оболочку (открыть новый таб).

Как использовать WCDДля этого сначала создадим деревья директорий. Например

$ wcd -A .
Точка в конце говорит о том, что создаём деревья директорий, начиная с текущей. Должно ответить просто:
Wcd: Please wait. (re)Scanning disk. Building treedata-file from /home/beast
И всё. Теперь получаем удовольствие.
Итак, есть каталог /home/beast/docs/matlab/Sci/cvkonnik
Но набирать это всё долго и лениво. Вместо этого пишем:


$ wcd cvk*
И нажимаем большую и любимую клавишу Enter. При этом в консоли выдаётся менюшка вида:
a /home/beast/docs/matlab/Sci/cvkonnik
b /home/beast/docs/matlab/docus/Work/otherscidocs/Sci/cvkonnik

Wild match for 2 directories. w=up x=down ?=help Page 1/1
Please choose one ( to abort):

Нажимаю букву b и тут же перелетаю в нужный мне каталог:

beast@notebeast:~/docs/matlab/docus/Work/otherscidocs/Sci/cvkonnik$
И все дела. Очень удобно и очень здорово!

Ещё веселее, если такой каталог у вас один - переход произойдёт сразу же:

wcd IST*
-> /home/beast/docs/matlab/docus/articles/SPIEproceedings/IST2009
beast@notebeast:~/docs/matlab/docus/articles/SPIEproceedings/IST2009$


Обновление дерева каталогов
Если у вас добавился новый каталог, то wcd автоматом его, увы, не подхватит. Но это не беда - просто пересоздадём деревья директорий:

$ wcd -A .

И после этого ваши новые каталоги снова в строю.

Ссылки
На всякий случай WCD расшифровывается как Wherever Change Directory. Сайт автора программы, но он очень аскетичен. Также толковую статью по wcd можно найти на ЛинСовете
тут. Замечательная статья по поводу WICD есть на блоге Максима Иванова.

15 комментариев:

  1. Спасибо! По описанию -- очень полезная тулзень. Только странно, что у нее своя база, а не используется locate.db. И кстати, как она обновляется? Если создать новую директорию -- она ее сразу подхватит?

    ОтветитьУдалить
  2. Кстати, русская буква "с" в конце пути "$HOME/bin/wcd.exeс" доставила немало приятных минут, сопровождавшихся почесыванием затылка и незамысловатыми проклятиями в адрес автора :))

    Исправьте, пожалуйста, пока такие же ленивые копипастеры как я не набежали.

    ОтветитьУдалить
  3. wcd после комментариев к моему посту о zsh я таки попробовал, но по вкусу он мне не пришёлся. Но ты подсаживай, подсаживай народ на полезные утилики ;)

    Кстати, пост на главной выглядит очень странно. Отчего так, я выяснить не смог.

    И повнимательней перечитай раздел со ссылками. Ты в своём репертуаре ;)

    ОтветитьУдалить
  4. @ Alex Shulgin пишет...
    По описанию -- очень полезная тулзень.
    Сия тулзень моя любимая. Очень экономит время, силы и клавиатуру ноутбука.

    И кстати, как она обновляется?
    Нет - добавил в пост, кстати, спасибо.


    @Alex Shulgin пишет...
    Кстати, русская буква "с" в конце пути "$HOME/bin/wcd.exeс" доставила немало приятных минут, сопровождавшихся почесыванием затылка и незамысловатыми проклятиями в адрес автора
    То-то мне икалось с утра :-) Поправлено, приношу свои глубочайшие извинения.

    @Minoru пишет...
    wcd после комментариев к моему посту о zsh я таки попробовал, но по вкусу он мне не пришёлся.
    так на вкус и цвет фломастеры разные :-)

    Но ты подсаживай, подсаживай народ на полезные утилики ;)
    А я что? Чем пользуюсь, про то и пою, играя на старом потёртом баяне.

    Кстати, пост на главной выглядит очень странно.
    Дык это, интрига ж. Плюс традиционные штучки Blogger.

    И повнимательней перечитай раздел со ссылками. Ты в своём репертуаре ;)
    Не, я требую сделать написание "Так\же" произвольным. Почему министр образования может говорить и писать кофЕЙ, а я нет? :-)

    Серьёзно - спасибо за правки и предложения!

    ОтветитьУдалить
  5. Просто отлично. Огромное спасибо лично от меня и дополнительные спасибы от клавиш табуляции на моих клавиатурах. :)

    ОтветитьУдалить
  6. «Для того, чтобы быстро прыгать по каталогам в Linux, можно использовать разные продвинутые оболочки типа zsh»

    А можно поподробнее как такое можно сделать в zsh без wcd?

    ОтветитьУдалить
  7. и в sid'е установка wcd заключается в добавлении строчки
    . /usr/share/wcd/wcd-include.sh
    в rc-файл

    ОтветитьУдалить
  8. >А можно поподробнее как такое можно сделать в zsh без wcd?
    Конкретно такое же — никак. В zsh есть вкусности типа auto cd (не надо писать cd перед путём) и продвинутого автодополнения (“doc/K/s/al/la/” одним нажатием Tab'а превращается в “documents/KPI/subjects/algorithmization\ and\ programming/labs/”). Мы это обсуждали у меня в блоге, когда я про ZSH писал (Миш, извини за пиар).

    ОтветитьУдалить
  9. Minoru, такое я и сам нагуглил

    ОтветитьУдалить
  10. А ещё можно переменную CDPATH установить (man bash /CDPATH). Тогда при нажатии табуляции подстановки будут искаться не только в текущем каталоге, но и во всех каталогах из CDPATH. У меня, например, в .bashrc стоит:

    export CDPATH=".:~:~/work:~/text:~/work/build"

    И ничего устанавливать не надо. Это встроенная возможность bash.

    ОтветитьУдалить
  11. я пользуюс
    pushd|popd+клавиша tab
    пока хватает.

    ОтветитьУдалить
  12. на кате ужос - вместо команд - пустые квадратики. под катом - зашибись. поправьте плиз. (Firefox, Linux 3.6)

    ОтветитьУдалить
  13. @ Minoru
    >А можно поподробнее как такое можно сделать в zsh без wcd?
    Конкретно такое же — никак.

    Ну вот, а я уж думал, сейчас обзовут меня велосипедистом :)

    (Миш, извини за пиар).
    Правильно-правильно, пользуйся служебным положениям в корыстных целях :-)))


    @Сергей, 03.03.2010 18:49:00
    А ещё можно переменную CDPATH установить (man bash /CDPATH).
    Это безусловно так, но тут смак в том, что оно ищет по совпадениям с фразой - и нажатием одной кнопки сразу перелетаем куда надо.


    @Анонимный
    я пользуюс
    pushd|popd+клавиша tab

    Ммм... не знал. Заценим. Спасибо!

    @Анонимный, 16.03.2010 22:11:00
    на кате ужос - вместо команд - пустые квадратики. под катом - зашибись.
    Не поправляется оно - вставил картинки и вот такое. Но на главной его уже нет, а искаться будет полная версия, так что можно считать, что поправил :-)

    ОтветитьУдалить
  14. У меня Ubuntu 10.04 выдает вот что:
    bash: /home/xomyaq/bin/wcd.exec: Not a directory
    bash: /home/xomyaq/bin/wcd.go: Not a directory
    Не могу понять в чем дело.

    ОтветитьУдалить