/bin/ls sorts differently than just ls
In the sorted colored output ls|sort
, we can see that the last line xyz-0.0.1-1554323568.rpm
is the first line
of the non-colored output. The other lines are sorted equally.
If we have at a look at the colored escape codes (non-sorted), we can see that the first
line starts with a different escape code ^[[0m
. This is causing the wrong order when sorted (^[[01
before ^[[0m
).
$ /bin/ls --color xyz* | cat -A
^[[0m^[[01;31mxyz-0.0.1-1554323568.rpm^[[0m$
^[[01;31mxyz-0.0.1-1554490900.rpm^[[0m$
^[[01;31mxyz-0.0.1-1554745305.rpm^[[0m$
^[[01;31mxyz-0.0.1-1554751021.rpm^[[0m$
^[[01;31mxyz-0.0.1-1555513460.rpm^[[0m$
^[[01;31mxyz-0.0.1-1555951745.rpm^[[0m$
Do:
/bin/ls --color > file1
/bin/ls > file2
and compare content, you'll see the difference.
Aliasing ls
to /bin/ls --color=auto
is likely better idea, it will stop ls
from using color codes when not writing directly to terminal (like when piping to next program or writing to a file).