как остановить cp: overwrite './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
nelaaro
источник

Ответы:

17

Помимо звонка /bin/cp, вы можете сделать одно из:

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

Тем не менее, я согласен, что вы не должны привыкать к использованию псевдонима типа cp -iили rm -i- если вы сядете за другую оболочку, у вас не будет защитной сетки, от которой вы стали зависеть.

Гленн Джекман
источник
1
А 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

Я все еще хочу сохранить псевдоним, я просто не хочу, чтобы он применялся к этому экземпляру. Мое решение состоит в том, чтобы использовать бинарный файл с полным путем, чтобы функция псевдонима bashes не вступала во владение. Это работает довольно хорошо.

/bin/cp -f /media/somedir/somefiles* .  
nelaaro
источник
4

К сожалению, в Linux команда copy "cp" не имеет возможности автоматически ответить на этот вопрос ответом "y" или "n". Существует несколько вариантов решения этой проблемы в зависимости от того, что вы хотите сделать. Одним из решений является использование Unix-команды «да». Эта команда будет выводить строку несколько раз, пока не будет уничтожена.

Если мы хотим перезаписать все файлы в каталоге назначения, вы можете использовать команду «yes», чтобы ответить на все вопросы с помощью «y». «y» - это значение по умолчанию, поэтому его не нужно указывать.

yes | cp source/*.txt destination/.

Если мы хотим избежать перезаписи любого из файлов в каталоге назначения, вы можете использовать команду «да», чтобы ответить на все вопросы с помощью «нет».

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

Используйте «man yes» для получения дополнительной информации о команде «yes».

Майкл Санделл
источник