Por que alguns comandos do GNU Coreutils têm a -T/--no-target-directoryopção? Parece que tudo o que faz pode ser alcançado usando a semântica do .(ponto próprio) em uma hierarquia de diretórios Unix tradicional.
Considerando:
cp -rT /this/source dir
A -Topção impede que a cópia crie um dir/sourcesubdiretório. Em vez disso, /this/sourceé identificado dire o conteúdo é mapeado entre as árvores de acordo. Então, por exemplo, /this/source/foo.cvai dir/foo.ce assim por diante, ao invés de dir/source/foo.c.
Mas isso pode ser facilmente realizado sem a -Topção usando:
cp -r /this/source/. dir # Probably worked fine since dawn of Unix?
Semanticamente, o componente de ponto final é copiado como filho de dir, mas é claro que "filho" já existe (portanto, não precisa ser criado) e é realmente direle próprio; portanto, o efeito é o /this/pathidentificado dir.
Funciona bem se o diretório atual for o destino:
cp -r /this/tree/node/. . # node's children go to current dir
Existe algo que você pode fazer única com -Tque pode racionalizar a sua existência? (Além do suporte para sistemas operacionais que não implementam o diretório de pontos, uma justificativa não mencionada na documentação.)
O truque de pontos acima não resolve as mesmas condições de corrida mencionadas na documentação sobre o GNU Info -T?
.truque faz o trabalho ao copiar um arquivo, não apenas quando renomear seu nome base, ao mesmo tempo!cp /path/to/file /target/dir/.Se/target/dir/fileexiste e é um diretório, você obtém o mesmo diagnóstico! Mas você mostrou o-Tque isso não pode ser feito sem ele em uma etapa, sem condições de corrida: copie um arquivo e altere seu nome sem que ele seja desviado para um subdiretório.