ทุกไดเร็กทอรีบนระบบ Unix (และอาจเป็นระบบอื่นด้วย) มีรายการไดเร็กทอรีอย่างน้อยสองรายการ เหล่านี้คือ.(ไดเรกทอรีปัจจุบัน) และ..(ไดเรกทอรีหลัก) ในกรณีของไดเร็กทอรีรูทจุดเหล่านี้ไปยังตำแหน่งเดียวกัน แต่ด้วยไดเร็กทอรีอื่นใด ๆ นั้นจะแตกต่างกัน คุณสามารถเห็นสิ่งนี้ได้ด้วยตัวเองโดยใช้stat, pwdและcdคำสั่ง (บน Linux):
$ cd /
$ stat . .. bin sbin | grep Inode
Device: 802h/2050d Inode: 2 Links: 27
Device: 802h/2050d Inode: 2 Links: 27
Device: 802h/2050d Inode: 548865 Links: 2
Device: 802h/2050d Inode: 2670593 Links: 2
$ pwd
/
$ cd ..
$ pwd
/
$
โปรดสังเกตว่าbinและsbinแต่ละอันมีสองลิงก์ หนึ่งคือรายการไดเรกทอรีในไดเรกทอรีรากและอื่น ๆ เป็น.รายการภายในไดเรกทอรีนั้น
การใช้lsกับ pipe wc -lเป็นเคล็ดลับง่ายๆในการนับจำนวนบรรทัดในเอาต์พุต ls สมมติฐานคือแต่ละไฟล์หรือไดเร็กทอรีจะใช้หนึ่งบรรทัดในเอาต์พุต GNU ls จะทำเช่นนี้โดยอัตโนมัติเมื่อผลลัพธ์ไม่ใช่เทอร์มินัล คนอื่นอาจต้องการ-1ตัวเลือกในการเปิดใช้งานพฤติกรรมอย่างชัดเจน wc -lเพียงนับและเอาท์พุทจำนวนบรรทัด ( -l) ในอินพุตของมัน
ปัญหาด้วยวิธีที่เป็นที่อยู่ในลินุกซ์และระบบไฟล์แบบดั้งเดิมที่ใช้ชื่อลินุกซ์ไฟล์และไดเรกทอรี (พวกเขาเป็นจริงหนึ่งเดียวกันในเรื่องนี้) จะได้รับอนุญาตให้มีตัวอักษรขึ้นบรรทัดใหม่ ในการปรากฏตัวของวิธีใดวิธีหนึ่งแยกจากกัน - รายการเหล่านั้นจะถูกนับเป็นสองรายการหรือมากกว่าเมื่อในความเป็นจริงพวกเขาเป็นหนึ่ง
ตราบใดที่คุณใช้ GNU ls ไม่มีรายการไดเรกทอรีที่มีชื่อที่มีอักขระขึ้นบรรทัดใหม่และไม่มีนามแฝงแปลก ๆ สำหรับls(ตัวอย่างเช่นls -a) ทั้งคู่จะแสดงจำนวนไฟล์และไดเรกทอรีในไดเรกทอรีปัจจุบัน (หรือที่ระบุ) สำหรับคนส่วนใหญ่แล้วสิ่งนี้ดีพอ แต่มันไม่ถูกต้องในกรณีทั่วไป
หากคุณต้องการจัดการอักขระที่ผิดปกติ (ขึ้นบรรทัดใหม่) ในชื่อรายการไดเรกทอรีอย่างถูกต้องฉันขอแนะนำให้ใช้-bตัวเลือกของ ls เพื่อหลีกเลี่ยงพวกเขา ls -1bAจะพิมพ์ชื่อรายการไดเรกทอรีแต่ละรายการในบรรทัดของตัวเองยกเว้นอักขระที่ผิดปกติ (ดังนั้นแต่ละรายการไดเรกทอรีจะถูกมองเป็นหนึ่ง) รวมถึง dotfiles และ -directories แทคบนwc -lสำหรับบรรทัดคำสั่งที่สมบูรณ์ของls -1bA | wc -lซึ่งจะรายงานจำนวนไฟล์และไดเรกทอรีในไดเรกทอรีปัจจุบัน ( แต่ไม่สนใจ.และ..นั่นคือความแตกต่างระหว่าง-aและ-A) แต่ไม่ลงไปในไดเรกทอรีย่อยใด ๆ หากคุณไม่ต้องการ dotfiles ใด ๆ ที่จะนับรวมเพียงละเว้นพารามิเตอร์-Als