현재 터미널 너비에 대한 환경(?) 변수 이름은 무엇입니까?

현재 터미널 너비에 대한 환경(?) 변수 이름은 무엇입니까?

간단한 건 알지만 위치/이름이 기억나지 않습니다.

터미널의 현재 너비에 대한 변수는 어디에 저장되어 있나요?

나는 변화에 대해 이야기하는 이 답변을 보았습니다. SSH 및 텔넷을 통해 터미널 길이와 너비는 어떻게 전달됩니까?

하지만 스크립트에서 사용할 현재 값을 얻고 싶습니다(그리고 그 답변의 모든 내용을 이해하지 못합니다).

옛날 옛적에 모든 환경 변수를 표시하는 방법이 있었던 것을 기억합니까? (글쎄, set(with env)를 사용하라는 답변을 보았는데 , 내 set것은 선만 표시하고 너비는 표시하지 않았습니까?)


그런 다음 물론 다음 질문이 나옵니다. $number가 있으면 한 문자("-")를 여러 번 반복하여 점선을 X 문자 너비로 만들고 싶습니다(단말기 채우기, 개행 없음). 이 작업을 수행하는 방법에 대한 우아한 방법이 있으면 감사하겠습니다.

답변1

크기

표준적인 방법은 실제 크기를 알고 싶을 때 터미널에 문의하는 것입니다.

stty size

행과 열을 인쇄합니다.

점선 인쇄

두 번째 질문에 관해서는, seq당신은 친구입니까?

stty size|if read rows cols
then for x in `seq $cols`
do printf "-"
done fi

또는 모든 awk루프

stty size|awk '{ ORS="-"; n=$2; for (i=0; i<n; ++i) { print ""; } }'

.

행 변수 설정

하지만 실제로 행을 변수에 저장하는 것이 더 좋습니다.

eval $(L=""; stty size|if read r c
    then for x in `seq $c`
    do L="${L}-"
    done
    echo L="$L"
    fi
)

SIGWINCH의 함정

터미널 크기를 다시 계산할 필요가 없는 한

trap 'echo "recalculate L"' SIGWINCH

이제 이를 사용하여 $L라인을 인쇄할 수 있습니다. 물론 $L변수를 자동으로 조정할 수도 있습니다 SIGWINCH.

trap 'eval $(L=""; stty size|if read r c
    then for x in `seq $c`
    do L="${L}-"
    done
    echo L="$L"
    fi
)' SIGWINCH

. 설정한 터미널에서 trap다음과 같이 말할 수 있습니다.

echo $L

이제 끝났습니다.

답변2

아니요환경터미널의 너비를 포함하는 변수입니다. 하나 있다껍데기변수: ( COLUMNS키와 동일). LINES이는 단지 쉘 변수일 뿐이며 쉘에서 호출하는 프로그램에는 표시되지 않습니다.

그 이유 COLUMNS는 단순히 변수가 환경에 있으면 쉘이 이를 수정할 수 없기 때문에 쉘 변수가 환경으로 내보내지지 않기 때문입니다. 터미널의 크기를 조정하면 셸(또는 더 일반적으로 포그라운드에 있는 모든 프로그램)은SIGWINCH 신호. 쉘이 SIGWINCH를 수신하면 터미널에 현재 크기를 쿼리하고 그에 따라 COLUMNS및 변수를 업데이트합니다 LINES.

이 명령은 및 를 set포함한 모든 쉘 변수를 나열합니다 . 명령 및 환경 변수만 나열되므로 및 는 포함되지 않습니다 .COLUMNSLINESenvexportCOLUMNSLINES

내보내서 COLUMNS환경 변수로 만들 수 있습니다. 그러나 애플리케이션이 이를 사용할 때 터미널 크기가 동시에 조정된 경우 이 정보가 최신 정보가 아닐 수 있다는 점에 유의하십시오. 애플리케이션은 터미널과 동일한 방식으로 터미널 크기를 쿼리하고 SIGWINCH 신호에 대한 핸들러를 등록하여 정보를 최신 상태로 유지할 수 있습니다.

1 올바른 내용을 보내서I/W 제어주문하다. 아니면 전화를 하거나 stty size또는 tput cols.

답변3

set"열" 아래에 있습니다 .

echo $COLUMNS

또는

set | grep -i columns

배쉬에서.

답변4

나는 아마도 당신이 변수를 찾고 있다고 생각합니다 $COLUMNS.

문자를 터미널의 전체 너비에 걸쳐 만드는 것은 간단한 값 기반 루프입니다 $COLUMNS. 기록에 있는 줄에 맞춰 화면 크기를 조정하면 보기에 불편해 보일 것입니다.

관련 정보