Use TAB key complete feature in Linux Bash console
One of the best features of Django CMS is to have a wide set of commands to manage your web application from console.
One of the things that Linux users miss when working with a clean instance of Django is the ability of pressing the TAB key while writing a command to autocomplete them or presing TAB key twice to see all the available options.
In this tutorial we will enable such feature.
Bash completion feature works by having a special script that uses the three builtin commands that are available to manipulate the programmable completion facilities, they are:
For each program, there should be a script that uses them to properly enable the autocompletion feature, in Django this file is located in a special directory in main repository, not included in the delivered project by default, it is located at: https://github.com/django/django/master/extras/django_bash_completion
We first start by downloading this file into
~/local/share/django/extras directory, so in this case
mkdir -p ~/local/share/django/extras would create the needed path.
Then downloading it and posting in the above directory wget -O ~/local/share/django/extras/django_bash_completion.sh https://raw.github.com/django/django/master/extras/django_bash_completion.
$ mkdir -p ~/local/share/django/extras $ wget -O ~/django_bash_completion.sh https://raw.github.com/django/django/master/extras/django_bash_completion --2019-01-29 18:10:52-- https://raw.github.com/django/django/master/extras/django_bash_completion Resolving raw.github.com (raw.github.com)... 184.108.40.206 Connecting to raw.github.com (raw.github.com)|220.127.116.11|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://raw.githubusercontent.com/django/django/master/extras/django_bash_completion [following] --2019-01-29 18:10:53-- https://raw.githubusercontent.com/django/django/master/extras/django_bash_completion Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 18.104.22.168 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|22.214.171.124|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 2332 (2,3K) [text/plain] Saving to: ‘/home/marcanuy/django_bash_completion.sh’ /home/marcanuy/django_bash_completion 100%[======================================================================>] 2,28K --.-KB/s in 0s 2019-01-29 18:10:53 (10,4 MB/s) - ‘/home/marcanuy/django_bash_completion.sh’ saved [2332/2332]
2. Sourcing the file
Now we need to source the downloaded script, so the autocompletion is loaded into our console.
To make it available in our console we just run source ~/local/share/django/extras/django_bash_completion.sh.
But there is a good chance that there is a virtual environment for each project, so depending in what type of virtual environment you are using you can load it at different places:
If you load your virtual environment manually, e.g.:
source ~/.virtualenvs/MY-PROJECT/bin/activate, with a simple script in you
project root like
#!/bin/bash source ~/.virtualenvs/MY-PROJECT/bin/activate source ~/local/share/django/extras/django_bash_completion.sh
And then load your virtual environment by executing source activate.sh
2.2. Using virtualenvwrapper
For virtualenvwrapper, add
source ~/local/share/django/extras/django_bash_completion.sh in the
After doing this simple installation, each type we press the TAB key while executing a command with python manage.py TAB it will load the list of available commands or autocomplete accordingly.
- Disable new users singup when using Django's allauth packageSeptember 3, 2019
- How to add ads.txt to Django as requested by Google AdsenseAugust 30, 2019
- Have multiple submit buttons for the same Django formJuly 2, 2019
- Better Testing with Page Object Design in DjangoMay 1, 2019
- Generating slugs automatically in Django without packages - Two easy and solid approachesFebruary 14, 2019
- How to set up Django tests to use a free PostgreSQL database in HerokuFebruary 13, 2019
- Dynamically adding forms to a Django FormSet with an add button using jQueryFebruary 6, 2019
- Use of Django's static templatetag in css file to set a background imageFebruary 1, 2019
- Activate Django's manage.py commands completion in Bash in 2 steps
- Sending Emails with Django using SendGrid in 3 easy stepsJanuary 9, 2019
- Adding Users to Your Django Project With A Custom User ModelSeptember 21, 2018
- Setting Up A Factory For One To Many Relationships In FactoryboyApril 17, 2018
- Generate UML class diagrams from django modelsMarch 24, 2018
- Set Up Ubuntu To Serve A Django Website Step By StepJuly 3, 2017
- Django Project Directory StructureJuly 16, 2016
- Django Configuration and environment isolationJune 10, 2016
- Django OverviewJune 2, 2016
- Adding a Cancel button in Django class-based views, editing views and formsJuly 15, 2019
- Using Django Model Primary Key in Custom Forms THE RIGHT WAYJuly 13, 2019
- Django formset handling with class based views, custom errors and validationJuly 4, 2019
- How To Use Bootstrap 4 In Django FormsMay 25, 2018
- Understanding Django FormsApril 30, 2018
- How To Create A Form In DjangoJuly 29, 2016