'more'를 사용하여 페이징 표준 출력 및 syslog로 파이핑

'more'를 사용하여 페이징 표준 출력 및 syslog로 파이핑

이 래퍼 스크립트를 통해 실행되는 모든 명령이 실행 시간, 명령을 실행한 사용자 및 종료 코드와 같은 항목을 (rsyslog를 통해) 기록하도록 하는 래퍼 스크립트를 구현했습니다.

페이징을 구현하려고 하는데 'more' 명령에 문제가 발생했습니다. 내 문제의 근본 원인은 'more'가 다른 프로그램으로 파이프될 때 종료되는 것 같습니다.

echo -e "this\nis\na\ntest" | more -3 | cat

이렇게 하면 4줄이 인쇄됩니다. 하지만 '| cat'을 입력하면 예상대로 3줄을 인쇄한 후 일시 중지됩니다.

물론 'more' 대신 'less'를 사용하면 효과가 있지만 별도의 "창"이 열리고 완료되면 뒤로 스크롤할 수 없으므로 원하는 효과는 없습니다. 'less'가 허용하는 방식으로 뒤로 스크롤합니다.)

현재 내 해결책은 'head' 및 'tail' 명령을 사용하여 원하는 효과를 얻는 것입니다. 하지만 해결해야 할 다른 문제도 있습니다.

내가 상상한 방식으로 '더 많은' 일을 할 수 있는 비결을 아는 사람이 있나요? 더 간단한 다른 페이징 도구(Enter, 공백 및 'q' 동작 지원)에 대한 제안도 환영합니다.

감사합니다!

답변1

tee파일로 리디렉션하고 stdout을 페이징하는 데 사용하는 것이 파이프라인 중간에 페이징하는 것보다 더 적절할 것 같습니다 .

printf "%s\n" this is a test | tee /tmp/some.file | more -3

관련 정보