Cygpath และสำเนียง (àèìòù)

cygpath ดูเหมือนจะจัดการเส้นทางที่มีการเน้นเสียงไม่ถูกต้อง เช่น

C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\àòè\foo2"

พิมพ์

/usr/bin/"C:/foo/àòè/foo2"

ในขณะที่ฉันคาดหวัง:

/cygdrive/c/foo/àòè/foo2

เส้นทางเดียวกันที่ไม่มีสำเนียงให้ผลลัพธ์ที่คาดหวัง:

C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\aoe\foo2"
/cygdrive/c/foo/aoe/foo2

ฉันทำอะไรผิดหรือเปล่า?

------ แก้ไข 1

ฉันใช้ Cygpath 2.6.0 บน Win 10

C:\cygwin64\bin>cygpath --version
cygpath (cygwin) 2.6.0
Path Conversion Utility
Copyright (C) 1998 - 2016 Cygwin Authors
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

C:\cygwin64\bin>locale
LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=

เท่าที่ฉันเห็น หลังจากที่ Adrian ตอบ ฉันคิดว่าปัญหาคือฉันกำลังพยายามใช้ cygpath โดยไม่เรียกใช้ cygwin bash เพราะการใช้สิ่งนั้นฉันไม่มีปัญหาใดๆ

$ cygpath --absolute -C UTF8 "C:\foo\àèò\foo2"
/cygdrive/c/foo/àèò/foo2

แต่ฉันต้องใช้ cygpath โดยตรงโดยไม่ต้องทุบตี คุณคิดว่ามีวิธีไหม?


person Polletto    schedule 09.10.2016    source แหล่งที่มา
comment
สำหรับฉันมันยังทำงานได้ตามที่คาดไว้โดยไม่ต้องใช้ mintty/bash โดยตรงในเทอร์มินัล Windows (cmd.exe) บน Windows 10   -  person Adrian Frühwirth    schedule 09.10.2016
comment
เพิ่งติดตั้ง cygwin 32 บิตและด้วย cmd.exe ฉันพบปัญหาเดียวกัน ฉันเพิ่งลองใช้ PowerShell และใช้งานได้ ฉันไม่รู้จริงๆว่าคิดอะไร   -  person Polletto    schedule 09.10.2016
comment
ยืนยันได้ตอนนี้ ดูคำตอบที่อัปเดตของฉัน   -  person Adrian Frühwirth    schedule 09.10.2016


คำตอบ (1)


คุณใช้ Cygwin/cygpath เวอร์ชันใด ฉันไม่สามารถทำซ้ำสิ่งนี้ได้:

$ cygpath --absolute -C UTF8 "C:\foo\àòè\foo2"
/cygdrive/c/foo/àòè/foo2

$ cygpath --version
cygpath (cygwin) 1.7.35
Path Conversion Utility
Copyright (C) 1998 - 2015 Red Hat, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=en_US.UTF-8

แก้ไข

ผลงาน:

  • cygpath-1.7.35 ใน mintty.exe (Cygwin), cmd.exe และ Powershell
  • cygpath-2.6.0 ใน mintty.exe (Cygwin) และ Powershell

ไม่ทำงาน, ไม่เป็นผล:

  • cygpath-2.6.0 in cmd.exe

ดูเหมือนว่าจะเกี่ยวข้องกับการอ้างอิงและมีวิธีแก้ไข การระบุเส้นทางโดยไม่มีเครื่องหมายคำพูดทำให้ได้ผลลัพธ์ที่ถูกต้อง:

c:\cygwin\bin>cygpath --absolute -C UTF8 'C:\foo\àèò\foo2'
/cygdrive/c/cygwin/bin/'C:/foo/àèò/foo2'

c:\cygwin\bin>cygpath --absolute -C UTF8 C:\foo\àèò\foo2
/cygdrive/c/foo/àèò/foo2

ฉันไม่แน่ใจว่า Cygwin devs รองรับการเรียกใช้แอปพลิเคชัน Cygwin ภายนอก Cygwin-shell อย่างไร/อย่างไร แต่เนื่องจากวิธีนี้ใช้ได้ผลก่อนที่ฉันจะบอกว่ามันเป็นข้อบกพร่อง คุณจึงควรโพสต์ลงในรายชื่ออีเมลของพวกเขา

person Adrian Frühwirth    schedule 09.10.2016
comment
เหมือนกันกับเวอร์ชัน 2.6.0 - person matzeri; 09.10.2016