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'

관련 정보