파이프라인을 따르고 더 적게 사용하시겠습니까?

파이프라인을 따르고 더 적게 사용하시겠습니까?

F를 눌러 파이프 입력(파일과 유사)을 덜 따를 수 있습니까? 작성 중인 파일에 대해 다음 명령을 수행합니다.

less <file>

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

하지만 출력을 다음과 같이 직접적으로 Less로 파이프하는 명령이 있다면

command | less

F를 누르면 아무 일도 일어나지 않습니다.

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

관련 설명은 G(끝으로 이동)에 적용됩니다. Less에 직접 파이핑할 때는 작동하지 않습니다.

답변1

입력 EOF에 도달하려면 또는 F키 를 누르 십시오. 입력이 파이프인 경우 파이프가 반대쪽에서 닫힐 때까지 멈춥니다("아무 것도 하지 않음" 대신).Glessless

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

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

이 작업을 수행 할 수 있는 옵션은 없지만 less이것이 유용할 것이라는 점은 인정합니다.

답변2

F를 눌러 파이프 입력(파일과 유사)을 덜 따를 수 있습니까?

예, 버전 474부터 시작됩니다.

관련된:파이프라인의 다른 프로세스를 중지하지 않고 "less" 팔로우 모드를 종료할 수 있는 방법이 있습니까?

참고로 파이프에 F가 적용되지 않는 이슈는 알려진 이슈 목록에서 300번으로 언급되어 있습니다.곤충그리고 제목이 붙은F 명령은 파이프 입력에서는 작동하지 않습니다.


관련 설명은 G(끝으로 이동)에 적용됩니다. Less에 직접 파이핑할 때는 작동하지 않습니다.

버전 466부터 작동합니다. 에서 인용릴리즈 노트이 버전의 경우:

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

답변3

적은 매뉴얼 페이지에서

[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.)

그래서 이것은 효과가 있을 것이고 실제로 나에게 효과가 있었습니다.

답변4

이전 버전 less(많은 배포판에는 여전히 v581 이상의 기본값이 없음) 의 경우 이 한 줄의 코드를 사용하여 파일에 대해 더 적은 작업을 직접 수행하는 것처럼 F파이프에서 -key("Follow")를 사용할 수 있습니다( lesstmp 파일 없음):

문제는 ctrl+를 누르면 c파이프라인의 모든 명령에 SIGINT가 전송되어 less-follow뿐만 아니라 빌드 명령도 중단된다는 것입니다. 이 문제를 해결하기 위해 일반적으로 빌드 명령을 서브셸에 넣고 거기에서 SIGINT를 포착합니다. 이와 같이:

(trap '' SIGINT; command) | less

괄호는 서브쉘을 제공하며 trap빈 명령을 사용하는 것은 ''현재 실행 중인 명령에 신호를 전파하지 않고 해당 서브쉘의 신호를 완전히 삭제하는 특수 호출입니다. SIGINT는 ctrl+ c신호입니다. 이제 ctrl+를 누르고 이를 수신 c하면 로그 파일이나 기타 증가하는 파일에서와 마찬가지로 파이프라인에서 작업할 수 있습니다. 을 눌러 종료하면 파이프가 파괴되고 스폰 명령이 SIGPIPE를 보냅니다. 이는 거의 항상 SIGINT를 보내는 것과 동일한 효과가 있지만 이를 포착하도록 설정되지는 않습니다.lesslesslessqtrap

최신 버전인 v581 이상에서는 + 대신 + 를 사용하여 명령( -key) 을 중단 less할 수 있습니다 .ctrlxctrlcfollowF

관련 정보