Ich versuche, den cp
Befehl zu verwenden und ein Überschreiben zu erzwingen.
Ich habe es versucht cp -rf /foo/* /bar
, werde aber dennoch aufgefordert, jedes Überschreiben zu bestätigen.
quelle
Ich versuche, den cp
Befehl zu verwenden und ein Überschreiben zu erzwingen.
Ich habe es versucht cp -rf /foo/* /bar
, werde aber dennoch aufgefordert, jedes Überschreiben zu bestätigen.
Sie können dies tun yes | cp -rf xxx yyy
, aber mein Bauchgefühl besagt, dass die meisten modernen Systeme (hauptsächlich RH-Derivate) dies für Root-Profile tun, wenn Sie dies als Root tun - Ihr .bashrc
oder .profile
mit einem Alias von cp
to cp -i
.
Sie können vorhandene Aliase überprüfen, indem Sie sie alias
an der Eingabeaufforderung ausführen oder which cp
Aliase nur auf überprüfen cp
.
Wenn Sie einen Alias definiert haben, unalias cp
wird dieser durch Ausführen für die aktuelle Sitzung aufgehoben. Andernfalls können Sie ihn einfach aus Ihrem Shell-Profil entfernen.
Sie können einen Alias vorübergehend umgehen und die nicht aliasisierte Version eines Befehls verwenden, indem Sie ihm \
z\cp whatever
¯\_(ツ)_/¯
dabei.(primarily RH-derivatives)
Bemerkung :)unalias cp
Sie alles getan und kopiert haben, was Sie zum Kopieren benötigen, können Sie den Alias auf den Standardwert zurücksetzenalias cp='cp -i'
. Führenalias cp
Sie anschließend aus, damit Sie überprüfen können, ob der Standardalias wiederhergestellt ist.Dies wird wahrscheinlich dadurch verursacht,
cp
dass Sie bereits auf so etwas eingestellt sindcp -i
.cp
Direkt anrufen sollte funktionieren:Eine andere Möglichkeit, dies zu umgehen, ist die Verwendung des folgenden
yes
Befehls:quelle
yes
Befehl liefert . Urkomisch. Und eines Tages kann ich es benutzen.Wie in einigen anderen Antworten angegeben, verwenden Sie wahrscheinlich irgendwo einen Alias, der zugeordnet ist
cp
,cp -i
oder etwas Ähnliches. Sie können einen Befehl ohne Aliase ausführen, indem Sie ihm einen Backslash voranstellen. Versuchen Sie es in Ihrem FallDer Backslash deaktiviert vorübergehend alle von Ihnen aufgerufenen Aliase
cp
.quelle
cp
,\cp
wird der Befehl aufgerufencp
. Dies scheint das Äquivalent zum Laufen zu seincommand cp
.Sie haben wahrscheinlich irgendwo einen Alias,
cp
der zugeordnet istcp -i
. weil mit den Standardeinstellungencp
nicht zum Überschreiben aufgefordert wird. Überprüfen Sie Ihre.bashrc
, Ihre.profile
usw.Siehe cp-Manpage : Nur wenn ein
-i
Parameter angegeben ist, wirdcp
vor dem Überschreiben tatsächlich eine Aufforderung angezeigt.Sie können dies über den folgenden
alias
Befehl überprüfen :Verwenden Sie zum Aufheben der Definition des Alias Folgendes:
quelle
Wie andere Antworten angegeben haben, könnte dies passieren, wenn
cp
es sich um einen Alias von handeltcp -i
.Sie können ein
\
vor demcp
Befehl anhängen , um es ohne Alias zu verwenden.quelle
Standardmäßig
cp
hat Aliase zucp -i
. Sie können es überprüfen, eingebenalias
und einige sehen wie:Um dieses Problem zu lösen, verwenden Sie
/bin/cp /from /to
stattdessen einfach den Befehlcp /from /to
quelle
Sie können diesen Befehl auch verwenden:
cp -ru /zzz/zzz/* /xxx/xxx
Es würde jedoch Ihre vorhandene Datei mit der neueren aktualisieren.
quelle
cp
ist normalerweise so aliasiertWenn Sie sicher sind, dass Sie das Überschreiben durchführen möchten, verwenden Sie Folgendes:
quelle
ich habe das gefunden
Quelle: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
quelle
Deshalb stoße ich oft darauf
cp -iv
, weil ich mich auf CP konzentriere und einen ordentlichen Trick gefunden habe. Es stellt sich heraus, dass zwar-i
und-n
beide frühere Überschreibungsanweisungen abbrechen, dies-f
jedoch nicht der Fall ist. Wenn Sie es jedoch verwenden-nf
, wird die Möglichkeit hinzugefügt, das zu löschen-i
. Damit:Ziemlich ordentlich, oder? / Nekropost
quelle
funktioniert auch.
quelle
Eine andere Möglichkeit, den Befehl ohne Alias
command
aufzurufen, besteht darin, die integrierte Bash zu verwenden.command cp -rf /zzz/zzz/*
quelle
-n ist "nicht zu überschreiben", aber seine Frage ist völlig entgegengesetzt zu dem, worauf Sie geantwortet haben.
Um diese Bestätigung zu vermeiden, können Sie einfach den Befehl cp mit dem absoluten Pfad ausführen. Dadurch wird der Alias vermieden.
/ bin / cp Quelldateiziel
quelle
Wenn Sie den Alias unverändert auf globaler Ebene halten und nur für Ihr Skript ändern möchten.
Benutz einfach:
Alias cp = cp
und schreiben Sie dann Ihre Folgebefehle.
quelle
Ich habe einfach Unalias verwendet, um den Alias "cp -i" zu entfernen, dann die Kopie zu erstellen und dann den Alias zurückzusetzen. ::
Nicht der schönste Code, aber einfach einzustellen und effizient. Ich überprüfe auch, ob der Alias bereits mit einem einfachen zurückgesetzt ist
quelle
Es ist nicht
cp -i
. Wenn Sie nicht um Bestätigung gebeten werden möchten, ist dies der Fallcp -n
. zum Beispiel:Oder bei Verzeichnissen / Ordnern ist:
quelle
cp -i
vom System verknüpft wurde, was bedeutete, dass sie versuchten, die Standardeinstellung zu überwinden und ein Überschreiben zu erzwingen . Es hört sich so an, als hätten Sie dies als vorgeschlagene Syntax verwechselt, aber ein Überschreiben-n
wird verhindert .