Explique a saída do caminho real [fechado]

0

Estou tentando usar a linha de comando para retornar o caminho absoluto para um arquivo. Eu li que há várias maneiras de fazer isso, ou seja, os comandos realpath , readpath -f e locate .

Nada disso funcionou para mim. Como mostrado abaixo, se eu estivesse no diretório principal e procurasse por um arquivo, algum número arbitrário de diretórios abaixo retornaria apenas o diretório atual com o arquivo no final. Da mesma forma, eu estaria a alguma distância e procuraria por um arquivo no diretório principal e retornaria com meu diretório atual seguido pelo arquivo.

[seisemann@localhost ~]$ cd uno
[seisemann@localhost uno]$ ls
dos  first
[seisemann@localhost uno]$ cd dos
[seisemann@localhost dos]$ ls
second
[seisemann@localhost dos]$ cd
[seisemann@localhost ~]$ realpath second
/home/seisemann/second
[seisemann@localhost ~]$ 

Minha pergunta é: por que isso está acontecendo? Por que alguns desses comandos não estão funcionando como esperado?

Editar:     O que eu quero saber é se existe um comando que retornará o caminho para um arquivo onde ele deve ser encontrado, se existir. Para algum contexto, atualmente estou abrindo um diretório em um script python e tentando executar um comando terminal para obter os caminhos para os arquivos dentro da pasta. Eu não quero codificar o caminho, já que ele precisa ser semi-portátil, mas os comandos que eu consegui encontrar não estão fazendo o que eu esperava.

    
por SCE 01.06.2016 / 18:15

1 resposta

1

Se o arquivo não existir realpath , basta anexar o nome do arquivo ao caminho atual.

cd /tmp
touch foo
mkdir empty
cd empty
realpath nothing_here
ln -s /tmp/foo nothing_here
realpath nothing_here

Primeiro, isso resulta em /tmp/empty/nothing_here , pois o arquivo não existe. após o ln imprimir /tmp/foo

de acordo com a página man, isso parece estar correto:

Print the resolved absolute file name; all but the last component must exist

para encontrar o caminho real do segundo usando o caminho real, você deve usar um caminho válido para ele. Não procura por seus arquivos!

realpath ~/uno/dos/second

deve fazer o truque

    
por 01.06.2016 / 20:54