줄바꿈할 모든 터미널 색상과 선을 포함하여 첫 번째 전체 화면 출력만 표시하려면 어떻게 해야 합니까? [복사]

줄바꿈할 모든 터미널 색상과 선을 포함하여 첫 번째 전체 화면 출력만 표시하려면 어떻게 해야 합니까? [복사]

컴파일 문제가 있을 때 터미널에 많은 내용을 인쇄하는 명령(컴파일러)이 있습니다. 일부 줄은 내 터미널 너비보다 길고 터미널 색상도 사용합니다(오류에는 빨간색 텍스트 등). 명령을 실행하고 출력의 첫 번째 화면/페이지만 표시하고 싶지만 줄바꿈과 색상을 고려하고 싶습니다.

고쳐 쓰다저는 cargo구문 오류가 있는 경우 색상을 포함하여 많은 출력을 생성하는 Rust 컴파일러를 사용하고 있습니다. 를 사용하면 --colors=always|&가지를 동시에 표시할 수 있습니다. 예를 들어 cargo build --colors=always |& head -n 20처음 20개 행을 표시합니다. 첫 페이지를 보여주고 싶어서

entr자동 실행 에 사용하는 것은 명령이 모든 것을 먹어치워서 멈출 수 없기 find ./src/ -type f -name '*.rs' | entr -r bash -c 'cargo build -- color=always |& less -R때문에 작동하지 않습니다 . less실제로 이는 모든 출력을 숨깁니다.

답변1

다음을 찾고 있는 것 같습니다 less -R.

  -R or --RAW-CONTROL-CHARS
          Like  -r,  but  only ANSI "color" escape sequences are output in
          "raw" form.  Unlike -r, the screen appearance is maintained cor‐
          rectly  in  most  cases. 

이 플래그는 lessANSI 색상 순서가 해석되어 출력이 터미널과 동일해야 함을 나타냅니다.

N이 터미널 창의 현재 크기인 첫 번째 N 줄만 가져오려면 다음을 사용하세요 $LINES.

find ./src/ -type f -name '*.rs' | 
    entr -r bash -c 'cargo build -- color=always |& head -n $LINES

또는 명령을 시작할 때의 프롬프트와 완료 후 인쇄되는 프롬프트가 모두 한 줄을 차지하므로 다음과 같습니다.

find ./src/ -type f -name '*.rs' | 
    entr -r bash -c 'cargo build -- color=always |& head -n $((LINES-2))

관련 정보