CP, копирующее больше, чем, что спрашивают

Я иду со следующим в ударе

cp -r "/wordpress/3.0.1/" "/mySite/"

и результат /mySite/3.0.1/ но я не хочу, ни понимаю почему 3.0.1/ появляется в целевом месте назначения.

Что я делаю неправильно?

3
задан 06.11.2010, 00:05

2 ответа

CP-r/wordpress/3.0.1 /*/mySite

0
ответ дан 08.12.2019, 01:07

Это - отклонение от спецификации POSIX, которая указывает это

Путь, который содержит по крайней мере один символ ненаклонной черты и это заканчивается одной или несколькими запаздывающими наклонными чертами, буду разрешен, как будто единственный точечный символ ('.') был добавлен к пути.

Но в соответствии с Linux (т.е. с cp команда от GNU coreutils, cp -r foo/ bar/ действия как cp -r foo bar/ вместо cp -r foo/. bar/ когда foo каталог ¹. (GNU coreutils не является единственным преступником, я просто наблюдал то же поведение в OpenBSD, который обычно хорош в соответствии стандартов.)

Можно работать cp -r "/wordpress/3.0.1/." "/mySite/" (т.е. закончите источник /.) избегать 3.0.1/ уровень. Другая возможность rsync -r "/wordpress/3.0.1/" "/mySite/".

Как в стороне, я рекомендую выработать привычку cp -a вместо cp -r если Вы не используете нельдов кроме Linux и Cygwin. Когда Вы замечаете различие, -a (который сохраняет полномочия, и символьные ссылки) обычно правильный. На других нельдах использовать cp -Rp. С rsync, использовать -a.

3
ответ дан 08.12.2019, 01:07

Теги

Похожие вопросы