Como executar automaticamente um comando toda vez que um certo comando termina?

-5

Exemplo: Quando o processo add-apt-repository terminar, execute imediatamente apt-get update - sem precisar digitar o comando manualmente.

Existe uma maneira de fazer isso? É possível definir essa combinação sem o uso da senha sudo ? (embora eu não me importe de qualquer forma)

Estou perguntando o seguinte: Como posso vincular dois comandos juntos para que, sempre que eu executar um comando específico, sempre execute o comando vinculado após ele?

    
por TellMeWhy 25.11.2015 / 12:17

4 respostas

4

Existem vários problemas com um alias ou uma função bash simples, mas você pode escrever um pequeno wrapper para um comando e colocá-lo em /usr/local/bin , que tem prioridade em seu caminho.

Este é um pequeno truque para criar um script e chmod-lo ao mesmo tempo. . Ele irá despejar um script de wrapper executável em /usr/local/bin/add-apt-repository .

sudo install -b -m 755 /dev/stdin /usr/local/bin/add-apt-repository << 'EOF'
#!/bin/sh
/usr/bin/add-apt-repository "$@"
apt-get update
EOF 

Para reverter isso, basta excluir /usr/local/bin/add-apt-repository .

Se você quiser fazer algo mais frutífero (como vincular apt-get install e apt-get update para que você sempre atualize antes de instalar), só precisamos expandir o script para ver os argumentos.

sudo install -b -m 755 /dev/stdin /usr/local/bin/apt-get << 'EOF'
#!/bin/sh
if [ "$1" = "install" ] ; then
    /usr/bin/apt-get update
fi
/usr/bin/apt-get "$@"
EOF 

Embora considere que isso executará uma atualização antes de todas as apt-get install chamadas. Isso pode parecer útil, mas pode ser realmente entediante na prática.

    
por Oli 25.11.2015 / 12:33
4

Como normalmente,

sudo bash -c "command1; command2"

Se você deseja executar o comando2 somente depois que o comando1 for concluído com êxito, você pode usar como && em vez de ; .

sudo bash -c "command1 && command2"

Vou usar o seguinte comando para o seu exemplo.

sudo bash -c "add-apt-repository <repo> && apt-get update"
    
por xiaodongjie 25.11.2015 / 12:26
1

Para executar certos comandos em uma seqüência particular, o script de shell é usado. Tudo o que você precisa fazer é - Abrir o terminal pressionando Ctrl + Alt + T E siga os passos -
1. Digite gedit filename.sh
2. Depois de inserir este comando, um editor de texto será aberto, onde você poderá digitar os comandos necessários, um em cada linha. Por exemplo,
sudo add-apt-repository e apt-get update
3. Depois de digitar todos os comandos, salve e saia usando a GUI ou pressione Ctrl + S e Ctrl + Q .
4. Agora você retornará ao terminal. Execute sh filename.sh no terminal e seus comandos serão executados, desde que não haja erros em seus comandos.
Além disso, se você fizer login a partir da conta de superusuário (root), não precisará digitar sudo em seu comando.

    
por Prachi 25.11.2015 / 13:38
0

A maneira mais fácil de fazer isso é executar:

sudo add-apt-repository <ppa_name> && sudo apt-get update

Se o primeiro comando for concluído com sucesso, o segundo será executado.

    
por Pilot6 26.11.2015 / 14:48