so stoppen Sie cp: überschreiben './xxx'? Eingabeaufforderung

Wie kann ich verhindern, dass der Befehl cp zum Überschreiben auffordert? Ich möchte alle Dateien überschreiben, ohne zum Terminal zurückkehren zu müssen. Da dies große Dateien sind und einige Zeit in Anspruch nehmen.

Ich habe versucht, die Option-f zu verwenden. Es fragt immer noch, ob ich überschreiben möchte.

   -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
Author: nelaaro, 2012-09-10

3 answers

Zusätzlich zum Aufruf von /bin/cp können Sie Folgendes tun:

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

Ich stimme jedoch zu, dass Sie sich nicht daran gewöhnen sollten, einen Alias wie cp -i oder rm -i zu verwenden-wenn Sie sich an eine andere Shell setzen, haben Sie nicht das Sicherheitsnetz, von dem Sie abhängig geworden sind.

 17
Author: glenn jackman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-10 13:36:03

Nachdem ich diese Lösung gesehen habe. Ich konnte sehen, dass die Bash Alias-Funktion die Probleme verursachte. 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

Er empfiehlt

unalias cp

Ich möchte immer noch den Alias behalten, den ich einfach nicht auf diese Instanz anwenden möchte. Meine Lösung ist die Binärdatei mit einem vollständigen Pfad zu verwenden, damit die Bashes-Aliasfunktion nicht übernommen wird. Das funktioniert ganz gut.

/bin/cp -f /media/somedir/somefiles* .  
 13
Author: nelaaro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-10 10:30:51

Leider hat der Befehl copy "cp" unter Linux keine Möglichkeit, diese Frage automatisch mit einer "y" - oder "n" - Antwort zu beantworten. Es gibt mehr als eine Lösung für dieses Problem, je nachdem, was Sie tun möchten. Eine Lösung besteht darin, den Unix-Befehl "yes" zu verwenden. Dieser Befehl gibt eine Zeichenfolge wiederholt aus, bis sie getötet wird.

Wenn wir alle Dateien im Zielverzeichnis überschreiben möchten, können Sie den Befehl "yes" verwenden, um alle Fragen mit einem "y"zu beantworten. "y" ist ein Standardwert es muss also nicht angegeben werden.

yes | cp source/*.txt destination/.

Wenn wir vermeiden möchten, eine der Dateien im Zielverzeichnis zu überschreiben, können Sie den Befehl "Ja" verwenden, um alle Fragen mit einem Nein "n"zu beantworten.

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

Verwenden Sie "man yes" für weitere Informationen über den Befehl" yes".

 4
Author: Michael Sundell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-28 21:59:24