Cygpath dan aksen (àèìòù)

cygpath sepertinya tidak menangani jalur dengan aksen dengan benar, mis.

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

cetakan

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

padahal yang saya harapkan:

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

Jalur yang sama tanpa aksen memberikan hasil yang diharapkan:

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

Apakah saya melakukan sesuatu yang salah?

------ EDIT 1

Saya menggunakan Cygpath 2.6.0 di 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=

Sejauh yang saya lihat, setelah Adrian menjawab, saya pikir masalahnya adalah saya mencoba menggunakan cygpath tanpa menjalankan cygwin bash, karena dengan menggunakannya saya tidak punya masalah.

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

Tapi saya perlu menggunakan cygpath secara langsung tanpa bash, menurut Anda apakah ada caranya?


person Polletto    schedule 09.10.2016    source sumber
comment
Bagi saya ini juga berfungsi seperti yang diharapkan tanpa mintty/bash langsung di terminal Windows (cmd.exe) pada Windows 10.   -  person Adrian Frühwirth    schedule 09.10.2016
comment
Baru saja menginstal cygwin 32bit dan dengan cmd.exe saya mendapat masalah yang sama. Saya baru saja mencoba dengan PowerShell dan berhasil. Saya benar-benar tidak tahu apa yang saya pikirkan.   -  person Polletto    schedule 09.10.2016
comment
Dapat mengonfirmasi sekarang, lihat jawaban saya yang diperbarui.   -  person Adrian Frühwirth    schedule 09.10.2016


Jawaban (1)


Versi Cygwin/cygpath apa yang Anda jalankan? Saya tidak dapat menduplikasi ini:

$ 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

EDIT

Bekerja:

  • cygpath-1.7.35 di mintty.exe (Cygwin), cmd.exe dan Powershell.
  • cygpath-2.6.0 di mintty.exe (Cygwin) dan Powershell.

Tidak bekerja:

  • cygpath-2.6.0 in cmd.exe

Ini sepertinya terkait dengan mengutip dan ada solusinya. Menentukan jalur tanpa tanda kutip menghasilkan hasil yang benar:

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

Saya tidak yakin apakah/bagaimana Cygwin devs mendukung menjalankan Cygwin aplikasi di luar Cygwin-shell tetapi karena ini berfungsi sebelum saya mengatakan ini bug, Anda harus mempostingnya ke milis mereka.

person Adrian Frühwirth    schedule 09.10.2016
comment
sama pada versi 2.6.0 - person matzeri; 09.10.2016