gpt4 book ai didi

bash - 如何在 bash 中获取光标位置?

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:18 28 4
gpt4 key购买 nike

在 bash 脚本中,我想获取变量中的光标列。看起来使用 ANSI 转义码 {ESC}[6n 是获得它的唯一方法,例如以下方式:

# Query the cursor position
echo -en '\033[6n'

# Read it to a variable
read -d R CURCOL

# Extract the column from the variable
CURCOL="${CURCOL##*;}"

# We have the column in the variable
echo $CURCOL

不幸的是,这会将字符打印到标准输出,我想静静地进行。此外,这不是很便携......

有没有纯 bash 的方法来实现这个?

最佳答案

你不得不诉诸肮脏的把戏:

#!/bin/bash
# based on a script from http://invisible-island.net/xterm/xterm.faq.html
exec < /dev/tty
oldstty=$(stty -g)
stty raw -echo min 0
# on my system, the following line can be replaced by the line below it
echo -en "\033[6n" > /dev/tty
# tput u7 > /dev/tty # when TERM=xterm (and relatives)
IFS=';' read -r -d R -a pos
stty $oldstty
# change from one-based to zero based so they work with: tput cup $row $col
row=$((${pos[0]:2} - 1)) # strip off the esc-[
col=$((${pos[1]} - 1))

关于bash - 如何在 bash 中获取光标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40727059/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com