Estou trabalhando em um script de implantação que deseja atualizar um link simbólico atomicamente. Pretendo usar um comando como
$ ln -s new current_tmp && mv -Tf current_tmp current
(Crédito aqui para obter detalhes sobre por que isso funciona).
No entanto, nem todas as versões do mv
suportam a -T
opção. Como posso determinar com segurança se um sistema oferece suporte a ele antes de usá-lo?
É uma maneira melhor do que criar um arquivo diferente e tentar mv
esse arquivo usando a -T
opção (e verificando se foi bem-sucedido) para que eu possa saber se o sistema atual oferece suporte a essa opção? Então posso executar o comando correto para esse sistema.
Obrigado pela ajuda.
Em geral você pode
-f
e é obrigatória e existem limitações semelhantes para outros utilitários ... )-i
mv
facter
já faz por você no Puppet.Se o recurso
-T
ou--no-target-directory
for específico para a versão do GNU coreutils,mv
você pode verificar no git quando foi introduzido , localize 2004 e determine se precisa de uma versão do coreutils mais recente que a 5.2.1 lançada há doze anos. .