Відповіді:
Можна зробити yes | cp -rf xxx yyy
, але мій gutfeeling говорить, що якщо ви робите це як root - ваш .bashrc
або .profile
має псевдонім cp
до cp -i
, більшість сучасних систем (насамперед RH-похідних) роблять це для кореневих профілів.
Ви можете перевірити існуючі псевдоніми, запустивши alias
в командному рядку або which cp
перевірити псевдоніми лише для cp
.
Якщо у вас визначений псевдонім, запуск unalias cp
буде скасовувати це для поточного сеансу, інакше ви можете просто видалити його зі свого профілю оболонки.
Ви можете тимчасово обійти псевдонім і використовувати невідчужувану версію команди, префіксуючи її \
, наприклад\cp whatever
¯\_(ツ)_/¯
про це.
(primarily RH-derivatives)
зауваження :)
unalias cp
та скопіювавши все, що потрібно для копіювання, ви можете встановити псевдонім до його типового значення, виконавши alias cp='cp -i'
. Після цього запустіть, alias cp
щоб ви могли переконатися, що він повернувся до псевдоніму за замовчуванням.
Це, мабуть, викликано тим, cp
що вже відчужувалося щось подібне cp -i
. Телефонувати cp
безпосередньо слід:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Ще один спосіб обійти це використання yes
команди:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yes
команду. Веселий. І коли-небудь я можу ним скористатися.
Як деякі інші відповіді заявили, ви , ймовірно , використовувати псевдонім де - небудь , яка відображає cp
на cp -i
або що - щось подібне. Ви можете запустити команду без будь-яких псевдонімів, попередньо виконавши її з косою рисою. У вашому випадку спробуйте
\cp -r /zzz/zzz/* /xxx/xxx
Зворотна косою рисою тимчасово вимкне будь-які псевдоніми, які ви викликали cp
.
cp
, \cp
викличе команду cp
. Це здається еквівалентом бігу command cp
.
Ви , напевно, де - то псевдонім, відображення cp
в cp -i
; оскільки з налаштуваннями за замовчуванням cp
не буде просити перезаписати. Перевірте своє .bashrc
, своє .profile
тощо
Див. Cp manpage : Тільки коли -i
вказаний параметр, cp
фактично підкаже перед перезаписом.
Ви можете перевірити це за допомогою alias
команди:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Щоб визначити псевдонім, використовуйте:
$ unalias cp
Як було сказано в інших відповідях, це може статися, якщо cp
це псевдонім cp -i
.
Ви можете додати a \
перед cp
командою, щоб використовувати його без псевдоніму.
\cp -fR source target
За замовчуванням cp
має псевдонім до cp -i
. Ви можете перевірити це, набрати alias
та побачити такі, як:
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
Для вирішення цієї проблеми просто скористайтеся /bin/cp /from /to
командоюcp /from /to
cp
зазвичай псевдонім так
alias cp='cp -i' # i.e. ask questions of overwriting
якщо ви впевнені, що хочете зробити перезапис, скористайтеся цим:
/bin/cp <arguments here> src dest
Я це знайшов
'cp' -rf * /data/danalonso_testing/target/
Джерело: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
Тому я багато в цьому стикаюся, тому що я тримаю cp непідвладно cp -iv
, і я знайшов акуратний трюк. Виявляється, що поки -i
і -n
обидва скасовують попередні директиви перезапису, -f
це не робить. Однак, якщо ви використовуєте, -nf
це додає можливість очищення -i
. Тому:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Досить акуратно так? / некропост
cp -u ...
cp --update ...
також працює.
Ще один спосіб викликати команду без псевдоніму - використовувати command
вбудований в bash.
command cp -rf /zzz/zzz/*
-n - "не перезаписати", але його питання абсолютно протилежне тому, на що ви відповіли.
Щоб уникнути цього підтвердження, ви можете просто запустити команду cp з абсолютним шляхом, це дозволить уникнути псевдоніму.
/ bin / cp вихідний файл призначення
Якщо ви хочете зберегти псевдонім на глобальному рівні таким, який є, і просто хочете змінити свій сценарій.
Просто використовуйте:
псевдонім cp = cp
а потім напишіть свої подальші команди.
Я просто використав Unalias, щоб видалити псевдонім "cp -i", потім зробіть копію, а потім відновіть псевдонім. :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
Не найкрасивіший код, але простий у налаштуванні та ефективності. Я також перевіряю, псевдонім вже встановлений з простим
alias |grep cp
Це не так cp -i
. Якщо ви не хочете, щоб вас просили підтвердження, це cp -n
; наприклад:
cp -n src dest
Або у випадку каталогів / папок:
cp -nr src_dir dest_dir
cp -i
системою, це означає, що вони намагаються подолати типовий і примусити перезаписати. Це звучить , як ви , можливо, переплутав , що за те , що пропонований синтаксис, але -n
буде запобігти перезапис.