Bash에서 읽기를 실행할 때 제어 문자를 무시하는 방법

Bash에서 읽기를 실행할 때 제어 문자를 무시하는 방법

Bash에서 한 줄을 변수로 읽으려면 다음을 실행합니다.

read -p "here:" _msg; echo "${_msg}" > _read

xyz123에 대한 기대를 가지고 실수 로 먼저 _msg만들었 는데 이제 커서를 이동 한 다음 계속 입력 하려면 세 번 탭 123해야 하는데 모드에 들어가는 것과 똑같을 것 같습니다 .1xyzINSERT123xyz

here:xyz

그런 다음 최종 파일을 확인했습니다.

xxd _read

나는 가지고있다

00000000: 7879 7a1b 5b44 1b5b 441b 5b44 3132 330a  xyz.[D.[D.[D123.

입력된 제어 문자를 무시하는 방법

Windows의 MINGW64에서 bash를 실행하고 있습니다.

답변1

bashman bash( ) 에 대한 문서 , 특히 설명 부분을 읽으면 read추가 옵션이 있음을 알 수 있습니다.

-e표준 입력이 터미널에서 나오는 경우 readline(위의 READLINE 참조) 라인을 가져오는 데 사용됩니다.

그렇지 않으면 다음 지침을 따르십시오.

독서선이것은 대화형 셸을 사용할 때 입력 읽기를 처리하는 라이브러리입니다. [...]

이 지시문을 적용하면 다음을 얻을 수 있습니다.

read -e -p "here:" _msg; printf '%s\n' "$_msg" > _read

을 입력한 후 123세 개의 커서가 떠나고 abc파일에서 다음을 얻습니다 _read.

hexdump -C _read
00000000  61 62 63 31 32 33 0a                              |abc123.|

관련 정보