LINUX.ORG.RU

Прошу помочь разобраться c локалями на арче

 ,


0

1

Странно, такое чувство что с моими локалями что-то не так. Допустим, если намеренно ввести команду ls с русским ключом, например, «ls -г». Получаю

ls: неверный ключ — «�»
. В случае использования find именно с ключом ls получаю кракозябры (в случае наличия в результате поиска русских символов). Помогите, пожалуйста разобраться. В чем может быть ошибка? Не думаю что так и должно быть.

Содержимое /etc/locale.conf

LANG=en_US.UTF-8
LANGUAGE=ru_RU:en_US:en
LC_COLLATE=C
LC_ADDRESS=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8

Выхлоп locale -a

C
POSIX
en_US.utf8
ru_RU.utf8

localectl

  System Locale: LANG=en_US.UTF-8
                  LANGUAGE=ru_RU:en_US
                  LC_NUMERIC=ru_RU.UTF-8
                  LC_TIME=ru_RU.UTF-8
                  LC_COLLATE=C
                  LC_MONETARY=ru_RU.UTF-8
                  LC_MESSAGES=ru_RU.UTF-8
                  LC_PAPER=ru_RU.UTF-8
                  LC_NAME=ru_RU.UTF-8
                  LC_ADDRESS=ru_RU.UTF-8
                  LC_TELEPHONE=ru_RU.UTF-8
                  LC_MEASUREMENT=ru_RU.UTF-8
                  LC_IDENTIFICATION=ru_RU.UTF-8
       VC Keymap: ruwin_alt_sh-UTF-8
      X11 Layout: n/a



Последнее исправление: Kolya95 (всего исправлений: 1)

Проверить переменные

env | grep -e LC -e LANG
Проверить используемый шрифт на поддержку кириллицы

anonymous
()

locale -a

C C.utf8 POSIX en_US.utf8 ru_RU.utf8

anonymous
()

А в локале указаны утфы?

ru_RU.UTF-8 UTF-8

en_US.UTF-8 UTF-8

anonymous
()
Ответ на: комментарий от anonymous
LC_ADDRESS=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
GDM_LANG=en_US.utf8
LC_PAPER=ru_RU.UTF-8
LANG=en_US.utf8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=C
LC_NUMERIC=ru_RU.UTF-8
Kolya95
() автор топика
Ответ на: комментарий от anonymous
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=C
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

Странно, ничего подозрительного не вижу. Шрифт у меня adobe source code. Если грузится без среды рабочего стола, где у меня шрифт terminus, то все тоже самое.

Kolya95
() автор топика

ls: неверный ключ — «�»

Это нормально. ls наверняка пользует argp, который в юникод не умеет и считает что каждый байт — это символ.

В случае использования find именно с ключом ls

А вот тут я ничего не понял: кто на ком стоял?

debugger ★★★★★
()
Ответ на: комментарий от debugger

Во-первых, всем спасибо за отклики.

Например,

find Загрузки

Выводит

Загрузки/qt5-styleplugins/src/qtstyleplugins-335dbece103e2cbf6c7cf819ab6672c2956b17b3/src/plugins/styles/bb10style/bright/scrollbar/core_scrollbar_v.png
Загрузки/qt5-styleplugins/src/qtstyleplugins-335dbece103e2cbf6c7cf819ab6672c2956b17b3/src/plugins/styles/bb10style/bright/combobox
Загрузки/qt5-styleplugins/src/qtstyleplugins-335dbece103e2cbf6c7cf819ab6672c2956b17b3/src/plugins/styles/bb10style/bright/combobox/core_dropdown_divider.png

Но

find Загрузки -ls

Уже

 2098151      4 drwxr-xr-x   3 kolya     kolya         4096 июн 26 20:15 \320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270/qt5-styleplugins/src/qtstyleplugins-335dbece103e2cbf6c7cf819ab6672c2956b17b3/lib
  2098152      4 drwxr-xr-x   4 kolya     kolya         4096 июн 26 20:15 \320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270/qt5-styleplugins/src/qtstyleplugins-335dbece103e2cbf6c7cf819ab6672c2956b17b3/lib/cmake

Kolya95
() автор топика
Ответ на: комментарий от Kolya95

find Загрузки -ls

man find:

-ls True; list current file in ls -dils format on standard output. The block ounts are of 1 KB blocks, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used. See the UNUSUAL FILENAMES section for information about how unusual characters in filenames are handled.

Ты секцию UNUSUAL FILENAMES читал?

debugger ★★★★★
()
Ответ на: комментарий от Kolya95

Короче, это тоже нормально. По крайней мере, find ведёт себя именно так, как написано в мане. Причины вести себя именно так у них тоже есть, поскольку кодировка имён файлов, насколько я помню, никому не известна. Если хочешь получить имена файлов так, как они есть без каких-либо искажений, пользуй -print (но можешь получить проблемы если имя файла содержит конец строки), а лучше -print0 (но потребитель должен уметь это понимать).

И пометь топик как решённый.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.