CRLFを実行するエスケープシーケンスは、行の先頭でない場合にのみ可能ですか?

CRLFを実行するエスケープシーケンスは、行の先頭でない場合にのみ可能ですか?

ttyを介してrawモードの対話型アプリケーションがあります。シャットダウン時にシェルプロンプトが新しい行から始まるようにします。端末に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

関連情報