'esc'가 '^['이라는걸 알수있는 방법은 무었이 있나요?


제목

'esc’가 '^['이라는걸 알수있는 방법은 무었이 있나요?


설명

"유닉스 파워툴"라는 책의 168쪽에서[한글판 기준] 나온 내용중 'esc’가 '^['라고 하는대요.
'esc’가 '^['이라는걸 알수있는 방법은 무었이 있나요?


참고

x_window의 표준입력 대신 리 디렉션으로 (키보드 대신) 해당 문자를 입력하는 스크립트를
적을려고 합니다.

지금 생각중인건 {
‘esc’, ‘shiftL_tab’, ‘shiftR_tab’, ‘F1’, ‘delete’, ‘backspace’, ‘home’, ‘end’,
‘<-’, ‘^’, ‘v’, ‘->’, ‘menu’ [마우스 오른쪽 버튼], ‘PgUp’, ‘PgDn’
}
문자입니다.
[일부는 링크{ http://kldp.org/node/140196 }에서 알고있지많 나머지 문자가 문제입니다.]


ESC는 16진수로 1B이고, 이스케이프 문자로는 \E 입니다.
터미널에서 이런 특수문자를 입력하기 위해서는, Ctrl+v키를 누르고, 키입력을 하면 됩니다.
Ctrl+v 누르고 ESC를 누르면, ^[로 표시됩니다.
하지만 ^문자와 [문자를 두개 연달아 표시한것과 ESC는 당연히 같지 않습니다.
만일 그렇다면 ^문자와 [ 문자를 연달아 입력한 것 과 구분 될 수 없죠.

ESC는 화면에 출력되지 않는 문자이기에 이를 표시하기 위해, 특수한 방법이 필요하고,
통상적으로 ^[ 로 표시할 따름입니다.

녹색글자로 xxx를 출력하기 위한 ANSI코드는 다음과 같습니다.
echo -e "\E[32mxxx"
echo "^[[32mxxx" <== 이때 ^[은 Ctrl+v를 누르고, ESC를 입력한 것입니다.

ANSI코드에서 사용하는 ^[역시 ESC키입니다.

쉘스크립트에서 ESC키를 판단하려면,
read input

#아래의 if문의 ^[역시 Ctrl+v누르고 ESC를 입력해야 합니다.
#또는 \x1b를 사용하시면 됩니다.
if [ "$input" == "^[" ]; then
echo "red esc key"
fi

우측방향키 같은 경우도, Ctrl+v누르고 우측방향키를 누르면,
^[[A로 표시되는데, 이것은 ESC+[+A의 세문자가 나열된 것입니다.

알겠습니다.