[unix] 파이프 된 명령 / 프로그램 체인으로 watch 명령을 사용하는 방법

나는 보통 watch리눅스 유틸리티를 사용하여 n 초마다 명령의 출력을 반복적으로 볼 수 있습니다.watch df -h /some_volume/

그러나 다음 watch과 같은 파이프 일련의 명령 으로 사용할 수없는 것 같습니다.

$ watch ls -ltr|tail -n 1

내가 그렇게하면 watch실제로보고 ls -ltr있고 출력이 전달되어 tail -n 1아무것도 출력하지 않습니다.

내가 이것을 시도하면 :

$ watch (ls -ltr|tail -n 1)

나는 얻다

$ watch: syntax error near unexpected token `ls'

그리고 다음 중 하나라도 다른 이유로 실패합니다.

$ watch <(ls -ltr|tail -n 1)

$ watch < <(ls -ltr|tail -n 1)

$ watch $(ls -ltr|tail -n 1)

$ watch `ls -ltr|tail -n 1)`

그리고 마지막으로 이렇게하면 :

$ watch echo $(ls -ltr|tail -n 1)

내부 명령 $()이 한 번만 실행되고 결과 출력 문자열이 항상 리터럴로 인쇄 ( “감시”) 되므로 주어진 간격으로 출력이 변경되지 않습니다 .

watch파이프 된 명령 체인을 사용 하여 명령을 작동 시키려면 어떻게해야 합니까?



답변

watch 'command | othertool | yet-another-tool'


답변

watch -n 1 "ls -lrt | tail -n20; date"

파이프와 줄을 지어 보자.


답변

하위 디렉토리의 모든 파일도 나열하려면 exec 옵션과 함께 find 명령을 사용할 수 있습니다.

watch30 초마다 업데이트되며 find현재 디렉토리 (하위 디렉토리 포함)에서 모든 * .log 파일을 검색하고 파일 이름과 마지막 10 행을 인쇄합니다.

watch -n30 'find . -name "*.log" -print -exec tail -n10 {} \; '


답변