Bash は、国際文字をエスケープシーケンスとして表示します。

Bash は、国際文字をエスケープシーケンスとして表示します。

bashコマンドラインで特定のキー(ドイツ語のウムラウトなど)を押すと、エスケープシーケンスが表示されます。ßたとえば\303、このエスケープシーケンスは単一の文字として扱われるため、バックスペースを1回押すとシーケンス全体が削除されます。この文字はコマンドラインにエラーを表示するだけですが、正しく解釈されます。たとえば、入力するとecho ß次のようになります。

$ echo \303
ß

7ビット以外のASCII文字に問題があるようです。しかし、他の場所ではすべてうまくいきます。 vimで使用するか、catとしてマークすることができ、Unicode文字はうまく機能します。

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 # 8番目のビットセットでメタ出力をイネーブルにします。
はいいいえで始まる行#。これは#真ん中にaがある線です。 Lino Miguel Martins Tinocoが発見したように、これはオプションをoutput-meta実行するとxe出力に表示されるようにオプションがオンにならずにオフになります。bind -V

出力メタが「off」に設定されています。

.inputrcはいいいえシェルスクリプト。に記載されているように最初からLinuxチュートリアル

コメントはコマンドと同じ行にはできません。

答え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はインラインコメントをサポートしていないため、すべての設定が解析されますoffJdeBPの答えもっと学ぶ。

そもそもこのような設定がなぜ存在するのか分からない。私はScientific Linux Cern 6.6(CentOSなど)を使用していますが、これは新しいユーザーのデフォルトです。皮肉なことに、これらの設定は私のシステムのデフォルト値(/ etc / inputrcに設定されていますがコメントアウトされていません)なので、.inputrcでは必要ではなく、意図したものとは反対の操作を実行します。

関連情報