터미널에서 사용 가능한(사용되지 않은) 회선 수를 얻는 방법은 무엇입니까?

터미널에서 사용 가능한(사용되지 않은) 회선 수를 얻는 방법은 무엇입니까?

stty총 행 수와 총 열 수를 사용하거나 얻을 수 있지만 tput사용 가능한 행 수(사용되지 않음) 또는 bash 또는 다른 쉘에서 현재 행/라인의 인덱스/번호를 어떻게 얻습니까?

예:

$ ls
foo bar baz
$ (cursor is here)
.
.

터미널에는 5개의 노선이 있습니다. "현재 줄"은 3이고 커서 뒤의 사용 가능한/빈 줄 수는 2입니다.

답변1

이 시도:

#!/bin/bash

if ! termios="$(stty -g 2>/dev/null)" 
then
    echo "ERROR: Not running in a terminal"
    exit 1
fi


# Get max rows and columns
maxrows=$(tput lines)
maxcols=$(tput cols)

# Disable ICANON ECHO
stty -icanon -echo

# Get cursor position
tput u7
read -d "R" rowcol

# Revert to original settings
stty "$termios"

# clean up response
rowcol="${rowcol//[^0-9;]/}"
rowcol="${rowcol//;/ }"

printf 'maxrows: %d  maxcols: %d  currow: %d  curcol: %d\n' $maxrows $maxcols ${rowcol[0]} ${rowcol[1]}

exit 0

관련 정보