Startseite>Dateien und Ordner auf der Kommandozeile verwalten
Aus Raspberry Pi Geek 01/2015

Dateien und Ordner auf der Kommandozeile verwalten

© Dafouti, Photocase.com

Kleines Einmaleins

Bruce Byfield

Die Dateiverwaltung auf der Kommandozeile stellt das kleine Einmaleins des Linux-Anwenders dar. Wer es beherrscht, agiert schnell und effizient mit Dateien und Verzeichnissen.

README

Der effektive Umgang mit den Dateiverwaltungsbefehlen auf der Kommandozeile erfordert etwas Übung. Als Lohn der Mühe winkt eine Effizienz im Umgang mit Dateien und Verzeichnissen, die sich in der grafischen Oberfläche so nicht erzielen lässt.

Linux behandelt alles als Datei. Daher zählt der Umgang mit den Kommandozeilenbefehlen zur Dateiverwaltung zu den wichtigsten Kenntnissen, die man sich als Linux-Einsteiger aneignen muss. Erfreulicherweise tragen die meisten Befehle mnemonische Namen, die sich aus der englischen Bezeichnung für ihre Funktion ableiten. So gibt ls (“list”) den Inhalt eines Verzeichnisses an, mv (“move”) verschiebt Dateien und Ordner von einem Ort zum anderen.

Grundsätzlich gliedern sich die Befehle zur Dateiverwaltung auf der Shell in drei Kategorien: Verzeichnis- und Dateiverwaltung, Navigation und Bearbeitung sowie Kompression. Eins haben die Befehle aus allen drei Bereichen gemeinsam: Sie sind wesentlich leistungsfähiger als ihre Pendants auf der grafischen Oberfläche und verursachen bei Bedienungsfehlern potenziell einen höheren Schaden. Beides liegt nicht zuletzt daran, dass sie sich mithilfe von Wildcards und regulären Ausdrücken gleichzeitig auf sehr viele Dateien anwenden lassen (dazu später noch mehr).

Umbenennen und verschieben

Das grundlegendste Kommando zum Umgang mit Dateien und Ordnern ist wohl cp (“copy”) mit der simplen Syntax cp OptionenQuelleZiel. Sofern Sie nicht explizit etwas anderes angeben, überschreibt cp dabei gleichnamige Dateien im Zielverzeichnis. Wünschen Sie das nicht, gibt es zwei Möglichkeiten, das zu umgehen. Zum einen können Sie cp mit der Option -b (“backup”) anweisen, vor dem Überschreiben Backups der fraglichen Dateien anzulegen. Zum andern sorgt der Schalter -u (“update”) dafür, dass cp nur solche Dateien überschreibt, die älter sind als das zu kopierende File.

Mit der Option -p (“preserve”) sorgen Sie dafür, dass beim Kopieren der Dateimodus, der Besitzer und der Zeitstempel der Datei erhalten bleiben. Das kann zum Beispiel dann ratsam sein, wenn Sie als Root die Dateien anderer Benutzer kopieren, etwa für ein Backup. Um gezielt einzelne Dateiattribute beim Kopieren zu beeinflussen, kennt cp die beiden ausgeschriebenen Optionen --preserve=Parameter und --no-preserve=Parameter, denen Sie die Parametermode, ownership, timestamps, context, links, xattr oder ganz einfach all mitgeben (Abbildung 1).

Abbildung 1: Der Befehl »cp« erlaubt Ihnen, sowohl vorsichtig als auch flexibel zu agieren. Hier sorgen die Optionen »-u« und »--preserve« dafür, dass keine neuere Datei überschrieben wird und der Besitzer der Datei sich nicht ändert.

Abbildung 1: Der Befehl »cp« erlaubt Ihnen, sowohl vorsichtig als auch flexibel zu agieren. Hier sorgen die Optionen »-u« und »–preserve« dafür, dass keine neuere Datei überschrieben wird und der Besitzer der Datei sich nicht ändert.

Manchmal möchten Sie eine Datei an mehreren Stellen im Dateisystem bereitstellen, möglichst aber, ohne dabei Speicherplatz zu verschwenden. Genau das erreichen Sie, in dem Sie mithilfe des Kommandos ln -s an der gewünschten Stelle einen symbolischen Link auf das fragliche File anlegen. Ein solcher “Zeiger” spart je nach Größe der Zieldatei unter Umständen beträchtlichen Speicherplatz ein (Abbildung 2). Möchten Sie später etwa bei einem Backup statt des Symlinks die Originaldatei mitkopieren, geben sie cp dazu die Option -L mit.

Abbildung 2: 1,4 MByte gespart: Symbolische Links bieten eine einfache Möglichkeit, um Dateien platzsparend an mehreren Stellen im Dateisystem bereitzustellen.

Abbildung 2: 1,4 MByte gespart: Symbolische Links bieten eine einfache Möglichkeit, um Dateien platzsparend an mehreren Stellen im Dateisystem bereitzustellen.

Der Befehl mv dient dazu, eine Datei in ein anderes Verzeichnis zu verschieben, anstatt sie zu kopieren. Er folgt derselben Syntax wie cp und akzeptiert auch viele derselben Optionen. Liegen Quelle und Ziel im selben Verzeichnis, entspricht das “Verschieben” einem Umbenennen:

$ mv image.png bild.png

Als Ziel für das Kopieren und Verschieben von Dateien legen Sie bei Bedarf neue Verzeichnisse mithilfe des Befehls mkdir (“make directory”) an. Als Argument geben Sie den anzulegenden Pfad an. Dabei müssen jedoch alle übergeordneten Verzeichnisse des angegebenen Ordners bereits existieren. Sind Sie sich dessen nicht ganz sicher, ergänzen Sie den Befehl um die Option -p (“parent”). Er legt gegebenenfalls noch fehlende Verzeichnisse gleich mit an:

$ mkdir ./rpg/2015/01/txt/

Zum Löschen von Dateien und Verzeichnissen dienen die beiden Befehle rm (“remove”) und rmdir (“remove directory”). Bevor Sie einen der beiden ausführen, sollten Sie sich noch einmal kurz ins Gedächtnis rufen, dass es auf der Kommandozeile anders als in der grafischen Oberfläche keinen Mülleimer gibt, aus dem sich Gelöschtes wieder aufklauben lässt: Was Sie am Prompt entsorgen, das wandert direkt ins Nirwana.

Geben Sie nicht explizit etwas anderes vor, dann löscht rm ausschließlich Dateien. Soll es auch Verzeichnisse entfernen, müssen Sie ihm dazu den Schalter -r (“recursive”) mitgeben. Dann aber ist Vorsicht angebracht, denn ein rm -r an der falschen Stelle beseitigt nur allzu schnell auch eigentlich noch gebrauchte (System-)Dateien. Die vorsichtigeren Naturen unter den Administratoren spendieren dem Kommando deshalb noch die Zusatzoption --preserve-root, wenn Löscharbeiten irgendwo in der Nähe des Wurzelverzeichnisses anstehen. Weitaus ungefährlicher gestaltet sich da der Umgang mit rmdir, das ausschließlich leere Verzeichnisse entfernt, solange Sie ihm nicht ausdrücklich etwas anderes befehlen.

Einen gänzlich anderen Ansatz des Kopierens verfolgt das Tool dd (“data dump”): Statt Dateien oder Verzeichnisse kopiert es Bytes oder Byte-Blöcke. aus diesem Grund verwendet es auch eine wesentlich komplexere Syntax als die bisher vorgestellten Werkzeuge. Es kommt hauptsächlich für administrative Zwecke zum Einsatz, etwa um aus einem optischen Datenträger ein ISO-Image zu erstellen, Partitionen zu kopieren oder ihren Inhalt durch Überschreiben mit zufälligen Daten zu löschen oder einen Master Boot Record zu kopieren [1]. Bei unbedachter Anwendung kann sich dd noch zerstörerischer auswirken als selbst rm .

Navigation

Die Navigation im Verzeichnisbaum mit cd (“change directory”) kennen Sie natürlich schon. Zwar kennt cd keine Optionen – Sie übergeben ihm einfach das Zielverzeichnis, das Sie anspringen möchten –, wohl aber diese Option: Mit cd .. wechseln Sie ins übergeordnete Verzeichnis, cd - bringt Sie ins vorige Verzeichnis und cd ~ in Ihr Home-Verzeichnis. Kombinieren Sie das mit der History-Funktion der Shell, bietet das Terminal schon beinahe so viel Komfort wie ein Webbrowser mit seinen Vorwärts- und Rückwarts-Buttons.

Den Inhalt eines Verzeichnisses sehen Sie sich mit ls (“list”) an. Viele Distributionen setzen ls als Alias für ls --color, sodass der Befehl verschiedene Dateitypen in unterschiedlichen Farben anzeigt. Die Option --classify oder kurz -F hängt zusätzlich Zeichen wie einen Schrägstrich, ein Sternchen oder einen Klammeraffen an den Dateinamen an, um auf diese Weise Verzeichnisse, ausführbare Dateien oder Symlinks zu kennzeichnen (Abbildung 3).

Abbildung 3: Viele Distributionen liefern bereits ein Alias für »ls«, das verschiedene Dateitypen mit Farben kennzeichnet. Über diverse Optionen kitzeln Sie noch weitere Informationen aus »ls« heraus.

Abbildung 3: Viele Distributionen liefern bereits ein Alias für »ls«, das verschiedene Dateitypen mit Farben kennzeichnet. Über diverse Optionen kitzeln Sie noch weitere Informationen aus »ls« heraus.

Für den Hausgebrauch sind Sie damit fürs Erste schon ganz gut bedient, doch früher oder später benötigen Sie unausweichlich auch erweiterte Optionen wie -a, das auch versteckte Dateien anzeigt, -l, um die Dateiattribute anzusehen, oder <-h>, das die Dateigröße in besser lesbarer Form (“human readable”) ausgibt. In manchen Fällen erweist sich auch eine sortierte Ausgabe des Inhalts als übersichtlicher, die Sie mit Optionen wie -S (“size”), -t (“time”) oder -X (“extension”) angeben.

In umfangreichen Verzeichnissen liefert ls mehr Ausgabezeilen, als ins Terminalfenster passen. Hier hilft es weiter, die Ausgabe über ls | less durch das Programm Less zu leiten, wo Sie mit den Pfeil- und Bildlauftasten beliebig durch die Anzeige blättern, bis Sie die Ausgabe mit [Q] abbrechen. Als nützlicher Helfer für ls erweist sich file, das Ihnen den Typ einer Datei anzeigt. Mit dem Schalter -L ergänzt, zeigt es für Symlinks auch den Typ der Zieldatei an. Die Option -z identifiziert darüber hinaus den Inhalt von Archiven (dazu später mehr).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland