як зупинити cp: перезаписати './xxx'? підказка


19

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

Я спробував використовувати опцію -f. Він все ще запитує, чи хочу я переписати.

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y

Відповіді:


17

Окрім дзвінків /bin/cp, ви можете виконати ще одне:

\cp -f ...
command cp -f ...

Однак я погоджуюся, що ви не повинні звикати використовувати псевдонім на кшталт cp -iабо rm -i- якщо ви сідете за інший корпус, у вас не буде мережі безпеки, від якої ви стали залежними.


1
A whereis cpпокаже, де команда. Таким чином, ви зможете викликати справжню команду замість псевдоніму.
AnthonyB

12

Побачивши це рішення. Я міг бачити, що функція псевдоніму баштів викликала проблеми. http://systembash.com/content/prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

Він рекомендує

unalias cp

Я все ще хочу зберегти псевдонім, я просто не хочу, щоб він застосовувався до цього примірника. Моє рішення полягає у використанні двійкового файлу з повним шляхом, щоб функція псевдоніму баштів не переймала. Це працює досить добре.

/bin/cp -f /media/somedir/somefiles* .  

4

На жаль, у Linux команда "cp" копіювати не має можливості автоматично відповісти на це запитання відповіддю "y" або "n". Існує більше одного рішення цієї проблеми в залежності від того, що ви хочете зробити. Одне рішення - використовувати команду Unix "так". Ця команда буде виводити рядок кілька разів, поки не буде вбита.

Якщо ми хочемо перезаписати всі файли в каталозі призначення, ви можете скористатися командою «так», щоб відповісти на всі питання за допомогою «у». "y" - це значення за замовчуванням, тому його не потрібно вказувати.

yes | cp source/*.txt destination/.

Якщо ми хочемо уникнути перезапису будь-якого з файлів у каталозі призначення, ви можете скористатися командою "так", щоб відповісти на всі запитання без "n".

yes n | cp source/*.txt destination/.

Використовуйте "людина так" для отримання додаткової інформації про команду "так".

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