/this/is/a/path 和 /this/is/a/path/ 之间有很大区别吗?

/this/is/a/path 和 /this/is/a/path/ 之间有很大区别吗?

我已经使用 CentOS 很多年了,但我仍然经常不确定 Linux 命令中的最后一个斜杠有什么作用,例如

  • 柏油
  • 同步
  • 动量
  • 软件/php 中的文件处理

以斜杠结尾和不以斜杠结尾的路径之间有什么实际区别?

答案1

答案是“视情况而定”。许多命令并不关心,但如果给出的文件名是指向目录的符号链接,情况就会发生变化。如果末尾有斜杠,大多数命令将使用符号链接指向的目录,如果没有斜杠,命令将使用符号链接本身。

某些命令rsync在有尾部斜杠时会表现得完全不同,例如,在 rsync 的源端给出尾部斜杠会将目录的内容复制到指定目标位置的其他服务器。如果没有它,目录本身将在目标中创建,然后将内容复制到该目标。如有疑问,请阅读文档(搜索“trailing”是一个不错的开始)。

答案2

事实是,它通常取决于运行的命令

例如,带有斜杠的 rsync 专门从该目录的内容开始,而没有斜杠的话,它将从该目录开始,然后是其内容。对于大多数命令来说,这都无关紧要,但如果你不确定,你可以查阅每个命令的手册,例如

man rsync

答案3

我不能 100% 确定尾部斜线如何影响 cp、mv、rm,但根据我的经验,它没有任何实际影响。

例如

跑步

cp -r 目录1 目录2

将得到与

cp -r 目录1/ 目录2

这对于 rsync 来说绝对很重要。在 rsync 中,包含和省略尾部斜杠之间的区别在于同步目录内容或同步目录本身和内容之间的区别。

例如

rsync -a 目录1 目录2

将在 dir2 下创建 dir1

尽管

rsync -a 目录1/ 目录2

将直接在 dir2 中创建 dir1 中所有文件的副本

答案4

这实际上取决于程序。例如,find 将跟踪带有尾部斜杠的路径上的符号链接。

mkdir dir1 ln -s dir1 dir2

查找 dir2-type d

不会返回任何内容

查找 dir2/-type d

将找到“dir2/”并继续通过dir1进行递归。

相关内容