Salut.

Voici un petit code à exécuter:
#!/bin/bash

/bin/bash --version
echo
echo

fic='./test.txt'

rm $fic

echo 'La Mort En Ligne (2003).avi' >> $fic
echo 'LA Panthere Rose (2006).mkv' >> $fic
echo 'LA Panthere Rose 2 (2009).mkv' >> $fic
echo 'la Petite Boutique Des Horreurs (1960).mkv' >> $fic
echo 'LA Proie D Une Ombre (2021).mkv' >> $fic
echo 'la Lettre Inachevee (1960)' >> $fic
echo 'La Maison Des Damnés (1973)' >> $fic
echo 'Lamb (2021).avi' >> $fic


echo '---------- cat du fichier '$fic
cat $fic
echo "------------------------------"
echo 
echo '---------- sort du fichier '$fic
sort $fic
echo "------------------------------"

J'obtiens en sortie (comme vous ?) les lignes suivantes:
GNU bash, version 5.0.17(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html>

Ceci est un logiciel libre ; vous être libre de le modifier et de le redistribuer.
AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi.


---------- cat du fichier ./test.txt
La Mort En Ligne (2003).avi
LA Panthere Rose (2006).mkv
LA Panthere Rose 2 (2009).mkv
la Petite Boutique Des Horreurs (1960).mkv
LA Proie D Une Ombre (2021).mkv
la Lettre Inachevee (1960)
La Maison Des Damnés (1973)
Lamb (2021).avi
------------------------------

---------- sort du fichier ./test.txt
la Lettre Inachevee (1960)
La Maison Des Damnés (1973)
Lamb (2021).avi
La Mort En Ligne (2003).avi
LA Panthere Rose (2006).mkv
LA Panthere Rose 2 (2009).mkv
la Petite Boutique Des Horreurs (1960).mkv
LA Proie D Une Ombre (2021).mkv
------------------------------


C'est super bizarre !!!! Tout se passe comme si sort ne tenait aucun compte ni des espaces, ni des majuscules et minuscules !
J'utilise cette commande depuis que Linux existe (eh oui je suis plus tout jeune snif), je n'avais jamais remarqué ça.
Pour moi, ce n'est pas du tout le comportement attendu.

Qu'en pensez-vous ? Comment expliquez vous ça ? Comment rétablir un comportement "normal" de ma commande sort, le cas échéant.
Ca serait bien de dire ce que tu attends en fait.

Moi j'ai comme toi.
Je m'attendais notamment à obtenir:
La Maison Des Damnés (1973)
La Mort En Ligne (2003).avi
Lamb (2021).avi
ou
Lamb (2021).avi
La Maison Des Damnés (1973)
La Mort En Ligne (2003).avi
Mais pas Lamb (2021).avi entre les deux ! C'est surtout ça qui m'a troublé.

J'ai résolu le problème entre temps, c'est juste une question de variables d'environnement locales. Et ça n'a finalement aucune implication sur le code de mes scripts contrairement à ce que je craignais, donc faux problème réglé. 🙂
Je ne vois qu'une explication : le caractère espace n'est pas pris en compte.
8 jours plus tard
variables d'environnement
Laquelle ?
je plussoie C@sper : ça serait sympa d'indiquer quelle variable est concernée, et de passer le sujet en "résolu", pour ceux qui tomberait sur ce fil suite à une recherche relative au même problème
Oui désolé les copains. Je ne maîtrise pas vraiment le sujet alors je me suis abstenu de rentrer dans les détails.
Le comportement de sort varie en fonction des variables de localisation.
Notamment quand on exécute le code suivant:
LC_ALL=C sort $fic
Le mieux est encore de tester soi-même pour voir ce que ça change.
#!/bin/bash

/bin/bash --version
echo
echo

fic='./test.txt'

rm $fic

echo 'La Mort En Ligne (2003).avi' >> $fic
echo 'LA Panthere Rose (2006).mkv' >> $fic
echo 'LA Panthere Rose 2 (2009).mkv' >> $fic
echo 'la Petite Boutique Des Horreurs (1960).mkv' >> $fic
echo 'LA Proie D Une Ombre (2021).mkv' >> $fic
echo 'la Lettre Inachevee (1960)' >> $fic
echo 'La Maison Des Damnés (1973)' >> $fic
echo 'Lamb (2021).avi' >> $fic


echo '---------- cat du fichier '$fic
cat $fic
echo "------------------------------"
echo 
echo '---------- sort du fichier '$fic
sort $fic
echo "------------------------------"

echo 
echo '---------- LC_ALL=C sort du fichier '$fic
LC_ALL=C sort $fic
echo "------------------------------"