我有一个通过 tty 处于原始模式的交互式应用程序。当我退出它时,我希望 shell 提示符在新行上开始。应该有一些转义序列导致终端执行 CR + LF 但仅当光标尚未位于行首时。哪个是转义序列?
答案1
您可以测试光标位置,以下将为您提供水平光标位置:
IFS=';' read -sdR -p $'\E[6n' ROW COL;echo "${COL#*[}"
然后在脚本中例如你可以这样做
#!/bin/bash
x_pos=$(IFS=';' read -sdR -p $'\E[6n' ROW COL;echo "${COL#*[}")
if [ $x_pos == 1 ]
then
echo "We are at the beginning since cursor is at $x_pos"
else
echo "Cursor is at $x_pos so send $LF with \n"
fi