macOS-Terminal – Das kleine Einmaleins der Kommandozeile

Seite 2: Dateien bewegen mit move und copy

Inhaltsverzeichnis

Hat man die gewünschte Datei und deren Pfad ausgemacht, will man sie meistens irgendwie bearbeiten. Zum Kopieren steht der Befehl cp (copy) bereit, das Verschieben übernimmt der Move-Befehl mv (move). Beide erwarten einen Dateinamen samt Pfad als Quellangabe, gefolgt von einem weiteren Pfad zum Ziel-Ordner.

cp ~/Documents/Artikel.txt ~/Desktop/

fertigt ein Duplikat der Datei Artikel.txt aus dem Dokumente-Ordner auf dem Schreibtisch des angemeldeten Benutzers an. (Trennungsstrich bitte nicht mitverwenden.)

Ersetzt man in dieser Zeile cp durch mv, verschiebt das Terminal die Datei an die gewünschte Stelle. Danach existiert nur noch das Duplikat auf dem Schreibtisch. Existiert der Zielordner noch nicht, erntet man eine Fehlermeldung. Um das zu umgehen, legt man gefolgt von einem Verzeichnisnamen den Zielordner an: Das geht mit mkdir (make directory).

Mit zwei Dingen mögen cp und mv auf Anhieb nicht umgehen: Ordner und Programme. Ohne Aufforderung arbeiten beide nur mit Dateien. Versucht man es trotzdem, etwa mit dem Befehl

cp ~/Documents ~/Desktop/

erhält man die Fehlermeldung

cp: /Users/mst/Documents is a directory (not copied).

Erst mit der Option -R (für "recursive") klappt es, das Verzeichnis auf den Schreibtisch zu kopieren – inklusive aller Unterordner, die diesmal automatisch mit angelegt werden. Dass die Option durch einen Großbuchstaben gewählt wird, ist kein Tippfehler: Je nach Kommando gibt es mal große, mal kleine Buchstaben als Schalter. Die Ursache dafür ist nicht immer ersichtlich. Generell kommt es in der Kommandozeile aber immer auf die Groß-/Kleinschreibung an.

Die "Command Line Tools" von Xcode erweitern den Funktionsumfang des Terminals, etwa um Befehle zum Kopieren und Verschieben von Programmen.

Bei Programmen ist das Kopieren übrigens nicht ganz so einfach. Die sind unter macOS zwar auch nur getarnte Ordner (wie man mit dem ls-Befehl schnell überprüfen kann), cp und mv arbeiten damit aber trotzdem nicht immer zuverlässig. Speziell um mit diesen sogenannten Packages umzugehen, hat Apple die Kommandos CpMac und MvMac entwickelt. Die gehören aber zu den Entwicklertools. Wer sie braucht, muss also erst Xcode (kostenlos) aus dem Mac App Store laden, das auch die "Command Line Tools" auf die Festplatte spült. Beide funktionieren ansonsten wie cp und mv.

Auch beim Löschen unterscheidet das Terminal zwischen Dateien und Ordnern. Für Dateien genügt ein rm Pfad/zur/Datei (für "remove"). Gibt man stattdessen ein Verzeichnis an, erntet man eine Fehlermeldung. Abhilfe schafft dann der Befehl rmdir (für "remove directory"), aber auch nur, wenn das zu löschende Verzeichnis leer ist. Sind darin noch Dateien oder gar weitere Ordner, hilft die Option -R (für "recursive") des rm-Befehls. Dank ihr verschwindet das Verzeichnis samt eventuell vorhandener Unterverzeichnisse und sämtlicher Dateien darin.

Dabei ist allerdings Vorsicht geboten: Wer sich vertippt, löscht am Ende versehentlich zu viel, und eine Undo-Funktion gibt es im Terminal ebenso wenig wie einen Papierkorb. Die Dateien sind sofort komplett gelöscht. Um sich abzusichern, kann man den Parameter -R um -i (für "interactive") erweitern, also rm -iR tippen. Dann fragt der Löschbefehl vor jeder Datei nach, ob er sie wirklich tilgen soll, und man muss dann "y" für Ja oder "n" für Nein drücken. Wer es sicher und bequem haben will, verschiebt einfach alles, was gelöscht werden soll, in den Papierkorb des Finders, etwa mit:

mv ~/zu/loeschendes/Verzeichnis/ ~/.Trash

Anschließend kann man noch einmal schauen, ob man die richtigen Dateien erwischt hat und den Papierkorb über den Finder oder im Terminal via

rm -R ~/.Trash/*

entleeren.