Autocompletition für Drush aktivieren

Ja, Drush auch kann Autocompletition, zu deutsch "Autovervollständigung"
und das anscheinenend nicht erst seit gestern, obwohl erst gestern entdeckt...

Tab-Vervollständigung

Ganz genau genommen, spricht man in diesem Fall der Autovervollständigung von einer Befehlszeilenergänzung bzw. Tab-Vervollständigung.
Es besteht auch im Drush-Kontext die Möglichkeit Drush-Befehle, globale Drush-Optionen und den spezifischen Optionen zu einem Drush-Befehlen
durch "tabben" (dem ein- oder zweimaligen Drücken der Tabulator Taste) in der Shell zu vervollständigen.

Beispiele

Tab-Vervollständigung von globalen Drush-Optionen:

florian@box:/var/www/example.com/drupal$ drush @git --<tab><tab>
--alias-path           --backend  
--backup-location      --cache-class-<bin>
--cache-default-class  --choice
--command-specific     --complete-debug
--config               --confirm-rollback
[...]

Tab-Vervollständigung von Drush-Befehlen, die mit sql- beginnen:

florian@box:/var/www/example.com/drupal$ drush @git sql-<tab><tab>
sql-cli   sql-conf   sql-connect    sql-create sql-drop
sql-dump  sql-query  sql-sanitize   sql-sync

Vervollständigung der Optionen, die mit dem Befehl sql-dump nutzbar sind:

florian@box:/var/www/example.com/drupal$ drush @git sql-dump --<tab><tab>
--create-db    --data-only   --gzip    --result-file   --structure-tables-key  
--tables-list   --database   --db-url  --ordered-dump  --skip-tables-key        
--tables-key

Einrichtung

In der ersten ebene des Drush Verzeichnisses befindet sich die Datei drush.complete.sh,
diese muss in meinem Fall von meiner benutzten Shell, der Bash ausgewertet werden.

Dazu inkludieren wir global, also für alle User verwendbar unter Debian oder Ubuntu diese Datei im Verzeichnis /etc/bash_completion.d durch einen symbolischen Link:

cd /etc/bash_completion.d
sudo ln -s /path/to/drush/drush.complete.sh

Um die Wirkung zu testen muss ein neue Shell gestartet werden damit die Konfigurations-Dateien und -Verzeichnisse erneut augewertet werden:

bash --login

Auf noch effizienteres Arbeiten mit Drush!

Siehe auch