Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/02/2018, à 12:41

Compte supprimé

[résolu]Pq echo [a-m]* m'affiche aussi des .....?

Bonjour,
Pourquoi sur mon terminal quand je fais

echo [a-z]* 

, il me liste aussi des répertoires/fichiers commençant par une majuscule ?
J'obtiens le même résultat avec

echo [A-Z]* 

:

fabien@fabien-Lenovo-G505:~$ echo [a-z]*
Bureau declarationconformitéondulateur2.jpg deja-dup docfactice Documents essai.sh fanny filtreADblock historique Images Modèles monscripkholo.sh monscript10.sh monscript2 monscript2.sh monscript3.sh monscript4.sh monscript5.sh monscript6.sh monscript7.sh monscriptkholobis.sh monscriptkholopbis.sh monscript.sh monscriptwatael.sh monscriptWatel.sh Musique Public redimensionné Téléchargements Vidéos
fabien@fabien-Lenovo-G505:~$ echo [A-Z]*
Bureau declarationconformitéondulateur2.jpg deja-dup docfactice Documents essai.sh fanny filtreADblock historique Images Modèles monscripkholo.sh monscript10.sh monscript2 monscript2.sh monscript3.sh monscript4.sh monscript5.sh monscript6.sh monscript7.sh monscriptkholobis.sh monscriptkholopbis.sh monscript.sh monscriptwatael.sh monscriptWatel.sh Musique Public redimensionné Téléchargements Vidéos
fabien@fabien-Lenovo-G505:~$ 

Merci, fabien

Dernière modification par Compte supprimé (Le 21/02/2018, à 13:43)

#2 Le 21/02/2018, à 13:14

pingouinux

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

Bonjour,
C'est parce que l'ordre est celui-ci :

aAbBcC......yYzZ

Ajouté :
Tu peux y remédier ainsi

shopt -s globasciiranges

ou bien

LC_ALL=C

Dernière modification par pingouinux (Le 21/02/2018, à 13:28)

Hors ligne

#3 Le 21/02/2018, à 13:30

Compte supprimé

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

D'après une formation sur bash que je suis (mooc-fun) la commande devrait faire une distinction entre minuscule et majuscule...

#4 Le 21/02/2018, à 13:41

Compte supprimé

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

Je viens de regarder à quoi correspond la commande Shopt ... J'active le globasciiranges et magique : ça marche!!
Merci smile

#5 Le 21/02/2018, à 16:31

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@pingouinux : non je ne pense pas
[a-z] c'est abcdef .....xyz

ls -a |grep ^[a-z].*$

ne liste pas les fichiers commençant par une majuscule


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#6 Le 21/02/2018, à 17:34

pingouinux

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

ar barzh paour #5 a écrit :
ls -a |grep ^[a-z].*$

ne liste pas les fichiers commençant par une majuscule

Certes, mais ils sont listés par

echo [a-z]*

Hors ligne

#7 Le 21/02/2018, à 18:43

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@pingouinux
echo [a-z]*
si j'avais eu besoin d'utilisé ce type de commande j'aurai cherché longtemps pourquoi quelquechose n'allait pas !
pour moi ça n'aurait du me donner que les fichiers commençant par une minuscule mais non , ça donne bien les fichiers qui commencent par un lettre minuscule ou une lettre majuscule
n'est pas du à la commande echo elle même ?
en fait la réponse n'est-elle pas : echo n'attend pas une expression régulière !!!!
en plus j'ai confondu avec un expression régulière !!!

et  je constate que mon bouquin de programmation shell comporte une erreur concernant la recherche de fichiers avec [...]
il me dit
lister les fichiers ne commençant pas pas une minuscule

ls [!a-z]*

mais en fait
c'est lister les fichiers ne commençant pas par une lettre
par exemple

ls [!a-z]*
210.txt
ls
210.txt  color  ex1  ex1 (copie)  filtre  IFOF.tar.gz  zenit1

il faut que je recherche comment sont décrits les intervalles dans la doc officielle [a-z] , [A-Z]

Dernière modification par ar barzh paour (Le 21/02/2018, à 19:03)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#8 Le 21/02/2018, à 19:01

pingouinux

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

Sur une ligne de commande, c'est le "Pathname Expansion" qui entre en jeu, et non une "regex" (en français dans le texte).

Hors ligne

#9 Le 21/02/2018, à 19:04

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

merci pour la précision , je recherche
bon j'ai trouvé au moins ça
http://wiki.bash-hackers.org/syntax/expansion/globs

Lorsque l'option shell globasciiranges est définie, les globs de plage de parenthèses (par exemple [A-Z]) utilisent l'ordre des paramètres régionaux C plutôt que l'ordre des paramètres régionaux configurés (par exemple ABC ... abc ... au lieu de AaBbCc ...) - depuis 4.3-alpha

[X-Z] Une expression de plage: Correspondant à tous les caractères de X à Y (vos paramètres régionaux actuels, définit la façon dont les caractères sont triés!)

Dernière modification par ar barzh paour (Le 21/02/2018, à 19:29)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#10 Le 21/02/2018, à 19:30

Compte anonymisé

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

ar barzh paour a écrit :

merci pour la précision , je recherche

Si tu veux aller plus vite,

c'est le paragraphe "Développement des noms de fichiers" de bash

et pour le motif grep (qui n'a aucun lien a part la similitude de la syntaxe), c'est le paragraphe "Expression régulière" de grep

#11 Le 21/02/2018, à 19:36

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

alors attention !!!!! encore une fois !!!!!!!

jpb@jpb-desktop:~/tmp$ ls
210.txt  Al.txt  a.txt  Bal.txt  b.txt  ref
jpb@jpb-desktop:~/tmp$ rm [a-z]*

il ne reste plus grand chose !!!!

jpb@jpb-desktop:~/tmp$ ls
210.txt
jpb@jpb-desktop:~/tmp$

pour résoudre : utiliser shopt -s globasciiranges (post#2 pingouinux)

jpb@jpb-desktop:~/tmp$ ls
210.txt  assurance.txt  Assurance.txt  CPAM.txt  maladie.txt
jpb@jpb-desktop:~/tmp$ shopt -s globasciiranges
jpb@jpb-desktop:~/tmp$ echo [a-z]*
assurance.txt maladie.txt
jpb@jpb-desktop:~/tmp$ rm [a-z]*
jpb@jpb-desktop:~/tmp$ ls
210.txt  Assurance.txt  CPAM.txt
jpb@jpb-desktop:~/tmp$ 

sont bien conservés mes fichiers autre que commençant par minuscule

Dernière modification par ar barzh paour (Le 21/02/2018, à 19:44)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#12 Le 22/02/2018, à 02:05

metalux

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

pingouinux a écrit :

Sur une ligne de commande, c'est le "Pathname Expansion" qui entre en jeu, et non une "regex" (en français dans le texte).

Bonjour pingouinux,
Je n'ai pas compris ce que tu voulais dire par cette réponse hmm

Sinon encore le plus simple pour revenir au sujet, c'est de substituer par [:lower:] ou bien [:upper:] en fonction du résultat souhaité:

echo [[:lower:]]* 

Hors ligne

#13 Le 22/02/2018, à 02:51

Watael

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

les globs (Développement de chemins, aka Pathname expansion) ne sont pas des regex.

[a-z]*

en globbing, signifie : commence par une lettre
en regex, ça signifie : une ou aucune lettre.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 22/02/2018, à 09:24

Compte supprimé

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

metalux a écrit :

Sinon encore le plus simple pour revenir au sujet, c'est de substituer par [:lower:] ou bien [:upper:] en fonction du résultat souhaité:

echo [[:lower:]]* 

Bonjour ,
Plus simple , je ne suis pas convaincu ...
D'ailleurs comment écris tu avec un [:lower:] l'équivalent d'un echo [a-i]* ?

#15 Le 22/02/2018, à 12:24

metalux

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@Watael
Merci pour les précisions, je n'avais pas fait attention à cette distinction entre pathname expansion et regex. La syntaxe étant la même, ça porte à confusion.

Watael a écrit :

en regex, ça signifie : une ou aucune lettre.

Ne serait-ce pas plutôt "une ou aucune lettre minuscule"?

grep ^[a-z] <(ls)

me retourne bien que les fichiers/dossiers commençant par une minuscule.

@pseudofab
Je répondais à ta question précise et même si c'est plus facile, c'est certainement moins souple car ça fait appel à tout un ensemble de caractères tels que:
-toutes les minuscules
-tous les chiffres
-etc....
Tu trouveras les classes de caractères POSIX dans cette page.

Hors ligne

#16 Le 22/02/2018, à 17:13

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@ metalux
tu m'imites : comme moi tu confonds regex et globbing (post#13)
dans grep ^[ a-z] tu ulilises une regex
dans ls [a-z]* on utilise "globbing"


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#17 Le 22/02/2018, à 17:49

Compte anonymisé

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@ar barzh paour

tu as lu les 2 paragraphes de manuel que je t'avais indiqué ?

#18 Le 24/02/2018, à 14:56

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@ Anomyme68
non ça me dépasse un peu (beaucoup) !
dans post#16 j'ai peut-être dit des conn...?

Dernière modification par ar barzh paour (Le 24/02/2018, à 14:58)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#19 Le 24/02/2018, à 17:33

Compte anonymisé

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

non tu as pas dis de connerie, dans ce cas c'est juste. Mais si tu veux aller plus loin et comprendre le fonctionnement c'est bien d'avoir la théorie.

Pour le cas du pathname expansion.

Quand tu tapes :

echo *

tu vois ce que ça fait ? L'étoile sera remplacée par la liste des fichiers avant d'être envoyer à "echo"

Et ben c'est le même mécanisme que la commande "ls [a-z]*", sauf que c'est pas la liste complète des fichiers mais seulement ceux qui commencent par une lettre (autre que le Z majuscule).

Pour le regex ça a rien à voir avec Bash, c'est avec le manuel de la commande en question qu'il faut regarder.

Et si tu regardes le manuel de grep, tu vois que la commande que tu as mis en #5 est un peu bizarre, on a pas besoin de spécifier qu'on veut tous les caractères et une fin, c'est implicite. On peut la simplifier par :

ls -a |grep ^[a-z]

ça t'évitera les confusions, et si la commande vient d'un livre, je te conseil de brûler ton livre tongue

#20 Le 25/02/2018, à 07:48

ar barzh paour

Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?

@Anonyme68 et @pingouinux

ça y est j'ai imprimé le post #2 de pingouinux

( qui dit que pour [a-z] )  l'ordre est

aAbBcC......yYz
jpb@jpb-desktop:~/exo$ ls
210.txt  cmd  color  ex1  ex1 (copie)  filtre  IFOF.tar.gz  Za.txt  zenit1

jpb@jpb-desktop:~/exo$ ls [a-z]*
cmd  color  ex1  ex1 (copie)  filtre  IFOF.tar.gz  zenit1

jpb@jpb-desktop:~/exo$ ls [a-Z]*
cmd  color  ex1  ex1 (copie)  filtre  IFOF.tar.gz  Za.txt  zenit1

jpb@jpb-desktop:~/exo$ ls [a-i]*
cmd  color  ex1  ex1 (copie)  filtre

jpb@jpb-desktop:~/exo$ ls [a-I]*
cmd  color  ex1  ex1 (copie)  filtre  IFOF.tar.gz

jpb@jpb-desktop:~/exo$ 

ls        => liste tous les fichiers
ls [a-i]* => liste tous les fichiers commençant par une lettre aAbBcC...hHi
ls [a-I]* => liste tous les fichiers commençant par une lettre aAbBcC...hHiI
ls [a-z]* => liste tous les fichiers commençant par une lettre aAbBcC...yYz
ls [a-Z]* => liste tous les fichiers commençant par une lettre aAbBcC...yYzZ

.... mais si on a passé la commande

shopt -s globasciiranges

ls [a-i]* => liste tous les fichiers commençant par une lettre abc...hi
ls [a-z]* => liste tous les fichiers commençant par une lettre abcdef.....xyz
il faut rester dans les intervalles [minuscule-minuscule] ou [majuscule-majuscule]]

jpb@jpb-desktop:~/exo$ ls [a-I]*
ls: impossible d'accéder à '[a-I]*': Aucun fichier ou dossier de ce type

jpb@jpb-desktop:~/exo$ ls [A-I]*
IFOF.tar.gz

comme dirait mon amie canadiennne c'est un peu piégeux !!!!

Dernière modification par ar barzh paour (Le 25/02/2018, à 07:56)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne