Bash CLI에 UTF-8 문자 입력

Bash CLI에 UTF-8 문자 입력

다음과 같은 파일이 포함된 디렉토리 목록이 있습니다.

drwxr-xr-x   2 nobody nogroup       4096 2011-01-11 21:06 Капкан
drwxr-xr-x   3 nobody nogroup       4096 2011-11-17 08:40 СБПЧ

이러한 파일 이름을 프롬프트에 복사/붙여넣기하거나 직접 입력하면 Latin-1 문자처럼 작업할 수 있을 것으로 기대합니다.

대신 다음과 같은 결과를 얻습니다.

# Pasting "Капкан"
$ :?апкан 

첫 번째 문자가 " "로 대체된 것을 볼 수 있습니다 :?. 그러면 문자를 삭제하는 것 외에는 문자를 왼쪽으로 이동할 수 없습니다. 키보드 기반 입력은 동일한 결과를 생성합니다. tmux또는 screen잡아당기기/붙여넣기를 수행해도 동일한 결과가 생성됩니다.

이 상황을 어떻게 진단해야 할지 모르겠습니다! 이것은 꽤 오래된 데비안 배포판( $ uname -a Linux weezy 2.6.37.6.RNx86_32.1.4 #1 Thu Jul 26 04:49:29 PDT 2012 i686 GNU/Linux)이지만 여전히 UTF-8 파일 이름이 예상대로 작동하도록 하는 방법이 있다고 생각합니다.

저는 OS X를 사용하고 Terminal.app있으며 TERM로 설정되어 있습니다 xterm-color.

나는 이 파일 이름이 UTF-8을 사용하여 인코딩되었다고 생각합니다. 나는 Bash 3.1.17을 사용하고 있으며 다음은 내 출력입니다 locale.

$ locale
LANG=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8

내 결과는 다음과 같습니다 $ locale -a.

C
de_DE.utf8
en_US.utf8
ja_JP.utf8
ko_KR.utf8
nl_NL.utf8
POSIX
zh_CN.utf8
zh_TW.utf8

ru_RU.UTF-8에서 설치하는 것을 고려하고 싶지만 /etc/locale.gen와 같은 기본 라틴 문자에도 문제가 있습니다 á.

답변1

위의 설명에 따르면 Terminal.app Escape non-ASCII characters설정을 조작하면 문제가 해결된 것 같습니다. 이 작업을 올바르게 수행하려면 어떤 방향으로 조작해야 하는지 혼란스럽습니다.

관련 정보