Wie verwende ich 'cp' zum Überschreiben von Dateien?

10

Wie überschreibe ich mithilfe eines Shell-Skripts oder Terminals Dateien, die möglicherweise vorhanden sind oder nicht? Ich habe auf der Manpage nach cp gesucht. Dort stand, dass das Argument -f verwendet wird, um das Überschreiben zu erzwingen. Aber es macht nichts.

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

Oder gibt es eine andere Option zum Überschreiben von Dateien mit den in OS X üblichen Befehlszeilentools?

rogerFernand
quelle
3
Für mich geht das. Was macht es, anstatt es zu überschreiben, wenn Sie es versuchen?
Gordon Davisson
2
Wenn Sie nicht berechtigt sind, die Zieldatei zu überschreiben, schlägt dies fehl. Wenn Sie eine Zieldatei wirklich überschreiben möchten, können Sie sie sudoam Anfang des Befehls verwenden. Aber Vorsicht walten lassen!
Daniel
@ Gordon Davisson: Was macht es? nichts. Es werden die Dateien nur in das Zielverzeichnis kopiert, wenn ich mvsie oder rmsie.
RogerFernand
@ Daniel Lawson: Ohne Verwendung sudokann ich Dateien verwenden mvoder rmverschieben oder entfernen, bevor ich sie verwende cp. Die Verwendung sudo cpmacht keinen Unterschied.
RogerFernand
Neugieriger und neugieriger.
Daniel

Antworten:

14

Ich bin ratlos darüber, warum sich cp so verhält, wenn kein Alias ​​beteiligt ist. Für genau diese Situation gibt es jedoch ein schnell verschmutztes und gefährliches Dienstprogramm : yes. Sie können es verwenden, um einen fortlaufenden Strom von Bestätigungen in jeden Befehl zu leiten, der Sie zur Bestätigung auffordert (Sie können damit jeden Text senden, aber die Standardeinstellung ist "y").

yes | cp foo bar führt den Befehl cp aus und umgeht alle Bestätigungsaufforderungen.

Oktern
quelle
8

Dies kann durch einen Befehlsalias verursacht werden.

Um cpdirekt anzurufen, können Sie verwenden/bin/cp src dest

Aji
quelle
1
Ich bin mir nicht sicher, warum dies abgelehnt wurde. Ich hatte den Eindruck, dass die explizite Angabe von -f -i im Alias ​​überschreiben würde, aber ich habe dies überprüft und dies ist nicht der Fall. Das Poster sollte herausfinden, ob sie einen CP-Alias ​​(Typ alias cp) haben. Sie können den Alias ​​in ihrem Profil ändern oder / bin / cp wie vorgeschlagen verwenden.
Oktober
Ich verwende die Standardeinstellung, cpwie sie von Apple bereitgestellt wurde.
RogerFernand
@octern:roger$ alias cp -bash: alias: cp: not found
RogerFernand
Ich musste / bin / cp verwenden. Ich weiß nicht warum.
Beingalex
1
Ich könnte viel zu spät sein, aber für Leute, die von einer Suchmaschine kommen, konnte ich sehen, ob der Befehl einen Alias ​​hatte type cp. Und das tat es tatsächlich.
Schrei
2
rm foo/bar/destination && cp source foo/bar/destination

Zuerst entfernen Sie ( rm) das Ziel, dann &&kopieren Sie bei Erfolg ( ). Denken Sie beim Entfernen eines Ordners daran, -rzu rm( rm -r) hinzuzufügen .

vtoanb
quelle
1

Ich hatte auch einen Alias, der mit -f durcheinander gebracht wurde, cp direkt von / bin aufrief und alles ist in Ordnung. Ein Alias, der versehentliches Überschreiben / Entfernen standardmäßig verhindert, ist ziemlich gut, also entfernen Sie ihn am besten nicht.

.# alias

alias cp = 'cp -i'

Wie bereits erwähnt, überschreitet das Flag -i -f -f, wodurch der folgende Befehl nicht wie beabsichtigt ausgeführt werden kann.

. # / bin / cp -fauv src dst

Niklas Göransson
quelle