Unix sistemindeki her dizin (ve muhtemelen diğer tüm sistemler de) en az iki dizin girişi içerir. Bunlar .(geçerli dizin) ve ..(üst dizin). Kök dizin durumunda, bunlar aynı yeri gösterir, ancak diğer herhangi bir dizinde farklıdır. Sen kullanarak kendiniz görebilirsiniz stat, pwdve cd(Linux üzerinde) komutları:
$ 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
/
$
Dikkat edin binve sbinher birinin iki bağlantısı vardır. Biri kök dizindeki dizin girişi, diğeri ise .o dizinin içindeki giriş.
lsBir boru ile kullanmak wc -l, ls çıkışındaki satır sayısını saymak için basit bir numaradır. Varsayım, her dosya veya dizinin çıktıda tam olarak bir satır kaplayacağıdır. GNU ls, çıkış terminal dışı olduğunda bunu otomatik olarak yapar; diğerleri -1ise davranışı açıkça açma seçeneğine ihtiyaç duyabilir . girişindeki wc -lsatır ( -l) sayısını sayar ve çıktı verir .
Bu yaklaşımla ilgili sorun, Linux'ta ve Linux'ta geleneksel olarak kullanılan dosya sistemlerinde dosya ve dizin adlarının (bu bağlamda gerçekten bir ve aynı oldukları) yeni satır karakterleri içermesine izin verilmesidir . Bunların varlığında, her iki yöntem de parçalanır - bu girdiler, gerçekte bir olduklarında iki veya daha fazla giriş olarak sayılacaktır.
GNU l'leri kullandığınız sürece, yeni satır karakterleri içeren adlara sahip dizin girişleriniz olmadığı ve ls(örneğin ls -a) için tek takma adların olmadığı sürece , her ikisi de geçerli (veya belirtilen) dizindeki dosya ve dizin sayısını verir. Çoğu insan için bu yeterince iyidir, ancak genel durumda geçerli değildir .
Dizin giriş adlarında olağandışı karakterleri (özellikle yeni satırlar) düzgün bir şekilde işlemeniz gerekiyorsa, -bonlardan kaçmak için ls seçeneğini kullanmanızı öneririm . ls -1bAher dizin girişi adını kendi satırına yazdıracak, olağandışı karakterlerden kaçacak (böylece her dizin girişi bir tane olarak görülecektir), herhangi bir dotfiles ve -directories dahil. Tack wc -ltam bir komut satırı için ls -1bA | wc -l(ama görmezden geçerli dizinde dosya ve dizinleri sayısını bildirir ki .ve ..; aramdaki fark -ave -A), ancak herhangi bir alt dizinleri içine inerler. Herhangi bir nokta dosyasının toplamda sayılmasını istemiyorsanız, -Aparametreyi atlayın ls.