Verwenden Sie Pfade mit Zeichen mit Akzent in der .command-Datei auf dem Mac

345
Donald Duck

Ich habe eine .command -Datei auf einem Mac, wo ich einen Befehl ausführen muss, der zwei Dateipfade enthält, und beide Dateipfade ein schwedisches Akzentzeichen ( ä) enthalten. Hier ist der Befehl, den ich ausführen muss:

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

Wenn Sie dies manuell in das Terminal äeingeben, funktioniert es einwandfrei. Das Problem besteht jedoch darin, dass der Dateipfad a dazu führt, dass dies nicht ordnungsgemäß funktioniert, wenn ich es von einer .command-Datei aus ausführen. Beim Ausführen dieser .command-Datei erhielt ich eine Ausgabe, bei der äder Dateiname durch ein Fragezeichen ersetzt wurde. Dies ist die Ausgabe, die ich bekam:

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 

Da es durch äFragezeichen ersetzt wurde, ging ich davon aus, dass es Probleme mit Akzentzeichen in Dateinamen gab. Um sicher zu sein, kopierte ich die Dateien auf den Desktop und versuchte, sie von dort aus auszuführen (der Pfad zum Desktop enthält keine Zeichen mit Akzent):

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

Das hat gut funktioniert, was bedeutet, dass das Problem im ersten ädas Dateipfad ist.

Ich weiß, dass es bei Windows ähnliche Probleme mit .bat-Dateien gibt (das Äquivalent bei Windows zu .command-Dateien), und dort kann das Problem durch Hinzufügen chcp 1252am Anfang der .bat-Datei gelöst werden . Also habe ich versucht, das Gleiche mit der .command -Datei auf dem Mac zu machen, so dass diese meine .command-Datei wurde:

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

Das funktionierte auch nicht, es wurde mir ein Fehler gemeldet chcp: command not found.

Ich habe auch versucht, cdrelative Pfade wie folgt zu verwenden:

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

Das gab mir das gleiche Problem wie zuvor, dass es keinen Pfad finden konnte, der enthält ä. Dies ist die Ausgabe, die ich bekam:

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

Meine Frage ist also, wie kann ich Dateipfade mit akzentuierten Zeichen verwenden, z. B. äin einer .command-Datei auf dem Mac?

0
Möglicherweise müssen Sie die Datei in NFD konvertieren, um dem Dateisystem zu entsprechen. Ignacio Vazquez-Abrams vor 6 Jahren 0
@ IgnacioVazquez-Abrams Wie mache ich das? Donald Duck vor 6 Jahren 0
Ich konnte das Problem nicht reproduzieren. Ich habe jedoch ein paar Vorschläge: Versuchen Sie, die genaue Kodierung des Dateinamens mit `cd ~ / OneDrive / Documents zu sehen; Echo Mitt * | xxd` - es sollte * in UTF-8 als "4d69 7474 42 ** 61 cc88 ** 7374 6150 726f 6772 616d" codiert werden (mit "0a" am Ende, da "echo" dazukommt). Der "61 cc88" (oben fett gedruckt) ist der wichtige Teil: 66 ist "a" und cc88 ist ein kombinierender Umlaut. Zweitens versuchen Sie es mit einem einfachen ASCII-Ordnernamen in Ihrem OneDrive-Ordner und erneut mit einem Akzentzeichen-Ordner auf Ihrem Desktop. Gordon Davisson vor 6 Jahren 0
Übrigens, der `chcp`-Befehl (" change code page ") und der Zeichensatz" code page 1252 "sind beide Windows-Dinge - versuchen Sie nicht, sie auf einem Mac zu verwenden. Mac verwendet Unicode-Zeichen (meistens in UTF-8-Kodierung). Wenn Sie steuern möchten, welchen Zeichensatz er in der Befehlszeile verwendet, müssen Sie die verschiedenen Umgebungsvariablen für die Ländereinstellung verwenden (siehe [hier] (https: // unix). zum Beispiel stackexchange.com/questions/87745/what-does-lc-all-c-do). Aber du solltest dich nicht damit beschäftigen. Gordon Davisson vor 6 Jahren 0

0 Antworten auf die Frage