A ligação simbólica a um diretório fornece resultados diferentes ls -l
dependendo de eu ln -s dir
ou ln -s dir/
. Mas qual é a diferença real e qual devo preferir por quê?
30
Não há diferença. (Haveria uma diferença se o destino não fosse um diretório existente.)
A barra final pode ter sido encerrada por causa da conclusão do shell: com algumas configurações, ln -s tar
TabSpacelink
termina em ln -s target/ link
.
foo -> bar/
, em seguida,foo/qux
é equivalente abar//qux
. Embora o título da pergunta, formalmente falando, não incluafoo -> bar/
, também discuto esse caso na minha resposta.A única coisa em que consigo pensar é que ele "protege" você de alguém que exclui o diretório e cria um arquivo.
A versão com a barra é interrompida quando o destino é substituído por um arquivo.
fonte
Pergunta interessante. Eu fiz um pequeno teste:
Como você pode ver, não há diferença no número de chamadas do sistema (pelo menos para ls) e os rastreamentos são muito semelhantes. No entanto, este é apenas um teste de despejo e não tenho certeza - pode haver algumas diferenças.
fonte
Sua pergunta é realmente sobre o comportamento do
ls
programa.1) Se você fizer
ls -l $dir
onde $ dir é realmente um link simbólico, obterá informações sobre o link simbólico.2) Se você fizer
ls -lL $dir
onde $ dir é um link simbólico para um diretório, obterá informações sobre o diretório de destino.3) Se você fizer
ls -l $dir/.
, força o link simbólico a ser seguido e fornece informações sobre o diretório de destino.4) Se o fizer
ls -l $dir/
, os resultados podem ser os mesmos que o número 1 ou o número 3, dependendo de qual versãols
está sendo usada. Eu estava acostumado a uma versão mais antiga do Solaris, fazendo o # 1 e fiquei surpreso com o Linux, fazendo o # 3.Sem barra final, se você estiver preocupado se um nome de diretório fornecido é um diretório real versus um link simbólico para um diretório.
Com barra final, se você estiver mais preocupado com os arquivos no diretório em vez do próprio diretório.
fonte