![sudo에서 Bash 표현식 실행](https://linux55.com/image/82673/sudo%EC%97%90%EC%84%9C%20Bash%20%ED%91%9C%ED%98%84%EC%8B%9D%20%EC%8B%A4%ED%96%89.png)
최근 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'