Check if a command is valid
Chris Rebert
clp2 at rebertia.com
Tue Jul 13 10:12:41 EDT 2010
On Tue, Jul 13, 2010 at 4:33 AM, Jean-Michel Pichavant
<jeanmichel at sequans.com> wrote:
> Kenny Meyer wrote:
>> I have to figure out if a string is callable on a Linux system. I'm
>> actually doing this:
>>
>> def is_valid_command(command):
>> retcode = 100 # initialize
>> if command:
>> retcode = subprocess.call(command, shell=True)
>> if retcode is 0:
>> print "Valid command."
>> else:
>> print "Looks not so good..."
>>
>> is_valid_command("ls")
>>
>> Never mind the code, because this is not the original.
>> The side effect of subprocess.call() is that it *actually* executes
>> it, but I just need the return code. What are better ways of doing
>> this?
>>
>
> I'm not sure I get exactly what you're searching for but here's something
> that may help.
>
> If you just whant to know if a command (without parameter) is a Linux
> command (either a builtin, alias of file exe) you can use the "where"
> command and inspect its return code, the command is not executed though.
>
>>where ls
> ls is an alias for ls --color=auto -F
> ls is /bin/ls
>>where apt-get
> apt-get is /usr/bin/apt-get
>>where doesnotexists
> doesnotexists not found
> zsh: exit 1
`where` seems to be a zsh built-in:
$ # I'm in UR bash
$ nonexistent
-bash: nonexistent: command not found
$ where bash
-bash: where: command not found
And not everyone has zsh installed, so...
I don't see why one shouldn't use the standard `which` *nix command instead.
Also, in retrospect, my suggestion should probably have checked the
return code rather than the output; more efficient and simple that
way.
Cheers,
Chris
--
http://blog.rebertia.com
More information about the Python-list
mailing list