On Mon, Jul 16, 2012 at 6:48 PM, Fernando de Oliveira <[email protected]> wrote: > Em 16-07-2012 21:20, Baho Utot escreveu: > >> On Monday, July 16, 2012 08:09:23 PM Bruce Dubbs wrote: >>> 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. >> >> That is weird, I would have expected both files to contain the same data. >> Not >> for the "system" to go behind your back and create two separate files. >> I guess I have too much C programming (from my old programming days) in my >> line of thought. I would have been nice to add data to one "file" and >> readout >> the data with the other (aka) dup file handles under C. >> >> >> >> >> >> >>> >>> Try it. >>> >>> -- Bruce > > $ echo "test file" > test > $ ls -l test > -rw-rw-r-- 1 fernando fernando 10 Jul 16 21:36 test > $ ls -i test > 262710 test > $ ln test1 test > $ ls -l test* > -rw-rw-r-- 2 fernando fernando 10 Jul 16 21:36 test > -rw-rw-r-- 2 fernando fernando 10 Jul 16 21:36 test1 > $ ls -1i test* > 262710 test > 262710 test1 > > $ echo "test file 2" >> test > $ diff -Nau test test1 > $ ls -l test* > -rw-rw-r-- 2 fernando fernando 22 Jul 16 21:43 test > -rw-rw-r-- 2 fernando fernando 22 Jul 16 21:43 test1 > $ ls -1i test* > 262710 test > 262710 test1 > > It seems changing one, the other is changed too.--
yup. There is one actual file, one description of physical space on disk. The entity that users interact with in a directory is an abstraction of that description of physical space on disk. Many of these abstractions can refer to the same physical space on disk. Anyway, I really like the exercise described in this thread. It explains hard links better than all those text books. thanks! -- http://linuxfromscratch.org/mailman/listinfo/lfs-support FAQ: http://www.linuxfromscratch.org/lfs/faq.html Unsubscribe: See the above information page
