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

ujj*_*ain 3 bash centos

我多年来一直是 CentOS 用户,但我仍然经常不确定最后一个斜杠在 linux 命令中的重要性,例如

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

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

Der*_*rfK 5

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

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

  • 使用像 `cp` 和 `mv` 这样的命令,在目标中使用尾部斜杠起到了一点安全网的作用,因为它强制将最终路径组件解释为目录。比较 `mv myfile /some/path` 和 `mv myfile /some/path/` -- 如果 `/some/path` 不存在,第一个版本将创建一个文件,而第二个版本将失败并报错。如果 `/some/path` 存在但是是一个文件,第一个版本将替换它,而第二个版本将再次失败并出现错误。 (2认同)