Símbolos cirílicos em nomes de arquivos Linux

Símbolos cirílicos em nomes de arquivos Linux

Tenho um Linux, feito pela ferramenta Buildroot.

E enfrentei um problema ao criar arquivos com nomes cirílicos. Quando tento criar um arquivo, por exemplo com esse comando:

touch файл.txt

Eu recebo um arquivo com o nome ????.txt.

Tentei exportar LANGvariável:

# export LANG=ru_RU.utf8
# echo $LANG
ru_RU.utf8

E também tentei criar o arquivo no /tempdiretório e em uma partição EXT3, mas o resultado é o mesmo.

Em geral, posso usar cirílico no sistema: os programas podem imprimi-los e posso usar símbolos cirílicos em programas (como no vi, por exemplo).

O que mais posso tentar fazer?

Responder1

touch fezcrie o nome do arquivo corretamente. Mas lsnão está exibindo isso. Isso ocorre porque, lspor padrão, exibe pontos de interrogação para qualquer coisa que não seja reconhecida como caractere imprimível.

Você pode testar isso usando outro comando para exibir o conteúdo do diretório. Experimente qualquer um dos seguintes comandos:

$ ls --show-control-chars
$ sh -c 'echo *'
$ python3 -c 'import os; print(os.listdir("."))'

Definir $LANG para um código de idioma UTF-8, como você fez quando digitou export LANG=ru_RU.UTF-8, deveria ter resolvido o problema. Como isso não funcionou, verifique

  • Se LC_CTYPEtiver sido definido, substituirá o valor de LANG.
  • O seu sistema foi instalado com suporte ao idioma russo? Caso contrário, use outra localidade suportada, como en_US.UTF-8.

informação relacionada