1

Поэтому я решил, что cp в GNU отличается от cp OSX (BSD).

В то время как OSX копирует содержимое каталога, который заканчивается косой чертой, или сам каталог без косой черты, GNU/Linux просто обрабатывает somedir и somedir/ то же самое (то есть копирует каталог).

Это раздражает, потому что теперь один из моих сценариев оболочки выглядит так:

# 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

Это работает, но мне кажется немного неуклюжим.

Так есть ли лучший способ? Может быть, какая-то команда, которая работает универсально в разных ОС?

1 ответ1

0

Я нашел решение (спасибо @glenn Джекман):

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

Разница лишь в том, что я использовал . вместо * , чтобы скопировать и скрытые файлы.

Кажется, это работает как на Ubuntu, так и на OSX. Работает также, если $path является точкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .