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