$ 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
请注意,两个命令之间的排序不同(ls |sort
导致排序不正确)。这一定是由于颜色标志,但为什么呢?
在排序后的彩色输出
ls|sort
中,我们可以看到最后一行xyz-0.0.1-1554323568.rpm
是非彩色输出的第一行。其他行同样排序。如果我们看一下彩色转义码(未排序),我们可以看到第一行以不同的转义码开头
^[[0m
。这导致排序时顺序错误(^[[01
之前^[[0m
)。做:
并比较内容,您会发现不同之处。
别名
ls
可能/bin/ls --color=auto
是更好的主意,它会ls
在不直接写入终端时停止使用颜色代码(比如当管道传输到下一个程序或写入文件时)。