Skip to main content

Bash for Python

Project description

A library that enables easy running and concatenation of bash commands in python


Install using pip:

pip install bash


Run commands as you would in bash:

>>> from bash import bash
>>> bash('ls . | grep ".pyc"')

Chain commands for the same effect:

>>> bash('ls . ').bash('grep ".pyc"')

This becomes increasingly useful if you later need to reuse one such command:

>>> b = bash('ls . ')
>>> b.bash('grep ".pyc"')
>>> b.bash('grep ".py$')

Access stdout and stderr attributes:

>>> b = bash('ls')
>>> b.stdout
>>> b.stderr

Get the return code generated by a command:

>>> b = bash('ls')
>>> b
>>> b.code

To get a stripped, unicode string version of bash.stdout call value():

>>> b = bash('ls').value()


I found that I was often having to write the same lines of code to handle running bash commands from python.

This provides a pip-installable, tested shortcut to writing:

from subprocess import PIPE, Popen

p = Popen(cmd, shell=True, stdout=PIPE, stdin=PIPE, stderr=PIPE)
output, err = p.communicate()


Please note that this library uses shell=True under the hood. This means that this library is NOT suitable for running untrusted commands. (See explanation)

Running the tests

Simply use a test runner.

$ nosetests

Support + Contributing

Feel free to make pull requests, or report issues via the repo:

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bash-0.6.tar.gz (2.8 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page