Localizando o arquivo original de um link simbólico


20

Então, digamos que eu tenho um link simbólico de um arquivo no meu diretório pessoal para outro arquivo em uma partição diferente. Como eu encontraria o local de destino do arquivo vinculado? Por isso, quero dizer, vamos dizer que tenho file2em /home/user/; mas é um link simbólico para outro file1. Como eu encontraria file1sem ter que passar manualmente por cada partição / diretório para encontrar o arquivo?


11
Por favor, expanda "arquivo original". E se file1for um link simbólico file0? Deseja encontrar o último destino do seu link simbólico ( file0) ou apenas o próximo ( file1)?
111314 don_crissti

Respostas:


26

Tente o seguinte:

readlink -f /path/file

(último destino do seu link simbólico, se houver mais de um nível)

Se você deseja apenas o próximo nível de link simbólico, use:

readlink /path/file

Im obtendo nenhuma saída
k-Rocker

Você deveria ter um! Erro ou caminho
Gilles Quenot 12/11

sem nada: user@shell a5$ readlink -f ./student1.javae eu recebouser@shell a5$
k-Rocker

NVM, meu link simbólico não estava configurado corretamente, não sei por quê. mas eu fiz um novo e funciona, obrigado.
k-balancim

2
O FWIW readlink /path/fileretornará o próximo alvo.
31514 Don -crissti

2

1

ls -l bin

produzir

lrwxrwxrwx 1 az az 14 Ноя 12 22:13 bin -> ../Gdrive/bin/

2)

file bin

produzir

bin: symbolic link to `../Gdrive/bin/' 

3)

stat bin

produzir

File: «bin» -> «../Gdrive/bin/»

ok, bem, estou tentando criar um script, então como eu os utilizaria? sou novo no linux.
k-balancim

11
@ k-Rocker Se você explicar o que pretende fazer, seria melhor.
Costas

1

Maneira mais simples: cdpara onde o link simbólico está localizado e faça ls -lpara listar os detalhes dos arquivos.

A parte à direita ->após o link simbólico é o destino para o qual está apontando.

Ex:

lrwxrwxrwx 1 userName groupName 22 de janeiro 17 13:29 Link para temp.txt -> /home/user/temp.txt

Aqui temos "Link para temp.txt" que aponta para ( ->) "/home/user/temp.txt".

Mas, como @Gilles Quenot aponta , você também pode fazerreadlink -f /path/to/symbolic_link


0

Expandindo Costas

Suponha que você tenha

ln -s test.txt sym_link_1.txt
ls -l sym_link_1.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt

Em um script, você pode fazer (usar backticks)

ln -s `readlink sym_link_1.txt` sym_link_2.txt

Então você tem

ls -l sym_link_*.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 17:01 sym_link_2.txt -> test.txt

0

Outro método (que não foi respondido anteriormente) para encontrar arquivos de link é usar o comando abaixo,

file -h <path_to_dir>/* | grep link

Comando :

file -h /home/prateek/* | grep link

Saída :

/ home / prateek / Música: link simbólico para / mídia / prateek / HD-E1 / Música

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.