Вы здесь

Автодополнение команд Drush

Чтобы не вводить полностью названия модулей при включении и не печатать каждый раз pm-uninstall можно подключить автодополнение команд с TAB.

Если у вас еще не установлен Drush, то сделать это можно с composer:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
export PATH="$HOME/.composer/vendor/bin:$PATH"
source ~/.bash_profile
composer global require drush/drush:dev-master

Если нужен drush 7.x:

composer global require drush/drush:7.*

Drush из коробки идет с bash-алиасами и скриптами необходимыми для автодополнения.
Чтобы их задействовать содержимое файла example.bashrc из каталога с drush помещаем в ~/.bash_profile:

cat ~/.composer/vendor/drush/drush/examples/example.bashrc >> ~/.bash_profile

Далее нужно скрипт автодополнения drush.complete.sh слинковать в bash_completion.d:

ln -s ~/.composer/vendor/drush/drush/drush.complete.sh /etc/bash_completion.d/

Закрываем и открываем консоль.

Демо

dr en a<TAB>
>> action           aggregator       automated_cron

Также из друпал-каталога можно запускать привычные команды без ввода команды 'drush ', таким образом:

cc all
updb
up
upc
en
unin

Алиасы глобальных команд

dr = 'drush'
ddd = 'drush drupal-directory'
dl = 'drush pm-download'
ev = 'drush php-eval'
sa = 'drush site-alias'
lsa = 'drush site-alias --local-only'
st = 'drush core-status'
use = 'drush site-set'

Алиасы команд выполняемых из drupal-каталога

 cc = 'drush cache-clear'
 cca = 'drush cache-clear all'
 dis = 'drush pm-disable'
 en = 'drush pm-enable'
 pmi = 'drush pm-info'
 pml = 'drush pm-list'
 rf = 'drush pm-refresh'
 unin = 'drush pm-uninstall'
 up = 'drush pm-update'
 upc = 'drush pm-updatecode'
 updb = 'drush updatedb'
 q = 'drush sql-query'

Если drush установлен без композера, то путь к драшу будет другим, найти его можно с командой:

which drush

в результате получите путь к исполняемому файлу, в моем случае это:

/Users/imacoda/.composer/vendor/bin/drush

на два уровня выше будет drush/drush/ с нужными нам examples/example.bashrc и drush.complete.sh

8
8
11.10.2015 - 18:02

Комментарии

Аватар пользователя multpix
multpix – 12.10.2015 - 07:26

Закрываем и открываем консоль.

Можно ведь просто перегрузить конфиг и не прерывать сеанс:

source ~/.bash_profile
Аватар пользователя Alan Bondarchuk
Alan Bondarchuk – 12.10.2015 - 12:38

тут я не был у верен насчет скрипта в /etc/bash_completion.d/
может быть и так достаточно

Аватар пользователя zniki.ru
zniki.ru – 12.10.2015 - 19:13

Я на Ubuntu 14.04, делал копипаст.
1) sudo ln -s ~/.composer/vendor/drush/drush/drush.complete.sh /etc/bash_completion.d/
2) после этого сделал source ~/.bash_profile
Автодополнение заработало после перезапуска консоли.

А алисы из ~/.bash_profile у меня не подхватываются. Каждый раз приходиться source ~/.bash_profile
Нашел из-за чего http://askubuntu.com/questions/121073/why-bash-profile-is-not-getting-so...

Аватар пользователя orion76
orion76 – 12.10.2015 - 13:09

К хорошему привыкаешь быстро..
Вдруг где-то без автокомплита придется команды набирать?-).. А ведь придется..-((
чёт я очкую-)

Аватар пользователя ttenz
ttenz – 12.10.2015 - 17:35

спасибо, а то уже сам собрался алиасы прописывать.

правда, если честно в основном пользуюсь Ctrl+R

Аватар пользователя zniki.ru
zniki.ru – 12.10.2015 - 19:46

Спасибо большое, автодополнение заработало.
Больше всего понравилось что автодополнение работает при отключение и включение модулей.
drush dis v и получаем drush dis views.
Демонстрация работы автодополнения

Аватар пользователя chupzzz
chupzzz – 25.10.2015 - 08:59

Спасибо за наводку. В теории круто звучит, а на практике тормозит очень - у меня одного так? При вводе команды и задержка по 2-3 секунды - это нормально считается? Или я что-то делаю не так?

Drush 7, Debian 8, PHP 5.6

Аватар пользователя Chi
Chi – 26.10.2015 - 07:22

Я думаю это потому при автокомплите выполняется полный бутсрап друпала. Поэтому если сайт тормозной то и автокомплит тоже тормозной.