Selon la page de manuel de bash:
GLOBIGNORE
A colon-separated list of patterns defining the set of filenames
to be ignored by pathname expansion. If a filename matched by a
pathname expansion pattern also matches one of the patterns in
GLOBIGNORE, it is removed from the list of matches.
Mais en pratique ...
$ bash --noprofile --norc
bash-4.2$ touch .bar
bash-4.2$ echo .*
. .. .bar
bash-4.2$ GLOBIGNORE=.
bash-4.2$ echo .*
.bar
Pourquoi est-il ..
supprimé de la liste des correspondances? Pour autant que je sache, le motif
.
ne correspond PAS ..
, n'est-ce pas?
GLOBIGNORE
ignore uniquement.
et..
dans des modèles sans barre oblique et que GLOBIGNORE filtre les chemins de fichier et non les noms de fichier.GLOBIGNORE=.; echo .*
n'inclura pas.
ni..
, maisGLOBIGNORE=.; echo ./.*
(ouecho /bin/.*
) le fera! Pour ignorer.
et..
de tous les globes, il semble que vous ayez besoin deshopt -s extglob
etGLOBIGNORE='?(*/)@(.|..)'
.