cp kopiert nicht alles

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

cp kopiert nicht alles

Beitrag von latenite » 06.08.2007 02:25:26

hi leute

vielleciht is es echt zu spät und mein kopf spielt mir streiche....

ich probiere grad den gesammten inhalt des /root/ verzeichnises nach /home/neueruser/ zu kopieren und zwar mit:

cp -dpPRv /root/* /home/neueruser/

leider kommen die ganzen ornder und files mit einem punkt wie zb die .bashrc nicht mit.

woran liegt das? :roll:

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: cp kopiert nicht alles

Beitrag von cirrussc » 06.08.2007 02:32:45

Hi,
latenite hat geschrieben: cp -dpPRv /root/* /home/neueruser/
Probier es mal ohne *.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 04:55:05

dann erstellt er mir folgendes /home/neueruser/root/ ...zwar mit allem drin aber ich will ja das alles aus /root/ eine verzecihnissebene höher liegt also alles in /home/neueruser/...

:roll:

nil
Beiträge: 989
Registriert: 08.06.2005 13:28:36

Beitrag von nil » 06.08.2007 08:51:46

Versuchs doch mit rsync

Code: Alles auswählen

rsync -avz /root/ /home/neueruser/ 

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 13:19:35

ja klar... aber das mus doch mit cp gehen? vertippe ich mich?

wie kann ich den gesammten inhalt von /rrot/ in /home/neueruser/ kopiern mit cp??

danke

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 06.08.2007 13:41:08

Der * wird von der Shell nur in Dateien und Verzeichnisse expandiert, die ohne Punkt beginnen. Wenn du die ebenfalls in deiner Liste haben willst, dann musst du die explizit mit angeben.

So als Denkansatz schau dir mal folgende Ausgaben an:

Code: Alles auswählen

echo *
echo .*
echo .??*

ls
ls -a
ls -d *
ls -d .*

cosmac
Beiträge: 4579
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 06.08.2007 14:36:29

hi,

ich finde es so am einfachsten:

Code: Alles auswählen

cd /home
cp -a /root .
mv root neueruser
Beware of programmers who carry screwdrivers.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 16:13:08

ok schön und gut die ganzen "indirekten wege"

wie kann ich nun mit cp alles aus /root/ nach /home/neueruser/ kopiern

...ohne das ich verzeichnise im nachhinein "umbenenne".."verschiebe" etc

eingfach copy stuff from here to there...das muss doch gehen?...bei drag n drop in der gui gehts doch auch!! :roll:

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 06.08.2007 16:52:48

Hallo latenite,

Code: Alles auswählen

cp -aPv /root/.  /home/neueruser/ 
ist nur kurz (bash) getestet, geht das bei Dir?

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

cool fuzzy...aber wieso nur ??

Beitrag von latenite » 06.08.2007 17:24:25

hey fuzzy genau das war's so habe ich mir das vorgestellt.

kannst du mir kurz erklären wieso das mit dem punkt geht und mit dem * nicht?
ich dachte immer * is ne wildcard für "ausnahmslos alles"? von dem punkt und dessen funktion als wildcard habe ich bis heute noch nix gehört.
ausser das er die files und directories "hidden" macht...aber das hat ja nix mit wildcards zu tun.

wie hängt das alles zusammen?

und grosses danke erst mal!!!

Oviwan
Beiträge: 19
Registriert: 30.06.2007 22:28:20
Wohnort: Schweiz

Beitrag von Oviwan » 06.08.2007 17:27:44

Hey

ein punkt (.) bedeutet das aktuelle verzeichnis, 2 punke (..) bedeutet das verzeichnis darüber.

kannst es mit "cd ." (bleibst im aktuellen verzeichnis) und mit "cd .." (geht ins übergeordnete verzeichnis) ausprobieren.

Gruss

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 17:30:26

ah na klar . is das aktuelle verzeichnis? ... wie doof von mir

rein theoretisch mueeste doch dann der punkt und der stern das gleiche bewirken. warum tun sie s nicht?

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 06.08.2007 17:55:00

Code: Alles auswählen

$ ls
datei-ohne-punkt  ordner-ohne-punkt
$ ls -a
.  ..  .datei-mit-punkt  datei-ohne-punkt  .ordner-mit-punkt  ordner-ohne-punkt
$ ls -d *
datei-ohne-punkt  ordner-ohne-punkt
$ ls -d .*
.  ..  .datei-mit-punkt  .ordner-mit-punkt
$ echo *
datei-ohne-punkt ordner-ohne-punkt
$ echo .*
. .. .datei-mit-punkt .ordner-mit-punkt
$ echo .??*
.datei-mit-punkt .ordner-mit-punkt
$ echo * .??*
datei-ohne-punkt ordner-ohne-punkt .datei-mit-punkt .ordner-mit-punkt
Also:
"*" expandiert zu allen Dateien und Ordner, die nicht mit einem Punkt anfangen.
".*" expandiert zu allen Dateien und Ordner, die mit einem Punkt anfangen, inklusive "." und ".."
".??*" expandiert zu allen Dateien und Ordner, die mit einem Punkte anfangen und mindestens drei Zeichen haben (also ohne "." und "..").

Wenn du also all Dateien in der Form kopieren willst, dann brauchst du etwas in der Art:

Code: Alles auswählen

cp quellverzeichnis/* quellverzeichnis/.??* zielverzeichnis

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Re: cool fuzzy...aber wieso nur ??

Beitrag von fuzzy » 06.08.2007 20:28:05

latenite hat geschrieben: [...]
ich dachte immer * is ne wildcard für "ausnahmslos alles"?
[...]
ein "*" nimmt die Dateien und/oder Verzeichnisse mit einem "." am Anfang "nicht mit".

Code: Alles auswählen

fuzzy@deb:~/tmp$ touch test.jpg .test.jpg
fuzzy@deb:~/tmp$ ls -A *.jpg
test.jpg
fuzzy@deb:~/tmp$ ls -A *
test.jpg
fuzzy@deb:~/tmp$ ls -A 
.test.jpg  test.jpg
fuzzy@deb:~/tmp$ ls -A .
.test.jpg  test.jpg
http://www.neuro.informatik.uni-kassel. ... ndex.shtml

Am einfachsten und ohne Nachdenken, ist mir dieses Kommando immer am liebsten :wink:

Code: Alles auswählen

cd quelle
cp -a . ziel
so sollten ALLE Dateien im aktuellen Verzeichnis inkl. Unterordner ins Ziel kopiert werden....

Gruß fuzzy

[pingelmodus]
@markus_b
Dein Beispiel wird bei solchen (unwahrscheinlichen) Dateien noch nicht die erwünschnten Ergebnisse bringen. :wink:

Code: Alles auswählen

fuzzy@deb:~/tmp$ ls -AF
a/  .a/  b  .b
[/pingelmodus]

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 22:21:07

man kommt nicht drum herum das quellverszeichniss zwei mal anzu geben wenn am alles darin befindliche kopieren will? das kling recht umstaendlich.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 22:29:33

also was fuzzy da sagt
Am einfachsten und ohne Nachdenken, ist mir dieses Kommando immer am liebsten Wink
Code:

cd quelle
cp -a . ziel
kann ma ja auch so interpretieren oder?..

Code: Alles auswählen

 cp -av /root/. /home/gast/
zumindest geht es so..hab' sprobiert. betshet so die gefahr das man datein mit "unüblichen namen" auslässt? :roll:

[/quote]

cosmac
Beiträge: 4579
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 06.08.2007 23:03:38

also gut, noch ein Versuch, aber dann muß gut sein :)

Code: Alles auswählen

cp -a /root /home/neueruser
Beware of programmers who carry screwdrivers.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 06.08.2007 23:19:04

Code: Alles auswählen

cp -aT /root /home/neueruser
Wenn neueruser schon vorhanden und blos Inhalt von /root kopieren.

Benutzeravatar
neuss
Beiträge: 2165
Registriert: 06.11.2004 17:56:02
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von neuss » 06.08.2007 23:30:20

Also langsam wird es peinlich,

fuzzy hatte doch schon längst, alles bestens beschrieben.

gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 06.08.2007 23:38:46

ok jetzt is ales klar..danke und tschuldigung für die verwirrung :)

Antworten