Files
gh-omedia-drupal-skill-drup…/references/drush.md
2025-11-30 08:45:19 +08:00

388 lines
6.6 KiB
Markdown

# Drush Commands Reference
Comprehensive Drush command reference for Drupal 8-11+. These commands work with Drush 10, 11, and 12.
## Cache Management
```bash
# Clear all caches
drush cache:rebuild
drush cr
# Clear specific cache bins
drush cache:clear css-js
drush cache:clear render
# List all cache bins
drush cache:bins
```
## Configuration Management
```bash
# Export configuration
drush config:export
drush cex
# Import configuration
drush config:import
drush cim
# Get configuration value
drush config:get system.site name
drush cget system.site name
# Set configuration value
drush config:set system.site name "My Site"
drush cset system.site name "My Site"
# Edit configuration in editor
drush config:edit system.site
# Delete configuration
drush config:delete mymodule.settings
# List all configuration
drush config:list
```
## Module Management
```bash
# Enable module
drush pm:enable mymodule
drush en mymodule
# Uninstall module
drush pm:uninstall mymodule
drush pmu mymodule
# List all modules
drush pm:list
drush pml
# List enabled modules only
drush pm:list --status=enabled
# Download module from drupal.org
drush pm:download webform
drush dl webform
```
## Database Operations
```bash
# Update database (run update hooks)
drush updatedb
drush updb
# Execute SQL query
drush sql:query "SELECT * FROM users WHERE uid=1"
drush sqlq "SELECT * FROM users WHERE uid=1"
# Connect to database CLI
drush sql:cli
drush sqlc
# Dump database to file
drush sql:dump > backup.sql
drush sql:dump --gzip > backup.sql.gz
# Drop all tables
drush sql:drop
# Sanitize database (for dev environments)
drush sql:sanitize
```
## User Management
```bash
# Login as user 1
drush user:login
drush uli
# Login as specific user
drush user:login admin
drush uli admin
# Create user
drush user:create newuser --mail="user@example.com" --password="password"
# Cancel/delete user
drush user:cancel username
# Add role to user
drush user:role:add "administrator" username
# Remove role from user
drush user:role:remove "administrator" username
# Change user password
drush user:password admin "newpassword"
# Block user
drush user:block username
# Unblock user
drush user:unblock username
```
## Content Management
```bash
# Generate test content
drush devel:generate:content 50 --bundles=article
# Delete content
drush entity:delete node --bundle=article
# Generate users
drush devel:generate:users 20
```
## State Management
```bash
# Get state value
drush state:get system.maintenance_mode
# Set state value
drush state:set system.maintenance_mode 1
# Delete state value
drush state:delete mymodule.last_run
```
## Theme Management
```bash
# List all themes
drush theme:list
# Enable theme
drush theme:enable mytheme
# Uninstall theme
drush theme:uninstall oldtheme
# Set default theme
drush config:set system.theme default mytheme
```
## Cron
```bash
# Run cron
drush cron
# Run cron for specific module
drush cron mymodule
```
## Status & Information
```bash
# Show site status
drush status
drush st
# Show core status and available updates
drush pm:security
# Show Drupal version
drush core:status
# Show requirements report
drush core:requirements
```
## Development & Debugging
```bash
# Watch for file changes and clear cache
drush watchdog:tail
# Show recent log messages
drush watchdog:show
# Show recent log messages and follow
drush watchdog:tail
# Evaluate PHP code
drush php:eval "echo \Drupal::VERSION;"
drush ev "echo \Drupal::VERSION;"
# Open PHP REPL
drush php:cli
```
## Generate Code (Drush Generate)
```bash
# Generate module
drush generate module
# Generate controller
drush generate controller
# Generate form
drush generate form
# Generate plugin block
drush generate plugin:block
# Generate service
drush generate service
# Generate theme
drush generate theme
# Generate hook implementation
drush generate hook
# Generate event subscriber
drush generate event-subscriber
# List all generators
drush generate --help
```
## Field Management
```bash
# Create field
drush field:create node.article.field_custom
# Delete field
drush field:delete node.article.field_custom
# List fields
drush field:list
```
## Locale/Translation
```bash
# Import translations
drush locale:import de
# Update translations
drush locale:update
# Check translation status
drush locale:check
```
## Queue Management
```bash
# Run specific queue
drush queue:run mymodule_queue
# List all queues
drush queue:list
# Delete items from queue
drush queue:delete mymodule_queue
```
## Deployment Commands
```bash
# Standard deployment workflow
drush updatedb -y
drush config:import -y
drush cache:rebuild
# One-liner deployment
drush updb -y && drush cim -y && drush cr
```
## Site Installation
```bash
# Install Drupal site
drush site:install standard --db-url=mysql://user:pass@localhost/dbname --account-name=admin --account-pass=admin
# Install with configuration
drush site:install --existing-config
```
## Alias Usage
Drush aliases allow running commands on remote sites.
```bash
# Run command on remote site
drush @production cache:rebuild
# Sync database from remote to local
drush sql:sync @production @self
# Sync files from remote to local
drush rsync @production:%files @self:%files
```
## Useful Flags
```bash
# -y: Assume "yes" to all prompts
drush en mymodule -y
# -v: Verbose output
drush cache:rebuild -v
# --uri: Specify site URI (multisite)
drush --uri=example.com cache:rebuild
# --root: Specify Drupal root directory
drush --root=/var/www/html cache:rebuild
# --debug: Show debug information
drush --debug cache:rebuild
```
## Custom Drush Commands
Create custom Drush commands by implementing Drush command files in your module:
**mymodule/src/Commands/MyModuleCommands.php**
```php
<?php
namespace Drupal\mymodule\Commands;
use Drush\Commands\DrushCommands;
/**
* Custom Drush commands for mymodule.
*/
class MyModuleCommands extends DrushCommands {
/**
* Performs a custom operation.
*
* @command mymodule:custom-operation
* @aliases mco
* @usage mymodule:custom-operation
* Runs the custom operation.
*/
public function customOperation() {
$this->output()->writeln('Running custom operation...');
// Your custom logic here
$this->logger()->success('Operation completed successfully!');
}
}
```
## Best Practices
1. **Aliases**: Create aliases in `drush/sites/` for easier multi-site management
2. **Automation**: Use Drush commands in deployment scripts
3. **Backup**: Always backup before running destructive commands
4. **Testing**: Test Drush scripts in development before production
5. **Version**: Check Drush version compatibility with `drush --version`
6. **Performance**: Use `drush status` to verify environment configuration