สร้างไฟล์ต่อไปนี้ในไดเรกทอรี
$ touch .a .b a b A B 你好嗎
ls
คำสั่งซื้อเริ่มต้นของฉันเพิกเฉยต่อการมีจุดนำอยู่รวมกับไฟล์อื่น ๆ
$ 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 你好嗎
ฉันสามารถ เปลี่ยน LC_COLLATE
เพื่อใส่ dotfiles ก่อน
$ 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 你好嗎
แต่น่าเสียดายที่นี้จะทำให้การจัดเรียงคำสั่งกรณีที่สำคัญคือA
และB
Precede และa
b
มีวิธีการพิมพ์ dotfiles แรกในขณะที่อยู่กรณีตาย (กA
และa
Precede B
และb
)?
แก้ไข: พยายามแก้ไข LC_COLLATE
ไม่มีคำตอบใดที่จำลองฟังก์ชันการทำงานls
ได้อย่างง่ายดาย เป็นไปได้ว่าฉันสามารถห่อบางส่วนของพวกเขาในฟังก์ชั่น แต่นี้จะต้องมีรหัสรายละเอียดบางอย่างเกี่ยวกับวิธีการทำงานกับไม่มีข้อโต้แย้งเทียบกับการจัดหาไดเรกทอรีเป็นอาร์กิวเมนต์ หรือวิธีจัดการกับการ-d
ตั้งค่าสถานะที่ชัดเจน
หรือฉันคิดว่าบางทีอาจจะดีกว่าLC_COLLATE
ที่จะใช้ อย่างไรก็ตามฉันไม่สามารถทำงานได้ LC_COLLATE="en_AU.UTF-8"
ฉันกำลังใช้ ฉันตรวจสอบแล้ว/usr/share/i18n/locales/en_AU
(ถึงแม้ว่าฉันไม่แน่ใจว่านี่เป็นไฟล์ที่ถูกต้องหรือไม่เนื่องจากฉันไม่เห็นข้อมูลอ้างอิงUTF-8
) ฉันพบสิ่งต่อไปนี้
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1
copy "iso14651_t1_common"
มี ในที่สุดก็/usr/share/i18n/locales/iso14651_t1_common
มี
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
ฉันลบบรรทัดนี้วิ่งsudo locale-gen
และรีสตาร์ทคอมพิวเตอร์ น่าเสียดายที่มันไม่มีอะไรเปลี่ยนแปลง