Add bash-like autocompletion to Drush5
Drush has a dozens of commands and these commands have their own parameters... not everybody has ambitions to win competitions from knowledge of the drush commands.
Fortunately, we are able to enable autocomplete and then list and choose commands/parameters by pressing [TAB] key.
Copy following code and past it at the end of ~/.bashrc file
# Ensure drush is available.
which drush > /dev/null || alias drush &> /dev/null || return
__drush_ps1() {
f="${TMPDIR:-/tmp/}/drush-env/drush-drupal-site-$$"
if [ -f $f ]
then
DRUPAL_SITE=$(cat "$f")
fi
[[ -n "$DRUPAL_SITE" ]] && printf "${1:- (%s)}" "$DRUPAL_SITE"
}
# Completion function, uses the "drush complete" command to retrieve
# completions for a specific command line COMP_WORDS.
_drush_completion() {
# Set IFS to newline (locally), since we only use newline separators, and
# need to retain spaces (or not) after completions.
local IFS=$'\n'
# The '< /dev/null' is a work around for a bug in php libedit stdin handling.
# Note that libedit in place of libreadline in some distributions. See:
# https://bugs.launchpad.net/ubuntu/+source/php5/+bug/322214
COMPREPLY=( $(drush --early=includes/complete.inc "${COMP_WORDS[@]}" < /dev/null 2> /dev/null) )
}
# Register our completion function. We include common short aliases for Drush.
complete -o nospace -F _drush_completion d dr drush drush5 drush6 drush6 drush.php
Save the file and reload bash:
source ~/.bashrc
Note: This code is copy from drush.complete.sh file which You can find here:
http://drupalcode.org/project/drush.git/blob/HEAD:/drush.complete.sh
Written by Adam Dziendziel
Related protips
2 Responses
You can also use the drush.complete.sh script directly fron your Drush installation, simply add the following to either your ~/.bashcompletion or ~/.bashprofile file:
source /path/to/drush/drush.complete.sh
over 1 year ago
·
Awsome! Looking for something like this for a long time!
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Drush
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#