[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: