Quando você executa o comando:
grep -r <pattern> <directory>
imprime todos os nomes dos arquivos como <directory>/<filename>
. Se você colocar uma barra no final de <directory>
, ela será incluída, então você acaba com uma barra dupla.
O código poderia ter sido inteligente o suficiente para perceber quando o nome do diretório original termina com /
e omiti-lo ao imprimir nomes de arquivos, mas eles não se incomodaram. Eu acho que o único caso especial que faz é para o diretório raiz, por exemplo,
grep -r pattern /
imprime /foo/bar/baz
em vez de //foo/bar/baz
. Isso ocorre porque o POSIX especifica que uma sequência de barras é tratada de forma equivalente a uma única barra exceto que duas barras no início têm significado dependente da implementação (isso ocorre porque alguns mecanismos do sistema de arquivos de rede usavam sintaxe como %código%). Veja Como o Linux lida com vários separadores de caminhos consecutivos ( / home //// username /// file)?