$ ls |sort
xyz-0.0.1-1554490900.rpm
xyz-0.0.1-1554745305.rpm
xyz-0.0.1-1554751021.rpm
xyz-0.0.1-1555513460.rpm
xyz-0.0.1-1555951745.rpm
xyz-0.0.1-1554323568.rpm
$ /bin/ls |sort
xyz-0.0.1-1554323568.rpm
xyz-0.0.1-1554490900.rpm
xyz-0.0.1-1554745305.rpm
xyz-0.0.1-1554751021.rpm
xyz-0.0.1-1555513460.rpm
xyz-0.0.1-1555951745.rpm
$ which ls
alias ls='/bin/ls --color'
/bin/ls
Observe que a classificação é diferente entre os dois comandos ( ls |sort
resulta em classificação incorreta). Isso deve ser devido à bandeira colorida, mas por quê?
Na saída colorida classificada
ls|sort
, podemos ver que a última linhaxyz-0.0.1-1554323568.rpm
é a primeira linha da saída não colorida. As outras linhas são classificadas igualmente.Se dermos uma olhada nos códigos de escape coloridos (não classificados), podemos ver que a primeira linha começa com um código de escape diferente
^[[0m
. Isso está causando a ordem errada quando classificada (^[[01
antes^[[0m
).Fazer:
e compare o conteúdo, você verá a diferença.
O aliasing
ls
to/bin/ls --color=auto
provavelmente é uma ideia melhor, ele deixaráls
de usar códigos de cores quando não estiver gravando diretamente no terminal (como ao canalizar para o próximo programa ou gravar em um arquivo).