덜 사용하여 파이프를 따라?


25

파이프 입력 (파일과 유사)을 덜 따라갈 수 있습니까 (F를 누름)? 쓰여지는 파일의 경우 명령

less <file>

F를 누르면 파일을 따라갑니다.

그러나 파이프 출력을 다음과 같이 덜 적게 명령하는 경우

command | less

F를 누르면 아무것도하지 않습니다.

파이프처럼 파일을 따라갈 수없는 것처럼 보입니까? 아니면 STDERR에 쓰는 명령과 관련이 있습니까? 내가 달성하려는 효과는 항상 PageDown을 누른 것처럼 명령의 최신 출력을 보는 것입니다!

G (종료)에 대한 관련 설명이 있습니다. 직접 배관을 줄이면 작동하지 않습니다.


답변:


21

누르면 F또는 G차종은 less입력 EOF에 도달하려고합니다. 입력이 파이프 인 less경우 파이프가 반대쪽에서 닫힐 때까지 멈 춥니 다 ( "아무것도하지 않음").

명령 출력을 백그라운드의 임시 파일에 저장 한 후 다음에 대한 입력으로 사용하여이 문제를 해결할 수 있습니다 less.

command > /tmp/x &
less +F /tmp/x; kill %; rm /tmp/x

이 작업 less만 수행 할 수있는 옵션이 없습니다 . 그러나 나는 그것이 유용 할 것이라고 인정한다.


입력이 파이프 인 less경우 파이프가 반대쪽에서 닫힐 때까지 정지합니다 . 그것은 오해의 소지가 있습니다. 무슨 일 이하 통화 있다는 것이다 read차단 모드는, 새로운 데이터를 기다리는 또는 파이프의 폐쇄.
Piotr Dobrogost

3
파이프 입력에서 F 또는 G를 누르면 less블로킹 읽기뿐만 아니라 EOF를 기다리는 루프에서도 읽습니다. 파이프의 EOF는 다른 쪽이 닫힌 경우에만 발생합니다.
mik

3
경우 less그 루프에서 화면을 업데이트, 문제가있을 수 없다. 읽기 차단은이 문제와 관련이 없습니다.
mik

1
@Flow 이것은 질문에 관한 문제가 아니라 EOF에 도달 할 때 파일에서 더 많은 데이터를 기다리는 것입니다 (폐관에서는 닫히지 않습니다). 또는 후속 모드를 종료하기위한 인터럽트
mik

1
블로킹 읽기 기능 less이있는 @PiotrDobrogost 는 데이터가 없으면 화면을 업데이트 할 수 없습니다. 일부 데이터가 표시되면 블로킹 읽기가이를 반환 less하고 별도의 스레드없이 화면을 업데이트 할 수 있음
mik

6

파이프 입력 (파일과 유사)을 덜 따라갈 수 있습니까 (F를 누름)?

예, 버전 474부터 시작합니다. 그러나 현재이 기능과 관련하여 남아있는 문제가 하나 있으므로 아직 모든 버전의 릴리스 노트에 언급되지 않았습니다. 다음은 less의 관리자 인 Mark Nudelman의 의견입니다.

파이프의 F 명령과 관련하여 474 미만으로 고정됩니다. EOF를 찾는 대신 F 명령은 버퍼링 된 입력의 끝을 찾아서 읽기를 시작합니다. 그러나 CTRL-C를 눌러 F 명령을 중지하면 출력을 생성하는 프로세스가 종료되므로 실제로 사용할 수 없습니다. 어떻게 고칠 지 잘 모르겠습니다.

이 문제가 해결 될 때까지 쉘 기능을 사용하여 해결할 수 있습니다. 내보기 대답거기 파이프에 다른 프로세스를 중단없이 출구 방법 "덜"추적 모드? 자세한 내용은 질문하십시오.

참고로, F 파이프 작동하지의 문제는 알려진 목록에 참조 번호 (300)가 버그 와라는 제목 은 F 명령이 파이프로 연결된 입력 작업을하지 않습니다.


G (종료)에 대한 관련 설명이 있습니다. 직접 배관을 줄이면 작동하지 않습니다.

버전 466부터 작동합니다. 이 버전의 릴리스 정보 에서 인용 :

새로운 명령 ESC-G가 파이프에서 현재 버퍼링 된 데이터의 끝으로 이동


ESC-G 명령은 2014 년 8 월 23 일에 릴리스 된 버전 466에서 도입되었습니다.
mik

@mik 그러면 버전 471의 릴리스 노트에 오류가있는 것 같습니다. 고마워요
Piotr Dobrogost

오류가 아니라 안정 릴리스 버전 458 (이 경우)부터 변경 사항을 점진적으로 나열합니다. 그러나 ESC-G 명령으로 안정된 릴리스가 없습니다.
mik

ESC-G 명령은 이제 안정된 릴리스 (481)에 있습니다 : "2015 년 10 월 16 일 이하 -481이 일반 용도로 출시되었습니다".
mik

업데이트 : 파이프의 F 명령과 관련하여 474 이하로 수정되었습니다. EOF를 찾는 대신 F 명령은 버퍼링 된 입력의 끝을 찾아서 읽기를 시작합니다. 그러나 ctrl-C를 눌러 F 명령을 중지하면 출력을 생성하는 프로세스가 종료되므로 실제로 사용할 수 없습니다. 어떻게 고칠 지 잘 모르겠습니다. – Mark Nudelman, 더 적은 관리자
Piotr Dobrogost

2

적은 매뉴얼 페이지에서

[Keyboard] COMMANDS [...]

   F      Scroll  forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already
          at the end of the file.  It is a way to monitor the tail of a file which is growing while it is being viewed.  (The  behav‐
          ior is similar to the "tail -f" command.)

그래서 이것은 작동해야하며 실제로 저에게 효과적입니다.


1
이 명령은 @mik에 설명 된대로 파이프와 함께 사용될 때 다르게 동작하며 OP가 찾고있는 것이 아닙니다.
Piotr Dobrogost 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.