파이프와 함께 시계 사용


179

이 명령을 실행하고 싶습니다 :

watch -n 1 tail -n 200 log/site_dev.log | grep Doctrine

그러나 그레프가 꼬리 대신 시계에서 뛰려고한다고 생각하기 때문에 실행되지 않습니다.

같은 것을 할 수있는 방법이 있습니까

watch -n 1 (tail -n 200 log/site_dev.log | grep Doctrine)

고마워요!

답변:


269

명령을 따옴표로 묶으십시오

watch -n 1 'tail -n 200 log/site_dev.log | fgrep Doctrine'

2
파이프 라인에 따옴표 (예 :)도 포함되어 있으면 어떻게 awk '{print $3}'됩니까? 편집 : 이것 처럼
OrangeDog

2
당신은 \, 즉와 그 문자 탈출 할 수watch -n 'awk \'{print $3}\''
레프

29

내가 틀렸을 수도 있지만, 더 간단하게 동일한 일을 달성하지 못합니까 (추가 될 때 일치하는 로그 라인을 보는 것)?

tail -f -n 200 log/site_dev.log | grep Doctrine

6
CPU에 관한 한 이것이 더 효율적일 수 있다는 데 동의하지만 "파이프와 함께 시계 사용"이라는 주제에서 시계를 사용하지 않으므로 답이 아닙니다. 시계와 파이프가 꼬리와 관련하여 자주 나타나지 않는 것처럼 보이기 때문에 예제 질문이 잘못되었을 수 있습니다.
tudor

1
아니요, 당신은 수단과 목적을 혼란스럽게 생각합니다. 사용자 Doctrine는 점점 커지는 파일에 도착하는 것을보고 싶었고 툴박스를 살펴보면 그가 찾은 유일한 것은이었습니다 watch. 그가 정말로 알아야 할 것은이었습니다 tail -f. 또한 참조 meta.stackexchange.com/questions/66377/what-is-the-xy-problem
dland

10
나는 이것들이 모두 받아 들일만한 대답이라고 생각합니다. 최상위 답변과 정확한 답변은 제시된 정확한 질문에 정확하게 답변하며,이 답변 은 OP가 자신을 위해 생성 한 XY 문제 를 정확하게 식별하고 실제로 원하는 솔루션을 제공합니다. 두 가지 답변 모두이 질문을 겪는 사람에게 유용 할 수 있습니다.
cdhowie

2
나는 볼 방법을 찾고 있었고 shellcheck *.sh | grep line | wc -l받아 들여진 대답은 나에게 유용했습니다.
Amedee Van Gasse

2

명령을 따옴표로 묶을 수 있습니다.

watch -n 1 'tail -n 200 log/site_dev.log | fgrep Doctrine'

명령에 따옴표가 있으면 적절한 이스케이프를 사용하여 다른 유형의 따옴표를 사용할 수 있습니다.

watch -n 1 $'tail -n 200 log/site_dev.log | fgrep \'Doctrine.*\''

정말로 영리한 일을하려고한다면, 명령이나 명령을 스크립트에 넣고 watch와 함께 사용하십시오 :

cat <<EOF >/tmp/watch-command
tail -n 200 $(pwd)/log/site_dev.log | fgrep Doctrine
EOF
chmod +x /tmp/watch-command
watch /tmp/watch-command

필요한 경우 상대 경로를 고려해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.