![Linux diferencia maiúsculas de minúsculas E não diferencia maiúsculas de minúsculas e é sempre inconveniente?](https://rvso.com/image/1316780/Linux%20diferencia%20mai%C3%BAsculas%20de%20min%C3%BAsculas%20E%20n%C3%A3o%20diferencia%20mai%C3%BAsculas%20de%20min%C3%BAsculas%20e%20%C3%A9%20sempre%20inconveniente%3F.png)
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
:
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.txt
ou 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=mixed
propriedade.
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:ObCaseInsensitive
e o Linux pode montar esses sistemas de arquivos com vários comportamentos, dependendo das opções de montagem ignore_case
e .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.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.