そのため、他の場所で何度も述べられているように、ファイル名にはほぼすべての文字を含めることができます。しかし、ファイル名はファイルではないと言う必要があります。通常、ファイルを開くにはファイル名が必要ですが、ファイル名は実際のファイルを指しているだけなので、ファイル属性としてある程度の重みがあります。これは、iノード番号とともに、それを記録したディレクトリに保存されたリンクです。これは、実際のファイルにより近い近似です。
だから、あなたが知っている、あなたが望むものは何でもそれを呼び出します。カーネルは気にしません-カーネルが処理するすべてのファイル参照は、とにかく実際のiノード番号を処理します。ファイル名は人間が消費 -クレイジーなものにしたいなら、それはあなたのファイルシステムです。ここで、私はいくつかのクレイジーなことをします:
最初に20個のファイルを作成し、スペースのみで名前を付けます。各ファイル名には、最後のファイルより1つ多くスペースが含まれています。
until [ $((i=$i+1)) -gt 20 ]
do v=$v' ' && touch ./"$v"
done
これはちょっとおかしいです。私を見てls
:
ls -d ./*
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
次に、このディレクトリをミラーリングします。
set -- * ; mkdir ../mirror
ls -i1qdU -- "$@" |
sh -c 'while read inum na
do ln -T "$1" ../mirror/$inum
shift ; done' -- "$@"
ls -d ../mirror/*
ここにあります ../mirror/
の内容:
../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
わかりましたが、たぶんあなたは尋ねています-しかし、それは何が良いですか?どっちがどっちかわかりますか?正しいiノード番号を正しいファイル名にリンクしていることをどのようにして確認できますか?
まあ...
echo "heyhey" >>./' '
tgt=$(ls -id ./' ')
cat ../mirror/${tgt%% .*} \
$(ls -1td ../mirror/* | head -n1)
出力
heyhey
heyhey
に含まれるiノード番号../mirror/"${tgt%% .*}"
と、参照されているiノード番号の両方./' '
が同じファイルを参照しています。同じファイルを記述します。彼らはそれに名前を付けていますが、それ以上のものはありません。不思議なことはありませんが、実際には、自分にとって不便なこともありますが、最終的にはUNIXファイルシステムの動作にほとんど影響を与えません。