Categories
Linux Tutoriais UNIX

Como rodar múltiplos comandos usando o sudo, no Linux e UNIX

Como executar uma sequência de comandos, que necessitam de privilégios administrativos, com apenas um sudo.

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.
teclado dell
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'

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.