Mv (Unix)

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

mv (engl. Abkürzung für move) ist ein Unix-Befehl, der eine oder mehrere Dateien oder Verzeichnisse von einem Ort zum anderen verschiebt. Damit vereint das Programm die beiden von einem Computerbenutzer intuitiv als verschieden wahrgenommenen Aktionen des Umbenennens und des Verschiebens von Dateien zwischen verschiedenen Ordnern.

Um die Arbeitsweise von mv zu verstehen, ist eine Fallunterscheidung nötig, ob es sich bei dem Quell-/Zielverzeichnis um die gleichen Geräte handelt. Dank des Unix-Konzepts des transparenten Mountens von Dateisystemen bzw. Partitionen in beliebige existierende Verzeichnisse muss mv in der Lage sein, zum einen Dateien auf dem gleichen Dateisystem einfach umzubenennen (aus /mnt/diskette/ordner/datei1 wird z.B. /mnt/diskette/anderer_ordner/datei1) sowie andererseits Dateien von einem Dateisystem zum anderen zu befördern. Dazu wird die Originaldatei vom Datenträger gelöscht und anschließend unter dem anderen Namen auf der Zielpartition wieder geschrieben. Diese unterschiedlichen Arbeitsabläufe haben unterschiedlich viel Arbeitsaufwand zur Folge: Das Verschieben von Dateien in einem einzigen Dateisystem geht bei den meisten Dateisystemen sehr schnell, wohingegen das Verschieben auf ein anderes Dateisystem mehr Zeit in Anspruch nimmt, weil in Wirklichkeit ein Löschzugriff sowie ein Schreibzugriff stattfindet.

Selbstverständlich sind zum Verschieben von Dateien Schreibrechte sowohl im Quell- als auch Zielverzeichnis nötig.

Inhaltsverzeichnis

Verwendung

Der Syntax von mv funktioniert analog zu cp:

mv quelldatei zieldatei

Mehrere Dateien können analog in ein Zielverzeichnis verschoben werden:

mv quelldateien ... zielverzeichnis

Konflikte bei existierenden Zieldateien

Wenn eine Datei zu einem Dateinamen einer bereits exstierenden Datei verschoben wird, so wird letztere gelöscht. Wenn für die existierende Zieldatei keine Schreibrechte vorhanden sind, für das Verzeichnis der Zieldatei allerdings schon, dann fragt mv interaktiv nach, ob er die Datei überschreiben soll, wenn der Parameter -f (für force) nicht gesetzt ist:

$ ls -l
insgesamt 0
-rw-r--r-- 1 sven users  0 22. Apr 22:51 a.txt
drwxr-xr-x 2 sven users 72 22. Apr 22:51 ziel
 
$ ls -l ziel/
insgesamt 0
-r--r--r-- 1 sven users 0 22. Apr 22:51 a.txt
 
$ mv a.txt ziel
mv: Überschreiben von »ziel/a.txt«, über Modus 0444 hinwegsetzen?

Abgrenzung zum Kopieren und Löschen von Dateien

Es sei angemerkt, dass normalerweise das Verschieben von Dateien im gleichen Dateisystem nicht identisch ist mit der Aktion des Kopierens dieser Datei und dem anschließenden Löschen des Originals. Beim Verschieben einer Datei auf dem gleichen Dateisystem wird in Unix-Dateisystemen einfach der Hardlink der Datei aus dem Quellverzeichnis entfernt und ein neuer zum Zielverzeichnis hinzugefügt. Dabei bleibt die Datei (der Inode) selbst unberührt, d.h. der Inode und damit die Position der Datei auf dem Speichermedium ändert sich nicht.

Durch diesen Zusammenhang erklären sich auch die Verhältnisse der Dateirechte: Man kann eine Datei, auf die man keinen Lesezugriff hat, nicht kopieren, aber man kann sie verschieben (vorausgesetzt man hat Schreibrechte im Original- und Zielverzeichnis, siehe oben). Analog ist die Denkweise bei Verzeichnissen: Es sei ein mit Dateien gefülltes Verzeichnis gegeben, auf deren Dateien man keine Schreibrechte hat. Entsprechend darf man das Verzeichnis nicht löschen, da die Berechtigung fehlt, die Inhalte zu löschen. Trotzdem kann man aber das Verzeichnis selbst verschieben.

Siehe auch

  • cp, zum Kopieren von Dateien auf Unix (weitgehend identische Syntax)
  • rm, zum Löschen von Dateien auf Unix

Weblinks

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net