我使用https://askubuntu.com/questions/366103/saving-more-corsor-positions-with-tput-in-bash-terminal中的答案作为 shell 脚本,它适用于提取当前位置终端。
extract_current_cursor_position () {
export $1
exec < /dev/tty
oldstty=$(stty -g)
stty raw -echo min 0
echo -en "\033[6n" > /dev/tty
IFS=';' read -r -d R -a pos
stty $oldstty
eval "$1[0]=$((${pos[0]:2} - 2))"
eval "$1[1]=$((${pos[1]} - 1))"
}
extract_current_cursor_position pos1
extract_current_cursor_position pos2
echo ${pos1[0]} ${pos1[1]}
echo ${pos2[0]} ${pos2[1]}
但是,在 Mac 机器上,它会产生额外-en
的一些新行和空格,如下所示。
-en
-en
23 4
23 8
我怎么能避免输出额外的-en
和新的行和额外的空格