我正在开发一个想要以原子方式更新符号链接的部署脚本。我打算使用类似的命令
$ ln -s new current_tmp && mv -Tf current_tmp current
(归功于此处以获取有关此工作原理的详细信息)。
但是,并非所有版本都mv
支持该-T
选项。如何在使用之前可靠地确定系统是否支持它?
是否比创建不同的文件并尝试mv
使用该-T
选项(并检查是否成功)来尝试该文件更好的方法,以便我可以知道当前系统是否支持该选项?然后我可以为该系统运行正确的命令。
谢谢你的帮助。
一般来说你可以
-f
and-i
选项是强制性的mv
,其他实用程序也存在类似的限制......)facter
Puppet 中已经为您提供的工具。如果
-T
or--no-target-directory
功能特定于 GNU coreutils 版本,mv
您可以在引入 git 时检查它,找到 2004,然后确定您需要比 12 年前发布的 5.2.1 更新的 coreutils 版本。.