directory/*
est développé par le Shell en premier (normalement bash). Exécution de echo directory/*
fera écho de tous les fichiers correspondants, et bash triera d'abord ces éléments correspondants lexicographiquement, avant de les passer comme arguments à echo
qui les imprime ensuite.
Dans le cas de l'exécution ls directory/*
le directory/*
est d'abord développé par le Shell, et ensuite présenté comme une liste d'arguments à ls
. L'ordre qui ls
utilise ensuite pour sortir les fichiers dépend des arguments optionnels qui lui sont fournis, qui permettent de sortir la liste des fichiers sur la base de critères alternatifs, tels que la taille, l'heure de modification, etc. ls
lui-même, après qu'on lui ait passé la liste d'arguments étendue triée lexicographiquement de la bash Shell.