Ajustar a diferenciação de maiúsculas e minúsculas

A diferenciação de maiúsculas e minúsculas determina se letras maiúsculas (FOO.txt) e minúsculas (foo.txt) serão tratadas como distintas (diferenciação de maiúsculas e minúsculas) ou equivalentes (sem diferenciação de maiúsculas e minúsculas) em um nome de arquivo ou diretório.

  • Diferenciar maiúsculas de minúsculas: FOO.txt ≠ foo.txt ≠ Foo.txt
  • Não diferencia maiúsculas de minúsculas: FOO.txt = foo.txt = Foo.txt

diferenças entre Windows e a distinção entre maiúsculas e minúsculas do Linux

ao trabalhar com arquivos e diretórios do Linux e do Windows, talvez seja necessário ajustar a forma como a distinção de maiúsculas e minúsculas é tratada.

Comportamento padrão:

  • Windows sistema de arquivos trata os nomes de arquivos e diretórios como não diferenciam maiúsculas de minúsculas. FOO.txt e foo.txt serão tratados como arquivos equivalentes.
  • O sistema de arquivos do Linux trata nomes de arquivos e diretórios como diferenciando maiúsculas de minúsculas. FOO.txt e foo.txt serão tratados como arquivos distintos.

o sistema de arquivos Windows dá suporte à definição de distinção de maiúsculas e minúsculas com sinalizadores de atributo por diretório Embora o comportamento padrão seja não diferenciar maiúsculas de minúsculas, você pode atribuir um sinalizador de atributo para tornar um diretório diferenciar maiúsculas de minúsculas, para que ele reconheça arquivos e pastas do Linux que podem diferir apenas por maiúsculas e minúsculas.

isso pode ser especialmente verdadeiro ao montar unidades no sistema de arquivos Subsistema do Windows para Linux (WSL). Ao trabalhar no sistema de arquivos WSL, você está executando o Linux, portanto, os arquivos e diretórios são tratados como diferenciação de maiúsculas e minúsculas por padrão.

Observação

no passado, se você tivesse arquivos cujo nome difere apenas por maiúsculas e minúsculas, esses arquivos não podiam ser acessados pelo Windows, porque Windows aplicativos tratam o sistema de arquivos como não diferencia maiúsculas de minúsculas e não podem distinguir entre arquivos cujos nomes diferem apenas no caso. embora Windows explorador de arquivos mostre os dois arquivos, apenas um será aberto, independentemente de onde você selecionar.

Alterar a diferenciação de maiúsculas e minúsculas de arquivos e diretórios

as etapas a seguir explicam como alterar um diretório no sistema de arquivos Windows para que ele diferencie maiúsculas de minúsculas e reconheça arquivos e pastas que diferem apenas por maiúsculas e minúsculas.

Aviso

alguns Windows aplicativos, usando a suposição de que o sistema de arquivos não diferencia maiúsculas de minúsculas, don ’ t usa o caso correto para fazer referência a arquivos. Por exemplo, ’ não é incomum que os aplicativos transformem nomes de filepara usar todas as letras maiúsculas ou minúsculas. Em diretórios marcados como diferenciam maiúsculas de minúsculas, isso significa que esses aplicativos não podem mais acessar os arquivos. além disso, se Windows aplicativos criarem novos diretórios em uma árvore de diretório em que você esteja usando arquivos com distinção de maiúsculas e minúsculas, esses diretórios não diferenciam maiúsculas de minúsculas. isso pode dificultar o trabalho com as ferramentas de Windows em diretórios que diferenciam maiúsculas de minúsculas, portanto, tenha cuidado ao alterar Windows configurações de diferenciação de maiúsculas e minúsculas do sistema

Inspecionar a sensibilidade do caso atual

para verificar se um diretório diferencia maiúsculas de minúsculas no sistema de arquivos Windows, execute o comando:

fsutil.exe file queryCaseSensitiveInfo <path>

Substituir <path> pelo caminho do arquivo. para um diretório no sistema de arquivos Windows (NTFS), o <path> será semelhante a: C:\Users\user1\case-test ou se você já estiver no user1 diretório, bastaria executar:fsutil.exe file setCaseSensitiveInfo case-test

Modificar distinção entre maiúsculas e minúsculas

o suporte para a distinção de maiúsculas e minúsculas por diretório começou em Windows 10, build 17107. no Windows 10, a compilação 17692, o suporte foi atualizado para incluir a inspeção e a modificação do sinalizador de sensibilidade de maiúsculas e minúsculas para um diretório de dentro de WSL. A diferenciação de maiúsculas e minúsculas é exposta usando um atributo estendido chamado system.wsl_case_sensitive . O valor desse atributo será 0 para diretórios que não diferenciam maiúsculas de minúsculas e 1 para diretórios com diferenciação de maiúsculas e minúsculas.

Alterar a diferenciação de maiúsculas e minúsculas de um diretório requer que você execute permissões elevadas (executar como administrador). Alterar o sinalizador de diferenciação de maiúsculas e minúsculas também requer “” as permissões gravar atributos, “ criar arquivos ” , “ criar pastas ” e “ excluir subpastas e arquivos ” no diretório. Consulte a seção de solução de problemas para saber mais sobre isso.

para alterar um diretório no sistema de arquivos Windows de forma que ele diferencia maiúsculas de minúsculas (foo ≠ foo), execute o PowerShell como administrador e use o comando:

fsutil.exe file setCaseSensitiveInfo <path> enable

para alterar um diretório no sistema de arquivos Windows de volta para o padrão que não diferencia maiúsculas de minúsculas (foo = foo), execute o PowerShell como administrador e use o comando:

fsutil.exe file setCaseSensitiveInfo <path> disable

Um diretório deve estar vazio para alterar o atributo de sinalizador de diferenciação de maiúsculas e minúsculas nesse diretório. Não é possível desabilitar o sinalizador de sensibilidade de maiúsculas e minúsculas em um diretório que contém pastas/arquivos cujos nomes diferem somente por maiúsculas e minúsculas

Herança de sensibilidade de caso

Ao criar novos diretórios, esses diretórios herdarão a diferenciação de maiúsculas e minúsculas do diretório pai.

Aviso

Há uma exceção a essa política de herança durante a execução no modo WSL 1. Quando uma distribuição está em execução no modo WSL 1, o sinalizador de sensibilidade de caso por diretório não é herdado; os diretórios criados em um diretório com distinção de maiúsculas e minúsculas não são automaticamente confidenciais. Você deve marcar explicitamente cada diretório como diferencia maiúsculas de minúsculas

Opções de diferenciação de maiúsculas e minúsculas para montar uma unidade no arquivo de configuração WSL

a diferenciação de maiúsculas e minúsculas pode ser gerenciada ao montar uma unidade no Subsistema do Windows para Linux usando o arquivo de configuração WSL. Cada distribuição do Linux que você instalou pode ter seu próprio arquivo de configuração WSL, chamado /etc/wsl.conf . Para obter mais informações sobre como montar uma unidade, consulte introdução à montagem de um disco do Linux no WSL 2.

Para configurar a opção de sensibilidade de caso no wsl.config arquivo ao montar uma unidade:

  1. Abra a distribuição do Linux que você usará (por ex. Ubuntu).
  2. Altere os diretórios até ver a etc pasta (isso pode exigir que você acesse o cd ..home diretório).
  3. liste os arquivos no etc diretório para ver se um wsl.conf arquivo já existe (use o ls comando ou explorer.exe . para exibir o diretório com Windows explorador de arquivos).
  4. Se o wsl.conf arquivo ainda não existir, você poderá criá-lo usando: sudo touch wsl.conf ou executando sudo nano /etc/wsl.conf , que criará o arquivo ao salvar do editor do nano.
  5. As seguintes opções estão disponíveis para você adicionar ao seu wsl.config arquivo:

Configuração padrão: para habilitar a diferenciação de maiúsculas e minúsculas por diretório.

[automount]
options = case = dir

Distinção de maiúsculas e minúsculas indisponível (todos os diretórios em unidades NTFS montadas não diferenciarão maiúsculas de minúsculas):

[automount]
options = case = off

Trate todos os diretórios na unidade (NTFS) como diferenciar maiúsculas de minúsculas:

[automount]
options = case = force

Essa opção só tem suporte para montar unidades em distribuições Linux em execução como WSL 1 e pode exigir uma chave de registro. Para adicionar uma chave de registro, você pode usar este comando em um prompt de comando elevado (administrador): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1 .

Você precisará reiniciar o WSL depois de fazer alterações wsl.conf no arquivo para que essas alterações entrem em vigor. Você pode reiniciar o WSL usando o comando: wsl --shutdown

Dica

Para montar uma unidade (que usa o plug-in do DrvFs FileSystem para disponibilizar o disco em/mnt, como/mnt/c,/mnt/d, etc.) com uma configuração de sensibilidade de maiúsculas e minúsculas específica para todas as unidades, use /etc/wsl.conf conforme descrito acima. Para definir as opções de montagem padrão para uma unidade específica, use o arquivo para especificar essas opções. Para obter mais opções de configuração do WSL, consulte definir configurações de inicialização por distribuição com wslconf.

Alterando a sensibilidade de maiúsculas e minúsculas em uma unidade montada em uma distribuição WSL

Unidades formatadas para NTFS montadas em uma distribuição WSL não diferenciarão maiúsculas de minúsculas por padrão. Para alterar a sensibilidade de maiúsculas e minúsculas de um diretório em uma unidade montada em uma distribuição WSL (isto é, Ubuntu), siga as mesmas etapas, conforme listado acima, para o sistema de arquivos Windows. (As unidades de EXT4 serão diferenciadas entre maiúsculas e minúsculas por padrão).

Para habilitar a diferenciação de maiúsculas e minúsculas em um diretório (FOO ≠ foo), use o comando:

fsutil.exe file setCaseSensitiveInfo <path> enable

Para desabilitar a diferenciação de maiúsculas e minúsculas em um diretório e retornar para o padrão que não diferencia maiúsculas de minúsculas (FOO = foo), use o comando:

fsutil.exe file setCaseSensitiveInfo <path> disable

Observação

Se você alterar o sinalizador de diferenciação de maiúsculas e minúsculas em um diretório existente para uma unidade montada enquanto o WSL estiver em execução, verifique se WSL não tem nenhuma referência a esse diretório ou se a alteração não entrará em vigor. Isso significa que o diretório não deve ser aberto por nenhum processo WSL, incluindo o uso do diretório (ou seus descendentes) como o diretório de trabalho atual.

Configurar distinção de maiúsculas e minúsculas com o Git

O sistema de controle de versão do git também tem uma definição de configuração que pode ser usada para ajustar a sensibilidade de maiúsculas e minúsculas para os arquivos com os quais você está trabalhando. Se você estiver usando o Git, talvez queira ajustar a git config core.ignorecase configuração.

Para definir o Git para diferenciar maiúsculas de minúsculas (FOO.txt ≠ foo.txt), digite:

git config core.ignorecase false

Para definir o Git para não diferenciar maiúsculas de minúsculas (FOO.txt = foo.txt), digite:

git config core.ignorecase true

Definir essa opção como false em um sistema de arquivos que não diferencia maiúsculas de minúsculas pode levar a erros confusos, falsos conflitos ou arquivos duplicados.

Para obter mais informações, consulte a documentação de configuração do git.

Solução de problemas

meu diretório tem arquivos que são de maiúsculas e minúsculas e exigem a diferenciação de maiúsculas, mas as ferramentas Windows FS não reconhecerão esses arquivos

para usar Windows ferramentas do sistema de arquivos para trabalhar em um diretório do Linux que contém arquivos de casos mistos, você precisará criar um diretório totalmente novo e defini-lo para diferenciar maiúsculas de minúsculas e, em seguida, copiar os arquivos para esse diretório (usando o clone do git ou descompactar). Os arquivos permanecerão com maiúsculas e minúsculas. (Observe que se você já tiver tentado mover os arquivos para um diretório que não diferencia maiúsculas de minúsculas e houver conflitos, provavelmente alguns arquivos foram substituídos e não estarão mais disponíveis.)

Erro: o diretório não está vazio

Você não pode alterar a configuração de distinção de maiúsculas e minúsculas em um diretório que contém outros arquivos ou diretórios. Tente criar um novo diretório, alterar a configuração e, em seguida, copiar seus arquivos de caso misto para ele.

Erro: acesso negado

Verifique se você tem as “ permissões gravar atributos ” , “ criar arquivos ” , “ criar pastas ” e “ excluir subpastas e arquivos ” no diretório necessário para alterar a diferenciação de maiúsculas e minúsculas. para verificar essas configurações, abra o diretório em Windows explorador de arquivos (na linha de comando, use o comando: explorer.exe . ). Clique com o botão direito do mouse no diretório e selecione Propriedades para abrir o documento janela Propriedades e, em seguida, selecione Editar para exibir ou alterar as permissões para o diretório.

Properties windows to view or change permissions on NTFS directories

Erro: um volume NTFS local é necessário para esta operação

O atributo de distinção de maiúsculas e minúsculas só pode ser definido em diretórios em um sistema de arquivos formatado por NTFS. Os diretórios no sistema de arquivos WSL (Linux) diferenciam maiúsculas de minúsculas por padrão (e não podem ser definidos para diferenciar maiúsculas de minúsculas usando a ferramenta de fsutil.exe).

Recursos adicionais