转义序列执行 CRLF 但仅当不在行首时?

转义序列执行 CRLF 但仅当不在行首时?

我有一个通过 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

相关内容