bash 명령줄에서 특정 키(예: 독일어 움라우트)를 누르면 이스케이프 시퀀스가 나타납니다. ß예 를 들어 \303
, 이 이스케이프 시퀀스는 단일 문자로 처리되므로 백스페이스를 한 번 누르면 전체 시퀀스가 삭제됩니다. 이 문자는 명령줄에 오류를 표시할 뿐이지만 올바르게 해석됩니다. 예를 들어 입력하면 echo
ß다음과 같습니다.
$ echo \303
ß
7비트가 아닌 ASCII 문자에 문제가 있는 것 같습니다. 그러나 다른 곳에서는 모두 잘 작동합니다. vim에서 사용하거나 cat으로 표시할 수 있으며 유니코드 문자는 잘 작동합니다.
bash에서 이러한 문자를 올바르게 표시하려면 어떻게 해야 합니까?
기록을 위해,
TERM=xterm-256color
LANG=en_US.UTF-8
그리고 내 .inputrc에서:
set input-meta on # Enable Meta input with eighth bit set
set meta-flag on # Synonym for the above
set convert-meta off # Do NOT strip the eighth bit
set output-meta on # Enable Meta output with eighth bit set
산출stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
이 Stackoverflow 질문은 동일한 증상을 보여 주지만 게시된 솔루션이 작동하지 않습니다.https://stackoverflow.com/questions/13094248/how-do-i-get-accented-letters-to-actually-work-on-bash
또한 내 터미널이 로컬 bash에서 잘 작동하므로 올바르게 구성되었다고 확신하지만 일부 원격 시스템(ssh를 통해)의 bash에서만 이 문제가 발생합니다.
답변1
고마워해도 돼Lino Miguel Martins Tinoco라는 남자2004년부터.
이것GNU Readline 문서.inputrc
인라인 댓글은 허용되지 않습니다. 그것과GNU Bourne Again 쉘 매뉴얼설명하다:
"#"으로 시작하는 줄은 주석입니다.
선
set output-meta on # 여덟 번째 비트 세트로 메타 출력을 활성화합니다.예아니요로 시작하는 줄
#
. 이것은 #
중간에 a가 있는 선입니다. Lino Miguel Martins Tinoco가 발견한 것처럼 이로 인해 옵션을 output-meta
실행할 때 xe 출력에 표시되는 것처럼 옵션이 켜지지 않고 꺼지게 됩니다 .bind -V
출력 메타가 "off"로 설정되어 있습니다.
.inputrc
예아니요쉘 스크립트. 에 명시된 바와 같이처음부터 리눅스 튜토리얼
주석은 명령과 같은 줄에 있을 수 없습니다.
답변2
알았어, 알아낸 것 같아. 난 그냥주석 처리됨내 라인과 작동합니다 .inputrc
:
#set input-meta on # Enable Meta input with eighth bit set
#set meta-flag on # Synonym for the above
#set convert-meta off # Do NOT strip the eighth bit
#set output-meta on # Enable Meta output with eighth bit set
분명히 .inputrc에서는 인라인 주석이 지원되지 않으므로 모든 설정이 구문 분석됩니다 off
.JdeBP의 답변더 알아보기.
애초에 이런 설정이 왜 존재하는지 모르겠습니다. 저는 Scientific Linux Cern 6.6(예: CentOS)을 사용하고 있는데, 이는 신규 사용자의 기본값일 수 있습니다. 아이러니하게도 이러한 설정은 내 시스템의 기본값(/etc/inputrc에 설정되어 있지만 주석 처리되지 않음)이므로 .inputrc에서는 필요하지 않으며 의도한 것과 반대되는 작업을 수행합니다.