Linux localiza e remove todos os links simbólicos relacionados a um diretório

4

Então, eu tenho um pouco de uma situação onde eu criei muitos symlinks em uma tentativa de fazê-los funcionar, tentando todos os tipos de combinações. Agora eu tenho este erro:

ls: cannot access /etc/sv/me: Too many levels of symbolic links

Não há links simbólicos em / service / ou / etc / sv /
A única maneira que eu posso encontrar para resolver esse erro é remover todos os links simbólicos relacionados a / service / ou / etc / sv / mas eu nem vejo os links simbólicos?

    
por Mr. King 05.04.2012 / 02:02

3 respostas

5

Você pode identificar links simbólicos cíclicos com um pouco de find de truques, tente isto:

find /path/to/search -type l -a ! \( -xtype b -o -xtype c -o -xtype d -o -xtype p -o -xtype f -o -xtype s -o -xtype l \) 2>/dev/null

Isso funciona filtrando os links simbólicos e excluindo qualquer coisa em que o tipo de destino do symlink é qualquer um dos tipos de inode possíveis. As únicas coisas que restam são aquelas em que find não pode determinar o tipo do alvo, o que acontece apenas para links simbólicos cíclicos (os quebrados correspondem a -xtype l )

    
por 05.04.2012 / 02:15
2

Os links simbólicos não exibem "ação à distância", pois o alvo de um link simbólico nunca afeta diretamente o alvo.

O erro que você está vendo indica que /etc , ou /etc/sv ou /etc/sv/me é um link simbólico. Descobrir qual é e corrigi-lo.

    
por 05.04.2012 / 02:10
1

Tente usar letras minúsculas -l (traço ell) em vez de letras maiúsculas -L ao fazer ls .

    
por 05.04.2012 / 02:15

Tags