API do Windows para acessar caminhos com distinção entre maiúsculas e minúsculas (Bash-on-Ubuntu-on-Windows)
O Bash-on-Ubuntu-on-Windows suporta caminhos de arquivo que diferenciam maiúsculas de minúsculas. Isso significa que eu posso criar dois arquivos ou diretórios com nomes que diferem apenas em maiúsculas. Eu tenho problemas para acessar esses arquivos, no entanto.
Corrida
bash -c "touch Magic ; mkdir magic ; echo Secret! > magic/secret"
Cria um nome de arquivoMagic
, um diretório chamadomagic
e um nome de arquivosecret
nesse diretório.
bash -c "ls -lR"
rendimentos
.:
total 0
drwxrwxrwx 2 root root 0 Aug 23 10:37 magic
-rwxrwxrwx 1 root root 0 Aug 23 10:37 Magic
./magic:
total 0
-rwxrwxrwx 1 root root 8 Aug 23 10:37 secret
(Não sei por que receboroot
, como não é o usuário padrão, mas isso não parece relevante para minha pergunta.)
Agora, enquantobash
pode acessar facilmente omagic/secret
No diretório, o Windows parece tratar o diretório e o arquivo como um e o mesmo. Então, clicando duas vezes no diretório, recebo o erro "nome do diretório inválido"
O mesmo vale para o usocd
, como eu receboThe directory name is invalid.
impresso.
Existem APIs que permitem acessar esses caminhos que diferenciam maiúsculas de minúsculas ou criá-los? Parece que as APIs regulares do Windows ignoram completamente as maiúsculas e minúsculas ao acessar arquivos existentes.