sudoでBash式を実行する

sudoでBash式を実行する

最近のapt-get履歴を一覧表示できます。

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

すべての履歴ファイルに対してこれを自動化しようとしています。

私は試した:

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

しかし、エラーが発生します-bash: syntax error near unexpected token do

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

しかし、エラーが発生します-bash: /var/log/apt/history.log.1.gz: Permission denied

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

しかし、エラーが発生します-bash: /var/log/apt/history.log.1.gz: Permission denied

ベストアンサー1

sudoシェルコマンド構造ではなく、バイナリファイルにのみ適用されます。を使用してプロセス全体を実行する必要がありますsudo。ループで何度も呼び出すことは意味がありませんsudo。ただし、パスワードをキャッシュすることもできます。

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

おすすめ記事