No Linux, pode-se usar o comando diff
para verificar diferenças de arquivos. Eu o uso para verificar as diferenças entre dois módulos, ambos copiados para /tmp
.
No entanto, os dois módulos possuem links simbólicos, que podem não estar apontando para o arquivo correto, pois os módulos foram copiados para o /tmp
diretório Mas isso não importa. O que eu quero verificar é se os links simbólicos são os mesmos.
Por exemplo, em um módulo, o link simbólico lê
/home/test/file1
e no outro o link simbólico diz:
/etc/rc.d/whatever
diff
agora gera um erro porque - em geral - ele não consegue encontrar o arquivo. Mas quero diff
dizer: "Ei, esses links simbólicos não são os mesmos", independentemente de os links apontarem para arquivos válidos ou não.
Pergunta: Como é possível diff
fazer isso, ou seja, não tentando seguir os links, mas diferenciá- los ?
Desde a versão 3.3, o GNU diff não suporta a remoção de links simbólicos, mas compara os caminhos para os quais eles apontam.
Instale GNU diffutils> = 3.3 e use a opção '--no-dereference'; não existe uma opção curta para isso.
O diagnóstico ficará silencioso se os caminhos forem iguais ou:
se os caminhos diferirem.
fonte
Com as ferramentas GNU:
Estritamente falando, isso não pode diferenciar entre um link simbólico chamado
a
que aponta parab -> c
e um chamadoa -> b
que aponta parac
, para não mencionar os problemas com nomes de arquivos contendo caracteres de nova linha, mas isso gera uma saída mais legível do que a mais robusta:Lá, usamos
//
como separador (que não pode ocorrer de outra maneira na saída defind
for%p
) e convertemos os caracteres de nova linha em caracteres NUL (que não podem ocorrer na expansão de%p
nem%l
).fonte
Se bem entendi, você deseja verificar se os links simbólicos apontam para o mesmo destino teórico ou se um não é um link simbólico, o outro arquivo é vinculado ao mesmo arquivo. Isso deve fazer o que você deseja:
fonte
-m
, não-f
. Obrigado!-m
./home/test/file1
é um link simbólico para/etc/rc.d/whatever
, ou ambos são um link simbólico/
, informa que são os mesmos. Eu acho que o OP quer ver a diferença no "caminho" armazenado no link simbólico, não se eles resolverem o mesmo arquivo (para o qual você possui[[ a -ef b ]]
).