Forum: PC-Programmierung Meldung: cp: -r wurde nicht angegeben, daher wird das Verzeichnis '/home/pi/xy' ausgelasse


von Fabian (Gast)


Lesenswert?

Moin,
ich stehe gerade auf dem Schlauch. Ich möchte Dateien auf einem 
Raspberry kopieren. Dazu verwende ich:
1
cp /home/pi/xy/* /home/pi/ab -u

Ich erhalte jedes mal die nervige Nachricht:
1
cp: -r wurde nicht angegeben, daher wird das Verzeichnis '/home/pi/xy' ausgelassen

Da dies Verhalten aber von mir gewünscht ist, würde ich die Nachricht 
gerne unterdrücken. Kann mir jemand sagen, wie ich den cp Befehl 
formulieren muss, damit die Nachricht nicht erscheint?

VG
Fabian

von Fabian (Gast)


Lesenswert?

Nach dem Absenden ist mir aufgefallen, dass die Nachricht so lautet:
1
cp: -r wurde nicht angegeben, daher wird das Verzeichnis '/home/pi/xy/unterverzeichnis' ausgelassen

von answerer (Gast)


Lesenswert?

cp [] >> /dev/null ?

von Mario M. (thelonging)


Lesenswert?

1
cp /home/pi/xy/* /home/pi/ab -u 2> /dev/null

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Mario M. schrieb:
> 2> /dev/null

Das hat den Nachteil, dass man überhaupt keine Fehlermeldungen mehr 
sieht.

@TO: Gib mal 'type cp' ein, um festzustellen, ob da vielleicht ein Alias 
gesetzt ist, der den cp zu solch einer Geschwätzigkeit verführt.

Wenn tatsächlich ein Alias ausgegeben wird, einfach eingeben:
1
unalias cp

Dann ist zumindest in dieser Shell-Sitzung der Spuk vorbei.

Um das Phänomen permanent abzuschalten sollte man in den folgenden 
Dateien
1
~/.bashrc
2
~/.profile
3
/etc/profile
4
/etc/bash.bashrc

nach dem Alias suchen und dann die Zeile auskommentieren.

: Bearbeitet durch Moderator
von Mario M. (thelonging)


Lesenswert?

Tja, einen Tod muss man sterben. Cp unterscheidet nicht zwischen Dateien 
und Verzeichnissen, das geht mit der Kombination find/cp. Noch besser 
ist allerdings die Verwendung von rsync.

von mh (Gast)


Lesenswert?

Frank M. schrieb:
> Dann ist zumindest in dieser Shell-Sitzung der Spuk vorbei.

Welcher Spuk? Das was der TO sieht, ist das erwartete Verhalten von cp. 
Wenn man Ordner kopieren will muss man -r angeben. Wenn man keine Ordner 
kopieren will, sollte man cp keinen Pfad zu einem Ordner geben.

von Rolf M. (rmagnus)


Lesenswert?

Mario M. schrieb:
> Cp unterscheidet nicht zwischen Dateien und Verzeichnissen, das geht mit
> der Kombination find/cp.

Doch, es unterscheidet schon. Wenn man eine Datei angibt, wird sie 
kopiert, wenn man ein Verzeichnis angibt, wird es nur kopiert, wenn man 
-r dazuschreibt. Wenn man ein Verzeichnis angibt, aber nicht -r, dann 
sagt cp einem mit der obigen Meldung, dass es nicht kopiert wird, weil 
-r fehlt.

> Noch besser ist allerdings die Verwendung von rsync.

Um alle Dateien, aber nicht Verzeichnisse von einer Quelle zu einem Ziel 
zu kopieren?

von Achim H. (anymouse)


Lesenswert?

Naja, bei Linux erfolgt die Auflösung von "*" durch die Shell. Das 
bedeutet, "cp" kriegt das Unterverzeichnis bereits als zu kopieren 
übergeben.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

mh schrieb:
> Welcher Spuk? Das was der TO sieht, ist das erwartete Verhalten von cp.
> Wenn man Ordner kopieren will muss man -r angeben. Wenn man keine Ordner
> kopieren will, sollte man cp keinen Pfad zu einem Ordner geben.

Natürlich ist das Verhalten prinzipiell so, dass standardmäßig kein 
Ordner kopiert wird. Bisher hatte ich es aber noch nicht erlebt, dass cp 
plötzlich solche hilfreichen Tipps gibt - von wegen fehlender Option 
"-r".

Beispiel - älteres Linux:
1
# cp /etc /tmp
2
cp: omitting directory '/etc'

hier wird nicht auf eine eventuell fehlende Option "-r" hingewiesen.

Aber auf einem aktuellen Debian ist dem tatsächlich so:
1
# cp /etc /tmp
2
cp: -r not specified; omitting directory '/etc'

Das ist mir bisher noch nicht aufgefallen. Tatsächlich geben neuere 
Versionen von cp schon ohne eine besondere zusätzliche Option diesen 
Tipp.

Ich bin nur auf einen eventuellen Alias gekommen, da immer mehr 
Linux-Distributionen meinen, den unbedarften User vor seiner 
augenscheinlichen Dummheit schützen zu wollen und deshalb zum Beispiel 
das Kommando "rm" per Alias auf "rm -i" umbiegen. Diese Aliase lösche 
ich dann immer aus .bashrc, weil sie eigentlich nur nerven, besonders 
beim Löschen eines Verzeichnisses, z.B. "rm -r scratch". Dann wird man 
plötzlich bei jeder Datei im Unterverzeichnis "scratch" gefragt, ob man 
sie denn wirklich löschen will. Bei mehreren hundert Dateien ist so ein 
Alias überhaupt nicht hilfreich.

: Bearbeitet durch Moderator
von Mario M. (thelonging)


Lesenswert?

Rolf M. schrieb:
>> Noch besser ist allerdings die Verwendung von rsync.
>
> Um alle Dateien, aber nicht Verzeichnisse von einer Quelle zu einem Ziel
> zu kopieren?
1
rsync -a --exclude="*/" /home/pi/xy/ /home/pi/ab

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.