Tạo các tập tin sau trong một thư mục.
$ touch .a .b a b A B 你好嗎
lsThứ tự mặc định của tôi bỏ qua sự hiện diện của các dấu chấm hàng đầu, xen kẽ chúng với các tệp khác.
$ ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
Tôi có thể thay đổi LC_COLLATE để đặt dotfiles trước.
$ LC_COLLATE=C ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
Thật không may, điều này làm cho thứ tự sắp xếp phân biệt chữ hoa chữ thường, tức là Avà Btrước avà b. Có cách nào để in dotfiles trước trong khi không phân biệt chữ hoa chữ thường ( Avà atrước Bvà b) không?
Chỉnh sửa: cố gắng sửa đổi LC_COLLATE
Không có câu trả lời nào cho đến nay sao chép đầy đủ chức năng của lsmột cách dễ dàng. Có thể hiểu được, tôi có thể bọc một số trong số chúng trong một hàm, nhưng điều này sẽ phải bao gồm một số mã chi tiết về (ví dụ) cách làm việc không có đối số so với việc cung cấp một thư mục làm đối số. Hoặc làm thế nào để đối phó với một -dcờ rõ ràng .
Ngoài ra, tôi nghĩ rằng có lẽ có thể LC_COLLATEsử dụng tốt hơn . Tuy nhiên, tôi dường như không thể làm cho công việc đó. Tôi hiện đang sử dụng LC_COLLATE="en_AU.UTF-8". Tôi đã kiểm tra /usr/share/i18n/locales/en_AU(mặc dù tôi không chắc đây có phải là tệp đúng không, vì tôi không thể thấy bất kỳ tài liệu tham khảo nào UTF-8); Tôi tìm thấy như sau.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1chứa copy "iso14651_t1_common". Cuối cùng, /usr/share/i18n/locales/iso14651_t1_commonchứa
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Tôi đã xóa dòng này, chạy sudo locale-genvà khởi động lại máy tính của tôi. Thật không may, điều này không thay đổi gì.