Linux diferencia maiúsculas de minúsculas E não diferencia maiúsculas de minúsculas e é sempre inconveniente?

Linux diferencia maiúsculas de minúsculas E não diferencia maiúsculas de minúsculas e é sempre inconveniente?

Estou usando o Ubuntu 10 e estou descobrindo rapidamente que diferencia maiúsculas de minúsculas quando é inconveniente (como ao preencher automaticamente caminhos de arquivo com tabulação no terminal), mas também diferencia maiúsculas de minúsculas ao usar os comandos MV e CP (também inconveniente ao tentar duplicar um nome de arquivo com uma caixa diferente).

Em essência, preciso que esse comando funcione, mas isso não acontece.

cp ./filename.txt ./FileName.txt

Acabo com filename.txt:

insira a descrição da imagem aqui

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

EDIT: O comentário de Maerics abaixo me ajudou a lembrar que, na verdade, estou desenvolvendo em uma unidade compartilhada do Windows executando NTFS, que diferencia maiúsculas de minúsculas. É por isso que mesmo que CP e MV não gerem erro, o arquivo não é copiado (ou mais provavelmente É copiado, mas o Windows substitui o já existente).

Responder1

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

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

O ZFS pode ser configurado para se comportar dessa forma com a casesensitivity=mixedpropriedade.

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

Responder2

Você pode ativar 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

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

Responder3

Isso é uma propriedade do sistema de arquivos ou algo mais?

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

Isso funciona bem para mim.

Responder4

O Ubuntu não diferencia parcialmente maiúsculas de minúsculas. É sempre sensível a maiúsculas e minúsculas. filename.txte Filename.txtsã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.

informação relacionada