Используйте пути с акцентированными символами в файле .command на Mac

275
Donald Duck

У меня есть файл .command на Mac, где мне нужно запустить команду, которая содержит два пути к файлам, и оба пути к файлам содержат символ шведского языка ( ä). Вот команда, которую мне нужно выполнить:

hdiutil convert -format UDZO -o ~/OneDrive/Documents/MittBästaProgram/install-mac-readonly.dmg ~/OneDrive/Documents/Mitt/BästaProgram/install-mac-readandwrite.dmg 

Ввод этого вручную в терминале работает очень хорошо, но проблема в том, что тот факт, что путь к файлу содержит, äделает это не работает должным образом, когда я запускаю его из файла .command. Когда я запустил этот файл .command, я получил вывод, в котором äимена файлов были заменены знаком вопроса. Это вывод, который я получил:

line 1: 828 Segmentation fault: 11 hdiutil convert -format UDZO -o ~/OneDrive/Documents/MittB?staProgram/install-mac-readonly.dmg ~/OneDrive/Documents/Mitt/B?staProgram/install-mac-readandwrite.dmg 

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

hdiutil convert -format UDZO -o ~/Desktop/install-mac-readonly.dmg ~/Desktop/install-mac-readandwrite.dmg 

Это сработало просто отлично, что означает, что проблема в первом заключается äв пути к файлу.

Я знаю, что в Windows есть аналогичные проблемы с файлами .bat (эквивалент в Windows для файлов .command), и там эту проблему можно решить, добавив chcp 1252в начале файла .bat. Поэтому я попытался сделать то же самое с файлом .command на Mac, чтобы он стал моим файлом .command:

chcp 1252 hdiutil convert -format UDZO -o ~/OneDrive/Documents/MittBästaProgram/install-mac-readonly.dmg ~/OneDrive/Documents/Mitt/BästaProgram/install-mac-readandwrite.dmg 

Это тоже не сработало, это дало мне ошибку, сказав chcp: command not found.

Я также попытался использовать cdи относительные пути, как это:

cd ~/OneDrive/Documents/MittBästaProgram hdiutil convert -format UDZO -o install-mac-readonly.dmg install-mac-readandwrite.dmg 

Это дало мне ту же проблему, что и раньше, это то, что он не мог найти путь, содержащий ä. Это вывод, который я получил:

line 1: cd: /Users/donaldduck/OneDrive/Documents/MittB?staProgram: No such file or directory 

Поэтому мой вопрос заключается в том, как я могу использовать пути к файлам с акцентированными символами, например, äв файле .command на Mac?

0
Вам, вероятно, нужно преобразовать файл в NFD, чтобы соответствовать файловой системе. Ignacio Vazquez-Abrams 7 лет назад 0
@ IgnacioVazquez-Abrams Как мне это сделать? Donald Duck 7 лет назад 0
Я не смог воспроизвести проблему. У меня есть пара предложений: попробуйте просмотреть точную кодировку имени файла с помощью `cd ~ / OneDrive / Documents; эхо Митт * | xxd` - это * должно * быть закодировано в UTF-8 как "4d69 7474 42 ** 61 cc88 ** 7374 6150 726f 6772 616d" (с "0a" в конце, потому что `echo` добавляет это). «61 cc88» (выделено жирным шрифтом выше) - важная часть: 66 - это «a», а cc88 - это комбинация умлаутов. Во-вторых, попробуйте с простым именем ASCII в папке OneDrive и снова с папкой с акцентированными символами на рабочем столе. Gordon Davisson 7 лет назад 0
Кстати, команда `chcp` (« изменить кодовую страницу ») и набор символов« кодовая страница 1252 »- это вещи Windows - не пытайтесь использовать их на Mac. Mac использует символы Unicode (в основном в кодировке UTF-8), и если вам нужно контролировать, какой набор символов он использует в командной строке, вам нужно использовать различные переменные среды локали (см. [Здесь] (https: // unix). stackexchange.com/questions/87745/what-does-lc-all-c-do), например). Но вам не нужно возиться с этим. Gordon Davisson 7 лет назад 0

0 ответов на вопрос