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