따라서 다른 곳에서 여러 번 언급했듯이 파일 이름에는 거의 모든 문자가 포함될 수 있습니다. 그러나 파일 이름 은 파일 이 아니라고 말해야 합니다. 일반적으로 파일을 열려면 파일 이름이 필요 하지만 파일 이름 은 실제 파일 만 가리킴 에 따라 파일 특성 으로 약간의 가중치가 적용됩니다 . 링크는 inode 번호 와 함께이를 기록한 디렉토리에 저장되는 링크 입니다. 이는 실제 파일에 훨씬 가까운 근사값 입니다.
알다시피, 원하는대로 부르십시오. 커널은 신경 쓰지 않습니다-처리 할 모든 파일 참조는 어쨌든 실제 inode 번호를 처리합니다. 파일 이름은 사람이 소비 하는 것입니다 - 파일을 미치게 만들고 싶다면 파일 시스템입니다. 여기, 나는 미친 물건을 할 것입니다 :
먼저 20 개의 파일을 만들고 공백없이 이름을 지정합니다. 각 파일 이름에는 마지막 파일보다 하나 이상의 공간이 포함됩니다.
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
좋아,하지만 아마도 당신은 묻는다-그러나 그것은 무엇이 좋은가? 어떤 것이 무엇인지 어떻게 알 수 있습니까? 올바른 inode 번호를 올바른 파일 이름에 어떻게 연결했는지 어떻게 확인할 수 있습니까?
잘...
echo "heyhey" >>./' '
tgt=$(ls -id ./' ')
cat ../mirror/${tgt%% .*} \
$(ls -1td ../mirror/* | head -n1)
산출
heyhey
heyhey
포함 된 inode 번호 ../mirror/"${tgt%% .*}"
와 참조 된 inode 번호 ./' '
는 동일한 파일 을 참조하십시오. 그들은 같은 파일을 설명합니다. 그들은 이름을 지었지만 더 이상은 없습니다. 수수께끼는 없지만 실제로는 약간의 불편 함이 있지만 결국 유닉스 파일 시스템의 작동에는 거의 영향을 미치지 않습니다.