差不多快实现完了ls -l,但是在测试阶段发现一个问题,对于包含[a-ZA-Z]之外的字符,系统的排序方式并不一样。
很想了会儿,总算发现原来它的排序方式是无视[a-ZA-Z]之外的字符的
至于怎么发现的,只是个偶然。之前测试的文件夹下a.out被排在了address.c之后,百思不得其解。后来偶然换了个文件夹测试,由于之前废弃的项目或测试目录被我加了__前缀,这样一看就一目了然了,ls_l.cpp排在了__ls_long前面,可能是因为忽视了_字符,然后做测试验证了自己的结论。
ls -l的默认排序方式手册上只写了是alphabetically(字典序),但是没有说无视字母之外的字符。
当然,我也测试了数字和字母的比较
准确的说,默认排序方式是忽视字母大小写,数字排在字母前面,无视数字和英文字母之外的字符。