Um programa que age sobre o conteúdo de um arquivo sempre age no alvo, não no link simbólico, porque os links simbólicos não têm conteúdo próprio.
Um programa que age nos metadados de um arquivo (registros de data e hora, proprietário, permissões, etc.) geralmente atua no destino, mas alguns programas têm opções para agir no link simbólico (por exemplo, chown -h
, touch -h
,…).
Um programa que atua em uma entrada de diretório geralmente atua no link simbólico. Operações como renomear e excluir atuam em uma entrada de diretório, seja ela qual for. Existem chamadas de sistema separadas para acessar os metadados (incluindo o tipo de arquivo) de um arquivo, dependendo se o programa deseja seguir links simbólicos ( stat
) ou não ( lstat
) . Alguns programas que podem atuar em qualquer tipo de entrada de diretório têm opções para dizer-lhes para atuar no destino em vez do link quando encontram um link. Por exemplo, muitos utilitários que atravessam diretórios recursivamente ( find
, chown -R
, cp -R
,…) agem em links simbólicos por padrão, mas seguem todos os links simbólicos se você passar a opção -L
e seguir os links simbólicos na linha de comando, mas não links simbólicos para diretórios encontrados durante a travessia recursiva se você passar a opção -H
.
Se um nome de arquivo tiver uma barra final, então isso força o nome do arquivo a ser interpretado como um diretório . Se o nome é um link simbólico, ele será seguido. Então, mv mylk ~
move qualquer mylk
(link simbólico ou outro), enquanto mv mylk/ ~
move mylk
se for um diretório ou o destino se mylk
é um link simbólico para um diretório e reclama se mylk
não é um diretório nem um link simbólico para um. Esse comportamento geral