Você pode usar uma técnica muito simples, para rodar múltiplos comandos — que precisem de privilégios administrativos.
Se você já sabe como rodar um comando atrás do outro, em fila, como no exemplo abaixo, talvez saiba que, ao fazer isto com o sudo, frequentemente a senha dada “perde a validade”, deixando a sequencia de comandos em espera.
Para rodar uma sequencia de comandos, use o ‘&&’, desta forma:
comando1 &&; comando2 && comando3
Se quiser que eles tenham privilégios de root, em tese, bastaria isso:
sudo comando1 && sudo comando2 && sudo comando3
Depois disto, você vai embora pra casa, tomar um café ou fazer qualquer outra coisa, confiante de que as 3 tarefas serão realizadas, sem interrupção — uma logo após a outra.
O problema, nesta linha de raciocínio, surge quando a gente se lembra que o tempo padrão de “validade” do comando sudo é 15 minutos.
Decorrido este prazo, o sudo volta a pedir a senha do usuário.
Desta forma, transcorridos os 15 minutos, a sua linha de comandos poderá ainda estar parada e sem conclusão — esperando pela senha.
Para evitar esta chatice, rode a sequência com o sudo, usando o interpretador de comandos sh com a opção ‘-c’:
sudo sh -c 'comando1 && comando2'
Com esta formação, você também pode usar o bash, se quiser:
sudo bash -c 'comando1 && comando2'
Pode ser útil usar esta técnica quando se quer deixar o sistema sendo atualizado — tarefa na qual, comumente, se usa 2 comandos (no Debian/Ubuntu):
sudo sh -c 'apt update && apt -y full-upgrade'
O que este comando faz:
sudo
— como você já sabe, confere superpoderes a tudo o que vem depois, nesta mesma linha de comando.sh
— abre uma shell do interpretador de comandos Dash padrão do Linux/Unix.-c
— executa os comandos, que seguem entre as aspas.
Ainda, com o comando apt, o exemplo abaixo roda a opção de atualização com os repositórios, antes de instalar um programa:
sudo -- sh -c 'apt update && apt install -y thermald'