Como encontrar e executar um script bash?

2

Eu tenho um script chamado script.sh . Eu não sei onde está no sistema de arquivos, mas sei que existe.

Como faço para encontrar o script, torná-lo executável e executá-lo em uma linha por meio da linha de comando?

Eu gostaria de executá-lo com um único comando. Encontre, torne executável e execute.

    
por Pythoncoder 22.02.2017 / 08:59

2 respostas

5

  1. Use o comando find para isso em sua casa:

    find ~ -name script.sh 
    
  2. Se você não encontrou nada com o acima, use o comando find para ele em todo o F / S:

    find / -name script.sh 2>/dev/null
    

    ( 2>/dev/null evitará erros desnecessários a serem exibidos).

  3. Inicie:

    /<whatever_the_path_was>/script.sh
    

E tudo de uma vez daria; mais sobre como encontrar e executar :

find / -name "script.sh" -exec chmod +x {} \; -exec {} \; 2>/dev/null 

(cuidado se você tiver mais de um " script.sh ", ele executará todos eles)

    
por 22.02.2017 / 09:06
2

Pode haver vários scripts chamados exatamente a mesma coisa em seu sistema de arquivos, então localizá-lo com base no nome e executá-lo cegamente provavelmente é uma idéia muito ruim.

Para localizá-lo, use find como mostrado por J. Chomel em outra resposta à sua pergunta ou use locate :

$ locate script.sh

Isso localizará todos os arquivos chamados script.sh em locais legíveis por todos os usuários com base em uma pesquisa de banco de dados em seu sistema. Observe que o banco de dados é atualizado regularmente (uma vez por dia ou uma vez por semana, dependendo de como ele está configurado), portanto, arquivos adicionados desde a última verificação de sistema de arquivos não serão encontrados, mas é muito mais rápido que find .

Você pode usar select para gerar um menu a partir do qual você pode selecionar o script correto e executá-lo:

$ select script in $( locate script.sh ); do echo "$script"; break; done

Altere echo para command para realmente executar o script selecionado, em vez de apenas imprimir seu nome.

    
por 22.02.2017 / 09:35