터미널에서 사용할 수있는 수직선을 어떻게 찾을 수 있습니까?


12

디렉토리에 git log를 표시하는 스크립트를 작성 중입니다. 이러한 로그는 수백 줄을 포함하여 압도적 일 수 있습니다. 지금까지는 하드 코딩 된 20 줄 ( ... | head -n 20) 로 제한했습니다 . 이것은 직장에서는 화면에는 좋지만 집에서는 작은 MacBook 화면에서는 너무 많습니다.

로그가 두 터미널의 (수직) 화면의 약 절반을 차지하는 것을 선호합니다. 그리고 "터미널"도 바뀌 었습니다. 직장에서 그놈 터미널이지만 집에서는 iTerm2입니다. 그리고 나는 screen 또는 tmux를 사용하지 않습니다.

터미널에서 사용 가능한 수직선 수를 명령 행에서 어떻게 찾을 수 있습니까?

답변:


21

터미널 매개 변수는로 $LINES$COLUMNS변수 로 저장됩니다 .

또한 다음과 같은 특수 용어 운영 프로그램을 사용할 수 있습니다 tput.

tput lines  # outputs the number of lines of the present terminal window.
tput cols   # outputs the number of columns of the present terminal window.

9
LINES그리고 COLUMNS일부 껍질에 의해서만 설정됩니다. bash그들을 설정 하지만 (그리고 그들을 내 보내지 않습니다) 만 대화 형 쉘.
mr.spuratic

1
환경 변수가 내 tcsh에 없습니다. 또한 터미널 창의 크기를 조정하면 시스템이 재설정하는지 궁금합니다. tput을하고 뭔가 새로운 :-) 배웠습니다, 그래서 나를 위해 일을 stty를 두
jamesqf

@jamesqf bash 문서에 "SIGWINCH를 수신하면 자동으로 설정됩니다." 따라서 터미널 창의 크기를 조정하면 변경됩니다.
Celada

vaiable 위의 자동 설정의 경우 다음과 같은 옵션이 shopt -s checkwinsize/etc/bash.bashrc파일에 주석으로 추가되어 있습니다 .# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
Costas

9

이 명령은 터미널의 줄 수를 알려줍니다.

stty size | cut '-d ' -f1

일부 시스템은 구현되지 않을 stty size수 있으므로 다음과 같은 것이 필요할 수 있습니다.

stty -a | tr \; \\012 | grep rows | tr -d ' rows'

1
이것은 OS에 따라 매우 다릅니다. 각 주문이 작동하는 시스템 목록을 편집 할 수 있습니까?
Warren Young

4
첫 번째 OS가 OS마다 다를 수 있으므로 두 번째를 추가 한 것이 두려웠습니다. 실제로 약간의 인터넷 검색 후 첫 번째는 아마도 Solaris에서 작동하지 않을 것입니다. 두 번째는 휴대가 간편해야합니다. 솔직히 @Costas ' tput lines가 더 나은 답변처럼 보였고 그것을 올렸 습니다. 전에는 몰랐습니다.
Celada

1
나는로 대체 긴 파이프를 제공하고 싶은 stty -a일 등으로 grep -Po 'rows \K[^;]*'sed -n 's/.*rows \([^;]*\).*/\1/p'
타스

@Costas는 실제로 실망스럽게도 내 명령이나 귀하의 명령 중 어느 것도 MacOS에서 작동하지 않았으므로 다른 명령 (편집)을 생각해 내야했습니다. 그림으로 이동 : MacOS는 "24 행"대신 "24 행"을 방출합니다! 나는 여전히 tput lines더 나아 졌다고 생각하며, 이식성이 뛰어나다 고 생각한다!
Celada
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.