Как управлять файлами с диакритическим знаком на Unix?

Уверенный Вы можете. Необходимо настроить a redirect маршрутизатор, как в:

catch_all_outgoing:
 driver = redirect
 data = admin [at] email
 unseen

N.B. unseen означает, "продолжают другие маршрутизаторы". Если Вы хотите ТОЛЬКО захватить электронную почту а не передать ее предполагаемому получателю, просто удалите ее.

Смотрите на exim документацию, это полно примеров как это.

2
задан 7 May 2012 в 12:08
2 ответа

Использование bash:

Просто для просмотра моих файлов:

$ ls
café.txt

Проверьте шестнадцатеричные байты имени файла (примечание: мое может быть другим ... мое, вероятно, закодировано в UTF-8 ):

$ echo * | hexdump -C
00000000  63 61 66 c3 a9 2e 74 78  74 0a                    |caf...txt.|
0000000a

Затем создайте имя файла, используя шестнадцатеричные коды для частей, которых нет на вашей клавиатуре:

$ ls $'caf\xc3\xa9.txt'
café.txt

В bash $ '...' будет расширять escape-последовательности (подобно тому, как "echo -e" делает ). И \ x, за которым следует двухзначный шестнадцатеричный код, заменит его на этот символ.

И я не вижу ничего плохого в:

ls caf*.txt

, за которым следует

mv caf*.txt cafe.txt

Но если по какой-то причине это будет соответствовать нескольким файлам , вы можете использовать шестнадцатеричный код:

ls $'caf\xc3\xa9.txt'
mv $'caf\xc3\xa9.txt' café.txt
5
ответ дан 3 December 2019 в 09:20

Файловые системы Unix хранят имена файлов в виде необработанной последовательности байтов. Ядро не знает или не заботится о том, каковы на самом деле имена.

Это зависит от приложений, которые обращаются к ним, чтобы использовать правильную кодировку для правильного отображения символов, отличных от ASCII. Обычный способ - через переменные среды LC_ALL / LC_ * или LANG. Я бы рекомендовал использовать локаль UTF-8 для всех приложений, обращающихся к файловой системе, чтобы избежать несовместимости / несогласованности.

1
ответ дан 3 December 2019 в 09:20

Теги

Похожие вопросы