Re: Verhalten von 'mv'
Hi Patrick,
On Thu, Feb 13, 2003 at 11:51:38AM +0100, Patrick Petermair wrote:
> Bis jetzt habe ich mit dem Befehl 'mv' keine Probleme gehabt und ihn
> richtig schätzen gelernt.
> Durch ein Mißgeschick eines Kollegen, habe ich jedoch ein bißchen
> herumexperimentiert. Folgendes Szenario:
>
> Ich habe 2 Ordner
> black@voyager:~/test$ ls -l
> drwxr-xr-x 20 black black 4096 2003-02-13 11:19 destination
> drwxr-xr-x 2 black black 4096 2003-02-13 11:19 source
>
> Der Ordner "destination" enthält einige Ordner aus dem /etc Verzeichnis,
> welche ich zu diesem Testzweck kopiert hatte
>
> black@voyager:~/test$ ls destination/
> acpi apm bash_completion.d cdrecord exim gdm pam.d perl
> python2.1 alternatives apt calendar emacs fonts opt pango phoenix
> python2.2
>
> Der Ordner "source" enthält 3 Bilder
>
> black@voyager:~/test$ ls source/
> pic1.jpg pic2.jpg pic3.jpg
>
> Jetzt kommt der springende Punkt. Ich möchte alle 3 Bilder aus dem
> source-Verzeichnis ins destination-Verzeichnis verschieben. Normalerweise
> würde ich es mit 'mv source/*.jpg destination/' machen. Zum Testen mache
> ich allerdings folgendes:
>
> black@voyager:~/test$ mv source/*.jpg destination/*
>
> Man beachte den Stern beim Zielverzeichnis.
> Das Resultat verwundert mich dann aber. 'mv' hat ALLE Ordner in
> destination/ in einen einzigen Ordner verschoben:
>
> black@voyager:~/test$ ls destination/
> python2.2
> black@voyager:~/test$ ls destination/python2.2/
> acpi apt cdrecord fonts pam.d phoenix pic3.jpg
> alternatives bash_completion.d emacs gdm pango pic1.jpg python2.1
> apm calendar exim opt perl pic2.jpg site.py
>
> Klarerweise ist hier der Stern am Ende vom Kommando der Schuldige. Meine
> Frage ist jedoch, warum 'mv' das macht bzw. wie da der interne Vorgang
> ist. Ich verstehe nicht ganz, warum im Zielverzeichnis Ordner weggeschoben
> werden.
>
> Falls das jemand durchleuchten könnte, wäre ich sehr dankbar. Die manpage
> von mv ist in der Hinsicht SEHR dürftig.
Its not a bug, its a feature ;-) 'destination/python2.2' war einfach das
letzte Argument, dass 'mv' von der 'bash' bekommen hat. Der Befehl
'mv source/*.jpg destination/*' wird von der shell umgewandelt in
folgendes:
'mv source/pic1.jpg source... destination/acpi dest... destination/pyhton2.2'
was dann für 'mv' bedeuted, schieb alle übergebenen Datein und
Verzeichnisse ausser dem letzen in das als letztes Argument angegebene
Verzeichnis. (Steht auch in der man-Page: Rename SOURCE to DEST, or move
SOURCE(s) to DIRECTORY.) Da das letzte Argument ein Verzeichnis war,
wurde der Befehl ohne Kommentare ausgeführt.
Gruß
KH
--
// In a world without walls and fences who needs Windows and Gates ? //
Reply to: