Looking at http://docs.python.org/2/library/subprocess.html#frequently-used-arguments I made the assumption that unless you use shell=True, there is no ability to use rm,cp,mv etc. Maybe the documentation is out-of-date as they are feeding the call method with a string, where it should be a list. But using shell=False certainly doesn’t prevent the usage of said shell commands.
shell=False disables all shell based features
After looking at subprocess.py, I can see that all that argument does is add ["/bin/sh", "-c"] to the start of the argument string.
Can someone clarify this for me?
The shell features they are talking about are things like
|pipes,*globs and other wildcards, stdout/stderr redirects with>or2>,<(process substitution)etc. They are not talking about other commands/programs such as mv, grep, etc.