De man bash no parágrafo de expressões condicionais:
-x file
True if file exists and is executable.
Então, você pode usar:
[ -x /usr/bin/xeyes ] && echo "File is executable" || echo "File is not an executable or does not exist"
Como você pode verificar se um comando pode ser executável ou não no Linux?
Exemplo:
xeyes
De man bash no parágrafo de expressões condicionais:
-x file
True if file exists and is executable.
Então, você pode usar:
[ -x /usr/bin/xeyes ] && echo "File is executable" || echo "File is not an executable or does not exist"
Se você não conhece um caminho para o comando, você pode usar which para verificar onde está (é claro, se você o tiver em $ PATH). Se você conhece um caminho para o arquivo de comando, use if -x /path/to/command statement.
Se você souber a localização de onde o comando binary é mantido, basta fazer um ls -l . Se você não souber o local, primeiro localize o local usando o comando which
$ which xeyes
/usr/bin/xeyes
Se o comando tiver permissão de execução ( x ) definido, ele será executável.
$ ls -l /usr/bin/
-rw-rw-r-- 1 arushirai arushirai 0 May 23 11:58 123
-rwxrwxr-x 1 arushirai arushirai 0 May 23 11:58 xeyes
O -x <filename> , na verdade, verifica se o arquivo tem permissão de execução definida
Explicação:
A primeira coluna de ls -l mostra a permissão no arquivo.
-rwxrwxr-x
-rwxrwxr-x
type of file ( - é para arquivo regular) owner permission ( rwx : ler, gravar e executar) group permission ( rwx : ler, gravar e executar) other permission ( r-x : permissão de leitura e execução) Para mais informações sobre permissões de arquivos, leia: link
Tags bash executable linux command