#!/bin/bash

Die Bourne-again shell (bash) ist auf vielen unixoiden Systemen die Standard-Shell, hier als Synonym für das Arbeiten mit Kommandozeileninterpretern im allgemeinen.

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

Das Testen von Drupal-Installationsprofilen ist relativ mühselig, da sich ein Teil der Schritte, bis man überhaupt erst zum Testen der eigentlichen Funktionalität kommt,
mit dem Build-Prozess beschäftigt.

Diesen muß man eigentlich für jede Änderung erneut durchlaufen...

  1. Drush make (das macht es im Falls des Feature-Server-Installations-Profiles)
    1. Drush make mit distro.make aus dem Git-Repository
    2. Download des Drupal-Cores
    3. Klonen des in distro.make hinterlegten Repositories für das Installationsprofil
    4. Rekursive Suche nach weiteren Drush-Makefiles,
      runterladen der Drupal-Module und des Themes, die im gefundenen Makefile drupal-org.make spezifiziert sind
  2. Sybolischer-Link vom erstellten Build auf die DocumentRoot des für Testzwecke angelegten VirtualHosts
  3. Drop auf alle Tabellen in der Zieldatenbank
  4. Installation von Drupal und einem bestimmtem Installationsprofiles, hier fserver_profile

In der scheinbaren Routine des manuellen Durchlaufen dieser Schritte entsteht zudem auch mal schnell ein Fehler.

So habe ich beim gefühlt 100sten Mal des Durchlaufens dieser Prozedur versehentlich in der falschen Datenbank alle Tabellen ge-dropt-t und dachte mir, Automatisierung muss her, schreib ein Shellskript...

Gestern wurde drush in der Version 2.1 herausgegeben.

Neben zahlreichen Bug Fixes gibt es zwei signifikante Änderungen, die ich hier beschreiben möchte.

  1. Die Entfernung des Shebang's in drush.php.
  2. Die Einführung von Aliases.

Drush – Das Sackmesser für die Kommandozeile.
Mein Vortrag über drush auf dem DrupalMediaCamp 2009 in Aarau, Schweiz.

Foto von Jürgen Brocke

Drush ist eine Schnittstelle für Drupal auf der Kommandozeile, praktisch wie Schweizer-Taschenmesser und gerade für jene, die sowieso mit der Shell arbeiten.

Da sind sie, die langerwarteten assoziativen Arrays in der BASH!

Hinzugekommen sind assoziative Arrays, die mit declare -A name erzeugt werden. Sie unterscheiden sich von den bisherigen Arrays dadurch, dass sie als Index beliebige Strings benutzen können. Abgesehen davon ist die Verwendung beider Datentypen identisch, so werden einzelne Elemente etwa in beiden Fällen mit ${name[index]} angesprochen.
Aus heise.de: Unix/Linux-Shell Bash in Version 4

Um drush in einer Multisiteumgebung zu arbeiten, haben sich folgende Mechanismen als nützlich erwiesen:

In der BASH ist es möglich mit eindimensionalen Arrays zu arbeiten:

  1. #!/bin/bash
  2.  
  3. declare -a array1
  4. array1=(zero one two three)
  5. array1[4]="and four"
  6. echo ${array1[2]}
  7. echo ${array1[@]}
#!/bin/sh

# date:         2003-07-23
# author:       Florian Latzel, bbsh2ala@bg.bib.de
# name:         install_postgres
# version:      0.07
# description:  -
# changes:      checks psql version number
#              (should be 7.3.3)
#              
# todo:         checks if needed programms are installed
#               (command --help>/dev/null)
#               ->Problem: stderr in logfile?
#               writing PGDATA in /etc/.profile