Back to dev
[project/drush.git] / docs / shellaliases.html
1 <h1>Drush Shell Aliases</h1>
2
3 A Drush shell alias is a shortcut to any Drush command or
4 any shell command.  Drush shell aliases are very similar
5 to git aliases.
6 <p>
7   See: https://git.wiki.kernel.org/index.php/Aliases#Advanced
8 <p>
9 A shell alias is defined in a Drush configuration file
10 called drushrc.php.  See `drush topic docs-configuration`.
11 There are two kinds of shell aliases:  an alias whose value
12 begins with a '!' will execute the rest of the line as
13 bash commands.  Aliases that do not start with a '!' will
14 be interpreted as Drush commands.
15
16 <h3>Example:</h3>
17 <pre>
18     $options['shell-aliases']['pull'] = '!git pull';
19     $options['shell-aliases']['noncore'] = 'pm-list --no-core';
20 </pre>
21 With the above two aliases defined, `drush pull` will then be
22 equivalent to `git pull`, and `drush noncore` will be equivalent
23 to `drush pm-list --no-core`.
24
25 <h2>Shell Alias Replacements</h2>
26
27 Shell aliases are even more powerful when combined with shell alias
28 replacements and site aliases.  Shell alias replacements take the
29 form of {{sitealias-item}} or {{%pathalias-item}}, and also the
30 special {{@target}}, which is replaced with the name of the site alias
31 used, or '@none' if none was used.
32 <p>
33 For example, given the following site alias:
34 <pre>
35      $aliases['dev'] = array (
36        'root' => '/path/to/drupal',
37        'uri' => 'mysite.org',
38        '#live' => '@acme.live',
39      );
40 </pre>
41 The alias below can be used for all your projects to fetch the database
42 and files from the client's live site via `drush @dev pull-data`.
43 Note that these aliases assume that the alias used defines an item named
44 '#live' (as shown in the above alias).
45
46 <h3>Shell aliases using replacements:</h3>
47 <pre>
48     $options['shell-aliases']['pull-data'] = '!drush sql-sync {{#live}} {{@target}} && drush rsync {{#live}}:%files {{@target}}:%files';
49 </pre>
50 If the user does not use these shell aliases with any site alias, then
51 an error will be returned and the script will not run.
52
53 These aliases with replacements can be used to quickly run combinations of drush sql-sync
54 and rsync commands on the "standard" source or target site, reducing the risk of
55 typos that might send information in the wrong direction or to the wrong site.