why does file 'two' also get them?
causa ln(1)
criar links físicos por padrão, e 'dois' é um link de 'um', de acordo com a página man:
A hard link to a file is indistinguishable from the original directory entry; any changes to a file are effectively independent of the name used to reference the file.
If I do ls -l, I see that files one and two have 28 bytes, whereas file three has only 3 bytes (maybe for six). What is the reason for this?
porque o conteúdo do arquivo tem 28 bytes, assim:
$ wc -c <<<'one two three four five six'
28
exceto nova linha char substituída por espaço.
para o arquivo 'three', é um link de símbolo. um link de símbolo contém o nome do arquivo ao qual ele está vinculado. so 'three' teria tamanho do nome do arquivo 'one', e são 3 bytes.
Now if I remove file 'one', I see that three is still shown to be linked to one, but I cannot cat three and get error that file does not exist. But then why it is shown in the ls command?
Se você remover o arquivo 'one', 'three' se tornará um link de símbolo quebrado. Os links de símbolo são um tipo de arquivo específico, a menos que você o remova explicitamente, ele não desaparecerá quando o arquivo ao qual ele é vinculado for removido.