The order depends on the setting of the environment variables determined by locale
.
$ LC_COLLATE=C ls
Aardvark Baboon Cat apples bananas coconuts
$ LC_COLLATE="en_US.UTF-8" ls
Aardvark apples Baboon bananas Cat coconuts
Taking that a little further
$ LC_COLLATE=C ls
'!' "'" 0 6 '<' B H N T Z a g m s y £
'"' '(' 1 7 '=' C I O U '[' b h n t z
'#' ')' 2 8 '>' D J P V '\' c i o u '{'
'$' '*' 3 9 '?' E K Q W ] d j p v '|'
% + 4 : @ F L R X '^' e k q w '}'
'&' , 5 ';' A G M S Y _ f l r x '~'
$ LC_COLLATE="en_US.UTF-8" ls
'!' '(' ';' '[' '|' 1 7 B E H K N Q T W Z
'"' ')' '<' '\' '}' 2 8 c f i l o r u x
'#' '*' '=' ] '~' 3 9 C F I L O R U X
% + '>' '^' '$' 4 a d g j m p s v y
'&' , '?' _ £ 5 A D G J M P S V Y
"'" : @ '{' 0 6 b e h k n q t w z
Footnote: These are single character filenames. The quote marks are added by ls
for filenames containing characters that are also shell meta characters with special meanings.