Drush

Created on
Updated on
Written By
Drush

Dru(pal)sh(ell) is an essential tool if you are working with Drupal intensively. If you don't know it yet, Drush is command line shell and scripting interface for Drupal. It helps you to quickly perform various administation and maintenance tasks using only a terminal. If you are not convinced, you should probably install it and give it a try. You won't regret it. It's awesome and will save you headaches, time and again more time. If you are using Drush, you must have been using the command "drush cc all" like a million time. I have. But Drush can do much more.

Drush is your swiss knife for drupal

This is neither a tutorial on how to use Drush, nor an exhaustive list of commands. It's more a limited list of commands that we use on a daily basis or that have save our days. If you use Drush, let us know your best tricks and tips.

Users

# Provide a one-time login for the root user
drush uli
# Provide a one-time login for a particular user based on the UID or mail
drush uli 2
drush ul email@gmail.com

Logs

# Tail the watchdog log in your terminal
drush ws --tail

Features

Feature is sometimes a bit clumsy, but is a must have if you are serious about deployments. Unfortunately, the GUI becomes unusable on large website. Drush comes to the rescue, and will give you the power to easily revert, update or add extra components to your existing features.

# List all the components
drush fc
drush fc --not-exported
# Add a new component to an existing feature
drush fe component:name modulename

# List all features
drush fl
# Update a feature (database to code)
drush fu feature-name
# Update all feature without prompting for confirmation
drush fua -y
# Revert a feature (code to database)
drush fr feature-name
# Revert all feature without prompting for confirmation
drush fra - y

Modules

# Download a module
drush dl module-name
# Download module for a specific release
drush dl module-name-7.x-2.0
drush dl module-name-7.x-2.0 --destination=site/.....
# Search if a module exist and its status.
drush pml --no-core | grep module-name
# Enable/disable/uninstall a module
drush en module-name
drush dis module-name
drush pm-uninstall module-name
# Reinstall a module [Require the devel module]
drush devel-reinstall module-name

Clean Cache

# Flush cache with prompt
drush cc
# Flush all cache
drush cc all
# Flush image preset
drush image-flush

Cron

# Run cron
drush cron

Upgrade

# Check if any updates are available
drush up -n | grep available
# Update DB (similar to /update.php)
drush updb
# Update core and DB
drush upc
# Backup db + update contrib
drush up

Variables

# Set/get/delete a variable
drush vget variable-name
drush vset variable-name variable-value
drush vdel variable-name
# Particularly useful if you got a "white screen of death" (WSOD)
drush vset theme.default themename
drush vset admin.theme themename

Archives

# Archive the code, db and asset in a single file
drush ard --destination=/var/www/site/backups/example.tar
# Dump, Drop or import the DB
drush sql-dump > mydb.sql
drush sql-drop
drush sql-cli < mydb.sql 
# Connect to mysql
drush sqlc

Hope you found those commands useful. Feel free to share your best tricks and tip with us.