Як використовувати "cp" для перезапису файлів?


10

Як використовувати сценарій оболонки або термінал, як перезаписати файли, які можуть бути або відсутні. Я переглянув man-сторінку для cp, він сказав, що використовувати аргумент -f, щоб примусити перезаписати. Але, це нічого не робить.

$ cp -f /path/to/source/file.txt /path/to/target

Або є інший варіант перезаписати файли за допомогою загальних вбудованих інструментів командного рядка в OS X?


3
Це працює для мене. Що це робиться замість перезапису, коли ви спробуєте це?
Гордон Девіссон

2
Якщо у вас немає дозволу на перезапис цільового файлу, це не вдасться. Якщо ви дійсно хочете перезаписати цільовий файл, ви можете використовувати sudoна початку команди. Але використовуйте обережно!
Даниїл

@Gordon Davisson: Що це робить? нічого. Він буде копіювати файли лише в цільовий каталог, якщо я mvїх або rmїх.
rogerFernand

@Daniel Lawson: Без використання sudoя можу використовувати mvабо rmпереміщувати або видаляти файли перед використанням cp. Використання sudo cpне має значення.
rogerFernand

Curiouser і curiouser.
Даниїл

Відповіді:


13

Я наткнувся на те, чому cp поводиться так, якщо немає жодного псевдоніма. Однак є швидка забруднення та небезпека утиліта, яка передбачена саме для цієї ситуації yes. Ви можете використовувати його для передачі безперервного потоку позитивних підтверджень у будь-яку команду, яка дає вам підказки підтвердження (ви можете використовувати його для надсилання будь-якого тексту, але за замовчуванням - "y").

yes | cp foo bar виконає команду cp та обійде всі підказки підтвердження.


8

Це може бути викликано псевдонімом команди.

Щоб телефонувати cpбезпосередньо, ви можете скористатися/bin/cp src dest


1
Не впевнений, чому це було знято. У мене склалося враження, що явно вказавши -f перекриє -i в псевдонімі, але я перевірив, і це не так. Плакат повинен з'ясувати, чи є у них псевдонім cp (тип alias cp). Вони можуть змінити псевдонім у своєму профілі або використовувати / bin / cp, як пропонується.
октер

Я використовую за замовчуванням, cpяк Apple це надала.
rogerFernand

@octern:roger$ alias cp -bash: alias: cp: not found
rogerFernand

Мені довелося користуватися / bin / cp Не знаю чому.
beingalex

1
Я можу бути занадто пізно, але для людей, які приходять із пошукової системи, я зміг побачити, чи є команда яким-небудь псевдонімом, виконуючи це type cp. І це дійсно так і було.
крик

2
rm foo/bar/destination && cp source foo/bar/destination

Спочатку ви видалите ( rm) пункт призначення, потім, якщо це вдало ( &&), ви зробите копіювання. Видаляючи папку, не забудьте додати -rдо rm( rm -r).


1

У мене також був псевдонім зіпсований з -f, виклик CP безпосередньо з / bin, і все добре, а псевдонім, який запобігає випадковому перезапису / видаленню, за замовчуванням є досить хорошим, тому краще не видаляти його.

. # псевдонім

псевдонім cp = 'cp -i'

як уже було зазначено, прапор -i перевершує -f, що не дозволить командi внизу виконувати за призначенням.

. # / bin / cp -fauv src dst

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.