Jadi ya, seperti yang dinyatakan berkali-kali di tempat lain, nama file dapat berisi hampir semua karakter. Tapi perlu dikatakan bahwa nama file adalah tidak file. Itu memang membawa bobot sebagai atribut file karena Anda biasanya memerlukan nama file untuk membuka file, tetapi nama file hanya menunjuk ke file yang sebenarnya. Ini adalah tautan, disimpan dalam direktori yang telah merekamnya, di samping nomor inode - yang merupakan perkiraan yang jauh lebih dekat dengan file aktual .
Jadi, Anda tahu, sebut saja apa yang Anda inginkan. Kernel tidak peduli - semua referensi file yang akan ditangani akan menangani nomor inode yang sebenarnya. Nama file adalah sesuatu untuk konsumsi manusia - jika Anda ingin membuatnya gila, yah, itu adalah sistem file Anda. Di sini, saya akan melakukan beberapa hal gila:
Pertama saya akan membuat 20 file, dan beri nama mereka dengan spasi, masing-masing nama file mengandung satu lebih banyak ruang daripada yang terakhir:
until [ $((i=$i+1)) -gt 20 ]
do v=$v' ' && touch ./"$v"
done
Ini agak lucu. Lihat saya ls
:
ls -d ./*
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
Sekarang saya akan mirror direktori ini:
set -- * ; mkdir ../mirror
ls -i1qdU -- "$@" |
sh -c 'while read inum na
do ln -T "$1" ../mirror/$inum
shift ; done' -- "$@"
ls -d ../mirror/*
Berikut ../mirror/
isinya:
../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
Ok, tapi mungkin Anda bertanya - tapi apa gunanya itu Bagaimana Anda bisa tahu yang mana? Bagaimana Anda bisa yakin bahwa Anda menautkan nomor inode yang tepat ke nama file yang tepat?
Baik...
echo "heyhey" >>./' '
tgt=$(ls -id ./' ')
cat ../mirror/${tgt%% .*} \
$(ls -1td ../mirror/* | head -n1)
KELUARAN
heyhey
heyhey
Lihat, nomor inode yang terkandung ../mirror/"${tgt%% .*}"
dan yang direferensikan dengan ./' '
merujuk ke file yang sama. Mereka menggambarkan file yang sama. Mereka menamainya, tetapi tidak lebih. Tidak ada misteri, sungguh, hanya beberapa ketidaknyamanan yang mungkin Anda buat untuk diri Anda sendiri, tetapi pada akhirnya akan sedikit berpengaruh pada operasi sistem file unix Anda pada akhirnya.