Quando estou usando ls -la symlinkName
ou stat symlinkName
nem todo o caminho é exibido (por exemplo ../../../one/two/file.txt
)
Qual é o comando linux que revela o caminho completo?
Quando estou usando ls -la symlinkName
ou stat symlinkName
nem todo o caminho é exibido (por exemplo ../../../one/two/file.txt
)
Qual é o comando linux que revela o caminho completo?
Respostas:
realpath
não está disponível em todos os sabores do Linux, mas readlink
deveria estar.
readlink -f symlinkName
O acima deve fazer o truque.
Como alternativa, se você não tiver nenhum dos itens acima instalados, poderá fazer o seguinte se tiver o python 2.6 (ou posterior) instalado
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
-f
sinalizador e isso funciona. iereadlink symlinkName
realpath <path to the symlink file>
deve fazer o truque.
man realpath
mostra na parte inferior que faz parte do "GNU coreutils", que eu tenho certeza que sempre vem no Ubuntu, então mesmo que o @IanStapletonCordasco diga " realpath
não está disponível em todos os sabores do linux", deve pelo menos estar disponível em todos os Ubuntu e sabores derivados do Ubuntu, eu acredito.
sabores unix -> ll symLinkName
OSX -> readlink symLinkName
A diferença é que a 1ª maneira exibirá o caminho do link sym de maneira intermitente e a 2ª maneira apenas ecoaria no console.
Outra maneira de ver informações é o stat
comando que mostrará mais informações. Comando stat ~/.ssh
no visor da minha máquina
File: ‘/home/sumon/.ssh’ -> ‘/home/sumon/ssh-keys/.ssh.personal’
Size: 34 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 25297409 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ sumon) Gid: ( 1000/ sumon)
Access: 2017-09-26 16:41:18.985423932 +0600
Modify: 2017-09-25 15:48:07.880104043 +0600
Change: 2017-09-25 15:48:07.880104043 +0600
Birth: -
Espero que isso ajude alguém.
Você pode usar awk
com uma system
chamada readlink
para obter o equivalente a uma ls
saída com caminhos completos de link simbólico. Por exemplo:
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
Será exibido, por exemplo
thin_repair ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_restore ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_rmap ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_trim ->/home/user/workspace/boot/usr/bin/pdata_tools
touch ->/home/user/workspace/boot/usr/bin/busybox
true ->/home/user/workspace/boot/usr/bin/busybox
ls -l
. Isso também não funciona, tenta fazê-lo em tudo no diretório (não links) e se o seu ls estiver configurado para usar cores, o awk será completamente interrompido. apenas usefind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'