터미널에서 텍스트 파일을 열고 변경 될 때마다 자동 새로 고침


15

텍스트 파일이 변경 될 때마다 즉시 자동 새로 고침을 사용하여 터미널에서 텍스트 파일을 어떻게 열 수 있습니까?

내가 검토 한 결과 vim:set autoread있지만 (예 : 키 누르기 내 일부 초등학교 입력을 요구 vim새로 고침을 트리거).

자동 새로 고침에 핸즈프리가 필요합니다. 이 작업을 수행하기위한 해킹이 있습니까?

Crunchbang 11을 사용하고 있지만 터미널에 익숙합니다.


그게 뭐에요? 이 파일은 무엇입니까? 로그 인 경우 일반적으로 맨 아래에 새 줄이 추가되면을 사용할 수 있습니다 tail -f $file.
jirib

특히, 맨 아래에 새 줄을 추가하는 것이 아니라 다른 텍스트 파일을 작성하는 Python 스크립트를 작성 중입니다. 해당 텍스트 파일을 모니터링하고 싶습니다.
Kit

inotify .......?
jirib

에 익숙하지 않습니다 inotify. 그것을 살펴보면 C 프로그래밍으로 액세스 해야하는 API이기 때문에 곧 할 일이 없습니다. 쉘 명령 솔루션을 찾고 있습니다.
Kit

1
일반적으로이라는 명령 줄에서 사용할 수있는 도구 모음이 있습니다 inotify-tools. 이들은 inotify라는 커널에 내장 된 기능을 사용합니다. 이벤트에 파일이 수행 될 때마다 사용자가 수행 할 수있는 inotify를 통해 전송됩니다. 많은 음식물. 언어. Python, Perl 등과 같은 Inotify API를 래핑하는 라이브러리가 있습니다. Wikipedia pg : en.wikipedia.org/wiki/Inotify
slm 참조

답변:


27

초당 1 회 파일이 표시됩니다.

watch -n 1 cat file

1
이것이 내가 찾고있는 것입니다. 감사! 추가로 연장watch -tpcn 1 pygmentize -g filename
키트

@Kit 조심하십시오 watch -g, 예상대로 작동하지 않습니다 .
terdon

@terdon, -g스위치는 실제로입니다 pygmentize. 어쨌든, 경고 주셔서 감사합니다.
Kit

파일 내용이 한 페이지를 넘으면이를 사용하여 화면의 내용을 스크롤하여 파일의 나머지 내용을 확인할 수 없습니다.
CodyChan

1
왜 안돼 watch -n 1 tail file?
Varun

8
tail -f /var/log/syslog

파일에 추가 될 때 syslog 업데이트를 표시합니다.


이것은 올바르게 추가 된 줄을 보여 줍니까? OP는 완전히 새로 고침해야합니다.
Sean256

너무 자식-bash에와 윈도우에서 작동
데이비드

3

내가 사용하는 것이 watch다른 대답이 제안하지만 하나는 유닉스와 같은 쉘에서 제공하는 빌딩 블록을 사용하여 겉으로는 복잡한 문제를 접근하는 방법을 보여로; while 루프는 루핑을 수행하는 간단한 방법 일 수 있습니다.

$ while [ 1 ]; do clear; date; cat <afile>; sleep 1 ;done

$ while [ 1 ]; do clear; date; cat sample.txt; sleep 1 ;done
Fri Nov 15 09:17:39 EST 2013
1
2
3
4
5

화면이 사라지고 1 초 후에 다음과 같이 표시됩니다.

Fri Nov 15 09:17:40 EST 2013
1
2
3
4
5

2

의견에서 제안했듯이 inotify과잉이지만 사용할 수도 있습니다 . 지금까지 사용하는 것이 가장 간단합니다 watch. 이를 수행하는 한 가지 방법이 있습니다 inotify.

  1. inotify-tools패키지 설치

    sudo apt-get install inotify-tools
    
  2. inotifywatch파일이 변경되었는지 확인하는 데 사용 합니다. cat변경 사항이 감지되면 루프와 파일 에서 실행하십시오 (그래서 grep문자열에 대한 이유입니다 total).

    while true; do 
      inotifywatch -e modify -t 1 kk 2>/dev/null | grep -q total && 
      echo "$(date;cat kk)"; 
    done
    

-q(또는 --quiet)를 전달하면 grep"total"로 일치하는 줄이 사라집니다.
FichteFoll

@ FichteFoll 좋은 지적 (삭제하기 전에 보았던 경우 이전 의견을 무시하십시오. 느린 것입니다). 고마워요
terdon

0

watch(1)정말 유용한 도구입니다. [1]

cat그래도 사용하지 않는 것이 좋습니다 .

대신 head또는 tail파일의 시작 또는 끝을 볼 필요가 있는지 또는를 사용 하십시오.

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