Trabalhando com diferentes implementações de cp em diferentes ambientes

1

Então imaginei que o cp do GNU é diferente do do OSX (BSD).

Enquanto o OSX copia o conteúdo de um diretório que termina com uma barra ou o próprio diretório sem a barra, o GNU / Linux apenas trata somedir e somedir/ da mesma (ou seja, copia o diretório).

Isso é irritante porque agora um dos meus scripts de shell é assim:

# copy the contents of somedir in $path
if [ "$(uname -s)" = "Darwin" ] ; then
  cp -R somedir/ $path
else
  cp -R --no-target-directory somedir $path
fi

Funciona, mas parece um pouco desajeitado para mim.

Então, há uma maneira melhor? Talvez algum comando que funcione universalmente em diferentes sistemas operacionais?

    
por Simone 03.06.2016 / 22:47

1 resposta

0

Eu encontrei uma solução (obrigado @glenn jackman):

mkdir -p "$path"
cp -R "path/to/somedir/". "$path"

A única diferença é que usei . no lugar de * para copiar também arquivos ocultos.

Isto parece funcionar tanto no Ubuntu quanto no OSX. Funciona também se $path for um ponto.

    
por 10.06.2016 / 10:35