端末で利用可能な(使用されていない)回線数を取得するには?

端末で利用可能な(使用されていない)回線数を取得するには?

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

おすすめ記事