Drush быстрый старт и основные команды

Давайте прямо сейчас начнём пользоваться Drush? Нет ну правда! Это очень удобно, это ускоряет рутинные операции. Только представьте - обновить ядро Drupal можно всего одной командой Drush!

Я сам до последнего сопротивлялся этой идее. Думал что надо что то устанавливать на сервер, а половина клиентов висит на обычном шаред хостинге итд... Так вот выбрасываем этот хлам из головы, заливаем папку drush в корень вашего Drupal сайта и всё, его уже можно использовать! Далее подключаемся по SSH заходим в папку drush и начинаем выполнять команды.

Основные команды

Основаная информация о сайте и статус
drush status

Очистить кэш
drush cc all

Очистить кэш даже если друпал упал
drush sql-query "DELETE FROM cache"
sql-query выполняет SQL запросы в базе данных, в которой установлен Drupal.

Загрузка последней версии модулей (пример 2 модуля за раз)
drush dl module1 module2

Загрузить dev версию модуля
drush dl views-7.x-3.x --package-handler=git_drupalorg
Похоже что добавление --package-handler=git_drupalorg больше не обязательно в последних версиях.

Активировать модуль
drush en name_of_module -y
-y пропускает запрос подтверждения

Отключить модуль
drush dis name_of_module

Отключение модуля если Drupal упал
drush sql-query "UPDATE system SET status = '0' WHERE name = 'module_name'"
drush sql-query "DELETE FROM cache_bootstrap WHERE cid = 'system_list'"

Удаление модуля через Drush
drush pm-uninstall module_name -y

Посмотреть доступен ли модуль
drush pm-list | grep module_name

Посмотреть включен ли модуль
drush pm-list --status=enabled | grep module_name

Показать все включенные модули
drush pm-list --type=Module --no-core --status=enabled

Обновить модуль
drush up module_name

Обновить модуль до DEV версии
drush up MODULE_NAME-1.x-dev

Обновить друпал через Drush
drush up drupal

Обновить все модули и Друпал
drush up

Запустить update.php
drush updb

Отправить e-mail
drush php-eval "print mail('pere@example.com', 'Subject', 'Message', 'From: pere@example.com');"

Удалить поле
drush field-delete fieldname

Удалить экземпляр поля
drush field-delete fieldname --bundle=article

Вручную удалить поле и все его данные (не рекомендую)
drush sql-query "DELETE FROM field_config WHERE field_name = 'fieldname'"
drush sql-query "DELETE FROM field_config_instance WHERE field_name =' fieldname'"
drush sql-query "DROP TABLE field_data_field_fieldname"
drush sql-query "DROP TABLE field_revision_field_fieldname"

Задать пароль полтзователя
drush upwd --password="asdf" admin

Блокировать пользователя
drush user-block joe

Завершить сессии всех пользователей
drush sql-query 'TRUNCATE TABLE sessions;'

Завершить сессию определённого пользователя
drush sql-query 'DELETE FROM sessions WHERE uid = 2;'

Получить одноразовую ссылку для входа под админом
drush uli

Запустить крон
drush cron

Запустить крон без исключений
drush cron-run

Задать переменную
drush vset variable_name 'value'

Получить значение переменной
drush vget variable_name

Показать последние события в логах (watchdog)
drush ws

Показывать логи в реальном времени
drush ws --tail

Запустить свой код
drush eval "variable_set('foo', 'bar');"

Пересканировать весь код в модулях включая в себя каталоги, сохраняя расположение каждого интерфейса или класса в базе данных
drush eval "registry_rebuild();"

Если не вышло потому, что Drupal не загружается, сделать это таким образом:
drush dl registry_rebuild
drush rr

Изменить уровень предупреждений

Отображать только ошибки и предупреждения
drush vset -y 1

Отображать всё
drush vset -y 2

Скрыть всё
drush vset -y 0

Включить режим обслуживания
drush vset -y maintenance_mode 1

Войти в консоль MySQL
drush sql-cli

Импорт резервной копии базы данных
drush sql-cli

Экспорт резервной копии базы данных
drush sql-dump | gzip --stdout > $(date +\%Y-\%M-\%d-\%H-\%M-\%S).sql.gz

Удалить все таблицы базы данных (очистить базу данных)
drush sql-drop
Полезно перед импортом резервной копии базы данных.

Отобразить все drush сайты
drush site-alias

Установить Друпал через Drush
drush site-install

Удалить все материалы определённого типа
sudo drush generate-content 0 --kill --types=facebook,instagram,tweet
Обратите внимание, должен быть установлен модуль Devel и Devel Generate. Альтернативой будет drush migrate-wipe

Удалить тип материала
drush php-eval "node_type_delete('job_posting')node_types_rebuild();menu_rebuild();"

Генерировать произвольный контент
sudo drush generate-content 20 --types=page

Создать скелет для кастомного модуля
drush mb my_module menu cron --write --name="My module"

Ещё больше отличных комманд можно найти тут: groups.drupal.org/node/28088
Так же смотрите drushcommands.com