Baho Utot wrote:

> One could do this
>
> echo "test file" > test
> ln test link1
> ln test link2
> ln link1 link3
>
> ls -i
>
> 1333952 test 1333952 link1 1333952 link2 1333952 link3
>
> rm test
> ls -i
> 1333952 link1 1333952 link2 1333952 link3
>
> Doesn't link[1..3] point to "no where"  or garbage?

No, they point to the data.  The rm command only deletes the data when 
the link count goes to zero.  That is, rm removes the entry from 
directory, and decrements the link count.

$ echo "test file" > test
$ ls -l test
-rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test
$ ls -i test
1016053 test

Note in the fist form the refernece count is 1.
$ ln test1 test
$ ls -l test*
-rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test
-rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1
$ ls -1i test*
1016053 test
1016053 test1

The link count is 2.

$ rm test
$ cat test1
test file

The data is still there.

$ ls -l test*
-rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1

but now the link count is 1.  This is also the reason you cannot rmdir a 
directory that is not empty.  Note too that if you have two files with 
the same inode, the system will copy the data if you edit either one. 
You then have two different files, each with a count of 1.

Try it.

   -- Bruce



-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page

Reply via email to