在一个bash脚本中,我想将光标列数存储到一个变量中。使用ANSI转义码
很遗憾,这会将字符打印到标准输出,而我想要在静默的情况下完成。此外,这也不太便携...
有没有一种纯Bash的方法来实现这个?
{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的方法来实现这个?
PROMPT_COMMAND
中的此命令,以便找到水平光标位置,以便在反向视频中打印%
,并在上一个命令的输出不以换行符结尾时打印新行。但是,当我将多行命令粘贴到我的shell中时,我认为read
或其他所需命令会吞噬文本。有任何已知的解决方案吗? - onlynone\[
和\]
包围非打印字符序列,以便它们的长度不会计入提示符的长度,如此处所述。stty
应该保护read
,但我不确定。或者,如果问题源自exec
行,则可能需要保存和恢复 stdin。您还可以尝试在本条评论上面链接的技术。 - Dennis Williamsontput
)的“回显”,会导致光标位置被输出,这可能是 vscode 不喜欢的输出。顺便说一下,这与ssh
在启动脚本产生输出时遇到的问题类似。 - Dennis Williamson