O que significa avançar para a barra oblíqua (.//)?

6

Eu estava consultando um servidor usando um comando como este:

find ./ -type f -name 'filename"

Eu tenho muitos arquivos começando com

.//library 

ou

.//user

O que essas coisas significam?

    
por munchschair 15.10.2016 / 17:14

3 respostas

7

Isso não significa muito: o padrão que você deu a find foi ./ , e é simples que find cole seus resultados nesse caminho. Uma barra dupla é ignorada (tratada como uma única barra), exceto pelo fato de que uma barra dupla leading poderia ter algum significado para alguns sistemas. Mais importante, os programas portáteis assumem esse comportamento.

No entanto, você verá esse comportamento específico apenas para sistemas derivados do BSD com uma versão antiga de find (OSX, por exemplo). O NetBSD tentou consertar isso em sua fonte em 2005 ; o userland para o OSX é mais antigo .

Verificando o "recente" FreeBSD, NetBSD e OpenBSD, nenhum produz esse comportamento. Linux e Unix (AIX, HPUX, Solaris) também não.

Leitura adicional:

por 15.10.2016 / 17:36
6

O .// significa o diretório atual, portanto, .//user na saída indica o arquivo user no diretório de trabalho atual.

O dobro // deve resolver para um único / , isso é verdadeiro para todos os sistemas que usei. Embora POSIX só defina esse comportamento apenas para /// (ou mais) e, é claro, / .

O dobro // aparece porque você usou o caminho de pesquisa para find como ./ , em vez do típico . . Ambos indicam o diretório de trabalho atual e ambos estão corretos. Este é o comportamento de find para anexar o caminho dessa maneira no caso de caminhos relativos. Observe que esse comportamento específico de find é predominante em apenas um subconjunto de sistemas, conforme esta resposta mencionada, e você é um deles, presumivelmente, um deles.

    
por 15.10.2016 / 17:33
2

.// é o mesmo que ./

Barras sucessivas além da primeira não têm significado semântico.

    
por 16.10.2016 / 00:19