[X-Unix] Utility "ln" makes a copy instead of hard link?
    Brian L. Matthews 
    blmatthews at gmail.com
       
    Fri Apr  7 10:38:41 PDT 2006
    
    
  
>1.  Create a text file named "1.txt" containing the text "Dog".
>2.  Create a "hard link" by the command:
>         ln 1.txt
>     Expected result: Should create a "hard link" file
>     Actual result: Error message:
>         ln: ./1.txt: File exists
That's what I'd expect to happen. "ln 1.txt" is the same as "ln 1.txt 
./1.txt", but ./1.txt already exists (it's 1.txt). Try instead:
$ echo Dog >1.txt
$ mkdir 2
$ cd 2
$ ln ../1.txt
That should work and create a file in the 2 directory called 1.txt 
hardlinked to ../1.txt.
>3.  Retry to make a "hard link" by the command:
>         ln 1.txt 2.txt
>     Result: Now there are two files, 1.txt and 2.txt.
>4.  Open 1.txt and change contents to "Cat".
>5.  Save.
>6.  Open "2.txt" and read it.
>7.  Expected result: "Cat".
>8.  Actual result: "Dog"
How are you editing 1.txt? Some editors follow this procedure when 
writing a file:
write the file to a temp file
delete the original file
rename the temp file to have the same name as the original file
That breaks hard links. Instead of editing 1.txt, try:
$ echo Cat >1.txt
Then look at the 2.txt, and it should also contain Cat.
Also, if you do an ls -l, 1.txt and 2.txt should have a 2 after the 
permissions. That's the number of links to the file. Remove one of 
the two and it will drop to 1, add another hard link, it will 
increase, etc.
Brian
    
    
More information about the X-Unix
mailing list