868 Stimmen

Wie man cp zum Überschreiben ohne Bestätigung zwingt

Ich versuche, die cp und ein Überschreiben erzwingen.

Ich habe versucht cp -rf /foo/* /bar aber ich werde immer noch aufgefordert, jedes Überschreiben zu bestätigen.

1376voto

favoretti Punkte 28679

Das können Sie tun yes | cp -rf xxx yyy aber mein Bauchgefühl sagt mir, wenn Sie es wie Root machen - Ihr .bashrc o .profile hat einen Alias von cp a cp -i Die meisten modernen Systeme (vor allem RH-Derivate) tun dies bei Wurzelprofilen.

Sie können vorhandene Aliase überprüfen, indem Sie alias an der Eingabeaufforderung, oder which cp um die Aliase nur auf cp .

Wenn Sie einen Alias definiert haben, können Sie mit unalias cp wird dies für die aktuelle Sitzung aufgehoben, andernfalls können Sie es einfach aus Ihrem Shell-Profil entfernen.

Sie können einen Alias vorübergehend umgehen und die nicht aliasierte Version eines Befehls verwenden, indem Sie ihm das Präfix \ z.B. \cp whatever

3 Stimmen

Seien Sie außerdem vorsichtig - selbst wenn der Alias nicht direkt in .bashrc geschrieben ist, wenn alles Wenn dieser Dateiaufruf am Ende etwas anderes aufruft, das den Alias für cp manipuliert, werden Sie auf dieses Verhalten stoßen.

9 Stimmen

Mit "modernen Systemen" meint er RHEL/Centos/Fedora und vielleicht noch etwas anderes, Debian/Ubuntu hat kein Alias cp. Ich bevorzuge RHEL auf dem Server und habe Fedora fast ein Jahrzehnt lang benutzt, aber die Community-Unterstützung von Ubuntu und der Wechsel zurück zu Gnome haben mich gelockt, nachdem Nvidia meine Fedora-Installation zerstört hat. Ich bin ¯\_()_/¯ darüber.

2 Stimmen

@RayFoss Hinzugefügt wurde ein (primarily RH-derivatives) Anmerkung :)

426voto

pgl Punkte 7103

Dies ist wahrscheinlich zurückzuführen auf cp die bereits als Aliasing für etwas wie cp -i . Aufruf von cp direkt funktionieren sollte:

/bin/cp -rf /zzz/zzz/* /xxx/xxx

Eine andere Möglichkeit, dies zu umgehen, ist die Verwendung der yes Befehl:

yes | cp -rf /zzz/zzz/* /xxx/xxx

9 Stimmen

Ja, ich habe unalias cp -i, jetzt funktioniert es.. Vielen Dank für Ihre wertvolle Antwort.

7 Stimmen

Ich liebe es, dass Unix die Möglichkeit bietet yes Befehl. Sehr witzig. Und eines Tages werde ich ihn vielleicht benutzen.

4 Stimmen

Ja, es war ein Alias, gut gemacht :) Sie können verwenden \cp um das ursprüngliche cp aufzurufen, einfacher als sich den Pfad /bin/cp zu merken

153voto

Chris Punkte 41714

Wie in einigen der anderen Antworten bereits erwähnt, verwenden Sie wahrscheinlich irgendwo einen Alias, der die cp a cp -i oder etwas Ähnliches. Sie können einen Befehl ohne Aliasnamen ausführen, indem Sie ihm einen Backslash voranstellen. In Ihrem Fall versuchen Sie

\cp -r /zzz/zzz/* /xxx/xxx

Der Backslash deaktiviert vorübergehend alle Aliasnamen, die Sie cp .

4 Stimmen

@zhouji Der Backlash deaktiviert den Alias, wie in meiner Antwort angegeben. Anstatt also den Alias aufzurufen cp , \cp ruft den Befehl cp . Dies scheint das Äquivalent zu sein zu laufen command cp .

92voto

codeling Punkte 10632

Wahrscheinlich haben Sie irgendwo einen Alias, der Folgendes abbildet cp a cp -i ; denn mit den Standardeinstellungen, cp wird nicht zum Überschreiben auffordern. Prüfen Sie Ihre .bashrc , Ihr .profile など

Siehe cp manpage : Nur wenn -i Parameter angegeben ist, wird cp vor dem Überschreiben tatsächlich abfragen.

Sie können dies über die alias Befehl:

$ alias
alias cp='cp -i'
alias diff='diff -u'
....

Um den Alias zu deaktivieren, verwenden Sie:

$ unalias cp

0 Stimmen

Ja, ich habe unalias cp -i, jetzt seine Arbeit Vielen Dank für Ihre wertvolle Antwort.

1 Stimmen

Es heißt einfach "unalias cp".

2 Stimmen

Wenn Sie oh-my-zsh verwenden, könnte der cp -i-Alias auch von common-aliases stammen

68voto

Arnold Roa Punkte 6775

Wie bereits in anderen Antworten erwähnt, könnte dies geschehen, wenn cp ist ein Alias von cp -i .

Sie können eine \ vor dem cp um ihn ohne Alias zu verwenden.

\cp -fR source target

1 Stimmen

Wie Sie sagten, haben andere dies bereits festgestellt. Warum hat dies 45 Bewertungen erhalten?

0 Stimmen

@phil294 Ich denke, das ist der einfachste Weg, ohne den Alias zu ändern oder den cp-Alias zu entfernen, was für andere Verwendungen nützlich sein kann. Es ist hier sehr nützlich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X