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