Quando um link simbólico é tratado como aquilo ao qual está vinculado e como um link simbólico?
Um link simbólico pode vincular a um arquivo de diferentes tipos. Por exemplo, mylk
seja um link simbólico vinculado a um diretório. Os dois seguintes farão coisas diferentes:
mv mylk ~
mv mylk/ ~
O fato de um simbólico ser tratado como o que ele vincula ou ele próprio depende do que se espera que seja por um comando ou de como é especificado (independentemente do comando que usa o link)? Obrigado.
Responder1
Um programa que atua no conteúdo de um arquivo sempre atua no destino, não no link simbólico, porque os links simbólicos não possuem conteúdo próprio.
Um programa que atua nos metadados de um arquivo (carimbos de data e hora, proprietário, permissões, …) geralmente atua no destino, mas alguns programas têm opções para atuar 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 agir em qualquer tipo de entrada de diretório têm opções que lhes dizem para agir no destino em vez de no link quando encontrarem um link. Por exemplo, muitos utilitários que percorrem 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 seguem os links simbólicos na linha de comando, mas não os links simbólicos para diretórios encontrados durante travessia recursiva se você passar a opção -H
.
Se um nome de arquivo tiver uma barra final, isso forçará o nome do arquivo a ser interpretado como um diretório. Se o nome for um link simbólico, ele será seguido. Então mv mylk ~
move o que quer que mylk
seja (link simbólico ou outro), enquanto mv mylk/ ~
move mylk
se for um diretório, ou o destino se mylk
for um link simbólico para um diretório, e reclama se mylk
não for um diretório nem um link simbólico para um. Este comportamento geral