diferença entre / dir e / dir / [duplicado]

2

Considere um link simbólico que estou criando para o meu diretório de músicas chamado music .

ln -s Music music

considere seguir a sequência de comandos:

edward@ArchLinux:~$ readlink music
Music
edward@ArchLinux:~$ readlink music/
edward@ArchLinux:~$ 

Estou obtendo a saída apenas se eu não estiver usando / no final do nome do symlink.

Gostaria de saber se /dir e /dir/ são diferentes. Alguém pode explicar?

    
por Edward Torvalds 20.01.2016 / 12:27

2 respostas

5

readlink espera um link simbólico e, em seguida, exibe o arquivo / dir para o qual o link simbólico aponta.

  • em sua primeira tentativa: ele vê o link simbólico, por isso exibe o que aponta para
  • na sua segunda tentativa: vê música /., que é Música /. que é o diretório apontado, não o link simbólico apontando para esse diretório, então ele não tem um link para interpretar. (Em outras palavras, quando você adiciona o final "/", o descritor de arquivo do shell é para o diretório apontado).
por 20.01.2016 / 12:42
2

No Unix, tudo é um descritor de arquivos .

Nesse caso, "tudo" inclui arquivos, diretórios, partições normais (por exemplo, /dev/sda1 ), dispositivos (por exemplo, /dev/sda ), dispositivos virtuais (por exemplo, /dev/null ) e links simbólicos.

Mas o que é um "descritor de arquivo" nesse caso? É uma entrada na raiz do sistema de arquivos, apontando para o local dos dados no disco ou na memória (para arquivos virtuais). Observe que, por exemplo nos sistemas de arquivos ext, há outra camada de abstração entre descritor de arquivo e dados chamado "inode".

Portanto, no seu exemplo, music é um link simbólico, representado por um descritor de arquivo, como qualquer outro arquivo ou diretório. Mas ele tem um sinalizador especial definido para identificá-lo como symlink, onde um diretório teria outro sinalizador definido como tal. Agora o sistema pode interpretar o symlink, que é na verdade apenas uma string contendo um caminho absoluto ou relativo para o alvo.

Ele só será interpretado como diretório se você escrever explicitamente um / por trás dele, caso contrário, ele será tratado como arquivo.

    
por 20.01.2016 / 13:51