줄 수에 따라 'cat'또는 'less'를 사용하는 방법은 무엇입니까?


12

파일의 내용을 볼 때 cat파일 less크기는 자동으로 줄이지 만 화면 크기를 초과하는 파일 은 자동으로 줄이려고합니다 . 와 함께 무언가를 사용할 수 wc -l는 있지만 사용 가능한 창 크기 / 현재 라인 수를 고려하는 더 좋은 방법이 있습니까?


1
많은 도구가이 작업을 수행하지만 예상 가능성을 깨뜨립니다. 즉, 사용자는 어떤 일이 일어날 지 미리 알 수 없습니다. 예를 들어이 작업을 수행하는 성가신 것을 발견했습니다 git log. 당신은 당신이 무엇을 얻을지 미리 알 수 없습니다 q.
비트 마스크

4
참고 : 일반적으로 cat파일을 보는 데 사용하지 않아야 합니다. 일반적으로 cat파일의 내용을 stdout으로 보내 다른 프로세스로 파이프 할 수 있도록 사용해야합니다. cat보기에 사용하지 않는 이유 는 원시 바이트를 터미널로 전송하여 예기치 않은 터미널 명령이 실행될 수 있기 때문입니다 (예를 들어, 파일이 터미널 키보드를 비활성화하기 위해 올바른 바이트를 포함 할 때 일부 사용자가 멈췄습니다) . 일반적으로 less터미널과 해석되지 않도록 특수 문자를 표시 할 형식화 하는 호출기 나 편집기를 사용해야합니다 .
Chris 페이지

2
cat을 사용하여 터미널에서 직접 파일 내용을 볼 경우 적어도 cat -v특수 문자를 이스케이프 처리하십시오.
Chris 페이지

@ bitmask 좋은 지적, 그 이유 는 분할 화면을 cat사용할 수 있습니까? 더 나은 솔루션이 될 수 있습니다
Tobias Kienzler

@ChrisPage 키보드가 죽지 않았지만 코드 페이지를 한 번 cat -v
망치는 것 같습니다

답변:


9

wc기반 검사 와 관련된 공식을 제공하려면 다음을 수행 하십시오.

(($(wc -l<input_file)<=$(tput lines))) && echo 'will fit' || echo 'not enough'

$LINES사용할 수 있는 쉘 변수가 있습니다 :

(($(wc -l<input_file)<=LINES)) && echo 'will fit' || echo 'not enough'

그러나 $LINES명령 프롬프트에있을 때만 업데이트됩니다. 무슨 뜻인지 이해하려면 이것을 실행하고 터미널 창 크기를 조정하십시오 sleep.

( sleep 3; echo $LINES; tput lines )

감사 less합니다. 예를 들어 화면의 2/3가 사용 된 경우 이미 사용하도록 조정할 수 있다는 이점이 있습니다 cat.
Tobias Kienzler 2016 년

20

어쩌면 'less -F file_to_read'는 옵션입니다. 창이 모든 파일을 표시하기에 충분하면 덜 나가고 페이지가 아닌 경우 호출기에서 기다립니다.


소리는 좋지만, 그 경우에는 아무것도 출력하지 않으며 종료 코드는 두 경우 모두 동일합니다.
Tobias Kienzler

나는 'less -F / etc / passwd'를 시도하고 파일을 올바르게 표시합니다 (pager가 있거나 없거나). 맞습니다. 두 경우 모두 리턴 코드는 0입니다.
Dom

11
이 명령은 요청한대로 작동하지만 약간의 결함이 있습니다. 파일을 표시 한 후 화면을 지 웁니다. -X옵션을 추가하면 지우기가 중지되므로 짧은 파일이 표시됩니다 cat. 불행히도 -X화면이 길고 스크롤 된 파일을 표시 한 후에도 화면이 지워지지 않습니다.
manatwork

1
@manatwork 감사합니다. 화면을 지우지 않으면 실제로 괜찮습니다. 왜냐하면 cat전화가 올 경우 에도 발생하지 않을 것입니다.
Tobias Kienzler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.