Check if a command is valid

Jean-Michel Pichavant jeanmichel at sequans.com
Tue Jul 13 07:33:05 EDT 2010


Kenny Meyer wrote:
> Hello,
>
> 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

retcode = subprocess.call(command, shell=True)

becomes

retcode = subprocess.call("where " + command)

JM

NB : this does not work with parameters appened to the command.





More information about the Python-list mailing list