Cygwin :получить сохраненную капитализацию пути

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

  • Использовать помеченную файловую систему:

    tune2fs -L / /dev/mmcblkXpY
    

    (это безопасно делать, когда файловая система смонтирована ). Теперь загрузитесь сroot=LABEL=/

  • Использовать UUID:

    blkid /dev/mmcblkXpY
    

    ... сообщит вам, что такое UUID вашей файловой системы. Загрузитесь сroot=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

1
17.07.2020, 12:16
2 ответа

В zshи с включенной опцией extendedglobвы можете выполнить:

$ set -o extendedglob
$ printf '%s\n' (#i)path/to/file
Path/to/FILE

Получить path/to/fileс кейсом.

Вksh93:

$ printf '%s\n' ~(i)path/to/file
Path/to/FILE

(имейте в виду, что если совпадений нет, это расширится до ~(i)path/to/file, ksh93 не имеет эквивалента параметрам nomatchили failglob, хотя вы можете использовать ~(Ni)path/to/file, чтобы это расширялось до нуля, когда это не так. т матч)

В bashс включенными опциями extglob, failglobи nocaseglobвы можете выполнить:

$ shopt -s extglob failglob nocaseglob
$ printf '%s\n' @(path)/@(to)/@(file)
Path/to/FILE

Без extglobвы также можете выполнить printf '%s\n' [p]ath/[t]o/[f]ile, хотя это сложнее надежно автоматизировать.

(в любом случае под оболочкой делает эквивалент вашего ls | grep -i, то есть он должен прочитать полное содержимое каталога, чтобы найти подходящие файлы. Обратите внимание, что, как и для grep -i, сравнение регистров выполняется в соответствии с локалью, оно может отличаться от того, как NTFS выполняет сравнение регистров )

.
1
18.03.2021, 23:19

Не совсем то, что вы просили, но может вас заинтересовать.
Я это где-то взял, не помню, но работает:

Case Sensitve NTFS

You can't enable case sensitivity for a single folder or volume on Windows, but you can do it for the whole system.

You need to change the value of the Registry key

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive

from 1 to 0 and reboot the system.

Если вы это сделаете, вам также необходимо изменить с posix=0на posix=1любое крепление на /etc/fstabнапример:

d:\cyg_pub /pub  NTFS binary,posix=1,nouser 0 0

после этого

$ cd /tmp

$ touch Pippo

$ touch PIppo

$ touch PIPpo

$ ls P*
Pippo  PIppo  PIPpo
1
18.03.2021, 23:19

Теги

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