Yani evet, başka yerlerde birçok kez belirtildiği gibi bir dosya adı hemen hemen her karakter içerebilir. Ama bu söylenmesi gerekiyor dosya adı olduğu değil dosya. Bu bir dosya gibi bazı ağırlığını taşıyacak yapar özniteliği genellikle bir dosya adı verilmesi gerektiğinden açmak bir dosya, ancak dosyanın ismi sadece işaret fiili dosyaya. Gerçek bir dosyaya daha yakın bir değer olan inode numarasının yanında onu kaydettiren dizinde depolanan bir bağlantıdır .
Yani, ne istersen onu ara. Çekirdek umrumda değil - işleyeceği tüm dosya referansları yine de gerçek inode numaralarıyla ilgilenecek. Dosya adı insan tüketimi için bir şeydir - çılgınca bir şey yapmak istiyorsanız, dosya sisteminizdir. Burada çılgınca şeyler yapacağım:
İlk önce 20 dosya yaratacağım ve onları boşluktan başka bir şey olmadan adlandıracağım.
until [ $((i=$i+1)) -gt 20 ]
do v=$v' ' && touch ./"$v"
done
Bu çok eğlenceli. Şuna bak ls
:
ls -d ./*
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
Şimdi bu dizini yansıtacağım:
set -- * ; mkdir ../mirror
ls -i1qdU -- "$@" |
sh -c 'while read inum na
do ln -T "$1" ../mirror/$inum
shift ; done' -- "$@"
ls -d ../mirror/*
İşte ../mirror/
içeriği:
../mirror/423759 ../mirror/423764 ../mirror/423769 ../mirror/423774
../mirror/423760 ../mirror/423765 ../mirror/423770 ../mirror/423775
../mirror/423761 ../mirror/423766 ../mirror/423771 ../mirror/423776
../mirror/423762 ../mirror/423767 ../mirror/423772 ../mirror/423777
../mirror/423763 ../mirror/423768 ../mirror/423773 ../mirror/423778
Tamam, ama belki soruyorsun - peki bu ne? Hangisinin hangisi olduğunu nasıl söyleyebilirsiniz? Doğru inode numarasını doğru dosya adına bağladığınızdan nasıl emin olabilirsiniz?
İyi...
echo "heyhey" >>./' '
tgt=$(ls -id ./' ')
cat ../mirror/${tgt%% .*} \
$(ls -1td ../mirror/* | head -n1)
ÇIKTI
heyhey
heyhey
Bakınız, hem içinde bulunan ../mirror/"${tgt%% .*}"
hem de referansta belirtilen inode numarası ./' '
aynı dosyaya atıfta bulunur. Aynı dosyayı tanımlarlar. İsmini veriyorlar ama başka bir şey yok. Gizem yok, gerçekten, sadece kendiniz için yapabileceğiniz bazı rahatsızlıklar, ancak sonuçta unix dosya sisteminizin çalışması üzerinde hiçbir etkisi olmayacak.