Linux Ambos Sensíveis a Maiúsculas e Insensíveis a Maiúsculas e Sempre Inconvenientes?

8

Estou usando o Ubuntu 10 e estou rapidamente descobrindo que é sensível a maiúsculas e minúsculas quando é inconveniente (por exemplo, ao preencher automaticamente os caminhos de arquivo com a guia no terminal), mas também é insensível ao usar os comandos MV e CP (também inconveniente ao tentar duplicar um nome de arquivo com um caso diferente).

Essencialmente, preciso que este comando funcione, mas não funciona.

cp ./filename.txt ./FileName.txt

Acabei com filename.txt :

Como posso obter o mesmo arquivo com um caso diferente, mas com o mesmo nome no mesmo diretório?

EDIT: comentário abaixo Maerics me ajudou a lembrar que eu estou realmente desenvolvendo em uma unidade compartilhada do Windows rodando NTFS que é case INsensitive. É por isso que, embora CP e MV não gerem um erro, o arquivo não é copiado (ou, mais provavelmente, é copiado, mas o Windows substitui o já existente).

    
por anon58192932 31.05.2012 / 21:13

4 respostas

4

NTFS 1 e VFAT não diferenciam maiúsculas de minúsculas, eles preservam apenas maiúsculas e minúsculas. Isso significa que, se você criar um arquivo denominado FileName.txt , o sistema de arquivos preservará o nome do caso misto, mas poderá acessar o arquivo com qualquer combinação de letras iguais, como FILENAME.TXT , filename.txt ou fileNAME.txt . Isso explica que você não pode ter dois arquivos com a mesma grafia com apenas uma variação de maiúsculas / minúsculas no mesmo diretório.

O sistema de arquivos SMB exportado precisa implementar esse comportamento para não confundir clientes Windows.

O ZFS pode ser configurado para se comportar dessa maneira com a propriedade casesensitivity=mixed .

1 Tecnicamente, o NTFS faz distinção entre maiúsculas e minúsculas, mas os sistemas de arquivos de montagem do sistema operacional desse tipo quase sempre são configurados para ocultar esse recurso subjacente e preservar apenas o caso. No entanto, o Windows pode ativar a diferenciação de maiúsculas e minúsculas com a modificação dessa chave de registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive e o Linux pode montar esses sistemas de arquivos com vários comportamentos, dependendo das opções ignore_case e windows_names mount.

    
por 01.06.2012 / 07:52
11

Você pode habilitar o preenchimento de nome de arquivo sem distinção entre maiúsculas e minúsculas no bash adicionando a seguinte linha a $HOME/.inputrc :

set completion-ignore-case On

Com relação aos nomes dos arquivos: Isso depende do sistema de arquivos. Nos sistemas de arquivos do Linux, não deve haver nenhum problema. Em outros sistemas de arquivos, o comportamento pode ser controlado com opções para o comando mount. Veja a página de manual mount(8) para mais informações sobre as opções disponíveis para montar.

    
por 31.05.2012 / 21:20
2

Esta é uma propriedade do sistema de arquivos ou outra coisa?

pa-ubuntu-11388$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.3 LTS
Release:        10.04
Codename:       lucid
pa-ubuntu-11388$ ls -l
pa-ubuntu-11388$ touch filename.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt
pa-ubuntu-11388$ cp ./filename.txt ./FileName.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 FileName.txt
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt

Funciona bem para mim.

    
por 31.05.2012 / 21:20
1

O Ubuntu não é parcialmente sensível a maiúsculas e minúsculas. É sempre sensível a maiúsculas e minúsculas. filename.txt e Filename.txt são dois arquivos diferentes e podem ser colocados no mesmo diretório. Então, este comando:

cp ./filename.txt ./FileName.txt

funcionará sem nenhum problema no mesmo diretório.

    
por 31.05.2012 / 21:18