差不多快實現完了ls -l,但是在測試階段發現一個問題,對於包含[a-ZA-Z]之外的字符,系統的排序方式並不一樣。
很想了會兒,總算發現原來它的排序方式是無視[a-ZA-Z]之外的字符的
至於怎么發現的,只是個偶然。之前測試的文件夾下a.out被排在了address.c之后,百思不得其解。后來偶然換了個文件夾測試,由於之前廢棄的項目或測試目錄被我加了__前綴,這樣一看就一目了然了,ls_l.cpp排在了__ls_long前面,可能是因為忽視了_字符,然后做測試驗證了自己的結論。
ls -l的默認排序方式手冊上只寫了是alphabetically(字典序),但是沒有說無視字母之外的字符。
當然,我也測試了數字和字母的比較
准確的說,默認排序方式是忽視字母大小寫,數字排在字母前面,無視數字和英文字母之外的字符。