CRLF를 수행하는 이스케이프 시퀀스는 줄의 시작 부분이 아닌 경우에만 가능합니까?

CRLF를 수행하는 이스케이프 시퀀스는 줄의 시작 부분이 아닌 경우에만 가능합니까?

tty를 통해 원시 모드의 대화형 애플리케이션이 있습니다. 종료할 때 쉘 프롬프트가 새 줄에서 시작되기를 원합니다. 터미널이 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

관련 정보