Forcer la casse sensitive

Bonjour,

Je suis sous Linux Jessie et j’aimerais forcer avoir la casse sensitive, car je cherche à vérifier la présence d’un fichier à partir d’un chemin.

Mon bash ne respecte pas la casse et j’aimerais qu’il le fasse…
Si je fais :
[ -f /toto/file ] ou [ -f /TOto/FIle], les 2 commandes retournent 0 même si seulement /toto/file existe (alors que j’aimerais 1 dans le 2ème cas)

En cherchant sur le net, j’ai trouvé beaucoup de sujet pour rendre un bash insensitive, en particulier l’option shopt -s nocaseglob, mais pas l’inverse :-S

Auriez vous des idées , merci d’avance pour votre aide !

1 J'aime

Bonjour,

ça vaut peut-être le coup de vérifier les valeurs des options de ton shell, avec la commande shopt sans aucun argument. Je ne connais pas très bien ces options, mais dans mon cas, les options nocaseglob et nocasematch sont à off et j’ai le comportement que tu cherches à avoir (bash 5.0.3)

1 J'aime

Merci pour la rapidité de la réponse !

Voici les valeurs :

shopt | grep nocase
nocaseglob         off
nocasematch        off

Mais je n’ai pas le comportement attendu…

Ma version de bash :

bash --version
GNU bash, version 4.3.30(1)-release (arm-unknown-linux-gnueabihf)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later [<http://gnu.org/licenses/gpl.html>](http://gnu.org/licenses/gpl.html)
1 J'aime

Ce n’est pas normal, ce genre de test est sensible à la casse par défaut.

Est-ce que tu utilises un système de fichiers différent de celui proposé par défaut pour Debian (ext4) ?


Un exemple tout simple sur mon système :

$ test -e /HOME
$ echo $?
1
$ test -e /home
$ echo $?
0

Effectivement ca fonctionne bien avec ce test, donc mon problème vient d’ailleurs… ca m’a au moins permis de voir ca !

Merci beaucoup

1 J'aime

Est-ce que ca serait lié aux guillemets ?

 test -f "L'IMpératrice/L'Impératrice - Vanille Fraise.mp3" ; echo $?
 0
 test -f "L'Impératrice/L'Impératrice - Vanille Fraise.mp3" ; echo $?
 0

alors que j’ai qu’un répertoire "L'Impératrice"

1 J'aime

Avec des guillemets, et le test -f :

$ test -f "/boot/CONFIG-5.10.0-7-amd64"
$ echo $?
1
$ test -f "/boot/config-5.10.0-7-amd64"
$ echo $?
0

Pour l’instant je reste sur l’hypothèse du système de fichiers insensible à la casse, mais tu n’as pas répondu sur ce sujet :wink:

oups, désolé !

J’avoue que je ne sais pas du tout quel système de fichier j’ai. C’est la distribution « Volumio » Download |Get Started | Volumio que j’ai installé sur un Pi3 (qui est construite ici GitHub - volumio/Build: Buildscripts for Volumio System )

Comment savoir le système de fichier que l’on a ?

1 J'aime

Ca semble bien lié au système de fichier car si je teste en copiant le même répertoire sur 2 partitions différentes, je n’ai pas le même résultat !

volumio@volumio:/mnt/USB/F4E2-1499$ test -f « L’Impératrice/L’Impératrice - Vanille Fraise.mp3 » ; echo $?
0
volumio@volumio:/mnt/USB/F4E2-1499$ test -f « L’IMpératrice/L’Impératrice - Vanille Fraise.mp3 » ; echo $?
0

volumio@volumio:/tmp$ test -f « L’Impératrice/L’Impératrice - Vanille Fraise.mp3 » ; echo $?
0
volumio@volumio:/tmp$ test -f « L’IMpératrice/L’Impératrice - Vanille Fraise.mp3 » ; echo $?
1

Sachant que si je ne dis pas d’erreur, ces 2 partitions sont respectivement en exfat et ext4

volumio@volumio:/mnt/USB/F4E2-1499$ sudo lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
loop0 squashfs /static
sda
└─sda1 exfat F4E2-1499 /media/F4E2-1499
mmcblk0
├─mmcblk0p2 ext4 volumio e0d264c8-4fb1-49cf-86c5-7376a4451b04 /imgpart
├─mmcblk0p3 ext4 volumio_data 04a126e3-2f95-4ef7-8fb9-292132ad822b
└─mmcblk0p1 vfat boot BDB5-33A4 /boot

A priori « Exfat is a case insensitive file system »
Il va donc falloir que je reformate ma clé pour régler le problème…

2 J'aime

Pour moi c’est quasi-certain que c’est la source de ton souci.

Pour les clés USB, j’utilise systématiquement ce système de fichiers ouvert : Universal Disk Format. Géré par ce paquet sur Debian : udftools.

Par contre je n’ai jamais vérifié que ce soit un système sensible à la casse par défaut (je crois que c’est bien le cas), pense donc bien à tester ça.

Après avoir reformaté en ext4, le problème n’apparaît plus, merci à tous pour votre aide ! J’avoue ne pas avoir essayé l’UDF (mais au moins, maintenant je sais que ca existe :wink: ) et avoir préféré rester dans les systèmes de fichiers courants…

1 J'aime

En fait le format UDF est encore plus courant que l’ext4, vu que c’est celui utilisé par… les CD-ROM :stuck_out_tongue:

Mais en effet, la plupart du temps on l’utilise sans le savoir.