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"') bash.pyc tests.pyc
Chain commands for the same effect:
>>> bash('ls . ').bash('grep ".pyc"') bash.pyc tests.pyc
This becomes increasingly useful if you later need to reuse one such command:
>>> b = bash('ls . ') >>> b.bash('grep ".pyc"') bash.pyc tests.pyc >>> b.bash('grep ".py$') bash.py tests.py
Access stdout and stderr attributes:
>>> b = bash('ls tests.py') >>> b.stdout 'tests.py\n' >>> b.stderr ''
Get the return code generated by a command:
>>> b = bash('ls tests.py') >>> b tests.py >>> b.code 0
To get a stripped, unicode string version of bash.stdout call value():
>>> b = bash('ls tests.py').value() u'tests.py'
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)
Simply use a test runner.
$ nosetests
Feel free to make pull requests, or report issues via the repo: