Linux à la fois sensible à la casse et insensible à la casse et toujours peu pratique?

8

J'utilise Ubuntu 10 et je découvre rapidement qu'il est sensible à la casse lorsqu'il est gênant pour qu'il en soit ainsi (comme lors de la saisie semi-automatique des chemins de fichier avec tabulation dans le terminal) mais également sensible à la casse IN lors de l'utilisation des commandes MV et CP (également gênant lorsque vous essayez de dupliquer un nom de fichier avec une casse différente).

Essentiellement, j'ai besoin de cette commande pour fonctionner, mais ce n'est pas le cas.

cp ./filename.txt ./FileName.txt

Je me retrouve juste avec filename.txt:

entrez la description de l'image ici

Comment puis-je obtenir le même fichier avec un cas différent mais le même nom dans le même répertoire?

EDIT: Le commentaire de Maerics ci-dessous m'a aidé à me rappeler que je suis en train de développer sur un lecteur partagé Windows exécutant NTFS qui est sensible à la casse IN. C'est pourquoi même si CP et MV ne génèrent pas d'erreur, le fichier n'est pas copié (ou plus probablement EST copié, mais Windows remplace celui déjà existant).

anon58192932
la source
1
C'est étrange: j'ai testé cette commande sans surprise ... Je n'ai aucun problème avec différents cas dans le même répertoire.
Denys Séguret
5
Notez que ce comportement peut dépendre du type de système de fichiers sur lequel ces fichiers existent. Par exemple, FAT32 ne peut pas différencier ces noms de fichiers.
maerics
SENSATIONNEL. Ce fut la réponse des Maerics. Les fichiers sont stockés sur un lecteur monté qui exécute NTFS. J'ai complètement oublié depuis que je développe une plateforme multiplateforme que j'utilise Windows pour stocker les fichiers.
anon58192932
1
@advocate: NTFS est sensible à la casse, vous devriez donc pouvoir le monter comme vous le souhaitez. Cependant, la question est de savoir si c'est ce que vous voulez :)
0xC0000022L
Les tests montrent que Windows 7 ne semble pas respecter la casse.
anon58192932

Réponses:

4

NTFS 1 et VFAT ne sont pas sensibles à la casse, ils ne font que respecter la casse. Cela signifie que si vous créez un fichier nommé FileName.txt, le système de fichiers conserveront le nom de cas mixte, mais vous pouvez accéder au fichier avec quelle combinaison de cas des mêmes lettres, comme FILENAME.TXT, filename.txtou fileNAME.txt. Cela explique que vous ne pouvez pas avoir deux fichiers avec la même orthographe avec seulement une variation de majuscules / minuscules dans le même répertoire.

Le système de fichiers exporté SMB doit implémenter ce comportement pour ne pas confondre les clients Windows.

ZFS peut être configuré pour se comporter de cette façon avec la casesensitivity=mixedpropriété.

1 Techniquement, NTFS est sensible à la casse, mais les systèmes de fichiers de montage des systèmes d'exploitation de ce type sont presque toujours configurés pour masquer cette fonctionnalité sous-jacente et ne conserver que la casse. Windows peut cependant activer la sensibilité à la casse en modifiant cette clé de registre HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitiveet Linux peut monter ces systèmes de fichiers avec différents comportements en fonction des options de montage ignore_caseet windows_names.

jlliagre
la source
2
NTFS est absolument sensible à la casse. Cependant, Win32 n'est pas sensible à la casse, donc pour des raisons pratiques, la plupart des gens supposent que NTFS ne l'est pas non plus.
Cody Gray
@CodyGray Oui, vous avez raison, merci d'avoir pointé cette fonctionnalité. Le système de fichiers NTFS sous-jacent autorise des noms de fichiers différents qui ne diffèrent que par le cas.
jlliagre
11

Vous pouvez activer la complétion de nom de fichier insensible à la casse dans bash en ajoutant la ligne suivante à $HOME/.inputrc:

set completion-ignore-case On

Concernant les noms de fichiers: cela dépend du système de fichiers. Sur les systèmes de fichiers Linux, il ne devrait y avoir aucun problème. Sur d'autres systèmes de fichiers, le comportement peut être contrôlé avec des options de la commande mount. Consultez la page de manuel mount(8)pour plus d'informations sur les options disponibles à monter.

nosid
la source
Vous avez raison. Le système de fichiers sous-jacent n'était pas un système de fichiers Linux donc pendant que CP et MV fonctionnent, Windows choisit de conserver le fichier déjà existant (lors de la substitution à cause de la casse INsensitivity) qui le fait apparaître dans le terminal Unix comme si la commande ne fonctionnait pas du tout . Aussi, merci pour l'achèvement ignorer le cas, cela aidera beaucoup!
anon58192932
Est-ce que la casse est activée? ;)
Arj
Malheureusement, cela ne vous aidera pas dans un script.
Sridhar Sarnobat
2

Est-ce une propriété du système de fichiers ou autre chose?

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

Ça fonctionne bien pour moi.

D.Shawley
la source
Les maerics ci-dessus m'ont aidé à résoudre le problème. Je développe sous Ubuntu un port windows -> linux mais les fichiers sont stockés sur l'ordinateur Windows et j'ai oublié que j'avais monté le disque. Le NTFS sous-jacent empêchait les deux fichiers d'exister en même temps.
anon58192932
1

Ubuntu n'est pas partiellement sensible à la casse. Il est toujours sensible à la casse. filename.txtet Filename.txtsont deux fichiers différents et peuvent être placés dans le même répertoire. Donc, cette commande:

cp ./filename.txt ./FileName.txt

fonctionnera sans aucun problème dans le même répertoire.

PP
la source
Mais ce n'est pas le cas. J'essaie de comprendre depuis la dernière heure.
anon58192932
2
peut-être, vous ne vous êtes pas filename.txtdans votre répertoire actuel?
PP
C'est définitivement là-dedans.
anon58192932
Les maerics ci-dessus m'ont aidé à résoudre le problème. Je développe sous Ubuntu un port windows -> linux mais les fichiers sont stockés sur l'ordinateur Windows et j'ai oublié que j'avais monté le disque. Le NTFS sous-jacent empêchait les deux fichiers d'exister en même temps.
anon58192932
2
J'ai vu un commentaire des Maerics. thx
PP