Используя сценарий оболочки или Терминал, как мне перезаписать файлы, которые могут присутствовать или не присутствовать. Я посмотрел на страницу man для cp, там было указано использование аргумента -f для принудительной перезаписи. Но это ничего не делает.
$ cp -f /path/to/source/file.txt /path/to/target
Или есть другой вариант перезаписать файлы, используя стандартные встроенные инструменты командной строки в OS X?
terminal
command-line
script
rogerFernand
источник
источник
sudo
в начале команды. Но используйте с осторожностью!mv
их илиrm
их.sudo
я могу использоватьmv
илиrm
для перемещения или удаления файлов перед использованиемcp
. Использованиеsudo cp
не имеет значения.Ответы:
Я озадачен тем, почему cp ведет себя так, если псевдоним не задействован. Тем не менее, есть утилита быстрой грязной и опасной, предусмотренные для этой конкретной ситуации:
yes
. Вы можете использовать его для передачи непрерывного потока утверждений в любую команду, которая выдает запросы на подтверждение (вы можете использовать ее для отправки любого текста, но по умолчанию используется значение "y").yes | cp foo bar
выполнит команду cp и пропустит все запросы на подтверждение.источник
Это может быть вызвано псевдонимом команды.
Чтобы позвонить
cp
напрямую, вы можете использовать/bin/cp src dest
источник
alias cp
). Они могут изменить псевдоним в своем профиле или использовать / bin / cp, как предложено.cp
как Apple, при условии.roger$ alias cp -bash: alias: cp: not found
type cp
. И это действительно так.Сначала вы удаляете (
rm
) место назначения, затем, если все прошло успешно (&&
), вы копируете. При удалении папки, пожалуйста, не забудьте добавить-r
вrm
(rm -r
).источник
У меня также был псевдоним, путающийся с -f, вызывающий cp напрямую из / bin, и все в порядке, иметь псевдоним, который предотвращает случайные перезаписи / удаления по умолчанию, довольно хорошо, поэтому лучше не удалять его.
как уже говорилось, флаг -i заменяет -f, что не позволяет команде ниже работать так, как задумано.
источник