Executando uma expressão Bash do sudo

1

Eu posso listar meu histórico recente do apt-get com: -

zcat /var/log/apt/history.log.1.gz

Estou tentando automatizar isso para todos os arquivos de histórico.

Eu tentei:

sudo for logf in $( /var/log/apt/history.log.?.gz ); do zcat $logf ; done

mas receba o erro -bash: syntax error near unexpected token do

for logf in $( /var/log/apt/history.log.?.gz ); do zcat $logf ; done

mas receba o erro -bash: /var/log/apt/history.log.1.gz: Permission denied

for logf in $( /var/log/apt/history.log.?.gz ); do sudo zcat $logf ; done

mas receba o erro -bash: /var/log/apt/history.log.1.gz: Permission denied

    
por Milliways 03.02.2016 / 08:28

1 resposta

3

sudo funciona apenas com binários, mas não com estruturas de comando de shell. Você tem que executar a coisa toda com sudo . Não faz muito sentido chamar sudo várias vezes dentro de um loop. Pode armazenar em cache a senha, no entanto.

sudo bash -c 'for logf in /var/log/apt/history.log.?.gz; do zcat "$logf"; done'
    
por 03.02.2016 / 08:53

Tags