Ввод символов UTF-8 в Bash CLI

Ввод символов UTF-8 в Bash CLI

У меня есть список каталогов с файлами вроде:

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копирование/вставка дают те же результаты.

Я не уверен, как диагностировать эту ситуацию! Это довольно старый дистрибутив Debian ( $ 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

Согласно комментариям выше, вертение Escape non-ASCII charactersнастроек Terminal.app, похоже, решило проблему. Хотя я остался в замешательстве относительно направления, в котором вертение было необходимо, чтобы заставить это работать правильно.

Связанный контент