Existe uma grande diferença entre / this / is / a / path e / this / is / a / path /?

3

Sou usuário do CentOS há muitos anos, mas ainda não tenho certeza de como a barra final é importante no comando do Linux, por exemplo

  • tar
  • rsync
  • mv
  • manipulação de arquivos no software / php

Qual é a diferença real entre os caminhos terminando e não terminando com uma barra?

    
por ujjain 12.06.2011 / 15:44

4 respostas

5

A resposta é "depende". Muitos comandos não se importam, embora isso mude se o nome do arquivo for um link simbólico para um diretório. Com uma barra final, a maioria dos comandos usará o diretório para o qual o link simbólico aponta, sem uma barra no final, o comando usará o próprio link simbólico.

Alguns comandos como rsync se comportam de forma completamente diferente quando há uma barra final, por exemplo, dar uma barra no lado de origem do rsync copiará o conteúdo do diretório para o outro servidor no local de destino especificado. Sem ele, o próprio diretório é criado no destino e, em seguida, o conteúdo é copiado para ele. Em caso de dúvida, leia a documentação (pesquisar por "trailing" é um bom começo).

    
por 12.06.2011 / 16:35
0

a verdade é que geralmente depende do comando em execução

por exemplo, o rsync com a barra começa especificamente no conteúdo desse diretório, enquanto que, sem a barra, ele será iniciado nesse diretório e, em seguida, seu conteúdo. para todos os efeitos, a maioria dos comandos não importa, mas se você não tem certeza de consultar o manual para cada comando, por exemplo

man rsync
    
por 12.06.2011 / 16:34
0

Eu não tenho 100% de certeza, como a barra final afeta cp, mv, rm, embora minha experiência não tenha nenhum efeito prático.

por exemplo,

executando

cp -r dir1 dir2

fornecerá o mesmo resultado que

cp -r dir1 / dir2

É definitivamente importante para o rsync. No rsync, a diferença entre incluir e omitir a barra final é a diferença entre sincronizar o conteúdo do diretório ou o próprio diretório e o conteúdo.

por exemplo,

rsync -a dir1 dir2

irá criar um dir1 sob dir2

enquanto

rsync -a dir1 / dir2

criará cópias de todos os arquivos em dir1 diretamente em dir2

    
por 12.06.2011 / 16:55
0

Isso realmente depende do programa. Por exemplo, find seguirá o symlink em um caminho com uma barra de trailaing.

mkdir dir1 ln -s dir1 dir2

find dir2 -type d

não retornará nada

find dir2/ -type d

encontrará "dir2 /" e continuará a recursar por dir1.

    
por 13.06.2011 / 15:23

Tags